ich habe ein Problem bei der Zuordnung von Kundendaten aus einer weiteren Kundendatenbank.
In der DB ist ein Kontakt manchmal (!) mehrmals aufgeführt, mit selben Grunddaten (Name, Anrede, ..., auch mehrfach selbe Mailadresse), aber unterschiedlichen weiteren Daten (z.B. ein ihm verantwortlicher Shop und in einem anderen Datensatz ein weiterer). Jeder Datensatz hat aber eine eindeutige ID (nicht die Mailadresse). Aufbau siehe unten.
Wenn jetzt ein Ticket/Mail von diesem doppelten Kunden kommt kann OTRS nicht wissen welchen Datensatz es wählen soll. Das ist für diesen Fall, dass der Mailadresse doppelt da ist auch ok. Dann würde manuell der richtige Kunde ausgewählt werden.
Wenn ich als CustomerKey die eindeutige ID nehme werden die Kundendaten im Ticketzoom nie angezeigt (auch wenn Datensatz/Mailadresse nur einmalig). Nehme ich email als CustomerKey funktioniert die Zuordnung zwar bei den eingehenden Mails, aber es werden bei der Suche nach einem anderen Kundendatensatz immer nur einer angezeigt. Sicherlich weil OTRS den CustomerKey als Datenbank-Primärschlüssel hernimmt.
Die mySQL Datenbank mit den Kundendaten ist wie folgt aufgebaut (Auszug):
Code: Select all
# id, login, email, title, first_name, valid_id, shop, cluster, status
'307880', 'info@123.de', 'info@123.de', NULL, 'Winrich', '1', '123.de', 'E', '21'
'307881', 'muster@abc.biz', 'muster@abc.biz', NULL, 'Chris', '1', 'abc.biz', 'D', '21'
'307884', 'muster@567.com', 'muster@567.com', NULL, 'Franziska', '1', '567890abc.de', 'E', '21'
'307886', 'muster@alpha-xyz.de', 'muster@alpha-xyz.de', NULL, NULL, '1', 'musterurl.de', 'E', '21'
'307887', 'kontakt@alpha-xyz.de', 'kontakt@alpha-xyz.de', NULL, NULL, '1', 'musterurl.de', 'E', '21'
'307888', 'kontakt@alpha-xyz.de', 'kontakt@alpha-xyz.de', NULL, NULL, '1', 'musterurl-outlet.de', 'E', '21'
Die Config wie folgt (Auszug):
Code: Select all
$Self->{CustomerUser2} = {
Name => 'ShopDB',
Module => 'Kernel::System::CustomerUser::DB',
Params => {
DSN => 'DBI:mysql:database=otrs_customer_bla;host=localhost',
User => 'isnich',
Password => 'denkste',
Table => 'customer',
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
CaseSensitive => 0,
},
# customer unique id
CustomerKey => 'id',
# customer #
CustomerID => 'id',
CustomerValid => 'valid_id',
CustomerUserListFields => ['first_name', 'last_name','shop', 'oracleid', 'email'],
CustomerUserSearchFields => ['id', 'last_name', 'email', 'shop', 'oracleid', 'akquiseid'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['email'],
CustomerUserNameFields => ['title','first_name','last_name'],
CustomerUserEmailUniqCheck => 1,
# # show not own tickets in customer panel, CompanyTickets
# CustomerUserExcludePrimaryCustomerID => 0,
# # generate auto logins
# AutoLoginCreation => 0,
# AutoLoginCreationPrefix => 'auto',
# # admin can change customer preferences
AdminSetPreferences => 0,
# # cache time to live in sec. - cache any database queries
CustomerCompanySupport => 0,
CacheTTL => 3600,
# # just a read only source
ReadOnly => 1,
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
[ 'Shop', 'Shop', 'shop', 1, 0, 'var', '$Data{"ShopURL"}', 1 , "_blank"],
[ 'ShopCluster', 'Shop-Cluster', 'cluster', 1, 1, 'var', '', 1 ],
[ 'UserTechAccountManager','Tech Account Manager','tech_account_manager', 1, 0, 'var', '', 1 ],
[ 'UserAccountManager', 'Account Manager','account_manager', 1, 0, 'var', '', 1 ],
[ 'UserSalesManager', 'Sales Manager','sales_manager', 1, 0, 'var', '', 1 ],
[ 'UserTitle', 'Title', 'title', 1, 0, 'var', '', 1 ],
[ 'UserFirstname', 'Firstname', 'first_name', 1, 1, 'var', '', 1 ],
[ 'UserLastname', 'Lastname', 'last_name', 1, 1, 'var', '', 1 ],
[ 'UserLogin', 'Username', 'login', 0, 1, 'var', '', 1 ],
# [ 'UserPassword', 'Password', 'pw', 0, 0, 'var', '', 0 ],
[ 'UserEmail', 'Email', 'email', 0, 1, 'var', '', 1 ],
[ 'ShopFax', 'Shop-Fax', 'shop_fax', 0, 0, 'var', '', 1 ],
[ 'UserMobile', 'Mobile', 'mobile', 0, 0, 'var', '', 1 ],
[ 'UserStreet', 'Street', 'street', 0, 0, 'var', '', 1 ],
[ 'UserZip', 'Zip', 'zip', 0, 0, 'var', '', 1 ],
[ 'UserCity', 'City', 'city', 0, 0, 'var', '', 1 ],
[ 'UserCountry', 'Country', 'country', 0, 0, 'var', '', 1 ],
[ 'UserComment', 'Comment', 'comments', 0, 0, 'var', '', 1 ],
[ 'ValidID', 'Valid', 'valid_id', 0, 1, 'int', '', 1 ],
[ 'UserRole', 'Rolle', 'role', 1, 0, 'var', '', 1 ],
],
# default selections
Selections => {
# UserTitle => {
# 'Mr.' => 'Mr.',
# 'Mrs.' => 'Mrs.',
# },
},
};
Ich benötige also eine Variante in der bei eingehenden Mails der Kunde automatisch erkannt wird (anhand der Mailadresse), aber der primary Key die ID ist, die nicht die Mailadresse ist.