Moin!
Ich habe folgendes Problem:
in der Kundendatenbank existieren zwei unabhänige Kunden mit identischem Nachnamen, wobei einer von beiden den Vornamen noch mit in der Mailadresse hat. Die Domain ist identisch. Also hat Kunde B nur den Vornamen und einen Punkt zusätzlich in der Mailadresse.
"login" und "email" (DB customer_user) sind bei uns immer identisch.
Kunde A: nachname@kunde.de
Kunde B: vorname.nachname@kunde.de.
Jetzt passiert folgendes:
Kunde A erstellt via Email ein Ticket. Jetzt landet aber Kunde B im Ticket in "CC" und erhält ebenfalls die Bestätigungsmal der Queue.
Wie kann das passieren und wie bekomme ich das Problem in den Griff? Ich freue mich über jeden Hinweis!
Leider weiß ich nicht einmal, wo ich mit der Suche beginnen kann? Wie finde ich beispielsweise heraus, welches Perl Skript beim Setzten der Kundeninfo beteiligt ist?
Danke für jede Hilfe!
LG.,
Christoph
Wie und wo wählt OTRS den Kunden aus der Kundendatenbank
-
- Znuny newbie
- Posts: 10
- Joined: 11 Dec 2013, 15:00
- Znuny Version: 4.0.6
- Real Name: Christoph Sandhaus
Wie und wo wählt OTRS den Kunden aus der Kundendatenbank
Debian 7.8, OTRS 4.0.6, MySQL
Re: Wie und wo wählt OTRS den Kunden aus der Kundendatenbank
überprüfe die beiden Datenbankeinträge nochmal
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
-
- Znuny newbie
- Posts: 10
- Joined: 11 Dec 2013, 15:00
- Znuny Version: 4.0.6
- Real Name: Christoph Sandhaus
Re: Wie und wo wählt OTRS den Kunden aus der Kundendatenbank
Die Einträge (otrs.customer_user) unterscheiden sich definitiv in den Attributen
Ich habe auch eine Gegenprobe durchgespielt:
Dann wieder alles rückgängig gemacht (s.d. die Mailadresse von Kunde A ein Substring von Kunde B ist), Cache löschen, Kundendaten prüfen, neues Ticket: Kunde B steht wieder in "CC".
Da ich Test-Mailkonten verwende und auch den Mailserver konfiguriere (exim4), kann ich auf dem Testsystem auch alles nachverfolgen (Protokollierung im Mailserver, beim Kunden eingegangene Mails usw ...)
- id
- login
- customer_id
Ich habe auch eine Gegenprobe durchgespielt:
- vom Kunden B in Email und Login den Nachnamen geändert, s.d. keine übereinstimmenden Zeichenketten mehr vorliegen
- Cache gelöscht (.../otrs/bin/otrs.DeleteCache.pl)
- Kundendatenbank im Web geprüft, ob die Änderungen propagiert sind
- Erneut eine Mail vom Kunden A geschickt
Dann wieder alles rückgängig gemacht (s.d. die Mailadresse von Kunde A ein Substring von Kunde B ist), Cache löschen, Kundendaten prüfen, neues Ticket: Kunde B steht wieder in "CC".
Da ich Test-Mailkonten verwende und auch den Mailserver konfiguriere (exim4), kann ich auf dem Testsystem auch alles nachverfolgen (Protokollierung im Mailserver, beim Kunden eingegangene Mails usw ...)
Debian 7.8, OTRS 4.0.6, MySQL
-
- Znuny newbie
- Posts: 10
- Joined: 11 Dec 2013, 15:00
- Znuny Version: 4.0.6
- Real Name: Christoph Sandhaus
Re: Wie und wo wählt OTRS den Kunden aus der Kundendatenbank
Hab das Problem gefunden!
OTRS 4.0.5 und 4.0.6, weitere Versionen sind sicherlich ebenfalls betroffen.
Ich konnte das Prepared Statement herausfinden, welches zum Auffinden der Kunden verwendet wird:
Da mit "LIKE" gesucht wird ist klar, warum sowohl "nachname@kunde.de", als auch "vorname.nachname@kunde.de" gefunden wird.
Ersetze ich das LIKE durch "=" funktioniert es wie gewünscht und Kunde B wird nicht mehr in CC aufgenommen.
Datei: /opt/otrs/Kernel/System/CustomerUser/DB.pm
Zeile 258:
ersetzten durch
Weiterhin müßte noch die "CaseSensitive"-Suche auf identische Weise angepaßt werden (Zeile 254).
Schön wäre es, wenn jemand dieses Problem bestätigen würde, bevor ich mich daran setzte, an OTRS einen Bug zu melden ...
OTRS 4.0.5 und 4.0.6, weitere Versionen sind sicherlich ebenfalls betroffen.
Ich konnte das Prepared Statement herausfinden, welches zum Auffinden der Kunden verwendet wird:
Code: Select all
SELECT login , first_name, last_name, email FROM customer_user WHERE LOWER(email) LIKE LOWER(?) AND valid_id IN (1)
Ersetze ich das LIKE durch "=" funktioniert es wie gewünscht und Kunde B wird nicht mehr in CC aufgenommen.
Datei: /opt/otrs/Kernel/System/CustomerUser/DB.pm
Zeile 258:
Code: Select all
$SQLExt .= " LOWER($Field) LIKE LOWER(?) $LikeEscapeString ";
Code: Select all
$SQLExt .= " LOWER($Field) = LOWER(?) $LikeEscapeString ";
Schön wäre es, wenn jemand dieses Problem bestätigen würde, bevor ich mich daran setzte, an OTRS einen Bug zu melden ...
Debian 7.8, OTRS 4.0.6, MySQL
-
- Znuny newbie
- Posts: 10
- Joined: 11 Dec 2013, 15:00
- Znuny Version: 4.0.6
- Real Name: Christoph Sandhaus
Re: Wie und wo wählt OTRS den Kunden aus der Kundendatenbank
Falls jemand den Fall verfolgen möchte: ich habe bei OTRS einen Bug gemeldet:
http://bugs.otrs.org/show_bug.cgi?id=11164
http://bugs.otrs.org/show_bug.cgi?id=11164
Debian 7.8, OTRS 4.0.6, MySQL