BSI CRM meets Google Groupware

Ein grosser internationaler Kunde entschied sich die Groupware von Lotus Notes durch die von Google abzulösen. Dabei hat BSI hat den Auftrag erhalten zu prüfen, inwieweit es Sinn macht a) BSI CRM mit Google zu integrieren und b) diese Anbindung umzusetzen. Das CRM-System wird bei diesem Kunden hauptsächlich von Aussendienstmitarbeitern eingesetzt. Im Büro nutzen diese BSI CRM, um ihre Verkaufsaktivitäten zu planen, Offerten zu schreiben etc. ansonsten sind diese Mitarbeiter aber viel unterwegs um Kunden zu besuchen.

Zu jeder Zeit und mobil Terminverfügbarkeiten prüfen

In der Tat bietet eine Integration von BSI CRM und der Groupware von Google dem Anwender grossen Mehrwert. Die Kunden-Kontakthistorie im CRM-System – dies sind beispielsweise stattgefundene oder geplante Telefonanrufe und Besuche – sollen mit dem Kalender von Google abgeglichen werden.

Auf diese Weise kann der Anwender seine Verfügbarkeiten und persönlichen Termine mit den Geschäftsterminen aus BSI CRM koordinieren und hat aktuelle Daten jederzeit auf seinem Mobilgerät zur Verfügung. Denn für erfolgreiche Verkäufer sind umfassende Informationen in Echtzeit ganz wichtig: die Mitarbeiter erkennen durch den Abgleich augenblicklich wann Verkaufsaktivitäten mit Kunden geplant werden können und sind in der Lage die Details zu deren Durchführung einzusehen.

Die Architektur der serverseitigen Synchronisation

Neben der Anbindung des Kalenders haben wir uns die Synchronisation von Kontaktpersonen und Tasks zum Ziel gesetzt. Nachfolgend erklären wir euch wie wir die Kalendersynchronisation umgesetzt haben:

Für die Umsetzung galten einige Vorbedingungen:

Die Synchronisation musste serverseitig umgesetzt werden, um clientseitige Abhängigkeiten zu vermeiden. Unser Kunde sollte weiterhin die Freiheit haben das Web-Frontend von BSI CRM einzusetzen, anstelle des fest installierten Clients. Und ganz wichtig: Der Anwender durfte keine Einbussen in Bezug auf Performance und Benutzerfreundlichkeit in Kauf nehmen.

Ein kleiner Überblick zu der Architektur der Synchronisation von BSI CRM und Google zum besseren Verständnis.

Synchronisation von BSI CRM und Google Groupware
Serverseitige Synchronisation von BSI CRM und Google Groupware

Unsere Applikation BSI CRM besteht im Backend aus einem Windows Apache Tomcat Applikationsserver und einem Datenbankserver mit Oracle 11g.

Die Anwendung ist eine RCP Applikation (Rich Client Platform Application) welche wir mit dem Eclipse Scout Framework und JDK 8 entwickelt haben. Als Frontend nutzen die Anwender einen Eclipse Scout Client mit SWT-GUI. 

BSI CRM Google Plug-In synchronisiert über API

Als erstes haben wir ein neues BSI CRM Google Plug-In entwickelt, welches die Logik zur Synchronisation von Kalender-Elementen und alle notwendigen externen Bibliotheken enthält. Dank unserem Framework war das Plug-In mit wenigen Handgriffen in die bestehende Applikation eingebunden.

Zur Ansteuerung der einzelnen Funktionen eines Google Accounts, nutzen wir das Google-Calendar API V3.0 welches JSON unterstützt; analoge APIs existieren für Tasks und Kontakte.

Zur Authentifizierung haben wir, wie von Google empfohlen, OAuth 2.0 for installed applications verwendet. Die Benutzer müssen sich dabei einmalig authentifizieren und bestätigen, dass BSI CRM auf ihren Kalender zugreifen darf. Das dabei vom Google-API empfangene Refresh-Token wird verschlüsselt auf der Datenbank abgelegt und wird für das Generieren aller zukünftigen Access-Tokens verwendet.

Als zusätzliche Sicherheit braucht Google eine Client-ID und ein Client-Secret, welche vom Kunden einmalig erstellt wurden und auf unserem Applikationsserver verfügbar sind. So identifiziert Google BSI CRM als Client mit Zugriffsberechtigung.

Die Synchronisation der Elemente Task, Kontakt und Kalendereintrag wird nachfolgend am Beispiel des Kalenders erläutert: Erstellt oder modifiziert ein Benutzer in BSI CRM einen Eintrag in der Kunden-Kontakthistorie so wird die Anfrage dem CRM-Server weitergeleitet, der die Synchronisation mit Google über das entsprechende API ausführt, der Kalendereintrag ist unmittelbar im Google Kalender verfügbar.

Der ganze Prozess geschieht asynchron in einem separaten server-seitigen Thread. Dadurch, dass die Ausführung asynchron verläuft, muss der Anwender nicht auf den Abschluss der Synchronisation warten, er kann sofort mit BSI CRM weiterarbeiten.

Polling wird verwendet um die Kalenderdaten von Google in BSI CRM zu übertragen: Ein regelmässig ausgeführter serverseitiger Job stellt die Replizierung der Google-Kalenderdaten aller autorisierter Benutzer in BSI CRM sicher.

Mittels Batch-Mechanismus werden dabei mehrere API Calls in einen einzelnen HTTP Request gebündelt – in diesem Fall haben wir dieses Vorgehen einzelnen API-Aufrufen vorgezogen und gewährleisten so optimale Performance.

Sauber angebunden – glückliche Kunden

Die Anbindung an Google gestaltete sich, dank unserem innovativen Framework und den hervorragenden APIs von Google, als sehr schöne Arbeit. Die Umsetzung hat Spass gemacht und der Kunde ist sehr zufrieden.

Derzeit werden pro Monat für 350 Benutzer rund 8300 Kalendereinträge synchronisiert, dabei werden mehr als 70 000 API Calls ausgeführt – bisher unterbruchs- und fehlerfrei.

Datum