Statistik über Kunden Abteilungen

Hilfe zu Znuny Problemen aller Art
Locked
Indiz
Znuny newbie
Posts: 19
Joined: 10 Aug 2009, 17:10
Znuny Version: 2.3.2

Statistik über Kunden Abteilungen

Post by Indiz »

Hallo zusammen,

ich füge unsere Kunden über eine LDAP Anbindung einem Ticket hinzu. In dem LDAP Datensatz sehe ich die Kundenabteilung (über MAP => [ 'Department', 'Abteilung', 'department', 1, 0, 'var', '', 1 ], usw. in der Config.pm).

Wie kann ich eine Statistik erstellen, in der ich sehen kann, wieviele Tickets aus den einzelnen Abteilungen z.B. im letzten Monat gekommen ist?

OS: Ubuntu 9.04
OTRS 2.3.2
ITSM 1.2.3

Vielen Dank für eure Antwort.

Gruß,
Micha
Joyner
Znuny expert
Posts: 185
Joined: 08 Feb 2008, 14:49
Znuny Version: 2.2.8
Location: Berlin

Statistik über Kunden Abteilungen

Post by Joyner »

Hi,

das funktioniert über SQL-Abfragen.
Über das Statistik-Modul funktioniert es leider nicht.

mfg
Produktiv: OTRS 2.4.7, CiCS 3.1.5, Eigenentwicklungen
β-Testing/Mirror: OTRS 2.4.7, ITSM 2.0.2, CiCS(::ITSM) 3.1.5 (2.1.6), Eigenentwicklungen OS: Win2003, XAMPP, Apache2.2/MySQL 5, Trac/SVN
Indiz
Znuny newbie
Posts: 19
Joined: 10 Aug 2009, 17:10
Znuny Version: 2.3.2

Statistik über Kunden Abteilungen

Post by Indiz »

Hallo,

heißt das, ich muss zuerst die LDAP Daten in die lokale DB übertragen und anschließend via SQL Auswerten? Was passiert mit der LDAP Authentifizierung der Kunden (LDAP Kunde ungleich DB KUNDE!?). Sieht der Kunde nach dem Login via LDAP dann noch seine Tickets? Beim anlegen eines Tickets werden dem Agenten dann zwei Einträge pro Kunde angezeigt (LDAP und DB)?

... oder sind diese Daten (Abteilung) bereits in der DB (hab leider bisher noch nichts gefunden)?

Vielen Dank für Deine Antwort.

Gruß,
Micha
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Statistik über Kunden Abteilungen

Post by jojo »

Du kannst eine solche Statistik im Endeffekt nur über die OTRS API "bauen". Du musst nämlich Kundendaten per LDAP abfragen um die Logins oder Customer_IDs zu erhalten und dann anschliessend die Tickets dafür herausfinden....
"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
Indiz
Znuny newbie
Posts: 19
Joined: 10 Aug 2009, 17:10
Znuny Version: 2.3.2

Statistik über Kunden Abteilungen

Post by Indiz »

Hallo,

habe ich denn die Möglichkeit, die angezogene OU oder Abteilung des Kunden zu einem Ticket in die lokale DB zu schreiben? Wenn ja, wie sieht soetwas aus?
Wenn dass klappt, könnte ich dann ja mit SQL meine Statistik starten.

Ein 'Workaround', als Alternative zur API Entwicklung könnte so aussehen: Statistik über alles Tickets eines Zeitraums mit eingeschalteter Stats::CustomerIDAsMultiSelect: Option über alle Kunden. Anschl. import der AD in Excel oder Access. Matchen der beiden DBs und summen bilden. Nicht schön aber sicher möglich. Hier ist nur das Problem, dass hierfür eine 'Weitergabefähige' Auswertung über einzelne Benutzer durchgeführt würde. Der BR läßt grüßen :lol:

Ist denn die Anforderung, nach Abteilungen zu quantifizieren soooo ungewöhnlich. M.E. ist das doch eine Statistik die jedes Unternehmen fordert - oder?

Gruß,
Micha
Indiz
Znuny newbie
Posts: 19
Joined: 10 Aug 2009, 17:10
Znuny Version: 2.3.2

Statistik über Kunden Abteilungen

Post by Indiz »

Hallo,

meine Lösung lautet wie folgt:

1. Erweiterung der DB (Tabelle 'ticket') um das Feld customer_department
2. Füllen/Kontrolle des Feldes 'Abteilung' in der ADS
3. Änderung der /usr/share/otrs/Kernel/System/Ticket.pm wie folgt:

Code: Select all

         if ($Ok) {
             $Param{History} .= "CustomerUser=$Param{User};";
         }
+
+        my %CustomerUser = $Self->{CustomerUserObject}->CustomerUserDataGet(
+            User => $Param{User},
+        );
+        $Param{Department} = $CustomerUser{'Department'};
+
+        # db customer department update
+        if ( defined $Param{Department} ) {
+            my $Ok = $Self->{DBObject}->Do(
+                SQL => 'UPDATE ticket SET customer_department = ?, '
+                    . 'change_time = current_timestamp, change_by = ? WHERE id = ?',
+                Bind => [ \$Param{Department}, \$Param{UserID}, \$Param{TicketID} ],
+            );
+            if ($Ok) {
+                $Param{History} .= "CustomerDepartment=$Param{Department};";
+            }
+        }
     }

     # if no change
4. Abfrage der DB aus z.B. Excel mit folgendem SQL Code:
Info: State 2 = geschlossen / State 10 = geschlossen mit Workaround
Das Zeitfenster muss natürlich entsprechend pro Abfrage geändert werden.

Code: Select all

SELECT Count( * ) AS Zeilen, ticket.customer_department
FROM ticket
WHERE (
ticket.change_time
BETWEEN '2009-02-01 00:00:00'
AND '2009-02-28 23:59:59'
AND ticket.ticket_state_id =2
)
OR (
ticket.ticket_state_id =10
)
GROUP BY ticket.customer_department
ORDER BY ticket.customer_department
Hierbei handelt es sich m.E. um eine absolute Standardabfrage, welche sicherlich im Standard enthalten sein sollte.
Schade ist hier, dass dafür die Ticket.pm angepasst werden muss, so dass dieses immer wieder, bei jedem Update, durchgeführt werden muss.

Gruß,
MIcha
Locked