OTRS 6 – Dynamische Felder zu Kunden zuordnen

Mit OTRS 6 wurden die Dynamischen Felder in Ihrer Funktion erweitert um Kunden und Kundenbenutzer Felder.

Mit OTRS gibt es nun die Möglichkeit, Dynamische Felder auch Kunden oder Kundenbenutzer zuzuordnen um weitere nützliche Informationen zur Verfügung zu stellen. Dies wird ähnlich wie früher über ein „mapping“ also Zuordnung, in der opt/otrs/Kernel/Config.pm vorgenommen, jedoch fällt mit OTRS 6 die Notwendigkeit weg, in der Datenbank die Spalten der Kunden oder Kundenbenutzer zu erweitern.

Dies ist insbesondere daher nützlich, da OTRS die ITSM Module leider gewollt oder nicht, mit dem OTRS Helpdesk nicht miteinander verzahnt hat, so das wichtige Information die z.B. in CI´s gespeichert sind, nur umständlich einem Kunden zuzuordnen sind, bzw. aufgerufen werden können. Die Daten stehen der Kundeninformation nicht zur Verfügung.

Mit der neuen Funktion der Dynamischen Felder können zumindest weitere wichtige Informationen ganz einfach zugeordnet werden.

Hier ist ein simples Beispiel wie die erweiterten Felder in der Kundeninformation zur Verfügung stehen können. Ein aktivieren der Dynamischen Felder für die Ticket Zoom Ansicht ist hierfür nicht erforderlich.

Anhand eines einfachen Beispiels wollen wir zeigen wie Ihr vorgehen könnt um Dynamische Felder zuzuordnen.

Zunächst wählt Ihr, ob die Felder für die übergreifenden Kunden (Firma) eines Kundenbenutzer erstellt werden sollen, z.B. Verträge, Status, etc…, oder ob dem Kundenbenutzer weitere Informationen zugeführt werden sollen, z.B. IP, Raumnummer, Postion, etc…

Mit dem Feld „Name“ sprecht ihr das Feld später beim „mapping“ an. Das Feld Beschriftung ist der Anzeige-Name des Feld.

Unter dem OTRS Pfad opt/otrs/Kernel/ wird nun die Config.pm aufgerufen um die Felder zuzuordnen. Die Reihenfolge der Felder kann hier ebenfalls kontrolliert werden.

Bei Kunden/ CustomerCompany (Firma) muss folgendes Script eingefügt und ergänzt werden. (Immer vorher eine Backup erstellen).

Die Dynamischen Felder werden dann unter Map => [...], zugeordnet. Als Beispiel für unser Feld Betriebssystem.:

<br />
[ 'DynamicField_betriebssystem', 'undef', 'betriebssystem', 1, 0, 'dynamic_field', '', 0 ],<br />

Das ganze Script würde dann z.B. so aussehen können:

<br />
    $Self-&gt;{CustomerCompany} = {<br />
        Name   =&gt; 'Database Backend',<br />
        Module =&gt; 'Kernel::System::CustomerCompany::DB',<br />
        Params =&gt; {<br />
            # if you want to use an external database, add the<br />
            # required settings<br />
#            DSN  =&gt; 'DBI:odbc:yourdsn',<br />
#            Type =&gt; 'mssql', # only for ODBC connections<br />
#            DSN =&gt; 'DBI:mysql:database=customerdb;host=customerdbhost',<br />
#            User =&gt; '',<br />
#            Password =&gt; '',<br />
            Table =&gt; 'customer_company',<br />
#            ForeignDB =&gt; 0,    # set this to 1 if your table does not have create_time, create_by, change_time and change_by fields</p>
<p>            # CaseSensitive will control if the SQL statements need LOWER()<br />
            #   function calls to work case insensitively. Setting this to<br />
            #   1 will improve performance dramatically on large databases.<br />
            CaseSensitive =&gt; 0,<br />
        },</p>
<p>        # company unique id<br />
        CustomerCompanyKey             =&gt; 'customer_id',<br />
        CustomerCompanyValid           =&gt; 'valid_id',<br />
        CustomerCompanyListFields      =&gt; [ 'customer_id', 'name' ],<br />
        CustomerCompanySearchFields    =&gt; ['customer_id', 'name', 'cquota'],<br />
        CustomerCompanySearchPrefix    =&gt; '',<br />
        CustomerCompanySearchSuffix    =&gt; '*',<br />
        CustomerCompanySearchListLimit =&gt; 250,<br />
        CacheTTL                       =&gt; 60 * 60 * 24, # use 0 to turn off cache</p>
<p>        Map =&gt; [<br />
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly<br />
            [ 'CustomerID',             'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],<br />
            [ 'CustomerCompanyName',    'Customer',   'name',        1, 1, 'var', '', 0 ],<br />
            [ 'CustomerCompanyStreet',  'Street',     'street',      1, 0, 'var', '', 0 ],<br />
            [ 'CustomerCompanyZIP',     'Zip',        'zip',         1, 0, 'var', '', 0 ],<br />
            [ 'CustomerCompanyCity',    'City',       'city',        1, 0, 'var', '', 0 ],<br />
            [ 'CustomerCompanyCountry', 'Country',    'country',     1, 0, 'var', '', 0 ],<br />
			[ 'CustomerCompanyQuota',   'Quota',      'cquota',      1, 0, 'int', '', 0 ],<br />
            [ 'CustomerCompanyURL',     'URL',        'url',         1, 0, 'var', '[% Data.CustomerCompanyURL | html %]', 0 ],<br />
            [ 'CustomerCompanyComment', 'Comment',    'comments',    1, 0, 'var', '', 0 ],<br />
            [ 'ValidID',                'Valid',      'valid_id',    0, 1, 'int', '', 0 ],<br />
			[ 'DynamicField_betriebssystem', 'undef', 'betriebssystem', 1, 0, 'dynamic_field', '', 0 ],<br />
			[ 'DynamicField_helpdeskversion', 'undef', 'helpdeskversion', 1, 0, 'dynamic_field', '', 0 ],<br />
			[ 'DynamicField_skix4otrs', 'undef', 'kix4otrs', 1, 0, 'dynamic_field', '', 0 ],<br />
			[ 'DynamicField_datenbank', 'undef', 'datenbank', 1, 0, 'dynamic_field', '', 0 ],<br />
			[ 'DynamicField_supportvertrag', 'undef', 'supportvertrag', 1, 0, 'dynamic_field', '', 0 ],<br />
			[ 'DynamicField_supportvertragstart', 'undef', 'supportvertragstart', 1, 0, 'dynamic_field', '', 0 ],<br />
        ],<br />
    };</p>
<p>

Für Kundenbenutzer (CustomerUser) unter Map => [...], ist die Vorgehensweise der Feld Zuordnung die Gleiche:

<br />
	    $Self-&gt;{CustomerUser} = {<br />
        Name =&gt; 'Kundenliste OTRS Database',<br />
        Module =&gt; 'Kernel::System::CustomerUser::DB',<br />
        Params =&gt; {<br />
            # if you want to use an external database, add the<br />
            # required settings<br />
#            DSN =&gt; 'DBI:odbc:yourdsn',<br />
#            DSN =&gt; 'DBI:mysql:database=customerdb;host=customerdbhost',<br />
#            User =&gt; '',<br />
#            Password =&gt; '',<br />
            Table =&gt; 'customer_user',<br />
        },<br />
        # customer uniq id<br />
        CustomerKey =&gt; 'login',<br />
        # customer #<br />
        CustomerID =&gt; 'customer_id',<br />
        CustomerValid =&gt; 'valid_id',<br />
        CustomerUserListFields =&gt; ['first_name', 'last_name', 'customer_id', 'zip', 'city', 'email'],<br />
        CustomerUserSearchFields =&gt; ['login', 'first_name', 'last_name', 'customer_id'],<br />
        CustomerUserSearchPrefix =&gt; '',<br />
        CustomerUserSearchSuffix =&gt; '*',<br />
        CustomerUserSearchListLimit =&gt; 900,<br />
        CustomerUserPostMasterSearchFields =&gt; ['email'],<br />
 #       CustomerUserNameFields =&gt; ['first_name', 'last_name'],<br />
        CustomerUserNameFields =&gt; ['title', 'last_name'],<br />
        CustomerUserEmailUniqCheck =&gt; 0,<br />
        CustomerCompanySupport =&gt; 1,<br />
		AutoLoginCreation =&gt; 0,<br />
    Map =&gt; [<br />
        # note: Login, Email and CustomerID needed!<br />
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target<br />
        [ 'UserTitle',      'Title',      'title',      1, 0, 'var', '', 0 ],<br />
        [ 'UserFirstname',  'Firstname',  'first_name', 1, 1, 'var', '', 0 ],<br />
        [ 'UserLastname',   'Lastname',   'last_name',  1, 1, 'var', '', 0 ],<br />
        [ 'UserLogin',      'Username',   'login',      1, 1, 'var', '', 0 ],<br />
        [ 'UserPassword',   'Password',   'pw',         0, 0, 'var', '', 0 ],<br />
        [ 'UserEmail',      'Email',      'email',      1, 1, 'var', '', 0 ],</p>
<p>#        [ 'UserEmail',      'Email', 'email',           1, 1, 'var', '[% Env(&quot;CGIHandle&quot;) %]?Action=AgentTicketCompose&amp;ResponseID=1&amp;TicketID=[% Data.TicketID %]&amp;ArticleID=[% Data.ArticleID %]', 0 ],<br />
        [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],<br />
#       [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],<br />
#		[ 'DynamicField_kundennummern', 'undef', 'kundennummern', 1, 0, 'dynamic_field', '', 0 ],<br />
        [ 'UserPhone',        'Phone',       'phone',        1, 0, 'var', '', 0 ],<br />
        [ 'UserFax',          'Fax',         'fax',          1, 0, 'var', '', 0 ],<br />
        [ 'UserMobile',       'Mobile',      'mobile',       1, 0, 'var', '', 0 ],<br />
        [ 'UserStreet',       'Street',      'street',       1, 0, 'var', '', 0 ],<br />
        [ 'UserZip',          'Zip',         'zip',          1, 0, 'var', '', 0 ],<br />
        [ 'UserCity',         'City',        'city',         1, 0, 'var', '', 0 ],<br />
        [ 'UserCountry',      'Country',     'country',      1, 0, 'var', '', 0 ],<br />
        [ 'UserComment',      'Comment',     'comments',     1, 0, 'var', '', 0 ],<br />
        [ 'ValidID',          'Valid',       'valid_id',     0, 1, 'int', '', 0 ],<br />
    ],<br />
    # default selections<br />
#    Selections =&gt; {<br />
#        UserTitle =&gt; {<br />
#            'Mr.' =&gt; 'Mr.',<br />
#            'Mrs.' =&gt; 'Mrs.',<br />
#        },<br />
#    },<br />
};<br />

Das ganze funktioniert natürlich auch mit LDAP und multiplen angebundenen Kunden Datenbanken.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kontakt

Pastoratsacker 3
D- 50170 Kerpen
Telefon: +49 221 64000711 0
Fax: +49 221 64000711 9
E-mail: info(at)i-cron.de

%d Bloggern gefällt das:

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen