Ticketing-System mit OpenProject

Für das Projektmanagement setzen wir bei varioous auf das Tool OpenProject und sind sehr zufrieden damit. Nun wollten wir aber auch unseren Support-Ticket-Workflow automatisieren und aus E-Mails automatisch Tickets erstellen. Einiges davon bringt OpenProject zwar schon mit, allerdings mussten wir hier einige Funktionen anpassen und an unsere eigenen Bedürfnisse anpassen. Wie man OpenProject mittels eines kleinen PHP-Skriptes in ein Voll-funktionsfähiges Ticketing-System verwandelt, erfährt ihr in diesem Blogbeitrag.

Was bringt OpenProject „Out of the box“ mit? Tickets (Work Packages genannt) inkl. Verwaltung, Benutzerverwaltung etc. Auch gibt es bereits eine Funktion für „Incoming mail“, welche allerdings nur sehr rudimentär funktioniert, bzw. einfach aus Redmine (OpenProject ist ein Redmine fork) übernommen wurde. Für unsere Bedürfnisse haben wir uns nun ein PHP-Skript geschrieben, welches den Workflow auf unsere Bedürfnisse anpasst. Ermöglicht wird das durch die OpenProject API und die OpenProject/Redmine CLI tools. Die OpenProject API ist allerdings schon etwas älter und bietet nicht alle nötigen Funktionen (Project erstellen, Benutzer einem Projekt zuweisen, Projekte anhand Benutzer listen,…) bzw. sind die CLI tools schlecht bzw. gar nicht dokumentiert. Wie funktioniert nun der Ticket-Workflow:

  • Das PHP-Skript wird von einem cron job aufgerufen (alle 5 Minuten).
  • Das PHP-Skript verbindet sich per imap (oder auch pop3) auf ein E-Mail Postfach (zBsp. support@varioous.at) und überprüft ob neue Nachrichten eingegangen sind.
  • Bei neuen Mails wird ein neues Ticket erstellt (inkl. Absender-Name, Absender-Adresse, Anhänge etc.).
  • Existiert bereits ein Benutzer im OpenProject für diese E-Mail Adresse, wird der Benutzer als „Beobachter“ an diesem Ticket eingetragen.
  • Existiert noch KEIN Benutzer wird ein neuer erstellt und diesem per E-Mail der Bestätigungslink zugesandt, und ebenfalls das Ticket zugewiesen.
  • Dem Benutzer wird automatisch eine E-Mail gesendet, mit den Informationen zum Ticket (Supportanfrage erhalten, Ticket-Nummer, Link zum Ticket,…)

Auf einen Sonderfall möchte ich noch hinweisen: OpenProject bietet aktuell (hoffentlich noch) nicht die Möglichkeit, dass ein Benutzer nur die Tickets sieht, welche ihm zugewiesen sind, oder von ihm erstellt wurden, hier basiert die Rechteverwaltung auf Projektebene. Deswegen würde bei einem einzigen Supportprojekt, jeder Benutzer auch die Tickets der anderen Benutzer bzw. Projekte sehen. Aus diesem Grund haben wir uns entschieden, für jedes Projekt ein eigenes Support-Projekt anzulegen, in welchem die Support-Tickets verwaltet werden. Deshalb wird für einen neuen Benutzer auch ein neues Projekt erstellt.

Hier findet ihr Informationen zum Update des Tools.

Den gesamten Sourcecode findet ihr auf Github. Über Feedback/Änderungswünsche/Verbesserungen/Hilfestellung sind wir wie immer sehr dankbar!

Auf GitHub ansehen

Weitere Informationen / Links