Stephanie Schenk
26 Mrz 2024
Expertenbeiträge | 2 Min. Lesezeit

In Dynamics 365 Sales habe ich eine benutzerdefinierte Schaltfläche in der Taskleiste hinzugefügt. Das Ziel dieser Schaltfläche war es, ausgehend von einem bestehenden Aufgabensatz einen neuen Datensatz für Folgeaktivitäten zu erstellen. Dieser neue Datensatz muss über ein benutzerdefiniertes Auswahlfeld in der Tabelle mit der ursprünglichen Aufgabe namens „Originating Task Id“ verknüpft sein.

Für die Erstellung des neuen Datensatzes über die Schaltfläche nutze ich die Java-Script-Bibliothek Xrm.WebApi.

Xrm.WebApi in Microsoft Dynamics 365 ist eine leistungsstarke Java-Script-Bibliothek, die eine nahtlose Kommunikation zwischen kundenseitigen Skripten und der Dynamics 365-Web-Schnittstelle ermöglicht. So können Entwickler CRUD-Operationen (Create, Read, Update, Delete) durchführen und mit Datenentitäten innerhalb der Dynamics 365-Umgebung interagieren.

Ich stand vor dem Problem, den korrekten Eigenschaftsnamen der Beziehung zwischen der ursprünglichen Aufgabe und der Folgeaufgabe zu finden. Dieser wird benötigt, um das Feld „Originating Task Id“ zu füllen, wenn der neue Aufgabendatensatz über JavaScript erstellt wird.

In der offiziellen Microsoft-Dokumentation heißt es: “Die Namen von einwertigen Navigationseigenschaften sind nicht immer identisch mit dem LogicalName für das Suchattribut. Sie sollten sicherstellen, dass Sie den Name-Attributwert des NavigationProperty-Elements im $metadata-Servicedokument der Web-API verwenden. Weitere Informationen: Web API-Navigationseigenschaften„.

Aber wie findet man diese Eigenschaften des benutzerdefinierten Auswahlfeldes „Originating Task Id“?

Ich musste die Metadaten für die OneToMany-Beziehung meiner benutzerdefinierten Suche mit dem Namen originatingtaskid durchsuchen.

Da es sich um eine Selbstreferenz von Aufgabe zu Aufgabe handelt, gibt es sowohl die OneToMany – als auch die ManyToOne-Beziehung in der Aufgabentabelle.

Ich habe das hilfreiche Tool „Metadata Browser“ aus der XrmToolbox verwendet, um die Metadaten einfach auslesen zu können.

Die Eigenschaft, die in der Funktion XrmWeb.Api Create zu verwenden ist, fand ich unter “ReferencingEntityNavigationPropertyName”, für mein benutzerdefiniertes Auswahlfeld war es new_originatingtaskid_Task. In der Erstellen-Funktion muss die Eigenschaft mit der @odata.bind-Annotation kombiniert werden.

ReferencingEntityNavigationPropertyName

Jetzt konnte ich mit der Funktion Xrm.WebApi.createRecord einen neuen Aufgabendatensatz mit Bezug auf die ursprüngliche Aufgabe erstellen:

var activityData = 
{
   "subject": "New Task Subject",
   "new_originatingtaskid_Task@odata.bind": "/tasks(465b158c-541c-e511-80d3-3863bb347ba8)"
};


Xrm.WebApi.createRecord("task", activityData.then(
   function success(result) {
     console.log("Task created with ID: ", + result.id);
   },
   function (error) {
      console.log(error.message);
   }

Sie haben noch weiterführende Fragen? Kontaktieren Sie uns!


Nützliche Links:

Microsoft Xrm.Web.Api reference
https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/xrm-webapi

XrmToolbox Metadata Browser:
https://www.xrmtoolbox.com/plugins/MsCrmTools.MetadataBrowser/