Datenaustausch zwischen SAP und Dynamics 365 CRM mit Azur Logic App und Liquid Template

Success Story Azure

Liquid ist eine Template-Engine, die eine einfache Auszeichnungssprache verwendet, um alle möglichen Ausgabeformate wie HTML, JSON, CSV usw. zu erzeugen. Sie ist ziemlich einfach zu benutzen. Mit nur wenigen Zeilen Code können so Lösungen erstellt werden. Innerhalb von Logic Apps werden Liquid-Vorlagen als eine Art XSLT für JSON-Objekte verwendet. Dies ermöglicht es uns, komplexere Transformationen auf JSON-Objekten zu erstellen, ohne dass eine benutzerdefinierte Azure-Funktion eingeführt werden muss.

Die Anforderung

Unser Kunde bietet seinen Kunden die Möglichkeit, Preislisten für Produktpaletten zu erstellen, bevor er/sie die Bestellungen an einem bestimmten Datum und Ort vornimmt. Da diese Daten in SAP gespeichert sind, wird Kommunikation zwischen Microsoft Dynamics 365 CRM und SAP benötigt. Täglich finden mehrere Aufrufe zwischen den Systemen statt, bei denen jeder Aufruf Dutzende oder Hunderte von Produkten enthält. Außerdem gibt es viele Bedingungen bezüglich des Endpreises, zum Beispiel unterschiedliche Steuersätze oder spezielle Kundenwünsche. Die Hauptanforderung unseres Kunden ist es, genaue Daten in Echtzeit zu erhalten, also ein gutes Zusammenspiel der Systeme (CRM und SAP) untereinander.

Bisher war das Dynamics 365 CRM-System on-premise. Der vom CRM ins SAP eingeleitete Aufruf erfolgte mit REST API, das im Grunde ein Web-API-Dienst ist und alle Aktionen bietet, um Daten von SAP zu erhalten, die benötigte Transformation durchzuführen und dann die Web-API vom CRM-Plugin oder der Custom Workflow Activity/ Custom Action in Workflows aufzurufen.

In diesem Jahr wurde das Upgrade von Dynamics CRM 365 von der on-premise-Version in die Cloud durchgeführt. Nun war REST API eine veraltete Technologie, die keine gute Performance mehr bietet, messbar an den erforderlichen Zeiten für jeden Aufruf zwischen den Systemen. Zusätzlich sollten zukünftig die Umwandlung der Daten von CRM in SAP und das Ergebnis des Aufrufs protokolliert werden.

Der Kunde

 

Die NORDMANN Unternehmensgruppe ist ein mittelständisches Familienunternehmen in vierter Generation und wurde 1908 gegründet. Stammsitz der Unternehmensgruppe ist Wildeshausen in Niedersachsen. Hier wurde das Unternehmen 1908 als Bierverlag Fritz Nordmann gegründet. 

Kunde:   
Nordmann Unternehmensgruppe
Produkte und Dienste:
Azure Logic App
Dynamics 365 Sales
SAP
Branche:
Großhandel
Unternehmensgröße:
100
Land:
Deutschland

Die Lösung

Mit der Migration von Dynamics 365 CRM in die Cloud wird die neue Lösung mit der Azure Logic-Anwendung erstellt. Azure Logic Apps ist ein Cloud-Service, der bei der Planung, Automatisierung und Orchestrierung von Aufgaben, Geschäftsprozessen und Workflows hilft, wenn eine Integration von Anwendungen, Daten, Systemen und Services in Unternehmen oder Organisationen erforderlich ist. Logic Apps vereinfacht den Entwurf und die Erstellung skalierbarer Lösungen für die Integration von Anwendungen, Daten, Systemen, Enterprise Application Integration (EAI) und Business-to-Business (B2B)-Kommunikation, ob in der Cloud, vor Ort oder beides. Außerdem gibt es einsatzbereite Konnektoren für Dynamics 365 und SAP.

Da von Azure logic Apps die Anfrage an SAP in JSON gestellt wird, während SAP nur XML-Anfragen (und auch Antworten in XML-Sprache) verarbeitet, haben wir Liquid Template als Zwischenprodukt für die Konvertierung zwischen den Systemen verwendet.

Liquid ist eine Template-Engine, die eine einfache Auszeichnungssprache verwendet, um alle möglichen Ausgabeformate wie HTML, JSON, CSV usw. zu erzeugen. Sie ist ziemlich einfach zu benutzen. Mit nur wenigen Zeilen Code können so Lösungen erstellt werden. Innerhalb von Logic Apps werden Liquid-Vorlagen als eine Art XSLT für JSON-Objekte verwendet. Dies ermöglicht es uns, komplexere Transformationen auf JSON-Objekten zu erstellen, ohne dass eine benutzerdefinierte Azure-Funktion eingeführt werden muss. Die Ergebnisse des Anrufs zwischen CRM und SAP werden im Modul Vertrieb angezeigt, und zwar in dem für die Preise vorgesehenen Bereich:

Die von SAP zur Verfügung gestellten Informationen enthalten Daten über Codes, Artikel, Werte und Produktart. Sie können auch in Excel, PDF oder in gedruckter Version exportiert werden. Bei der Wahl der internen Verwendung werden mehr Daten angezeigt, da das Nutzungsziel dann intern ist. 

Azure Logic App und Liquid Template

Im Folgenden erläutern wir detailliert diese Technologie, die für die neue Lösung der Kommunikation zwischen Microsoft Dynamics 365 CRM und SAP verwendet wird.

Schritt 1: Triggeraktion - Daten, die von einem System gesendet werden sollen.

Wir haben eine Azure Logic App (ähnlich dem Flow) erstellt, die mit einer Trigger-Einleitung beginnt. Der Auslöser ist hier der Eingang einer HTTP-Anfrage- wenn wir eine Anfrage von Web-Ressourcen gesendet haben. (auf Knopfdruck von "Konditionen für Kunden"). 

Wir haben einen Anruf in JSON geschickt, der folgende Informationen enthält: 

  • Kundennummer 
  • Datum, an dem diese Preise gelten 
  • Ort des Kunden  
  • Liste der Produkte, die wir wissen wollen,
  • den Preis

Schritt 2: Transformation von Daten von einem System zum anderen.

SAP akzeptiert XML-Anfragen, daher werden wir Liquid-Templates verwenden, das die Konvertierung von Dateien von JSON nach XML (aber auch von einem JSON in eine andere Form von JSON) und umgekehrt durchführt. Innerhalb, auf Stelle, stellen wir die Informationen über: Kunde, Datum der Preise, Ort und Liste der Artikel. Als nächstes transformieren wir nicht nur den Aufruf von JSON auf XML, sondern modifizieren die Daten nach Bedarf von SAP. Ein Beispiel: Die Produktcodes werden in CRM mit 6 Stellen gespeichert, während SAP nur 18 Stellen akzeptiert. Bevor der Anruf gesendet und bearbeitet wird, wird er in eine erkennbare Version von SAP konvertiert. Das gleiche gilt bei der Rückgabe von Werten, die 0-Stellen werden entfernt, um das korrekte Format für CRM zu erhalten. 

In diesem Schritt konvertieren wir mit Liquid Template unser JSON in XML, wie es SAP durch eine zuvor gespeicherte Karte erwartet. Diese Konvertierung erfolgt sehr schnell innerhalb von wenigen Sekunden. Die Antwort von SAP ist immer noch in XML. Daher erfolgt eine weitere Konvertierung mit Liquid Template, um sie in JSON umzuwandeln, so dass sie in eine Web-Ressource umgewandelt werden kann. 

Im letzten Schritt erfolgt nach Erhalt der Antwort von SAP die Transformation der Daten von XML in JSON mit Liquid Template.

Fazit 

Liquid Template kann riesige Datenmengen sehr schnell konvertieren, innerhalb weniger Sekunden (abhängig von der Geschwindigkeit der SAP Antwort). In unserem Fall war es wichtig, dass die Informationen, die bei der Kommunikation von Systemen benötigt werden, schnell erfolgen, unabhängig von der Anzahl der benötigten Datensätze. In der Regel hat dieser Aufruf hunderte von Datensätzen. Die verarbeitete Zeit wird mit dem Einsatz von Liquid Template in der Azure Logik App reduziert. Vorher hatte die Umwandlung der Daten von/nach SAP, Zeile für Zeile und unter Berücksichtigung der riesigen Menge an Datensätzen pro Anruf, deutlich mehr Zeit in Anspruch genommen.

Wir können die Daten in ein beliebiges Objekt übertragen, und so wie die Web-Quellen aussehen werden. Liquid Templates transformieren JSON- und XML-Objekte. Diese Transformationen basieren auf Dotliquid, der .NET Implementierung von Liquid Templates Themes von Shopify.

Wenn wir Geschäftsregeln aus Logic Apps-Workflows auslagern wollten, so, dass wir den Workflow nicht aktualisieren müssen, wenn sie sich ändern, haben wir zwei Möglichkeiten:

  • wir könnten Azure Functions verwenden und Geschäftsregeln als .NET-Code implementieren.  
  • wir könnten Liquid Templates verwenden. 

Das reduziert den Aufwand für die Entwicklung, das Testen und das Deployment. Die Syntax ist nicht schwer zu verstehen und hilft beim Aufbau einer nicht komplexen Lösung, was später zu einer einfachen Wartung führt.