Herausforderung der Kunden
In diesem Integrationsprojekt, im Bereich Maschinenbau, haben wir HubSpot mit dem ERP System AlphaPlan (On-Premises) des Kunden integriert. Das Ziel war, eine redundante Datenpflege in dem CRM- und ERP-System zu vermeiden. Dabei wurde auf die Anforderungen an eine möglichst zeitlichnahe und robuste Synchronisation einen großen Wert gelegt.
Lösungsweg
Wir haben Kafka-Broker als Echtzeit-Messaging-Technologie verwendet, Producer- und Consumer-Clients mit Python erstellt und Kafka-Topics (für Kontakte und Unternehmen) in der Confluent Cloud erstellt, Azure-Functions in der Azure Cloud bereitgestellt und auf dem Server vor Ort, auf dem Alphaplan läuft, Consumer-Python-Anwendungen (ein Consumer für jede Entität) entwickelt.
Durch diese Konstellation (Implementierung des Consumer On-Premises) entfällt der zusätzliche Aufwand für die Netzwerkkonfiguration (Firewall, Ports) der für einen externen Zugriff auf die Datenbank erforderlich wäre.
Der Producer-Client, der in Python entwickelt wurde und in der Azure-Function ausgeführt wird, verfügt über einen Timer-Trigger und ruft alle 5 Minuten den Hubspot-API-Endpunkt auf, liest die Einträge und schreibt sie in die entsprechende Kafka-Topic. Bei jedem Durchlauf wird als letzter Schritt der Zeitstempel des zuletzt gelesenen (von Hubspot) und geschriebenen (in Kafka) Eintrags in den Blob-Storage geschrieben. Dieser Zeitstempel wird beim nächsten Durchlauf verwendet, um Einträgen in Hubspot zu lesen die nach dem Zeitstempel erstellt oder verarbeitet wurden. Dadurch wird sichergestellt, dass bei einem Ausfall des Azure-Funktionslaufs keine Einträge von Hubspot verpasst werden.
Der Consumer (je ein Consumer für jede Entität: Unternehmen und Kunde) abonniert die entsprechende Topic und wartet dauerhaft auf neue Einträge. Jeder neue Eintrag wird gelesen, verarbeitet und über eine Python ODBC-Verbindung in Alphaplan geschrieben.
Ein wichtiger Bestandteil der Lösung bestand darin, eine Logik zu implementieren, die die Zuordnung eines Kontakts zu einem Unternehmen überträgt, wenn diese Verknüpfung in Hubspot erfolgt, damit dieselbe Verknüpfung im Zielsystem (Alphaplan) repliziert wird.
Zusammenfassung
Neue Einträge und Verknüpfungen zwischen den Entitäten (Kontakt – Unternehmen) werden automatisch alle 5 Minuten an das ERP-System weitergeleitet, und jeder Eintrag wird auf einmal geschrieben.
Technologien
Python, Apache Kafka, Azure Functions
Image by rawpixel.com on Freepik