Vor Kurzem hatten wir bei einem unserer Kundenprojekte einen der spannenden Anwendungsfälle für virtuelle Entitäten in Dynamics 365 entdeckt. Aus diesem Anlass möchte ich euch zusammen mit meinem Kollegen Tobias Heilig in einer mehrteiligen Blog-Serie zeigen, was virtuelle Entitäten sind und wie man diese einsetzt. Um das Ganze etwas griffiger zu gestalten, haben wir uns dafür einen besonderen Use Case ausgedacht, den wir euch im ersten Teil der Serie vorstellen werden. Im zweiten Teil zeigen wir euch dann, wie wir diesen technisch umgesetzt haben.
Hintergrund
Bei einem aktuellen Kundenprojekt standen wir im Team vor der Herausforderung, eine Entität mit einer großen Anzahl von Datensätzen – im Millionenbereich – innerhalb von Dataverse abzubilden. Technisch ist das auch ohne große Probleme möglich, zumindest gibt es hierzu keine „harte“ Limitierung seitens Microsofts. Allerdings ist davon abzuraten, derartige Datenmengen von Dynamics 365 verwalten zu lassen. Diese Empfehlung hat gleich mehrere Hintergründe. Zum einen wird viel Cloud-Speicher benötigt, der im Dynamics 365-Umfeld generell sehr kostspielig sein kann. Für den Fall, dass die Daten nicht in Dynamics 365, sondern wie im kommenden Beispiel etwa über einen Webshop erzeugt werden, ist zudem eine Synchronisation der Daten notwendig. Diese wird über die Rest-API von Dataverse bewerkstelligt, welche wiederum in der Nutzung limitiert ist und zusätzliche Kosten verursachen kann.
Hier kommen virtuelle Entitäten ins Spiel.
Diese ermöglichen die Integration externer Daten, ohne diese Richtung Dataverse synchronisieren zu müssen. Virtuelle Entitäten werden dabei zur Laufzeit geladen und nicht physikalisch als Tabellen in Dataverse gespeichert. Daher verbrauchen diese keinen Speicherplatz und verursachen diesbezüglich auch keine weiteren Kosten. Die Anbindung erfolgt über vorgefertigte Datenprovider. Im Vergleich zur Rest-API unterliegen diese keinen Limitierungen, müssen aber für die Anzeige und Verwendung der virtuellen Entitäten stets verfügbar sein. Somit bieten sich virtuelle Entitäten immer dann an, wenn große Datenmengen aus externen Datenquellen in Dataverse integriert werden sollen.
Use-Case
Um euch das Konzept virtueller Entitäten näher zu bringen, haben wir uns folgenden fiktiven Use Case ausgedacht.
Der Webshop eines großen Ticket-Anbieters für Events wie Konzerte oder Festivals speichert Kunden- und Ticketdatensätze in einem SQL-Server in Azure ab. Für die Bearbeitung von Support-Fällen bei Problemen oder Fragen zu gekauften Tickets wurde ein externer Dienstleister engagiert, der hierfür Dynamics 365 for Customer Service nutzt. Um den Kunden-Support bei Problemen mit gekauften Tickets gewährleisten zu können, werden Informationen aus den Kunden- und Ticketdatensätzen für die Zuordnung der Support-Cases benötigt. Dabei handelt es sich um eine sehr große Anzahl an Datensätzen, die in Dataverse integriert werden müssen.
Showcase mit Bilderstrecke
Der Einstieg des Kundendienstes bei einem Telefonanruf kann an verschiedenen Stellen im Support-Portal erfolgen. Der erste mögliche Weg beginnt mit der Suche des Anrufers unter den Kontakten.
Um zum Ticket des Kunden zu gelangen navigiert der Support-Mitarbeiter anschließend vom Kontakt-Formular zu den verknüpften Entitäten. Hierbei wählt er die (virtuelle) Entität Ticket aus. Dieser Link führt bei Auswahl zur Listenansicht aller Tickets des Anrufers, die aus der externen Datenquelle stammen.
Die Listenansicht ermöglicht die Anzeige und Sortierung von allen gekauften Tickets des Anrufers. Der Benutzer kann zudem nach einem spezifischen Ticket suchen.
Der Support ist somit in der Lage, die Liste nach dem betroffenen Ticket des Anrufers zu durchsuchen und schließlich zu diesem zu navigieren.
In diesem Fall öffnet sich das schreibgeschützte Formular zur Anzeige der Ticketdaten. Die Felder des Formulars sind nicht editierbar, da die Daten extern gespeichert sind. Es dient dem Support-Mitarbeiters als reine Informationsquelle. Sämtliche Informationen zum Ticket inklusive des Preises und einiger Daten zum Event stehen hier zur Verfügung.
Ein alternativer Weg zum Finden eines Tickets startet in der Listenansicht aller Tickets. Für den Use Case wurden hierfür etwa 3,5 Millionen Tickets generiert, um auch eine realistische Datenmenge bereit zu halten. Die Suche des Tickets kann über alle sichtbaren Felder des Tickets erfolgen.
Auf diesem Wege ist es ebenfalls möglich, das betroffene Ticket des Anrufers zu finden und zu diesem zu navigieren.
Ein dritter Weg führt über das Event als Einstiegspunkt. Dieses besitzt ebenso wie der Kontakt eine Verknüpfung zur (virtuellen) Entität Ticket.
Innerhalb des Event-Formulars hat der Support-Mitarbeiter dann über ein Unterraster die Möglichkeit, nach dem betroffenen Ticket zu suchen.
Schlusswort
Falls der lesende Zugriff auf die virtuellen Entitäten nicht ausreichen sollte, können frei gestaltbare Canvas-Apps zur Bearbeitung der benötigten Daten Abhilfe schaffen. Solche Apps können direkt in das Formular einer virtuellen Entität integriert werden. Das ermöglicht das Bearbeiten der vormals schreibgeschützten Formulardaten.
Ganz aktuell wurde Ende März 2021 ein Update von Microsoft ausgerollt, welches das Erstellen, Bearbeiten und Löschen virtueller Entitäten nun ganz offiziell über einen eigenen Datenprovider unterstützt. Das werden wir natürlich umgehend für euch ausprobieren und dann in einem dritten Teil dieser Blog-Serie davon berichten.
Zunächst führen wir euch im zweiten Teil jedoch erst einmal hinter die Kulissen und zeigen euch, wie sich das Ganze technisch realisieren lässt und welche Schritte dazu notwendig sind.