Integration mit Logic Apps

Viele Unternehmen setzen Systeme unterschiedlicher Hersteller ein, die nicht miteinander kommunizieren und teilweise sogar inkompatibel sind. Oft bieten die Systeme jedoch Schnittstellen an.

Da bei der Digitalisierung von Prozessen die beteiligten Systeme immer miteinander kommunizieren müssen, um Medienbrüche zu vermeiden, müssen komplexe Schnittstellen und Integrationsplattformen geschaffen werden.

Logic Apps

Mit Azure Logic Apps und Liquid Templates kann die Kommunikation der Systeme schnell und effizient erfolgen. Zudem können Templates erstellt werden, die für weitere Integrationen wiederverwendet werden können. Dadurch werden die Kosten für solche Integrationen deutlich minimiert.

Azure Logic Apps ist ein Cloud-basierter Dienst, mit dem Workflows erstellt und automatisiert werden können. Durch den serverlosen Ansatz können schnell geschäftskritische und resiliente Lösungen erstellt werden. Man muss sich nicht um serverseitige Themen wie C#-Versionen, Betriebssystem-Updates etc. kümmern. Auch Kenntnisse in Programmiersprachen sind nicht zwingend erforderlich.

Integration mit Logic Apps Vorteile

Logic Apps haben eine Vielzahl von Vorteilen für die Integration von Drittsystemen:

  1. Schnelle Entwicklung: Azure Logic Apps bieten eine visuelle Designer-Oberfläche, mit der Workflows und Transformationen schnell und einfach erstellt werden können, ohne dass zwingend Code geschrieben werden muss.
  2. Integration: Logic Apps bieten eine Vielzahl von vorfertigten Connectors, die es ermöglichen, eine Verbindung zu verschiedenen Diensten herzustellen. So sind standardmässig zum Beispiel Connectoren zu Microsoft 365, Salesforce und vielen anderen enthalten. Aber auch universelle Schnittstellen, wie die Anbindung von REST-Services oder CSV/XML-basierte Schnittstellen, lassen sich einfach erstellen.
  3. Skalierbarkeit: Logic Apps sind in der Lage, Workflows automatisch zu skalieren, um eine hohe Arbeitslast zu bewältigen.
  4. Kosteneffektivität: Logic Apps bieten unter anderem eine nutzungsbasierte Abrechnung. Für die Integration der Liquid Templates verwenden wir jedoch den Standard-Tier, da somit kein zusätzlicher Azure Integration Account erforderlich ist und VNET-Integration unterstützt wird.

Liquid Templates

Liquid ist eine Open-Source Template-Sprache, welche von Shopify entwickelt wurde. Sie dient dazu, dynamische Inhalte zu transformieren. Mit Liquid können Entwickler benutzerdefinierte Templates erstellen und mittels Logic Apps Daten aus einer Vielzahl von Quellen einbinden. Liquid wird vorgängig für die JSON-to-JSON- oder XML-to-JSON-Transformation verwendet. In diesem Blog-Beitrag konzentrieren wir uns auf die JSON-to-JSON Transformation.

Liquid bietet eine Vielzahl von Tags und Filtern, um Aktionen oder Formatierungen auf Daten anzuwenden. Beispielsweise können bedingte Iterationen durchgeführt und Daten aus einem JSON-Array gefiltert und transformiert zurückgegeben werden.

Diese Möglichkeiten machen Liquid in Verbindung mit Logic Apps zu einem mächtigen Werkzeug. Logic Apps dienen zum Laden der Daten aus den Quellsystemen. Die Liquid Templates können dem Workflow als Logic App Action hinzugefügt werden. Nach der Transformation werden die Daten im Format des Zielsystems gespeichert.

Transformation

In diesem Beispiel verwenden wir Logic Apps und Liquid Templates, um Spesen und andere externe Kosten aus einem Spend Management System in das ERP zu transformieren. Das Spend Management System ist eine SaaS-Anwendung, die über OData-APIs verfügt, was den Zugriff auf die relevanten Daten erleichtert.

Wie unterscheide ich eingehende Anrufe in Teams?

Die Logic App verfügt über einen Storage Queue Trigger. Das Ausgabenmanagement ist so konfiguriert, dass ein Webhook (eine andere Logic App) aufgerufen wird, sobald die Ausgabe einen bestimmten Status erreicht hat. Die Webhook Logic App schreibt die übermittelte Expense-ID in die Queue.

Sobald der Eintrag in die Queue geschrieben wurde, startet die eigentliche Logik. Die Logic App erhält die Expense-ID und lädt die eigentlichen Expense-Informationen über die OData-API. Das definierte Schema wird mit der Aktion “Parse JSON” verarbeitet.

Wie unterscheide ich eingehende Anrufe in Teams?

Nach dem die Expense gewisse Logiken durchläuft, um zu prüfen, ob die Expense für die Verarbeitung überhaupt relevant wird, wird für das ERP-System in zwei unterschiedliche Typen unterschieden, da das ERP hierfür unterschiedliche zwei Objekttypen und -formate zur Verfügung stellt.

Wie unterscheide ich eingehende Anrufe in Teams?

Mittels zwei unterschiedlichen Liquid-Templates wird die eigentliche Transformation durchgeführt. Hierfür nimmt die Action den Body der Expense aus der OData-Schnittstelle entgegen (Input-JSON). Als Source ist “Logic App” definiert, da bei einer Standard Logic App im Gegensatz zur Consumption Logic App kein Azure Integration Account erforderlich ist.

Die Mapping Datei (MapSpesen.liquid) wurde im Vorfeld hochgeladen.

Wie unterscheide ich eingehende Anrufe in Teams?

Die folgende Abbildung zeigt einen Auszug der MapSpesen.liquid Datei. Man sieht sehr schön, wie mächtig ein Liquid-Template sein kann.

Grundsätzlich ist das Liquid-Template so aufgebaut, wie das Zielformat definiert ist. Der Einfachheit halber macht es deshalb Sinn mit einem Beispiel-JSON des Zielformates zu beginnen und alle Werte mit Liquid-Platzhaltern zu versehen, die automatisch befüllt werden sollen.

Platzhalter werden mit {{ … }} definiert, während Funktionen mit {% … %} festgelegt sind.

Der den Platzhaltern können nun die Werte aus dem Input-JSON übergeben werden. Dies erfolgt über JsonPath und den Einstieg “content”. Wenn man also auf das Attribut “createdBy” des Quell-JSON zugreifen möchte, schreibt man:

{{ content.createdBy }}

Wichtig ist, das Liquid dabei nicht zwischen Feldtypen unterscheidet. Das heisst, es wird zum Beispiel nicht zwischen String und Integer unterschieden. Liquid gibt einfach nur den Wert zurück. Damit es bei der Transformation keine Fehler entstehen, muss also der Wert je nach Feldtyp mit ““ umschlossen werden:

"email": "{{ content.createdBy }}"

Neben String-Operationen, wie einem Split, können if-Conditions oder auch Berechnungen durchgeführt werden.

Integration mit Logic Apps

Nach der Transformation kann innerhalb der Logic App mit dem transformierten JSON weitergearbeitet werden und zum Beispiel noch Feldwerte ersetzt werden, die nicht im Input-JSON-Kontext vorhanden sind.

Zuletzt wird das finale JSON via HTTP-Call an das ERP-System gesendet. Auch hier ist eine Logic App im Standard-Tier sinnvoll, da VNETs unterstützt werden und damit sogar auf OnPremises-Systeme zugegriffen werden kann.

Integration mit Logic Apps

Zusammengefasst zeigt der Blog-Artikel eindrucksvoll wie schnell und einfach Schnittstellen mit Logic Apps und Liquid geschaffen werden können. Das Besondere ist hierbei noch, dass die Schnittstelle On-Demand funktioniert und nicht wie bei einer Data Factory in Intervallen gearbeitet werden muss.

Wenn Sie eine ähnliche Problematik realisieren müssen, treten Sie gerne mit uns in Kontakt. Wir unterstützen Sie!

Teile unseren Blog!