Die Anforderungen

Die erste große ASP.net-Aufgabe als Entwickler in der TOSHIBA Europe GmbH war das Erstellen eines Helpdesk- / Ticketsystems. Solche Issue-Tracking-Systeme gab es auch 2006 schon jede Menge, auch als Open Source, aber es galt 2 Besonderheiten zu beachten damit sich das neue System nahtlos in die neue .net Landschaft eingliedert. Zum einen sollte es auf ASP.net beruhen. Dadurch schieden die meisten Systeme bereits aus da sie z.B. in Java (Jira), Perl (Bugzilla) oder PHP (Mantis) geschrieben wurden. Zum anderen gab es bereits ein bestehendes Dokumentenmanagementsystem (auf MS SQL) und die neue Applikation sollte die bereits vorhandenen Mechanismen für Rechtevergabe, Emailbenachrichtigung etc. benutzen.

Die Aufgaben

Deshalb wurde ich mit der Neuprogrammierung eines Helpdesksystems auf Basis von ASP.net beauftragt. Das System wurde im August 2007 europaweit eingeführt und steht somit bereits seit knapp 10 Jahren mehreren tausend Mitarbeitern zur Verfügung. In der gesamten Zeit war ich alleiniger Verantwortlicher für das System und habe sämtliche Erweiterungen besprochen, geplant, programmiert, installiert und gepflegt.

Die Funktionen

Die grundsätzlichen Funktionen sind natürlich bei allen Helpdesk-Systemen gleich: Jemand kann ein Ticket / Task / Request / etc. erstellen. Darin wird das Problem beschrieben und einige Optionen eingestellt, z.B. die Priorität oder die Anzahl der betroffenen Personen. Falls möglich, wählt der Ersteller bereits eine Problem Area (.net, Oracle, Printer, etc.) aus, ansonsten landet der neue Task erstmal beim Helpdesk. Dort wird dann die Anfrage bearbeitet und evtl. an den Second-Level-Support weitergeleitet.

Natürlich gibt es Einschränkungen abhängig vom angemeldeten Benutzer. Nur EDV-Mitarbeiter können alle Problem Areas auswählen, auch die Auswahl der Priorität “kritisch” ist EDV-Mitarbeitern vorbehalten. Und während jeder EDV-Mitarbeiter Ergänzungen, erledigte Arbeitsschritte und -zeit eintragen kann, bleibt das Schließen des Tasks dem aktuell zugewiesenen Bearbeiter vorbehalten.

Durch die Erstellung von Parent- und Child-Tasks können Verknüpfungen und Abhängigkeiten definiert werden. Dadurch können auch komplexe Vorgänge dargestellt werden und Task Tracking wird inzwischen als vorherrschendes Projektmanagementtool benutzt. Unterstützt durch den ergänzten Excel-Export lassen sich diese Projektübersichten auch leicht an externe Auftraggeber weitergeben.

Eine Auflistung aller Funktionen würde hier natürlich den Rahmen sprengen, deshalb hier nur ein kurzer Auszug der Erweiterungen die ich im Laufe der Jahre umgesetzt habe:

  • Multi-Client-Fähigkeit. Das System wird nicht nur in der EDV-Abteilung verwendet, sondern z.B. auch vom Facility Management in England für deren Task. Die Benutzerrechte sind natürlich komplett getrennt so daß jede Person nur die Tasks aus seinem Bereich sehen kann..
  • Integration des OCS-Benutzerstatus (Vorläufer von Lync und Skype for Business). Hier musste ich einen eigenen OCS-Client programmieren der dann die aktuelle Verfügbarkeit der EDV-Mitarbeiter in eine MS SQL Datenbank schreibt.
  • Integration des Microsoft Exchange Mailkontos des aktuellen Benutzers um leichter Tasks aus Emails (inklusive Screenshots und Dateianhängen) zu erstellen. Der Zugriff ist sowohl per IMAP als auch per Exchange Web Services (EWS) möglich.
  • Automatisierte Erstellung von Tasks per Emails sowohl von Benutzern als auch von Drittsystemen wie Jira oder Nagios. Durch Erkennung von Absender, Thema und Inhalt werden diese neuen Tasks automatisch dem richtigen Problembereich und dem richtigen Ansprechpartner zugeordnet. Weitere Mails, ebenfalls von den Benutzern oder den Systemen, die den gleichen Vorgang betrafen wurden hierbei natürlich korrekt dem existierenden Task zugeordnet.
  • Speicherung eigener Filter.
  • Erinnerungsfunktionalität.
  • Der Status “Waiting for final acceptance” schreibt den Antragssteller bis zu drei Mal an und schließt bei Nichtbeantwortung den Task automatisch.
  • Für einige Bereiche wird nach Schließung eines Task eine “Customer Satisfaction Mail” an den Antragssteller gesendet und das Ergebnis in der Datenbank gespeichert.
  • Durch die Verwendung von Templates können wiederkehrende Tasks (z.B. Benutzer entsperren) sehr schnell erstellt werden. In einfachen Fällen reicht hier die Auswahl des Templates sowie des Benutzers um den Task zu erstellen. Die Templates funktionieren auch problemlos mit Parent-Child-Beziehungen so daß man also Projektvorlagen als Template definieren und mit nur einem Klick entsprechend beliebige viele Tasks erstellen kann.
  • Mit Text Snippets kann man auch einzelne Textblöcke als Vorlage speichern.
  • Um die Reaktionszeit drastisch zu minimieren besteht nun die Möglichkeit, einen Task zu speichern ohne auf den Workflow (Rechte vergeben, Mail senden etc.) zu warten (“Fast Save”). Die Verarbeitung findet dann asynchron auf dem Server statt. Der Benutzer kann dadurch wesentlich schneller einen Task erstellen oder bearbeiten.

Aktuelle Situation

Seit August 2007 ist das Helpdesk-System europaweit für mehrere Tausend Mitarbeiter im Einsatz. Inzwischen wurden weit über 300.000 Tasks angelegt. Das System läuft seitdem stabil und wartungsfrei, auch ein Jahr nach meinem Ausscheiden aus der Firma.