1CRM und TYPO3

So gehen CRM-System und TYPO3 CMS eine fruchtbare Verbindung ein

Wer hat die Begriffe Self-Service-Portal (SSP), Customer-Self-Service oder in unseren Landen Kundenportal beziehungsweise Kundenzentrum wie es beispielsweise bei BMW und auch bei der ENBW heißt nicht schon gehört.

Diese Lösungen verfolgen primär alle ein Ziel, die Kundenprozesse zu automatisieren und die Kundeninformationen zu zentralisieren. Die Voraussetzung hierfür ist eine enge Verzahnung des Internetportals (CMS) und der Kundendatenbank (CRM). Mit der von uns programmierten Extension ist eine Basis für TYPOP3 in Kombination mit dem CRM System 1CRM geschaffen, die ich euch im Folgenden kurz vorstellen und die Potenziale aufzeigen möchte.

CRM und TYPO3 vorbereiten

Voraussetzungen schaffen

Idealerweise wird das 1CRM System bereits verwendet. Sollte dies nicht der Fall sein, sollte bevor mit der Installation und Konfiguration der Schnittstellen begonnen wird, erst einmal das CRM System 1CRM heruntergeladen, installiert und konfiguriert werden. Eine Anleitung ist auf der Webseite von 1CRM zu finden.

Zusätzlich zum während der CRM-Installation angelegten „CRM Admin-Benutzer“, sollten noch die folgenden 3 Testbenutzer angelegt werden. Ein „Lead-“, ein „Contact-“, und ein „Account-“ Benutzer.

Diese 3 Testbenutzer werden dann später von der Extension bereit gestellten PHP Unit Tests für Testzwecke herangezogen. Fehlt einer dieser Benutzer wird dies auch entsprechend in den PHP Unit Tests kenntlich gemacht und der Test schlägt fehl.

Um PHP Unit Tests ausführen zu können, muss die TYPO3 Extension „phpunit“ installiert sein.

Alles über das
Open Source CRM 1CRM

CRM-Erweiterung in TYPO3 laden

Schnittstellen einrichten

Die Einrichtung der Schnittstellen selbst, ist denkbar einfach und erfolgt wie gewohnt über den TYPO3 Extension Manager.

Die Reihenfolge der zu installierenden Extensions muss eingehalten werden. Das bedeutet das zuerst der „v4_crm_agent“, dann die „v4_crm_library“ und zuletzt der „v4_crm_portal_user“ heruntergeladen und installiert werden muss.

Nachdem alle 3 Erweiterungen heruntergeladen und installiert wurden, können diese nun ebenfalls über den Extension Manager konfiguriert werden.

Folgende Einstellungen können im „v4_crm_agent“ vorgenommen werden, wobei manche davon zwingend vorgenommen werden müssen (mit einem * markiert):

EigenschaftDefault WertBeschreibung
crmURL *http://localhost/json.phpDie Url zur Datei „json.php“, zu finden im Webseiten-Wurzelverzeichnis.
crmAdminUserName *adminDer bei der Installation angegebene Administrator Name.
crmAdminPassword *adminpwDas bei der Installation angegebene Administrator Password.
testCrmContactIdz.B.: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxDer Test- „Contact-“-Benutzer.
testCrmAccountIdz.B.: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxDer Test- „Account-“-Benutzer.
testCrmUserIdz.B.: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxDer Test- „User-“-Benutzer.
testPortalUserNameusernameDer Test- „Portal-“-Benutzername.
testPortalUserPassworduserpasswordDas Test- „Portal-“-Benutzerpasswort.

Tabelle 1 : v4_crm_agent ExtConf

CRM-Erweiterung in TYPO3 konfigurieren

Die Templates von „v4_crm_agent“ einrichten

Damit Änderungen an den Templates beim nächsten Update nicht überschrieben werden, sollten alle Template-Ordner mit Inhalt beispielsweise in den fileadmin kopiert werden. Die Originaldateien liegen im „typo3conf/ext/v4_crm_agent/Resources/Private/” Ordner.

Den Pfad können wir im TypoScript beeinflussen. Zusätzlich zu den Pfadangaben muss noch die Ordner ID angegeben werden, in welcher dann das TYPO3 Pedant des CRM Benutzers gespeichert wird, nämlich in der fe_users Tabelle.

Um dies zu erreichen, muss folgendes in die Typoscript Constants eingetragen werden, welche dann wiederrum im TypoScript-Setup der Extension verwendet werden:

plugin.tx_v4crmportaluser {
view {
templateRootPath = fileadmin/templates/www.domain.tld/html/Templates
partialRootPath = fileadmin/templates/www.domain.tld/html/Partials/
layoutRootPath   = fileadmin/templates/www.domain.tld/html/Layouts/

}
persistence {
storagePid = 99
}

}

Unter „typo3conf/ext/v4_crm_agent/Configuration/TypoScript/“ sind weitere Einstellungen.

Folgende Templates werden von der Extension verwendet:

EigenschaftBeschreibung
Show ProfileZeigt das Template an, mit welchem es möglich ist den CRM Benutzer anzuzeigen. Die anzuzeigenden Felder können per Typoscript beeinflusst werden.
Edit ProfileZeigt das Template an, mit welchem es möglich ist den CRM Benutzer zu editieren und zu speichern. Die Daten werden per JSON zurück in das CRM System geschrieben.
PasswordForgottenZeigt das Template an, mit welchem das Passwort eines bereits im CRM System vorhandene CRM Benutzers abgefragt werden kann. Das Passwort wird dann der im CRM Benutzer hinterlegten E-Mail Adresse mitgeteilt.
PasswordResetZeigt das Antwort Template der PasswordForgotten-Prozedur an.

Tabelle 2 : v4_crm_agent Templates

Alles zu dem
Enterprise CMS TYPO3

Anbindung der CRM-Erweiterung in TYPO3 analysieren

Einfaches testen per PHP Unit Tests

Wie bereits erwähnt, bietet die CRM-Extension sogenannte PHP Unit Tests. Mit diesen war es mir es schnell möglich, eine fehlerhafte Anbindung zu analysieren.

In meinem ersten Versuch scheiterte ich bereits daran, dass ich vergessen hatte, das statische Extension Template meinem Root Template hinzuzufügen. Dies wurde mir sofort beim Frontendaufruf per TYPO3 Fehlermeldung Extension template in root template not found! kenntlich gemacht.

Der nächste Fehler in welchen ich beim Testen reingestolpert war, bezog sich auf eine falsche Pfadangabe zur JSON URL. Die Nutzung der „Passwort vergessen“ Funktion lieferte ständig das Ergebnis Kein Benutzer gefunden obwohl dieser im CRM System definitiv vorhanden war.
Auch wenn man als Administrator das Passwort des jeweiligen Testbenutzers kennen sollte und man versucht sich direkt einzuloggen, kann dies wegen der fehlerhaften URL nicht klappen. Leider wird dies bei diesem Vorgang durch die nicht ganz treffende TYPO3 Fehlermeldung Required argument „email“ is not set kenntlich gemacht. Der Extension Entwickler ist informiert, dieser wird den Fall mit einer mehr entsprechenden Fehlermeldung noch abfangen.

Nachdem alle Extension-Konfigurations-Einstellungen von mir richtig vorgenommen wurden, liefen die Tests auch allesamt anstandslos durch.

TYPO3-CRM-System voranbringen

Erweiterungsmöglichkeiten & Szenarios

Die Extension bietet in Ihrer jetzigen Form bereits eine hervorragende Basis, um die Grundfunktionalität nämlich die Kommunikation der Extension mit einem CRM-System dahin gehend zu erweitern, so dass weitere CRM-Funktionalitäten im CMS-System zur Verfügung gestellt werden können.

So habe ich bereits eine individuelle Erweiterung der Extension vorgenommen. Diese Erweiterung sorgt auf der einen Seite für die Darstellung, Kategoriesierung und Buchung der Veranstaltung über eine Listen- und Detailansicht. Auf der anderen Seite können sich angemeldete Teilnehmer einloggen, Ihre Stammdaten ändern und zusätzlich die Veranstaltungen einsehen, an welchen Sie bereits teilenommen haben oder werden. Zusätzlich werden hier auch die Fotokolle und weiterführende Informationen zu der Veranstaltung veröffentlicht. Dadurch kann mit der integrierten CRM-CMS Lösung ein professionelles Online-Veranstaltungsmanagement abgebildet werden.

Auf diese Art kann jedes CRM-Modul angesprochen werden. Die Kommunikation per JSON ist dabei so flexibel gewählt, das die Felder welche im CRM-System angesprochen werden sollen, einfach per Typoscript fieldList definiert werden, so dass diese dann wiederum von JSON herangenommen werden können, um die Abfragen dynamisch aufzubauen und starten zu können.

Als „best practice“ hat sich bewährt, für jedes CRM-Modul, das angesprochen werden soll, eine individuelle weitere Extension zu erstellen. Dies garantiert ein einfaches Debugging des jeweiligen Moduls sowie das schreiben Modulspezifischer PHP Unit Tests.

Prinzipiell müssten dabei 2 Extensions geschrieben werden. Eine in welcher die gemeinsamen CMS-Funktionen bereitgestellt werden und eine welche für die Darstellung des angesprochenen CRM-Moduls im Frontend zuständig ist.

Am Beispiel Veranstaltungen würde ich somit folgende zwei Zusatz-Extensions erstellen:

  • v4_crm_library_events
  • v4_crm_portal_user_events (hier wird per Typoscript die fieldList mit den anzusprechenden CRM Modul Feldnamen definiert)
Mit vernetzten Lösungen
Eventmanagement digitalisieren

Fazit TYPO3 und CRM-System

Einfacher Informationsaustausch zwischen CMS und CRM-System

Zusammenfassend lässt sich sagen, dass es mit dieser CRM-Schnittstelle für TYPO3 richtig Spaß macht, CRM-Informationen auf der CMS-Seite darzustellen. Mittels weniger Klicks und Konfigurationseinstellungen ist die Basiskommunikation sehr leicht und schnell eingerichtet.

Und wer gezielt bestimmte CRM-Module in seinem CMS nutzen möchte, kann dies genauso leicht in einer weiteren Extension programmieren. So konnte bei Firma.de der Online-Shop an das CRM-System nahtlos angebunden werden, über den die Startups und Gründer direkt alle Bausteine für eine erfolgreiche Firmengründung erwerben können. Dadurch können zeitaufwendige Prozesse automatisiert und wertvolle Ressourcen eingespart werden.

Für Anregungen und Verbesserungsvorschläge freuen wir uns über jeden Kommentar auf unserem Blog.

Kunden besser betreuen durch
integriertes Self-Service-Portal

Vielen Dank fürs Lesen!

Guido Palacios

Passionierter und enthusiastischer TYPO3 Entwickler, natürlich Certified TYPO3 Integrator