Import von Daten in Bexio
Neu kann Bexio über Zapier integriert werden. Wir durften diesen Konnektor für Bexio erstellen und freuen uns sehr, dass wir von Zapier in ihre Applikationssammlung aufgenommen wurden.
Nun lässt sich Bexio mit über 1000 Apps erweitern und in interessante Workflows integrieren. So können beispielsweise Rechnungen direkt aus einem e-Commerce Shop (Shopify, WooCommerce) oder einem CRM (Zoho Crm, Pipedrive) ins Bexio übernommen werden.
Gerne beraten auch Sie gerne, wie Sie ihre Prozesse rund um Bexio optimieren können.
Weiter kennen wir uns besten mit dem Bexio API aus und können Sie bei einer Datenmigration oder einer Synchronization ohne Zapier unterstützen.
Wir freuen uns auf ihre Kontaktaufnahme.
Entwicklung eines Zapier CLI Connectors
Der Einstieg in die Zapier CLI Plattform (https://github.com/zapier/zapier-platform-cli) war schwierig. Zapier dokumentiert viel, doch fehlen meistens gute Beispiel, die komplexer sind und einem helfen Lösungen zu finden. Eine gute Beispiel Applikation ist der One-Drive Connector von Zapier (https://github.com/zapier/zapier-platform-example-app-onedrive).
Während der Programmierung einer Zapier CLI Applikation trifft man auf folgende Herausforderungen:
- Was sind die verschiedenen Typen von Konnektoren?
- Wie muss die Applikation strukturiert sein?
- Wie erkennen Triggers neue Datensätze?
- Wie kann ich eine Id durch den expliziten Wert ersetzen?
Typen von Konnektoren
Zapier Konnektoren können Suchen (Search), Schreiben (Create) und neue Datensätze erkennen (Trigger). Dies ist hier beschrieben: https://github.com/zapier/zapier-platform-cli#triggerssearchescreates
Strukturieren der Applikation
Grundsätzlich kann die Applikation mit ihrer verschiedenen Konnektoren (Create, Search, Trigger) auf zwei Arten strukturieren:
- Mit Ressourcen im Verzeichnis ressources
- Mit den Konnektoren in den Verzeichnissen creates, searches und triggers
Der Vorteil der Ressourcen Lösung ist, dass man alle Funktionen und Konfigurationen in einer Datei erstellen kann. Dies ist sicherlich gut für kleinere Applikations, doch bei grösseren Applikationen hat dies den Nachteil, dass nur jeweils 1 Trigger, Search und Create definiert werden kann.
Erkennen neuer Datensätze bei Triggers
Damit bei Trigger neue Datensätze erkannt werden, setzt Zapier standardmässig auf die Deduplication der Id. Dies ist hier beschrieben: https://zapier.com/developer/documentation/v2/deduplication/ Wichtig zu wissen ist, dass bei einem Update Trigger, nicht auf die Id des Datensatzes deduplizieren kann, sondern man die Id um z.B. die Update Zeit ergänzen muss. Dies hat den Nachteil, dass die original Id des Datensatzen umbenannt werden muss, z.B. in ContactId bei einem Kontakt.
Wie kann ich eine Id durch den expliziten Wert ersetzen
Wenn der API eine Id und keine Wert zurückgibt, kann dies je nach Anwendungsfalls ungenügend sein. Wenn man z.B. den Wert auf Slack versenden möchte, ist die Id das falsche Ergebnis. Um eine Id nach dem API Call aufzulösen, stellt Zapier dehydration zur Verfügung (https://github.com/zapier/zapier-platform-cli#dehydration).
In diesem Beispiel wird für eine Land-Id der Namen des Landes geholt (Id: 1 => Schweiz).
In einem Trigger oder Search:
const hydrators = require('../hydrators'); company.country = z.dehydrate(hydrators.getCountryName, {countryId: company.country_id});
In in der Datei hydrators.js:
const getCountryName = (z, bundle) => { … }
Staging file mit Zapier CLI
Heute habe ich aus dem Bexio API ein Rechnungs-PDF gelesen und dieses über Zapier in Google Drive gespeichert. Beim Programmieren der Zapier CLI Application war viel Research und Hilfe des Support notwenig, um die zu ermöglichen.
Hier nun die Lösung für dieses Problem: Wenn ich ein File mit Base64 Codierung habe, muss ich dieses in ein Byte Array umwandeln und dann auf die Zapier Server speichern. Dies geschieht mit folgendem Code:
let fileContent = Buffer.from(fileContent, 'base64'); return z.stashFile(fileContent, fileContent.length, fileName, mimeType) .then(url => { return { file: url }});
Zum Schluss muss die URL retourniert werden. Mit dieser kann man dann im Google Drive oder Dropbox Connector weiterarbeiten.
Eigener Zapier Connector für Zoho CRM
Da der Umfang der Funktionen des Standard Zapier Zoho CRM Connectors für mich nicht mehr genügen, habe ich mich entschlossen, einen eigenen Connector mit erweiterten Funktionen zu programmieren. Dieser soll ermöglichen, auf Kontakte, Rechnungen, … via Id zugreifen zu können.
Der Connector findet man unter: https://github.com/pascaln/zapier-cli-zoho-crm-extended
Integration von Zoho CRM und ERP (Bexio) mit Zapier
Ich habe in den letzten Tagen meine ersten Schritte mit Zapier gemacht und muss sagen, ich bin von Zapier begeistert. Die Konnektoren und Prozesse lassen sich einfach erstellen und betreiben.
Mein erstes Projekt ist die Verbindung von Zoho CRM und dem ERP Bexio. Ziel ist es dabei die Kunden und Kontaktdaten synchron zu halten, wobei das CRM führend ist. Wieso wird diese Integration benötigt? Zoho CRM ist ein internationales System, das Rechnungen erstellen kann, aber keine Buchhaltung mit Zahlungsflüssen anbietet. Um nun eine Buchhaltung nach Schweizer Standards zu betreiben, wird Bexio mit dem CRM integriert.
Damit Rechnungen in beiden Systemen angelegt werden können, müssen die Stamm- und Rechnungsdaten abgeglichen werden. Zapier bietet dazu einen Konnektor für Zoho CRM an, mit dem Daten einfach ausgetauscht werden können. Den Konnektor für Bexio habe ich selbst erstellt. Mit den Standardfunktionen von Zapier war dies ein Aufwand von wenigen Stunden.
Gerne stelle ich den Zapier Bexio Konnektor zur Verfügung. Wer interessiert ist, kann sich bei mir melden.