Integration von SugarCRM: TYPO3 versüßt
Wie TYPO3 setzt SugarCRM auf PHP als
serverseitige Skriptsprache (wobei PHP 5 bisher nicht offiziell
unterstützt wird) und MySQL als Datenbank, die Bedienung erfolgt
über eine webbasierte Benutzeroberfläche. Im Folgenden wird davon ausgegangen,
dass SugarCRM als separate Website betrieben wird, jedoch
funktioniert es auch in einem Unterverzeichnis einer TYPO3-Website
problemlos. Nachdem das SugarCRM-Paket entpackt und die zugehörige
Website eingerichtet wurde, hilft ein Assistent bei der weiteren
Konfiguration. Er untersucht die Server-Konfiguration, legt benötigte
Datenbanktabellen und auf Wunsch auch Demo-Inhalte an. Nach der
Installation kann man sich direkt mit dem dabei erzeugten
Administrationsbenutzer anmelden und weitere Benutzer anlegen.
SugarCRM deckt die Basisanforderungen eines CRM-Systems ab und
enthält unter anderem:
- Kunden-/Kontaktdatenbank
- Kalender
- Aktivitätenverwaltung
- Produktkatalog
- Angebotserstellung/-verwaltung
- Produktverwaltung
- Projektmanagement
- Fehlermanagement
- Ticketing
- Termin-, Aufgaben- und Anrufverwaltung
Die kostenpflichtigen Professional-
und Enterprise-Versionen bieten zusätzliche Funktionen wie die
Unterstützung von Zugriffsrechten und ein Outlook-Plugin.
Darüber hinaus stehen zahlreiche Erweiterungen zur Verfügung,
etwa um Dokumente in SugarCRM zu verwalten oder Reports zu erstellen.
Dank separater Sprachpakete steht die Oberfläche in den gängigen
europäischen Sprachen zur Verfügung.
Der SugarCRM Web Service
Durch Eingabe der URL „http://<your url>/soap.php“ gibt SugarCRM die
vom Web Service angebotenen Methoden preis. Die hier vorgestellte TYPO3-Erweiterung nutzt unter
anderem die folgenden Methoden, wobei die Funktionen der Erweiterung nach den genutzten Web-Service-Methoden benannt sind.
test (in message: String, out message: String) |
Bei Erfolg liefert „test“ die übergebene Zeichenfolge zurück. |
login (in user_auth: Array, in application_name: String, out set_entry_result: Array) |
Meldet den Benutzer bei SugarCRM an, erzeugt eine Sitzung und gibt im Rückgabe-Array unter anderem deren ID zurück. |
logout (in session: String, out error_result: Array) |
Schließt die angegebene Sitzung. |
contact_by_email (in user_name: String, in password: String, in email_address: String, out contact_detail_array: Array) |
Sucht einen Kontakt (vom Typ “Contact” oder “Lead”) und gibt bei Erfolg dessen Daten zurück. |
Typischerweise besteht eine Anfrage an SugarCRM aus den Methodenaufrufen „login“, beliebigen Methoden und „logout“.
Nutzung des Web Services durch TYPO3
An einem konkreten Beispiel soll die Nutzung des Web Services zur Integration gezeigt werden.
Ist
die E-Mail-Adresse des Besuchers bereits in SugarCRM hinterlegt, so
werden die Kontaktdaten aktualisiert, andernfalls wird ein neuer
Kontakt
angelegt. In einem zweiten Schritt werden zu diesem Erstkontakt ein
Termin und eine Aufgabe angelegt. Die Zuordnung der Daten zu einem
SugarCRM-Benutzer ist fest definiert. Zur Integration von TYPO3
und SugarCRM existiert eine eigene Erweiterung, welche die folgenden
Funktionalitäten zur Verfügung stellt:
- Basisfunktionen: Login, Logout, Test, Suche nach Kontakten etc.
- Verarbeitung von TYPO3-Mailformularen:
Eingaben werden mittels eines Hook vor dem Versand der E-Mail durch TYPO3 abgefangen und gemäß Konfiguration verarbeitet. - Test-Plugin: Das
Test-Plugin kann auf einer beliebigen TYPO3-Seite eingebunden werden
und führt eine Anmeldung bei SugarCRM durch. Tritt ein Fehler auf, so
wird dieser ausgegeben.
Konfiguration des TYPO3-Kontaktformulars
Um
das Formular zu konfigurieren, wird dem Inhaltstyp MAILFORM ein
Textfeld hinzugefügt, in dem die Einstellungen in einer
TypoScript-ähnlichen Syntax eingegeben werden.
Erstkontakt { // was soll angelegt werden? type = Lead // E-mail-Adresse wird als eindeutig vorausgesetzt uniqueEmail = true default { lead_source = TYPO3 Online-Kontakt // Wem wird der Lead zugeordnet? assigned_user_id = jim_id } // Zuordnung SugarCRM-Feld = Formularfeld mapping { first_name = Vorname last_name = Name email1 = email salutation = Anrede phone_work = Telefon account_name = Firma } // lege verknüpfte Einträge an children { Aufgabe { type = Task // Aufgabe nur anlegen, wenn Checkbox aktiviert wurde condition = ($this->formVars['Rueckruf'] != '1') default { name = Online-Anfrage beantworten priority = Medium status = Not Started assigned_user_id = jim_id parent_type = parent.type parent_id = parent.id } mapping { description = Anfrage } } Anruf { type = Call condition = ($this->formVars['Rueckruf'] == '1') // In welchem Format wird das Datum im Formular eingetragen? input_dateformat = d.m.Y default { name = Online-Kontakt anrufen priority = Medium status = Planned direction = Outbound reminder_time = 600 duration_hours = 0 duration_minutes = 15 assigned_user_id = jim_id parent_type = parent.type parent_id = parent.id date_start = now time_start = now } mapping { description = Anfrage date_start = DPC_Datum date_end = DPC_Datum time_start = Uhrzeit } } } }
Listing 1
Weitere Anwendungen
Die
in den vorherigen Abschnitten vorgestellte Erweiterung dient momentan
in erster Linie zum Experimentieren. Interessierte Entwickler können
sich gern an der Weiterentwicklung beteiligen. SugarCRM könnte
beispielsweise als
führendes System zur Verwaltung von TYPO3-Frontend-Benutzern eingesetzt
werden. Registriert sich ein Benutzer neu, so wird er als Kontakt
angelegt. Bei der Anmeldung werden die Daten mit SugarCRM abgeglichen.
Ändert der Benutzer seine Daten, werden diese in das CRM-System
übernommen. Die Möglichkeiten sind zahlreich.
Sicherheitsaspekte
Wird SugarCRM als produktives CRM-System eingesetzt, so sollten die folgenden potentiellen Sicherheitslücken betrachtet werden:
- Der
Web Service von SugarCRM muss von außen erreichbar sein, der interne
Webserver wird also Angriffen aus dem Internet ausgesetzt. - TYPO3-Seiten sollten durch einen Login abgesichert und der Schutz gegen automatisierte Formularversendungen überprüft werden.
- SugarCRM bietet in der Open-Source-Version keine Rechteverwaltung.
- Die
Kommunikation zwischen TYPO3 und SugarCRM kann über HTTPS erfolgen,
Benutzername und Kennwort eines SugarCRM-Benutzers werden jedoch in der TYPO3-Datenbank gespeichert.
Eine durchdachte Installation kann die
Sicherheitsrisiken mindern. Ein internes System zu exponieren stellt
jedoch immer ein Risiko dar. Wer per Web-Frontend aus dem Internet auf
seinen internen Mailserver zugreift, hat diese Erwägungen hoffentlich
schon angestellt und kein Problem mit der Öffnung.