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 der Organisationsdienst unterstützen die Konfiguration des kaskadierenden Verhaltens.

Hinweis

Unsicher bei Entität vs. Tabelle? Siehe Developers: Understand terminology in Microsoft Dataverse.

Verwendung der Web-API zur Konfiguration des kaskadierenden Verhaltens

Bei der Verwendung von Internet API, können Sie eine 1: n-Beziehung mit OneToManyRelationshipMetadata EntityType definieren. Diese Definition umfasst den Namen der zu erstellenden Kreuztabelle sowie die Art und Weise, wie die Beziehung in der Anwendung durch die Verwendung von AssociatedMenuConfiguration ComplexType, Label ComplexType und LocalizedLabel ComplexType angezeigt werden soll.

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

Verwendung des Organisationsservice zur Konfiguration des kaskadierenden Verhaltens

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

Die CascadeConfiguration (Klasse CascadeConfiguration oder CascadeConfiguration ComplexType) enthält die Eigenschaften, die Aktionen darstellen, die an der referenzierten Tabelle in der 1:N-Beziehung ausgeführt werden können. Jede Eigenschaft kann einem der Werte des CascadeType EnumType zugewiesen werden.

Value Anwendungsbeschriftung Beschreibung
Active 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 einen 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 unten aufgeführten Werten wird nicht als aktiver Datensatz zum Zwecke der Überlappung verarbeitet.

Tabellenname 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 Klasse CascadeConfiguration (CascadeConfiguration oder CascadeConfiguration) 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 „Besitzer (Unternehmenseinheit)“ 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)
      • 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
      • 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 falsch 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)
      • 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
      • 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 Besitzer 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 sehr ähnlich, außer dass sie mit den geerbten Lesezugriffsauskunftsrechten anstelle der expliziten Lesezugriffsauskunftsrechte arbeitet. Die Reparent-Aktion ist, wenn Sie den Wert der referenzierenden Spalte in einer übergeordneten Beziehung ändern. Wenn eine Reparaturaktion ausgeführt wird, kann sich der gewünschte Bereich der geerbten Zugriffsrechte für verwandte Tabellen für ReadAccess, WriteAccess, DeleteAccess, AssignAccess, ShareAccess, AppendAccess und AppendToAccess ändern. Es wird sich für CreateAccess nicht ändern. 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:

  • 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.
  • cascadeAsync_SuccessAPI
    Diese Meldung wird verarbeitet (ausgeführt), wenn der asynchrone Kaskadenauftrag erfolgreich abgeschlossen wurde. Dies ist hilfreich, um Benutzer darüber zu informieren, wenn länger laufende Aufträge abgeschlossen sind.

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

Weitere Informationen: Benutzerdefinierte APIs erstellen und verwenden; Ein Plug-In für Ihre benutzerdefinierte API schreiben

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).