Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können kaskadierende Verhaltensweisen für eine 1:N-Beziehung konfigurieren, um die Datenintegrität zu wahren und Geschäftsprozesse zu automatisieren. Sowohl die Web-API als auch das SDK für .NET unterstützen die Konfiguration des kaskadierenden Verhaltens.
Verwenden der Web-API zum Konfigurieren des Kaskadierungsverhaltens
Beim Arbeiten mit der Web-API definieren Sie eine 1:n-Beziehung mithilfe des Entitätstyps OneToManyRelationshipMetadata. Diese Definition enthält den Namen der zu erstellenden Intersect-Tabelle und wie die Beziehung in der Anwendung erscheinen sollte, unter Verwendung des komplexen Typs AssociatedMenuConfiguration, des komplexen Typs Label und des komplexen Typs LocalizedLabel.
Weitere Informationen finden Sie unter Erstellen einer 1:n-Beziehung mithilfe der Web-API.
Verwenden des SDK für .NET zum Konfigurieren des Kaskadierungsverhaltens
Wenn Sie die CreateOneToManyRequest- oder UpdateRelationshipRequest-Klassen verwenden, schließen Sie eine Instanz der OneToManyRelationshipMetadata-Klasse im Textkörper der Anforderung ein. Verwenden Sie in der CascadeConfiguration Eigenschaft dieser Klasse die CascadeConfiguration Klasse.
Die CascadeConfiguration-Klasse oder der komplexe CascadeConfiguration-Typ enthält die Eigenschaften, die mögliche Aktionen darstellen, die in einer Eins-zu-viele-Beziehung für die referenzierte Tabelle ausgeführt werden können. Jede Eigenschaft kann einem der Werte vom CascadeType-Enumerationstyp zugewiesen werden.
| Wert | Anwendungsbeschriftung | Beschreibung |
|---|---|---|
| Aktiv | Aktive kaskadieren | Führt die Aktion auf allen aktiven referenzierenden Tabellendatensätzen aus, die mit dem referenzierten Tabellendatensatz verbunden sind. |
| Überlappend | Alle kaskadieren | Führt die Aktion für alle referenzierenden Tabellendatensätze aus, die mit dem referenzierten Tabellendatensatz verbunden sind. |
| NoCascade | Nicht kaskadieren | Macht nichts. |
| EntferneLink | Link entfernen | Entfernen Sie den Wert der Referenzierungsspalte für alle referenzierenden Tabellendatensätze, die mit dem referenzierten Tabellendatensatz verbunden sind. |
| Einschränken | Einschränken | Verhindern, dass der Datensatz, auf den verwiesen wird, gelöscht wird, wenn referenzierte Tabellen vorhanden sind. |
| Benutzereigentum | Kaskadieren, falls gleicher Besitzer | Führt die Aktion auf allen referenzierenden Tabellendatensätzen aus, die demselben Benutzer gehören wie der referenzierte Tabellendatensatz. |
Aktive Datensätze, die für kaskadierende Aktionen berücksichtigt werden
Kaskadierende Aktionen bei aktiven Datensätzen umfassen nur Datensätze, die einen Statuscode von Active haben. Die folgenden Statuscodes für diese Tabellen gelten als aktiv für Kaskadenaktionen. Für diesen Zustandscode können in verschiedenen Tabellen unterschiedliche Bezeichnungen (außer Aktiv) verwendet werden. Jeder benutzerdefinierte Zustands- oder Statuscode mit anderen Werten als denen in der folgenden Tabelle wird nicht als aktiver Datensatz für Kaskadierungszwecke verarbeitet.
| Tabellenname | Zustand Code 0 | Zustand Code 1 | Zustand Code 2 | Zustand Code 3 |
|---|---|---|---|---|
| Konto | x | |||
| BulkOperation | x | |||
| BulkOperation | x | |||
| CampaignResponse | x | |||
| Kontakt | x | |||
| x | ||||
| Fax | x | |||
| Vorfall | x | |||
| Incidentlösung | x | |||
| Rechnung | x | |||
| Lead | x | |||
| Buchstabe | x | |||
| Verkaufschance | x | |||
| OpportunityClose | x | |||
| Bestellung schließen | x | |||
| Telefonanruf | x | |||
| SalesOrder | x | |||
| Aufgabe | x | |||
| Alle anpassbaren Tabellen und benutzerdefinierten Aktivitäten | x | |||
| Angebote | x | |||
| Vertrag | x | |||
| Termin | x | |||
| ServiceAppointment | x | |||
| RecurringAppointmentMaster | x |
Das SDK für .NET, sei es die CascadeConfiguration-Klasse oder der komplexe Typ CascadeConfiguration in der Web-API, enthält die folgenden Eigenschaften, die Aktionen darstellen, welche Sie für die referenzierte Tabelle in der Eins-zu-Viele-Beziehung ausführen können.
| Aktivität | Beschreibung | Gültige Optionen |
|---|---|---|
| Zuweisen | Ändern Sie den Besitzer und/oder die Geschäftseinheit des referenzierten Tabelleneintrags. | Aktiv Überlappend NoCascade Benutzereigentum |
| Delete | Löschen Sie den Datensatz, auf den verwiesen wird. Hinweis: Die Optionen für diese Aktion sind begrenzt. | Überlappend EntferneLink Einschränken |
| Zusammenführen | Führen Sie den Datensatz mit einem anderen Datensatz zusammen. Hinweis: Für referenzierte Tabellen, die zusammengeführt werden können, ist „Kaskade“ die einzige gültige Option. Verwenden Sie in anderen Fällen NoCascade. | Überlappend NoCascade |
| Erneut überord. | Siehe später Informationen zur Reparent-Aktion. | Aktiv Überlappend NoCascade Benutzereigentum |
| Freigeben | Wenn der referenzierte Tabellendatensatz mit einem anderen Benutzer geteilt wird. | Aktiv Überlappend NoCascade Benutzereigentum |
| Freigabe entfernen | Wenn die Freigabe für den referenzierten Tabellendatensatz aufgehoben wird. | Aktiv Überlappend NoCascade Benutzereigentum |
Hinweis
Die Aktionen Zuweisen, Löschen, Zusammenführen und Erneut überordnen werden in den folgenden Situationen nicht ausgeführt:
- Wenn der ursprüngliche übergeordnete Datensatz und die angeforderte Aktion identische Werte enthalten. Beispiel: Der Versuch, eine Zuweisung auszulösen und einen Kontakt auszuwählen, der bereits der Eigentümer des Datensatzes ist
- Versuch, eine Aktion auf einen übergeordneten Datensatz auszuführen, der bereits eine Kaskadenaktion ausführt
Hinweis
Bei der Ausführung einer Zuweisung werden alle Workflows oder Geschäftsregeln, die derzeit auf den Datensätzen aktiv sind, automatisch deaktiviert, wenn die Neuzuweisung erfolgt. Der neue Besitzer des Datensatzes muss den Workflow oder die Geschäftsregel reaktivieren, wenn er sie weiterhin verwenden möchte.
Informationen zur Zuweisungsaktion
Wenn Sie den übergeordneten Datensatz aktualisieren, werden die Änderungen durch die Zuweisungsaktion auf den Besitzer, die zugehörige Unternehmenseinheit oder sowohl den Besitzer als auch die Unternehmenseinheit auf alle untergeordneten Datensätze übertragen bzw. kaskadiert.
„Besitz von Datensätzen in allen Unternehmenseinheiten zulassen“ nicht aktiviert
Wenn die Funktion Datensatzbesitz über Geschäftseinheiten hinweg zulassen nicht aktiviert ist, können Sie die Spalte der besitzenden Geschäftseinheit nicht explizit aktualisieren, wenn der Besitzer des Datensatzes geändert wird. Die folgende Liste zeigt das Kaskadierende Verhalten, wenn Sie den Datensatzbesitzer des übergeordneten Elements aktualisieren.
Wenn Sie den Eigentümer ändern:
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
- Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
- Unternehmenseinheit des untergeordneten Datensatzes wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
- Kaskadenzuweisung auf „None“ gesetzt
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
- Der Besitzer von untergeordneten Datensätzen wird nicht aktualisiert (keine Kaskade)
- Die Geschäftseinheit der untergeordneten Datensätze wird nicht aktualisiert (ohne Kaskadierung)
Erlaubter Besitz von Datensätzen über Geschäftseinheiten hinweg ist aktiviert
Wenn Datensatzbesitz über Geschäftseinheiten hinweg erlauben aktiviert ist, können Sie beim Ändern des Besitzers des Datensatzes explizit die Spalte der besitzenden Geschäftseinheit aktualisieren. Im Folgenden sind die kaskadierenden Verhaltensweisen aufgeführt, wenn der Besitzer und/oder die Unternehmenseinheit des übergeordneten Datensatzes aktualisiert wird.
Legen Sie AlwaysMoveRecordToOwnerBusinessUnit in Umgebungsdatenbankeinstellungen oder mithilfe des OrgDBOrgSettings-Tools für Microsoft Dynamics CRM fest.
Wenn Sie den Eigentümer ändern:
AlwaysMoveRecordToOwnerBusinessUnit = true (Standardwert)
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
- Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
- Unternehmenseinheit des untergeordneten Datensatzes wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
- Kaskadenzuweisung auf „None“ gesetzt
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
- Der Besitzer von untergeordneten Datensätzen wird nicht aktualisiert (keine Kaskade)
- Die Geschäftseinheit der untergeordneten Datensätze wird nicht aktualisiert (ohne Kaskadierung)
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
Wenn Sie die Unternehmenseinheit aktualisieren:
AlwaysMoveRecordToOwnerBusinessUnit = true (Standardwert)
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Datensatzbesitzer aktualisiert nicht
- Aktualisierungen der Geschäftseinheit auf neue Geschäftseinheit aufzeichnen
- Besitzer der untergeordneten Datensätze wird nicht aktualisiert
- Unternehmenseinheit des untergeordneten Datensatzes wird auf die neue Unternehmenseinheit aktualisiert
- Kaskadenzuweisung auf „None“ gesetzt
- Datensatzbesitzer aktualisiert nicht
- Aktualisierungen der Geschäftseinheit auf neue Geschäftseinheit aufzeichnen
- Besitzer der untergeordneten Datensätze wird nicht aktualisiert
- Die Geschäftseinheit untergeordneter Datensätze wird nicht aktualisiert.
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
Wenn Sie den Besitzer und die Unternehmenseinheit aktualisieren:
AlwaysMoveRecordToOwnerBusinessUnit = true (Standardwert)
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
- Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
- Aktualisierung der Geschäftseinheit von Datensätzen untergeordneter Objekte auf eine neue Geschäftseinheit
- Kaskadenzuweisung auf „None“ gesetzt
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
- Besitzer der untergeordneten Datensätze nicht aktualisieren
- Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
Ändern Sie das Kaskadierungsverhalten mit der OrgDBSettings AlwaysMoveRecordToOwnerBusinessUnit
Wenn Sie AlwaysMoveRecordToOwnerBusinessUnit auf "false" festlegen, wird die Geschäftseinheit der benutzereigenen Datensätze nicht in die Geschäftseinheit des neuen Benutzers verschoben.
Legen Sie AlwaysMoveRecordToOwnerBusinessUnit in Umgebungsdatenbankeinstellungen oder mithilfe des OrgDBOrgSettings-Tools für Microsoft Dynamics CRM fest.
Wenn Sie den Eigentümer ändern:
AlwaysMoveRecordToOwnerBusinessUnit = falsch
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Eintrag der Geschäftseinheit nicht aktualisieren
- Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
- Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
- Kaskadenzuweisung auf „None“ gesetzt
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Eintrag der Geschäftseinheit nicht aktualisieren
- Besitzer der untergeordneten Datensätze nicht aktualisieren
- Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
Wenn Sie die Unternehmenseinheit aktualisieren:
AlwaysMoveRecordToOwnerBusinessUnit = falsch
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Datensatzbesitzer aktualisiert nicht
- Aktualisierungen der Geschäftseinheit auf neue Geschäftseinheit aufzeichnen
- Besitzer der untergeordneten Datensätze wird nicht aktualisiert
- Unternehmenseinheit des untergeordneten Datensatzes wird auf die neue Unternehmenseinheit aktualisiert
- Kaskadenzuweisung auf „None“ gesetzt
- Datensatzbesitzer aktualisiert nicht
- Aktualisierungen der Geschäftseinheit auf neue Geschäftseinheit aufzeichnen
- Besitzer der untergeordneten Datensätze wird nicht aktualisiert
- Die Geschäftseinheit untergeordneter Datensätze wird nicht aktualisiert.
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
Wenn Sie den Besitzer und die Unternehmenseinheit aktualisieren:
AlwaysMoveRecordToOwnerBusinessUnit = falsch
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
- Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
- Aktualisierung der Geschäftseinheit von Datensätzen untergeordneter Objekte auf eine neue Geschäftseinheit
- Kaskadenzuweisung auf „None“ gesetzt
- Aktualisierungen des Datensatzbesitzers an den neuen Besitzer
- Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
- Besitzer der untergeordneten Datensätze nicht aktualisieren
- Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
- Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
Hinweis
Wenn AlwaysMoveRecordToOwnerBusinessUnit = falsch
Erforderliche Berechtigungen:
- Die Berechtigung des Besitzers des übergeordneten Datensatzes wird überprüft. Wenn Sie den Besitzer oder die Geschäftseinheit aktualisieren, stellt die Prüfung sicher, dass der Besitzer die Berechtigung für die Geschäftseinheit hat, bevor die Updates zugelassen werden.
- Die Besitzerberechtigung des Datensatzes für die untergeordneten Datensätze wird jedoch nicht überprüft. Sie können in eine Situation geraten, in der Sie die Unternehmenseinheit des übergeordneten Datensatzes aktualisiert haben und die Unternehmenseinheit zur den untergeordneten Datensätze kaskadiert wird. Der Besitzer der untergeordneten Datensätze verliert möglicherweise den Zugriff auf seinen Datensatz.
Beispiel 1
Ein übergeordneter Datensatz gehört zu Besitzer 1 in Geschäftseinheit A und verfügt über untergeordnete Datensätze, die zu Besitzer 2 in Geschäftseinheit B gehören. Besitzer 1 wird eine Sicherheitsrolle aus den Geschäftseinheiten A und B zugewiesen und kann daher auf die untergeordneten Datensätze zugreifen. Wenn Sie den übergeordneten Datensatz auf Besitzer 3 aktualisieren, wird der Besitzer des untergeordneten Datensatzes ebenfalls in Besitzer 3 geändert, aber die untergeordneten Datensätze gehören weiterhin zu Unternehmenseinheit B. Besitzer 3 hat keinen Zugriff auf diese untergeordneten Datensätze, es sei denn, der Besitzer hat ein Sicherheitsrolle in der Unternehmenseinheit B.
Beispiel 2
Ein übergeordneter Datensatz gehört einem Benutzer 1 in der Geschäftseinheit A und hat untergeordnete Datensätze, die einem Benutzer 2 in der Geschäftseinheit B zugeordnet sind. Benutzer 1 ist eine Sicherheitsrolle aus den Geschäftseinheiten A, B und C zugewiesen, weshalb dieser Benutzer auf die untergeordneten Datensätze zugreifen kann. Wenn Sie die besitzende Unternehmenseinheit in Unternehmenseinheit C ändern, wird die Unternehmenseinheit der untergeordneten Datensätze in Unternehmenseinheit C geändert. Besitzer 2 dieser untergeordneten Datensätze hat keinen Zugriff auf seine Datensätze, es sei denn, dem Besitzer wird eine Sicherheitsrolle der Unternehmenseinheit C.
Informationen zur Aktion der Neuzuordnung
Die Reparent-Aktion ähnelt der Freigabeaktion, behandelt jedoch geerbte Zugriffsrechte anstelle expliziter Zugriffsrechte. Die Reparenting-Aktion tritt auf, wenn Sie den Wert der Referenzspalte in einer übergeordneten Beziehung ändern. Wenn eine Übertragungsaktion auftritt, kann sich der gewünschte Umfang der geerbten Zugriffsrechte für ReadAccess, WriteAccess, DeleteAccess, AssignAccess, ShareAccess, AppendAccess und AppendToAccess für zugehörige Tabellen ändern. Er ändert sich nicht für CreateAccess. Die Kaskadieren-Aktionen im Zusammenhang mit der Aktion „Erneut überordnen“ beziehen sich auf frühere Änderungen der Zugriffsrechte für den Tabellendatensatz und alle damit verbundenen Tabellendatensätze.
Informationen zur Zusammenführungsaktion
Die Zusammenführungsaktion kann manchmal auf Probleme beim Abschluss stoßen, wenn ein Datensatz, der Teil des Vorgangssatzes ist, gelöscht wird, während der Systemauftrag zur Zusammenführung ausgeführt wird. Dies führt häufig zu einem Fehler, der darauf hinweist, dass der Datensatz „anders übergeordnet“ ist oder der untergeordnete Datensatz „möglicherweise seine übergeordnete Zuordnung verliert“. Wenn dieses Problem auftritt und Sie möchten, dass die Zusammenführung fortgesetzt wird, auch wenn der Datensatz fehlt, können Sie die übergeordnete Prüfung deaktivieren, wenn Sie die Spalten zum Zusammenführen auswählen.
Hinweis
Wenn Sie eine Zusammenführung zwischen zwei benutzerdefinierten Tabellen durchführen, werden DateTime-Werte nicht zusammengeführt. Die DateTime des Zieldatensatzes bleibt unverändert.
Kaskadenbenachrichtigung
Verwenden Sie zwei kaskadierende asynchrone Benachrichtigungshilfsnachrichten, um einen Benutzer oder ein Protokoll zu benachrichtigen, wenn ein kaskadierender asynchroner Auftrag fehlschlägt oder erfolgreich ist. Um diese Lösung zu implementieren, schreiben und registrieren Sie ein benutzerdefiniertes Plug-In, das ausgeführt wird, wenn diese Nachrichten verarbeitet werden, und stellt eine Erfolgs- oder Fehlerbenachrichtigung bereit.
Die beiden Benachrichtungsmeldungen sind:
| Name | Beschreibung |
|---|---|
cascadeAsync_FailureAPI |
Diese Meldung wird verarbeitet (ausgeführt), wenn ein asynchroner Kaskadenauftrag aufgrund mehrerer Fehler unterbrochen wird. Verwenden Sie diese Meldung, um Benutzer darüber zu informieren, dass sie ihr Dataset auf Probleme mit vorhandenen Plug-Ins, Daten oder Workflows überprüfen müssen. InputParameters: casadeAsyncExceptionDetails: Details der Ausnahme, die zum Scheitern des kaskadierten asynchronen Auftrags führte.casadeAsyncJobName: Der Name des kaskadierten asynchronen Auftrags. |
cascadeAsync_SuccessAPI |
Diese Meldung wird verarbeitet (ausgeführt), wenn der asynchrone Kaskadenauftrag erfolgreich abgeschlossen wurde. InputParameters: casadeAsync_JobName: Der Name des kaskadierten asynchronen Auftrags. |
Registrieren Sie das benutzerdefinierte Plug-In während der Phase nach dem Betrieb, und legen Sie es auf den asynchronen Modus fest. Die folgende Abbildung zeigt ein Beispiel für eine Plug-In-Registrierung mithilfe des Plug-In-Registrierungstools.
Hier sind einige Beispiele für die Art von Benachrichtigungen, die Ihr benutzerdefiniertes Plug-In bereitstellen kann:
- Fügen Sie bei Erfolg einen Eintrag zu einem Laufzeitprotokoll hinzu.
- Fügen Sie bei Einem Fehler einen Eintrag zu einem Laufzeitprotokoll hinzu, und senden Sie dann eine E-Mail (oder eine andere Kommunikation) an den Administrator, der das Datum und die Uhrzeit und die Art des Fehlers angibt.
- Zeigt dem interaktiven Benutzer eine Meldung an.
Geerbten Zugriff reparieren
Nach dem Ändern des Kaskadierungsverhaltens einer Tabellenbeziehung für die Aktualisierungs - oder Freigabeaktionen auf "Keine Weitergabe" versucht das System, die geerbten Zugriffsrechte des Benutzers an das aktuelle Kaskadierende Verhalten der Tabellenbeziehung anzupassen. Erfahren Sie mehr über die bereinigung von geerbten Zugriffsrechten.
Wenn dieser Ansatz jedoch nicht erfolgreich ist, behalten Benutzer möglicherweise Zugriff auf verwandte Datensätze, die entfernt werden sollen. Schritte zur Behebung dieses Problems finden Sie unter Geerbten Zugriff bereinigen.