Einfach drauf clicken :-)

Moderne Geschäftsprozesse verbinden mehrere Systeme, die ihre Informationen in unterschiedlicher Form bereitstellen. Obgleich diese von demselben Hersteller sind, gibt es oft keine einfache Möglichkeit Daten, wie z.B. den Kundenstamm, zwischen den Systemen zu teilen und zu synchronisieren.Hierzu werden Integrations-Lösungen erstellt, welche sich um die Aufbereitung und den Versand von Daten zwischen den Endsystemen kümmern.

Ein besonderes Augenmerk soll in diesem Blog-Artikel auf das Microsoft D365 CRM und Business Central gelegt werden. Der Versand der Daten läuft über unsere Lösung das smart CONNECT Framework ab.

Das Geheimnis des smart CONNECT Frameworks 

Um die Realisierung des Projektes zu beschleunigen und dadurch für unseren Kunden auch Geld zu sparen, haben wir unser eigenes Framework - smart CONNECT als Integrationskatalysator eingesetzt. Das von uns entwickelte Framework stellt standardisierte Möglichkeiten bereit, Daten von einem Endpunkt zu einem oder mehreren Endpunkten über Azure im Rahmen von EAI Szenarien zu übertragen. Dabei stell smart CONNECT schon im Vorfeld viele notwendige Integrationsfunktionalitäten wie Monitoring, Reprozessing, End to End Verschlüsselung, automatische Fehlerbehandlung, dynamisches Mapping, Übertragung von PDF-Dokumenten etc. zur Verfügung. Die Realisierung der Anbindungen der Endsysteme wird dabei mittels eines oder mehrerer Konnektoren verwirklicht, welcher in Form einer Azure Functions in der Cloud gehostet werden. Als Datenspeicher dient im Hintergrund in unserem Beispiel der Azure Service Bus. Daten werden zum smart CONNECT über eine .NET API übertragen ggf. wieder abgeholt. Die Anbindung ist dabei sehr einfach, da die Konnektoren leicht zu entwickeln, zu deployen und zu überwachen sind.

Anbindung der CRM Endpunkte 

Der vermutlich spannendste Teil der Anbindung. Oftmals wird das D365 CRM über bereitgestellte WebServices angesprochen oder über das CRM SDK eine Verbindung aufgebaut und verwaltet. Für unsere Anbindung haben wir jedoch die Möglichkeiten der Azure Logic Apps aufgegriffen, um uns den Aufwand des Verbindungsaufbaus, der Authentifizierung und der Anfragen-Gestaltung zu ersparen.

Der Zugriff erfolgt dabei über einen User aus der Domäne des CRMs. Dieser muss über genügend Rechte verfügen um die entsprechenden Aktionen auch ausführen zu können. Einen Gast-User aus einer anderen Domäne zu berechtigen hat nach unseren Erfahrungen nicht ausgereicht.

Die Logic Apps haben eine Vielzahl von Konnektoren, welche mittels Drag & Drop einfach in einen Workflow eingebaut werden können. Unter anderem erlauben diese auch mit einem D365 CRM zu interagieren. Erstellen von neuen Datensätzen, Ändern oder auch Löschen ist alles bereits vordefiniert und auch das Reagieren auf Änderungen im CRM ist leicht umzusetzen.

So haben wir zwei Logic Apps entworfen:

CRM Empfänger
Wenn es Änderungen auf Seiten des CRMs gibt, so z.B. ein neuer Auftrag (SalesOrder) angelegt wird, werden die Änderungen erfasst und der komplette Datensatz in einem JSON Format von der Logic App abgeholt. Hier ist auf Seiten des CRMs keine weitere Einstellung notwendig. Dieser Prozess weißt Verzögerung auf, da das CRM hier periodisch abgefragt wird. Das mögliche Intervall reicht von Sekunden bis hin zu Tagen und sollte daher für jedes Anwendungsszenario genügen. 

CRM Sender

Sobald ein neuer oder geänderter Datensatz an das CRM gesendet werden soll, wird dieser an die REST-URL der Logic App geschickt und über den Logic App Konnektor an das CRM weitergeleitet. Da das D365 CRM viele Entitäten über Referenzen in Form von GUIDs auflöst, ist es hier eventuell notwendig weitere Anfragen an das CRM zu machen, um gegebenenfalls Kunden anhand von Namen oder eindeutigen Merkmalen aufzuschlüsseln. In unserem Beispiel übertragen wir hier Verkaufsrechnungen (Invoices) und setzten aus Einfachheitsgründen feste Kunden und Preislisten.

Anbindung der Business Central Endpunkte  

Business Central sprechen wir über SOAP-WebServices an, die von Business Central bereitgestellt werden. Das Senden von neuen Datensätzen erfolgt über eine Azure Function, die an das smart CONNECT Framework angebunden ist. Diese Azure Function kennt die Adresse des entsprechenden Web Services, welcher Funktionen wie Read, Create, Update und Delete bereitstellt. Anhand der gegebenen Daten, welche aus dem CRM stammen, wird die Operation ermittelt und anschließend die entsprechende Funktion des Web Services aufgerufen. Die WSDL des Dienstes wurde dabei dazu genutzt einen einfachen Client zu erstellen und diesen in den Code für die Azure Function einzubinden.

Ändern sich Datensätze in Business Central, so wird eine weitere Azure Function mittels HTTP-POST durch Business Central aufgerufen. Diese bekommt eine JSON payload mit Informationen darüber, welche Entität sich geändert hat. Zusätzlich wird angegeben, um welche Operation (Delete, Update oder Create) es sich handelt, sowie einen Zeitstempel und die dazugehörige RecordId, die den Datensatz (zusammen mit der Entität) eindeutig identifiziert. Die gerufene AzureFunction verarbeitet diese Daten und spricht den passenden Web Service an um sich den dazugehörigen Datensatz zu holen. Dieser wird dann zum smart CONNECT übertragen und so an sein Ziel sicher gesendet.

Resümee 

Die Verbindung der Systeme funktioniert stabil und ist zuverlässig. Der Funktionsumfang der Logic Apps erlaubt uns einen einfachen Zugriff auf das Microsoft D365 CRM und erspart uns Daten über den Organisations-WebService zu beziehen. Dadurch entfällt der komplette Aufwand der Anbindung, Authentifizierung und Schemaerstellung.
Für die Anbindung von Business Central ist der größere Teil die Erstellung eines Jobs, welcher bei Aktualisierung eines Datensatzes ein Update an unseren WebService schickt. Die Anbindung aus Sicht der Middleware ist hier insbesondere mit dem Einsatz von Smart CONNECT recht einfach und schnell umzusetzen. So waren wir innerhalb weniger Tagen mit dem Projekt fertig gewesen.