Hauptmenü

Externes Kundenbackend

Begonnen von M.B, 22.06.2017 11:01:51

⏪ vorheriges - nächstes ⏩

M.B


Hallo Zusammen,


ich versuche gerade in KIX (CentOS7 + aktuelleste KIX-Version mit PG-DB) an unsere Kundendatenbank (MSSQL-Basis) anzubinden. Ziel dieser Anbindung soll es sein, das wenn der Kunde eine Mail an KIX sendet, er direkt der richtigen Firma zugeordnet wird und alle vorhandenen Kontaktdaten angezeigt werden.


Die Agenten werden aus dem LDAP authentifiziert und gesynct was soweit auch funktioniert, nur bei der Zuweisung der Rollen hängt es irgendwo (User kann sich anmelden hat aber keinerlei Rechte, Administrator/Support sind die Namen der Rollen):

$Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition1'} = {
'CN=KixAdmin,OU=Users,DC=dom,DC=local' => {
        'Administrator' => 1,
},
'CN=KixSupport,OU=Users,DC=dom,DC=local' => {
'Support' => 1,
}
};



Soweit zum Hintergrund nun zum eigentlich "Problem". Wichtig noch zu erwähnen ist das in der Kundendatenbanken keine PW's für die Kunden hinterlegt sind da es eine reine Kontaktdaten-Sammlung ist.


Aktueller Stand ist: Kunden werden unter Kundenverwaltung -> Ansprechpartner angezeigt (wenn ich allerdings über Kundenverwaltung -> Kunden-Informationszentrum und dort nach der Firma suche listet er keine Ansprechpartner auf)  und sind auch in "neues Ticket erstellen" über Ansprechpartner suchbar (bei Optionen: [Ansprechpartner], direkt oben unter Ansprechpartner findet er nichts außer denen dir in der KIX-DB selbst erstellt wurden). Wenn ein Ticket per Mail reinkommt werden auch die korrekten Daten vom Ansprechpartner + Firmeninfos unter Kontaktinformationen angezeigt in der Sidebar.


Mein Problem nun (abgesehen von der Suche) ist wie ich nun eine Anmeldung für in der Datenbank existierende Ansprechpartner realisieren kann, da neu-registrieren nicht geht da "Mail schon vorhanden" und da in der Datenbank keine PW's hinterlegt ich auch diese nicht zur Anmeldung nutzen kann.


$Self->{CustomerUser2} = {
Name => 'KundenDB',
Module => 'Kernel::System::CustomerUser::DB',
Params => {
DSN => 'DBI:ODBC:MSSQL-SRV',
Type => 'mssql',
User => 'User',
Password => 'PW',
            Table => 'Ticket_Customer',
ForeignDB => 1,
DestCharset => 'utf-8',
            CaseSensitive => 0,
        },
CustomerKey => 'Login',
CustomerID => 'ContactID',
CustomerValid => 'InActive',
CustomerUserListFields => ['FirstName', 'LastName', 'Login'],
CustomerUserSearchFields => ['Login', 'FirstName', 'LastName'],
CustomerUserSearchPrefix => '%',
CustomerUserSearchSuffix => '%',
CustomerUserSearchListLimit => 50,
CustomerUserPostMasterSearchFields => ['EMail'],
CustomerUserNameFields => ['AddrTitle','FirstName','LastName'],
CustomerUserEmailUniqCheck => 0,
AutoLoginCreation => 0,
AdminSetPreferences => 0,
CacheTTL => 60 * 5,
ReadOnly => 1,
Map => [
[ 'UserTitle',      'Title',      'AddrTitle',      1, 0, 'var', '', 0 ],
[ 'UserFirstname',  'Firstname',  'FirstName', 1, 1, 'var', '', 0 ],
[ 'UserLastname',   'Lastname',   'LastName',  1, 1, 'var', '', 0 ],
[ 'UserLogin',      'Username',   'Login',      1, 1, 'var', '', 0 ],
[ 'UserEmail',      'Email',      'EMail',      1, 1, 'var', '', 0 ],
[ 'UserCustomerID', 'CustomerID', 'ContactNumber', 0, 1, 'var', '', 0 ],
[ 'UserPhone',        'Phone',       'PhoneNr',        1, 0, 'var', '', 0 ],
[ 'UserFax',          'Fax',         'FaxNr',          1, 0, 'var', '', 0 ],
[ 'UserMobile',       'Mobile',      'MobilePhone',       1, 0, 'var', '', 0 ],
[ 'UserStreet',       'Street',      'CompanyStreet',       1, 0, 'var', '', 0 ],
[ 'UserZip',          'Zip',         'CompanyPostalCode',          1, 0, 'var', '', 0 ],
[ 'UserCity',         'City',        'CompanyCity',         1, 0, 'var', '', 0 ],
[ 'UserCountry',      'Country',     'Country',      1, 0, 'var', '', 0 ],
[ 'UserComment',      'Comment',     'Comment',     1, 0, 'var', '', 0 ],
[ 'ValidID',          'Valid',       'InActive',     0, 1, 'int', '', 0 ],
],
};
$Self->{CustomerCompany2} = {
        Name   => 'KundenDB',
        Module => 'Kernel::System::CustomerCompany::DB',
        Params => {
DSN => 'DBI:ODBC:MSSQL-SRV',
Type => 'mssql',
User => 'User',
Password => 'PW',
Table => 'Ticket_Company',
ForeignDB => 1,
            SearchCaseSensitive => 0,
        },
        CustomerCompanyKey             => 'AddressID',
        CustomerCompanyValid           => 'InActive',
        CustomerCompanyListFields      => [ 'AddressNumber', 'Name1', 'Name2' ],
        CustomerCompanySearchFields    => ['AddressNumber', 'Name1', 'Name2'],
        CustomerCompanySearchPrefix    => '%',
        CustomerCompanySearchSuffix    => '%',
        CustomerCompanySearchListLimit => 25,
        CacheTTL                       => 60 * 5,
        Map => [
            [ 'CustomerID',             'CustomerID', 'AddressNumber', 0, 1, 'var', '', 0 ],
            [ 'CustomerCompanyName',    'Customer',   'Name1',        1, 1, 'var', '', 0 ],
            [ 'CustomerCompanyStreet',  'Street',     'Street',      1, 0, 'var', '', 0 ],
            [ 'CustomerCompanyZIP',     'Zip',        'PostalCode',         1, 0, 'var', '', 0 ],
            [ 'CustomerCompanyCity',    'City',       'City',        1, 0, 'var', '', 0 ],
            [ 'CustomerCompanyCountry', 'Country',    'Country',     1, 0, 'var', '', 0 ],
            [ 'CustomerCompanyURL',     'URL',        'Homepage',         1, 0, 'var', '[% Data.CustomerCompanyURL | html %]', 0 ],
            [ 'CustomerCompanyComment', 'Comment',    'AddressGroup',    1, 0, 'var', '', 0 ],
            [ 'ValidID',                'Valid',      'InActive',    0, 1, 'int', '', 0 ],
        ],
    };

Ich hatte versucht mit "AutoLoginCreation => 1" aber leider werden dabei nicht wie beim LDAP-Sync die Daten in KIX übernommen (Denkfehler?).
Was genau bewirkt "AutoLoginCreation" und "AdminSetPreferences" dafür habe ich in der Doku irgendwie nichts gefunden...


Ich bin über jeden Hinweis oder Verbesserungsvorschlag dankbar, den ich denke das ich irgendwo einen Fehler in der Config habe oder irgendwo eine Einstellung vergessen habe zu setzen (z.B. wegen der Suche).


Falls jemand eine Lösung parat hat wäre dies super den ich möchte den Umweg über CSV-Ex/Import gern umgehen.


Vielen Dank im Voraus!


Gruß
M.B

Katja Hüsig

Hallo M.B,

zu den Agenten-Rollen-Berechtigungen ist mir nur ein Zusatz aufgefallen. Vergleiche folgenden mit deinem Code-Block:
$Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition1'} = {
    'CN=KixAdmin,OU=Users,DC=dom,DC=local,DC=de' => {
            'Administrator' => 1,
    },
    'CN=KixSupport,OU=Users,DC=dom,DC=local,DC=de' => {
        'Support' => 1,
    }
};


Ansonsten müssten hier die korrekten Rollen aus dem LDAP den bestehen Rollen im System zugeordnet werden. Dann sollte das auch funktionieren.


Folgende Felder sind für eine Suche korrekt zu belegen:
        CustomerUserListFields => ['FirstName', 'LastName', 'Login'],
        CustomerUserSearchFields => ['Login', 'FirstName', 'LastName'],

Da müsstest du ggfs. nochmal prüfen und die Defaults.pm (/opt/kix/Kernel/Config) zu Rate ziehen.


Aufgefallen sind mir noch folgende Dinge im Code-Block. Auch da nochmal die Konfiguration prüfen.
$Self->{'CustomerUser2'} = {
        Name => 'KundenDB',
        Module => 'Kernel::System::CustomerUser::DB',
        Params => {
            DSN => 'DBI:ODBC:MSSQL-SRV',
            Type => 'mssql',
            DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
            User => 'User',
            Password => 'PW',
            Table => 'Ticket_Customer',
            ForeignDB => 1,
            DestCharset => 'utf-8',
            CaseSensitive => 0,
        },




Bzgl einer Authentifizierung von Kunden am System über LDAP, müssen im LDAP Passwörter hinterlegt sein, sonst kann das funktionieren.
Weiterhin wird eine Kunden-Authentifizierung mit einem zusätzlich Code-Block vorgenommen, welche du in der Defaults.pm unter "customer authentication settings" mit weiteren Erklärungen findest.

VG,
Katja Hüsig