Tuesday, September 18, 2012

Kundendaten aus vTiger in OTRS nutzen

Kundendaten an mehreren Stellen pflegen ist unklug, da sich dann immer wieder Fehler einschleichen können. Aus diesem Grund ist es gut, wenn mehrere Systeme auf die gleiche Datenbasis zugreifen können.

Hier soll kurz gezeigt werden, wie man Kundendaten aus vTiger in OTRS nutzen kann.

Informationen über Kunden

Um Name und E-Mail bei der Ticketerstellung in OTRS nutzen zu können, muss man einfach nur eine neue Kundendatenquelle hinzufügen. Diese Einstellungen werden in der Datei <otrs_home>/Kernel/Config.pm hinzugefügt:

    $Self->{CustomerUser} = {
        Name   => 'VTiger CRM',
        Module => 'Kernel::System::CustomerUser::DB',
        Params => {
            DSN => 'DBI:mysql:database=vtigercrm520;host=localhost',
            User => 'dbuser',
            Password => '2357KLAFKkjsd',
            Table => 'vtiger_contactdetails',
            CaseSensitive => 0,
        },

        CustomerKey => 'email',
        CustomerID  => 'accountid',
        CustomerUserListFields => [ 'firstname', 'lastname', 'email' ],
        CustomerUserSearchFields => [ 'firstname', 'lastname', 'email'],
        CustomerUserSearchPrefix => '*',
        CustomerUserSearchSuffix => '*', 
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields             => [ 'title', 'firstname', 'lastname' ],
        CustomerUserEmailUniqCheck         => 1,

        CustomerUserExcludePrimaryCustomerID => 0,
        CustomerCompanySupport => 1,
        ReadOnly => 1,
        Map => [
            [ 'UserTitle',      'Title',      'salutation',      1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'firstname', 1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'lastname',  1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'email',      1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',           1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'accountid', 0, 1, 'var', '', 0 ],
            [ 'UserCompanyID',  'CompanyID',  'accountid',  0, 1, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'phone',        1, 0, 'var', '', 0 ],
            [ 'UserFax',        'Fax',        'fax',          1, 0, 'var', '', 0 ],
            [ 'UserMobile',     'Mobile',     'mobile',       1, 0, 'var', '', 0 ],
        ],
    };


Ein paar Erläuterungen dazu:

Der "Name" ist frei wählbar, sollta aber möglichst sprechend sein, damit man auch nach ein paar Jahren weiß, was da konfiguriert wird.

Da wir mit der Datenbank von vTiger arbeiten, müssen wir als "Module" Kernel::System::CustomerUser::DB wählen. Grundsätzlich kann man verschiedene Arten von Quellen anbinden. Im Standard-OTRS sind Module für Datenbanken und LDAP dabei.

Mit den "Params" definieren wir, wie die Datenbankverbindung aussieht. Der "DSN" ist die Angabe, die das Perl-Modul DBI für den Verbindungsaufbau benötigt.

       'DBI:mysql:database=vtigercrm520;host=localhost'






Das "mysql" sagt, dass vTiger mit einer MySQL-Datenbank läuft. Wenn Sie mit PostgreSQL arbeiten, müssen Sie das Perl-Modul DBD::Pg installieren und hier im DSN statt "mysql" einfach "pg" eintragen.



Die Angabe "vtigercrm520" ist der Datenbankname und "localhost" der Host, auf dem die Datenbank läuft.


Weiterhin müssen Benutzer und Passwort der vTiger-Datenbank angegeben werden. Es empfiehlt sich, für den Zugriff einen extra Benutzer anzulegen, der nur Leserechte hat. Das CRM soll das führende System bei den Kundendaten sein.

            User          => 'dbuser',
            Password      => '2357KLAFKkjsd',



Der Tabellenname "vtiger_contactdetails" sagt ganz einfach aus, in welcher Tabelle der vTiger-Installation die Kundendaten zu finden sind.

            Table         => 'vtiger_contactdetails',

Danach folgen weitere Einstellungen, die hauptsächlich für die Suche wichtig sind.

Herauszuheben sind "CustomerKey" was aussagt, was die Verbindung zwischen den Tickets und den Kundendaten herstellt. Wenn man sich die Informationen anschaut, die zu den Tickets gespeichert werden, sieht man, dass nicht alle Kundeninformationen am Ticket gespeichert werden, sondern nur eine eindeutige Angabe. Hier eben die E-Mailadresse.

Wir setzen auch "ReadOnly" auf 1, weil keine Kundendaten im OTRS geändert werden sollen. Alles soll über vTiger laufen.

In der "Map" werden Zuordnungen von Spaltennamen in der vTiger-Tabelle zu den Attributen des Objekts und der Anzeige an der Oberfläche vorgenommen. Z.B.:

        [ 'UserFirstname',  'Firstname',  'firstname', 1, 1, 'var', '', 0 ],

sagt aus, dass das Attribut 'UserFirstname' an der Oberfläche mit "Firstname" (bzw. der Übersetzung davon) gekennzeichnet wird und mit Daten der Tabellenspalte "firstname" in vtiger_contactdetails  gefüllt wird.

Zusätzliche Attribute

Jetzt fällt auf, dass einige wichtige Angaben zum Kunden gar nicht in der Zuordnung vorhanden sind. Diese werden natürlich auch nicht an der Oberfläche angezeigt. Warum sind jetzt also nicht "Straße", "Ort" und "Land" dort angegeben? Und warum bekomme ich nur eine Zahl bei der "Kundenfirma" angezeigt?

Das hängt damit zusammen, dass diese Informationen in vTiger über mehrere Tabellen verteilt sind. Das Standard-OTRS-Modul zur Anbindung von Datenbanken kann aber nur mit einer einzelnen Tabelle umgehen.

Um diese Informationen dennoch in OTRS nutzen zu können, kann man folgenden Weg gehen: Man legt eine sogenannte "View" in der Datenbank an. Damit können Daten aus mehreren Tabellen aggregiert werden und nach außen hin sieht es wie eine einzige Tabelle aus.

In MySQL wird dazu einfach folgender Befehl ausgeführt:

CREATE VIEW otrsview
    AS SELECT vcd.*, vca.*, va.accountname
        FROM vtiger_contactdetails vcd
            LEFT OUTER JOIN vtiger_contactaddress vca
                ON contactid = contactaddressid
            LEFT OUTER JOIN vtiger_account va
                ON  vcd.accountid = va.accountid;

Jetzt nur noch in der oben gezeigten Konfiguration die Tabellenangabe von vtiger_contactdetails in otrsview ändern.

In der Map kann man dann noch folgende Einträge hinzufügen:

 [ 'UserStreet', 'Street', 'mailingstreet', 1, 1, 'var', '', 0 ]

Und schon steht die Straßenangabe zur Verfügung.

Kundenlogin ermöglichen
Soll das Kundenportal von OTRS für die Kunden freigeschaltet werden. Dazu müssen sich die Kunden dort anmelden können. Auch hier sollen die Daten aus vTiger genutzt werden.

Die Einstellungen zur Authentifizierung der Kunden müssen auch in der Config.pm von oben vorgenommen werden:

 $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::DB';
 $Self->{'Customer::AuthModule::DB::Table'} = 'vtiger_portalinfo';
 $Self->{'Customer::AuthModule::DB::CustomerKey'} = 'user_name';
 $Self->{'Customer::AuthModule::DB::CustomerPassword'} = 'user_password';
 $Self->{'Customer::AuthModule::DB::DSN'} = "DBI:mysql:database=vtigercrm520;host=localhost";
 $Self->{'Customer::AuthModule::DB::User'} = "dbuser"; 
 $Self->{'Customer::AuthModule::DB::Password'} = "2357KLAFKkjsd";


Die Angaben von DSN, User und Passwort sind die gleichen wie oben gezeigt. Wichtig sind hier noch die Angaben zur Tabelle ("vtiger_portalinfo") und welche Felder zur Authentifizierung wichtig sind. Der Benutzername steht in vTiger unter "user_name" und das Passwort in "user_password". vTiger speichert die Passwörter leider in Klartext ab. Aus diesem Grund muss der "CryptType" auf "plain" gesetzt werden.

Jetzt können sich die Kunden auch am Kundenportal von OTRS anmelden und dort Tickets erstellen.

vTiger

(Quelle: http://de.wikipedia.org/wiki/Vtiger)
vtiger CRM ist eine freie Open Source Software für das Customer-Relationship-Management. vtiger basiert auf der Skriptsprache PHP und der Datenbank MySQL

OTRS

(Quelle: http://de.wikipedia.org/wiki/OTRS)
Das Open Ticket Request System (OTRS) ist ein Ticketsystem oder Kommunikationsmanagementsystem, welches oft als Helpdesk-System bzw. Issue-Tracking-System eingesetzt wird. OTRS ist freie Software und steht unter der GNU Affero General Public License (AGPL).

Mit Hilfe des webbasierten Ticketsystems OTRS lässt sich jegliche Art von Anfragen (zum Beispiel Störungsmeldungen, Service- und Informationsanfragen) über die Meldewege E-Mail, Telefon und Kunden-Webfrontend strukturiert erfassen, klassifizieren, speichern und weiterverarbeiten.


Perl-Services.de

Perl-Services.de ist ein kleines Unternehmen, das unter anderem auch OTRS-Programmierung anbietet. Wir passen OTRS nach Ihren Wünschen an und helfen Ihnen bei der Einführung und Konfiguration des Ticketsystems.

1 comment:

varianceinfotech said...

Nice information sharing for us,
Thanks
vTiger CRM is an open source CRM software is used mainly for small and medium enterprises.

vtiger,
vtiger crm,
vtiger migration