Konfigurieren des kaskadierenden Verhaltens für Tabellenbeziehungen

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.

Verwendung der Web-API zur Konfiguration des kaskadierenden Verhaltens

Beim Arbeiten mit der Web-API können Sie eine 1:n-Beziehung mit dem OneToManyRelationshipMetadata-Entitätstyp definieren. Diese Definition umfasst den Namen der zu erstellenden Intersect-Tabelle sowie die Art und Weise, wie die Beziehung in der Anwendung durch die Verwendung von AssociatedMenuConfiguration komplexer Typ, Label komplexer Typ und LocalizedLabel komplexer Typ angezeigt werden soll.

Weitere Informationen: Erstellen einer 1: n-Beziehung mit Internet-API.

Verwenden des SDK für .NET zur Konfiguration des kaskadierenden Verhaltens

Wenn Sie die Klasse CreateOneToManyRequest oder UpdateRelationshipRequest verwenden, fügen Sie im Textteil der Anforderung eine Instanz einer Klasse OneToManyRelationshipMetadata-Klasse ein. In der CascadeConfiguration-Eigenschaft dieser Klasse verwenden Sie die CascadeConfiguration-Klasse.

Die CascadeConfiguration-Klasse oder der CascadeConfiguration komplexe Typ enthält die Eigenschaften, die Aktionen darstellen, die an der referenzierten Tabelle in der 1:N-Beziehung durchgefü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.
Kaskadieren Alle kaskadieren Führt die Aktion für alle referenzierenden Tabellendatensätze aus, die mit dem referenzierten Tabellendatensatz verbunden sind.
NoCascade Nicht kaskadieren Keine Aktion.
RemoveLink Verknüpfung des Artikels aufheben Entfernen Sie den Wert der Referenzierungsspalte für alle referenzierenden Tabellendatensätze, die mit dem referenzierten Tabellendatensatz verbunden sind.
Einschränken Einschränken Verhindern Sie, dass der referenzierte Tabellendatensatz gelöscht wird, wenn referenzierende Tabellen existieren.
UserOwned Benutzereigene kaskadieren 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 die Kaskadierungsaktion berücksichtigt werden

Kaskadierende Aktionen auf aktiven Datensätzen schließen nur Datensätze ein, die den Statuscode „Aktiv“ haben. Die folgenden Statuscodes für diese Tabellen, gelten als aktiv für Kaskadenaktionen. Für diesen Statuscode können in verschiedenen Tabellen unterschiedliche Bezeichnungen (außer „.Aktiv“) verwendet werden. Jeder benutzerdefinierte Status oder Statuscode mit anderen als den in der folgenden Tabelle aufgeführten Werten wird nicht als aktiver Datensatz zum Zwecke der Kaskadierung verarbeitet.

Tabelle Name Zustand Code 0 Zustand Code 1 Zustand Code 2 Zustand Code 3
Konto x
BulkOperation x
BulkOperation x
CampaignResponse x
Kontakt x
E‑Mail x
Fax x
Vorfall x
IncidentResolution x
Rechnung x
Lead x
Schreiben x
Verkaufschance x
OpportunityClose x
OrderClose x
PhoneCall x
Vertriebsauftrag x
Aufgabe x
Alle anpassbaren Tabellen und benutzerdefinierten Aktivitäten x
Angebote x
Vertrag x
Termin x
ServiceAppointment x
RecurringAppointmentMaster x

Die CascadeConfiguration-Klasse des SDK für .NET oder der CascadeConfiguration komplexe Typ der Web-API enthält die folgenden Eigenschaften, die Aktionen darstellen, die an der referenzierten Tabelle in der 1:N-Beziehung durchgeführt werden können.

Aktion Beschreibung Gültige Optionen
Zuweisen Der Besitzer und/oder die Unternehmenseinheit des referenzierten Tabellendatensatzes wird geändert. Aktiv
Kaskadieren
NoCascade
UserOwned
Entf Der referenzierte Tabellendatensatz wird gelöscht. Hinweis: Die Optionen für diese Aktion sind begrenzt. Kaskadieren
RemoveLink
Einschränken
Zusammenführen Der Datensatz wurde bereits mit einem anderen Datensatz zusammengeführt. 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. Kaskadieren
NoCascade
Erneut überordnen Siehe Informationen zur erneut übergeordneten Aktion weiter unten. Aktiv
Kaskadieren
NoCascade
UserOwned
Teilen Wenn der referenzierte Tabellendatensatz mit einem anderen Benutzer geteilt wird. Aktiv
Kaskadieren
NoCascade
UserOwned
Freigabe aufheben Wenn die Freigabe für den referenzierten Tabellendatensatz aufgehoben wird. Aktiv
Kaskadieren
NoCascade
UserOwned

Hinweis

Die Aktionen Zuweisen, Löschen, Zusammenführen und Ersetzen werden in den folgenden Situationen nicht ausgeführt:

  • Wenn der ursprüngliche Stammdatensatz und die angeforderte Aktion die gleichen 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.

Info zur Zuweisungsaktion

Die Zuweisungsaktion ermöglicht die Aktualisierung des Besitzers, der besitzenden Unternehmenseinheit oder sowohl des Besitzers als auch der Unternehmenseinheit zu allen untergeordneten Datensätzen zu kaskadieren, wenn der übergeordnete Datensatz aktualisiert wird.

„Besitz von Datensätzen in allen Unternehmenseinheiten zulassen“ nicht aktiviert

Wenn der Besitz von Datensätzen in allen Unternehmenseinheiten zulassen nicht aktiviert ist, kann die Spalte „Besitzer (Unternehmenseinheit)“ nicht explizit aktualisiert werden, wenn der Besitzer des Datensatzes geändert wird. Im Folgenden sind die kaskadierenden Verhaltensweisen aufgeführt, wenn der Besitzer des übergeordneten Datensatzes aktualisiert wird.

Wenn Sie den Besitzer aktualisieren:

  • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
    • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
    • 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 „Keine“ gesetzt
    • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
    • Datensatzunternehmenseinheit wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
    • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert (nicht kaskadieren)
    • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert (nicht kaskadieren)

„Besitz von Datensätzen in allen Unternehmenseinheiten zulassen“ ist aktiviert

Wenn der Besitz von Datensätzen in allen Unternehmenseinheiten zulassen aktiviert ist, kann die Spalte „Besitzerunternehmenseinheit“ explizit aktualisiert werden, wenn der Besitzer des Datensatzes geändert wird. Im Folgenden sind die kaskadierenden Verhaltensweisen aufgeführt, wenn der Besitzer und/oder die Unternehmenseinheit des übergeordneten Datensatzes aktualisiert wird.

AlwaysMoveRecordToOwnerBusinessUnit kann in den Umgebungsdatenbankeinstellungen und auch über das OrgDBOrgSettings-Tool für Microsoft Dynamics CRM eingestellt werden.

  1. Wenn Sie den Besitzer aktualisieren:

    AlwaysMoveRecordToOwnerBusinessUnit = wahr (Standard)

    • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • 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 „Keine“ gesetzt
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Datensatzunternehmenseinheit wird auf die Unternehmenseinheit des neuen Besitzers aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert (nicht kaskadieren)
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert (nicht kaskadieren)
  2. Wenn Sie die Unternehmenseinheit aktualisieren:

    AlwaysMoveRecordToOwnerBusinessUnit = wahr (Standard)

    • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
      • Der Datensatzbesitzer wird nicht aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Unternehmenseinheit des untergeordneten Datensatzes wird auf die neue Unternehmenseinheit aktualisiert
    • Kaskadenzuweisung auf „Keine“ gesetzt
      • Der Datensatzbesitzer wird nicht aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
  3. Wenn Sie den Besitzer und die Unternehmenseinheit aktualisieren:

    AlwaysMoveRecordToOwnerBusinessUnit = wahr (Standard)

    • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
      • Unternehmenseinheit des untergeordneten Datensatzes wird auf die neue Unternehmenseinheit aktualisiert
    • Kaskadenzuweisung auf „Keine“ gesetzt
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert

Ändern Sie das Kaskadierungsverhalten mit der OrgDBSettings AlwaysMoveRecordToOwnerBusinessUnit

Sie können AlwaysMoveRecordToOwnerBusinessUnit auf „false“ setzen, wobei die Unternehmenseinheit der Datensätze des Benutzers nicht zur Unternehmenseinheit des neuen Benutzers verschoben wird.

AlwaysMoveRecordToOwnerBusinessUnit kann in den Umgebungsdatenbankeinstellungen und auch über das OrgDBOrgSettings-Tool für Microsoft Dynamics CRM eingestellt werden.

  1. Wenn Sie den Besitzer aktualisieren:

    AlwaysMoveRecordToOwnerBusinessUnit = falsch

    • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Die Unternehmenseinheit des Datensatzes wird nicht aktualisiert
      • Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
    • Kaskadenzuweisung auf „Keine“ gesetzt
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Die Unternehmenseinheit des Datensatzes wird nicht aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
  2. Wenn Sie die Unternehmenseinheit aktualisieren:

    AlwaysMoveRecordToOwnerBusinessUnit = falsch

    • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
      • Der Datensatzbesitzer wird nicht aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Unternehmenseinheit des untergeordneten Datensatzes wird auf die neue Unternehmenseinheit aktualisiert
    • Kaskadenzuweisung auf „Keine“ gesetzt
      • Der Datensatzbesitzer wird nicht aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert
  3. Wenn Sie den Besitzer und die Unternehmenseinheit aktualisieren:

    AlwaysMoveRecordToOwnerBusinessUnit = falsch

    • Standardverhalten bei der Kaskadierungszuweisung (alle kaskadieren)
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Besitzer des untergeordneten Datensatzes wird auf den neuen Besitzer aktualisiert
      • Unternehmenseinheit des untergeordneten Datensatzes wird auf die neue Unternehmenseinheit aktualisiert
    • Kaskadenzuweisung auf „Keine“ gesetzt
      • Datensatzbesitzer wird auf den neuen Besitzer aktualisiert
      • Datensatzunternehmenseinheit wird auf die neue Unternehmenseinheit aktualisiert
      • Der Besitzer der untergeordneten Datensätze wird nicht aktualisiert
      • Die Unternehmenseinheit der untergeordneten Datensätze wird nicht aktualisiert

Hinweis

Wenn AlwaysMoveRecordToOwnerBusinessUnit = falsch

Erforderliche Berechtigungen:

  • Die Berechtigung des Besitzers des übergeordneten Datensatzes wird überprüft. Wenn Sie den Besitzer und/oder die Unternehmenseinheit aktualisieren, überprüfen wir, ob der Besitzer die Berechtigung für die Unternehmenseinheit hat, bevor wir die Aktualisierungen zulassen.
  • Die Berechtigung des Datensatzbesitzers 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 Unternehmenseinheit A und er hat untergeordnete Datensätze, die zu Besitzer 2 in Unternehmenseinheit B gehören. Besitzer 1 ist eine Sicherheitsrolle aus den Unternehmenseinheiten A und B zugewiesen und kann daher auf die untergeordneten Datensätze zugreifen. Wenn der übergeordnete Datensatz auf Besitzer 3 aktualisiert wird, 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 zu Besitzer 1 in Unternehmenseinheit A und er hat untergeordnete Datensätze, die zu Besitzer 2 in Unternehmenseinheit B gehören. Besitzer 1 ist eine Sicherheitsrolle aus den Unternehmenseinheiten A, B und C zugewiesen und kann daher auf die untergeordneten Datensätze zugreifen. Wenn die besitzende Unternehmenseinheit in Unternehmenseinheit C geändert wird, 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 erneut übergeordneten Aktion

Die erneut übergeordnete Aktion ist der Freigabenaktion ähnlich, außer dass sie mit den geerbten Zugriffsrechten anstelle der expliziten Zugriffsrechte arbeitet. Die Reparent-Aktion ist, wenn Sie den Wert der referenzierenden Spalte in einer übergeordneten Beziehung ändern. Wenn eine Aktion zum erneuten Überordnen auftritt, kann sich der gewünschte Umfang der vererbten Zugriffsrechte für Bezugstabellen für ReadAccess, WriteAccess, DeleteAccess, AssignAccess, ShareAccess, AppendAccess und AppendToAccess ändern. Er ändert sich nicht für CreateAccess. Die Kaskadenaktionen im Zusammenhang mit der Reparent-Aktion beziehen sich auf Änderungen der Lesezugriffsrechte für den Tabellendatensatz und alle damit verbundenen Tabellendatensätze.

Informationen zur Zusammenführungsaktion

Die Zusammenführungsaktion kann manchmal Probleme beim Abschluss haben, 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“ wird oder der untergeordnete Datensatz „möglicherweise seine übergeordnete Zuordnung verliert“. Ist dies der Fall, und Sie möchten die Zusammenführung auch dann fortsetzen, wenn der Datensatz fehlt, können Sie die übergeordnete Prüfung deaktivieren, wenn Sie die zusammenzuführenden Spalten auswählen.

Hinweis

Wenn Sie eine Zusammenführung zwischen zwei angepassten Tabellen durchführen, werden DateTime-Werte nicht zusammengeführt. Die DateTime-Werte des Zieldatensatzes bleibt unverändert.

Kaskadierende Meldung

Sie können zwei Hilfsnachrichten für kaskadierende asynchrone Meldungen verwenden, um einen Benutzer zu benachrichtigen oder zu protokollieren, wenn ein kaskadierender asynchroner Auftrag fehlschlägt oder erfolgreich ist. Dies wird erreicht, indem ein benutzerdefiniertes Plug-In geschrieben und registriert wird, das ausgeführt wird, wenn diese Meldungen verarbeitet werden, und eine Erfolgs- oder Fehlerbenachrichtigung bereitstellt.

Die beiden Benachrichtungsmeldungen sind:

Name des Dataflows Beschreibung
cascadeAsync_FailureAPI Diese Meldung wird verarbeitet (ausgeführt), wenn ein asynchroner Kaskadenauftrag aufgrund mehrerer Fehler angehalten wird. Dies kann verwendet werden, um Benutzer darüber zu informieren, dass sie ihr DataSet auf Probleme mit vorhandenen Plug-Ins, Datenproblemen oder Workflow-Problemen überprüfen müssen.
InputParameters:
casadeAsyncExceptionDetails: Details der Ausnahme, die zum Scheitern des kaskadierten asynchronen Auftrags führt.
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.

Das benutzerdefinierte Plug-In muss während der nachgelagerten Vorgangsphase registriert und auf den asynchronen Modus eingestellt werden. Die folgende Abbildung zeigt ein Beispiel für eine Plug-In-Registrierung mit dem Plug-In-Registrierungstool.

Ein Plug-In für die kaskadierende Meldung registrieren

Im Folgenden finden Sie einige Beispiele für die Art von Benachrichtigungen, die Ihr benutzerdefiniertes Plug-In bereitstellen kann:

  • Bei Erfolg einen Eintrag zu einem Laufzeitprotokoll hinzufügen
  • Fügen Sie bei einem Fehler einen Eintrag zu einem Laufzeitprotokoll hinzu und senden Sie dann eine E-Mail (oder eine andere Mitteilung) an den Administrator mit Angabe von Datum/Uhrzeit und Art des Fehlers
  • Dem interaktiven Benutzer eine Meldung anzeigen

Geerbten Zugriff reparieren

Nach dem Ändern des Kaskadenverhaltens einer Tabellenbeziehung für die Aktionen Erneut überordnen oder Teilen zu Keine Kaskadierung versucht das System, die geerbten Zugriffsrechte des Benutzers anzupassen, um sie an das aktuelle kaskadierende Verhalten der Tabellenbeziehung anzupassen. Weitere Informationen zur Bereinigung der geerbten Zugriffsrechte

Wenn dieser Ansatz jedoch nicht erfolgreich ist, besteht für Benutzer die Möglichkeit, den Zugriff auf zugehörige Datensätze zu behalten, die entfernt werden sollten. Schritte zur Behebung des Problems finden Sie unter Geerbten Zugriff bereinigen.

Siehe auch

Tabellenbeziehungs-Definitionen

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).