Im CRM Bereich setzen wir seit vielen Jahre SugarCRM ein und sind damit bisher sehr gut gefahren. Durch die Integration anderer Systeme wie z.B. Starface zum telefonieren oder der Anbindung an unser Ticketsystem zur Ermittlung der Kunden ergeben sich aus der zentralen Bestandsverwaltung viele Vorteile.
Seit der Version 5 verfügt SugarCRM über einen eingebauten Modulebuilder, der auch ohne Programmierung die Erzeugung individueller Module für Sugar erlaubt und deren Erweiterung vereinfacht. Wie im Studio, dass zur Anpassung der bestehenden Standardmodule gedacht ist, sind Felder mit verschiedenen Datentypen erzeugbar und lassen sich anschließend visuell in das vorhandene Layout integrieren. So lassen sich für individuelle Daten sehr einfach Masken zur Datenpflege erzeugen und die entsprechenden Inhalte auch mit anderen Modulen verbinden.
Spannend wird es wenn die entsprechenden Informationen nach Speicherung im Webinterface weiterverarbeitet, berechnet  oder Folgeaktionen eingeleitet werden müssen. SugarCRM Professional verfügt hier zwar über Workflows, der Funktionsumfang ist jedoch in den aktuellen Versionen noch ziemlich eingeschränkt.
Dafür kennt Sugar hier entsprechende Hooks welche sich im Abhängig vom betroffenen Modul und der durchgeführten Aktion aktivieren lassen. Die Erweiterung kann so ohne Veränderung der Originaldaten erfolgen und garantiert einen reibungslosen Update auf kommende Versionen.
Zuerst muss sich der Benutzer klar werden, in welchem Modul und nach welcher Aktion ein entsprechender Hook ausgeführt werden soll und hierfür einen Eintrag in der Datei logic_hooks.php erstellen, welche sich in <sugarcrm-root>/custom/modules befindet.
Ein Beispiel:

$hook_array['after_save'][] = Array(1, 'create_ticket', 'custom/modules/Accounts/create_ticket_hook.php','create_ticket', 'create_ticket');

Wichtig ist das Keywort “after_save”. Dies gibt an, dass die entsprechende Aktion nach erfolgter Speicherung, also abgeschlossenem Insert in der Datebank erfolgen soll. Im Developer Wiki sind die verfügbaren Aktionen und deren Verfügbarkeit detailliert beschrieben.
Durch den Eintrag dieses Hooks in dem angesprochenen File, wird nach Speicherung in beliebigem Modul die entsprechende PHP-Datei aufgerufen. Innerhalb dieser Datei ist dann die entsprechende Logik zu implementieren.
Ein Beispiel:

debug(&quot;create ticket after account creation.&quot;);
            //check for Account module
            if($bean-&gt;module_dir == &quot;Account&quot;) {
                .... excecute business logic here to create ticket
                you can use $bean-&gt;fetched_row[accoutname] for example to receive the given values
        }
}
?&gt;

Wichtig ist die Prüfung auf das entsprechende Modul, da ansonsten jegliche Speicherung die Ausführung dieser Aktion zur Folge hat. Nach Speicherung und aktivierter Einstellung in der hook-Datei ist der entsprechende Code sofort aktiv. Bei Problemen kann der im Beispiel gelistete LoggerManager für Debuggingaufgaben genutzt werden, welcher jedoch ggf. die Anpassung des Loglevels in den Einstellungen voraussetzt, da dieser in der Regel nur Fatale-Fehler protokolliert.
In der SugarCRM Developer Zone findet man weitere Beispiele für die Implementierung dieser Logic Hooks und kann von der großen Community profitieren.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startet er das wöchentliche Lexware-Backup und investiert seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinem Sohn.