Open Source im professionellen Einsatz

Standardverhalten von OTRS ändern

Der Service Desk des Uni-Rechenzentrums nutzt zur Überwachung von Tickets die Standardansicht »Meine Queues« von OTRS, die alle offenen und nicht in aktiver Bearbeitung befindlichen (daher gesperrten) Tickets anzeigt. Dabei erwies es sich in der täglichen Praxis als erforderlich, bei der expliziten Zuweisung an einen weiteren Bearbeiter das zugrunde liegende Ticket nicht zu sperren, da bei diesem Vorgang das Ticket aus der Standardansicht des zweiten Bearbeiters verschwindet, ohne dass aus Sicht des Kunden das Ticket explizit bearbeitet worden wäre.

Das geschilderte Verhalten zu ändern, geht nur direkt im Quellcode. Die Suche nach dem dafür verantwortlichen OTRS-Modul gestaltet sich sehr einfach. OTRS bildet das für die Aktion verantwortliche Modul stets in der URL mit ab. So zeigt die URL beim Ändern des Besitzers eines Tickets »Action=AgentTicketOwner« an. Der dafür verantwortliche Quellcode befindet sich in »OTRS-Pfad/Kernel/Modules/AgentTicketOwner.pm« und ist damit schnell identifiziert (Listing 1). Die erforderliche Anpassung nebst Kommentar ist schnell gemacht (Listing 2).

Es ist sehr empfehlenswert, nicht nur die Art der Änderung zu kommentieren, sondern auch durch eindeutige Tags (hier »custom unibwm«) hervorzuheben. Dadurch lassen sich bei Updates und - wichtiger noch - Upgrades die modifizierten Stellen einfach identifizieren.

Listing 1: Ticket-Lock nach
Ändern des Besitzers

01 if ($Self->{Config}->{Owner}) {
02      if ($GetParam{NewOwnerType} eq 'Old' && $GetParam{OldOwnerID}) {
03         $Self->{TicketObject}->LockSet(
04            TicketID => $Self->{TicketID},
05            Lock => 'lock',
06            UserID => $Self->{UserID},
07         );

Listing 2: Keine Sperre nach
Ändern des Besitzers

01 # Wenn neuer Besitzer gesetzt, Ticket immer entsperren!
02 # custom unibwm (lock->unlock)
03 if ($Self->{Config}->{Owner}) {
04      if ($GetParam{NewOwnerType} eq 'Old' && $GetParam{OldOwnerID}) {
05         $Self->{TicketObject}->LockSet(
06            TicketID => $Self->{TicketID},
07            Lock => 'unlock',
08            UserID => $Self->{UserID},
09         );

Die Lösung: Herrenlose Tickets

Auf die gleiche Weise hat das Uni-Rechenzentrum ein anderes nicht passendes Standardverhalten geändert: OTRS belegt auch frisch erzeugte Tickets sofort mit einer Sperre. Wenn nämlich ein Service-Desk-Mitarbeiter telefonisch oder persönlich eine Störung entgegennimmt, wird dieser automatisch zum Bearbeiter des Tickets, statt des für die Aufgabe eigentlich vorgesehenen Agenten. Die ersonnene Lösung sieht vor, zunächst keinen Agenten als Besitzer zu deklarieren. Dies passiert in OTRS durch Setzen des Besitzers auf »root« (id=1) im Modul »AgentTicketPhone« (Listing 3).

Das OTRS-Team im Rechenzentrum hat im Zuge der beiden Quelltext-Änderungen gleich einen lästigen Bug im FAQ-Modul gefixt: Explizite »<br>«-Zeilenumbrüche auch innerhalb von »<href>«-Tags verhinderten die Nutzung von längeren Hypertext-Links in FAQ-Artikeln. Der eingereichte Bugzilla-Report schlummerte unbeachtet vor sich hin. Lediglich eine eingefügte Quellcodezeile in »OTRS-PfadKernel/Modules/FAQ.pm« löst das Problem (Listing 4).

Listing 3: Root als Owner eines
neuen Tickets

01 # custom unibwm: Owner bei neuem Ticket ist stets root (id=1)
02 # OwnerID =&gt; $Self-&gt;{UserID},
03 OwnerID =&gt; '1',

Listing 4: Bugfix im
FAQ-Modul

01 $ItemData{$Key} = $Text;
02 # custom unibwm
03 # protect against line-breaks within anchor-tags
04 $ItemData{$Key} =~ s/&lt;br&gt;href/ href/g;

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook