Wie und wo wählt OTRS den Kunden aus der Kundendatenbank

Hilfe zu Znuny Problemen aller Art
Locked
chsandhaus
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

Post by chsandhaus »

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
Debian 7.8, OTRS 4.0.6, MySQL
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: Wie und wo wählt OTRS den Kunden aus der Kundendatenbank

Post by jojo »

ü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
chsandhaus
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

Post by chsandhaus »

Die Einträge (otrs.customer_user) unterscheiden sich definitiv in den Attributen
  • id
  • login
  • email
  • customer_id
... und in nahezu allen weiteren Attributen.

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
... und das Ergebnis ist wie gewünscht, Kunde B ist nicht in "CC".

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
chsandhaus
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

Post by chsandhaus »

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:

Code: Select all

SELECT login , first_name, last_name, email FROM customer_user WHERE  LOWER(email) LIKE LOWER(?)   AND valid_id IN (1)
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:

Code: Select all

$SQLExt .= " LOWER($Field) LIKE LOWER(?) $LikeEscapeString ";
ersetzten durch

Code: Select all

$SQLExt .= " LOWER($Field) = LOWER(?) $LikeEscapeString ";
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 ...
Debian 7.8, OTRS 4.0.6, MySQL
chsandhaus
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

Post by chsandhaus »

Falls jemand den Fall verfolgen möchte: ich habe bei OTRS einen Bug gemeldet:

http://bugs.otrs.org/show_bug.cgi?id=11164
Debian 7.8, OTRS 4.0.6, MySQL
Locked