OMG, wer übernimmt die Telefonvertretung?

12. August 2019


In unserem letzten Blog-Beitrag haben wir unser internes Microservices-Projekt vorgestellt, dabei aber eine wichtige Frage offengelassen: Was ist das OMG und warum hat es ausgerechnet diesen Namen bekommen? Wir haben versprochen, die Antwort nachzuliefern, und hier kommt sie auch schon: Es ist ein Tool für unsere Empfangs- und Telefonvertretung.

Am Anfang war das Office Management

Wie so ziemlich jede Firma auch, haben wir auch einen Mitarbeiter für das Office Management. Eingehende Anrufe landen in der Regel zuerst bei ihm, und er ist auch derjenige, der Besuchern und Lieferanten die Tür zu unseren heiligen Hallen öffnet. Wenn er jedoch aus diversen Gründen (Besprechung, Päuschen, Urlaub, …) mal nicht an seinem Platz sitzt, muss trotzdem sichergestellt sein, dass Anrufe entgegengenommen und Besucher nicht vor der Tür stehen gelassen werden. Dann wird das Telefon in der Regel zu Mitarbeiter X umgestellt und zum Türöffner am zentralen Office-Management-Schreibtisch hechtet derjenige, der gerade in der Nähe ist und die Türklingel hört.

Das kann man so machen, aber so ganz reibungslos funktioniert dieses Verfahren leider nicht. Denn ab und zu steht Mitarbeiter X selbst auch (ganztägig oder zeitweise) nicht als Telefonvertretung zur Verfügung. Dann muss unser Office Manager erst mühsam eine Vertretung für die Vertretung suchen. Das ist ziemlich lästig, und so kamen wir auf die Idee, uns für diesen Prozess einfach eine Individualsoftware zu entwickeln.

Der erste Arbeitstitel lautete „Office Management Tool“, kurz OMT. Doch als wir das Wörtchen Tool durch „Gadget“ ersetzt hatten, ging uns allen die Abkürzung gleich viel leichter von den Lippen.

Später ging uns auf, dass wir mit dem OMG künftig auch die Rufbereitschaft für einige unserer Kunden abbilden können. Daraufhin war ein weiterer Namenswechsel hin zu „Occupation Management Gadget“ fällig, aber zum Glück konnten wir das liebgewonnene Kürzel behalten. Bis wir die Rufbereitschaft in das OMG integrieren, dauert es jedoch noch etwas. Gerade erst testen wir die Beta-Version des OMG mit Empfangs- und Telefonvertretung. Erst wenn die Testphase inkl. Nachbesserungen und Debugging abgeschlossen ist, wollen wir die Rufbereitschaft in das Tool integrieren.

Wie funktioniert das OMG?

Das OMG erleichtert die Organisation der Vertretung für Telefon, Empfang und künftig auch die Rufbereitschaft. Dazu können alle Mitarbeiter im OMG angeben, ob sie bereit und verfügbar sind, um die Vertretung für Telefon und/oder Empfang zu übernehmen. In der Übersicht listet das OMG alle diejenigen auf, die „ja, ich will“ gesagt haben (und den Office Manager natürlich). Wer längere Zeit weder Telefon noch Empfang übernommen hat, steht ganz oben in der Liste, wer den Office Manager zuletzt vertreten hat, rutscht auf den letzten Listenplatz.

Das zeigen wir am besten Schritt für Schritt, wobei wir aus Datenschutzgründen unsere Testinstanz mit fiktiven Nutzern anstelle des Produktivsystems mit unseren echten Namen zeigen. In der Testinstanz ist Sabine unsere Office Managerin. Wenn Sabine mal ihren Posten verlassen muss, stehen die Kollegen Leonard, Otto, Emil, Berta, Janina und Angelika als Vertretung bereit.

Das OMG und die Office Managerin

Morgens betritt Sabine das Büro, fährt ihren Rechner hoch und meldet sich in unseren diversen Tools an, darunter das OMG. Dieses zeigt – noch – eine Warnung an: „Weder das Telefon noch der Empfang sind besetzt!“ Außerdem sind dort zwei Symbole zu sehen, ein Herz und ein Richterhammer. Das Herz steht für „Freiwillige*r“, der Hammer kennzeichnet Sabine als „Maintainer“, d.h. als den User, der hauptsächlich für den jeweiligen Posten verantwortlich ist.

Weder Telefon noch Empfang sind besetzt

Sabine klickt nun auf „Telefon übernehmen“ und „Empfang übernehmen“, und sofort ändert sich die Ansicht entsprechend:

Sabine hat Telefon und Empfang übernommen

Eine Weile später muss sie ihren Platz verlassen. Sie überlegt, wer sie vertreten könnte, und entscheidet sich der Einfachheit halber für den ersten Namen in der Freiwilligenliste, Leonard. Weil sie die Freiwilligenauswahl praktischerweise gekoppelt hat, genügt ein Klick auf seinen Namen in der Spalte Telefon, um ihn auch gleich als Vertretung für den Empfang auszuwählen.

Sabine möchte Telefon und Empfang an Leonard abgeben

Nun klickt sie auf „Auswahl abgeben“, worauf Leonard eine Pushbenachrichtigung erhält und 30 Sekunden Zeit hat, um die Posten anzunehmen. In dieser Zeit ist sein Name orange hinterlegt und Sabine kann währenddessen nicht einfach jemand anderes auswählen. Sie muss warten, bis Leonard den Posten entweder annimmt oder ablehnt (bzw. nicht reagiert, weil er gerade selbst nicht an seinem Platz ist).

Sabine wartet, dass Leonard beide Posten übernimmt

In diesem Fall hat Leonard nicht reagiert, somit wird die Auswahl wieder zurückgesetzt. Sabine muss sich also eine andere Vertretung suchen und entscheidet sich für Otto. Da Ottos Schreibtisch sich aber nur noch so gerade eben in Hörweite der Türklingel befindet, möchte sie ihm nur die Telefonvertretung überlassen. Dazu entkoppelt sie die Auswahl, wählt Kollegin Janina als Empfangsvertretung aus, gibt die beiden Posten ab und wartet wieder darauf, dass die beiden annehmen.

Sabine übergibt Telefon und Empfang an Otto und Janina

Nach erfolgreicher Postenübergabe kann Sabine ihren Schreibtisch verlassen und tun, was auch immer sie gerade tun muss. Wenn sie wieder zurück an ihrem Platz ist, holt sie sich beide Posten durch Klick auf „Telefon / Empfang zurücknehmen“ zurück.

Emil hat von Sabine die Telefonvertretung übernommen

Zum Feierabend beendet Sabine ihren Dienst als Herrin über Telefonzentrale und Empfang, indem sie im Menü auf „Posten unbesetzt machen“ klickt.

Sabine stellt den Posten im Menü auf "unbesetzt"

Das OMG aus der Sicht eines Freiwilligen

Bislang haben wir bei der Nutzung des OMG ausschließlich Sabine über die Schulter gesehen, nun wird es Zeit für einen Perspektivwechsel. Wir stellen vor: Kollege Emil. Während Sabine als Maintainer auf Posten ist, sieht seine Ansicht des OMG so aus:

Emil sieht im OMG, dass Sabine beide Posten besetzt hat

Während Emil seiner normalen Arbeit nachgeht und Dinge in unser Intranet schreibt, erhält er plötzlich eine Pushbenachrichtigung aus dem OMG: Sabine möchte ihm für eine Weile das Telefon übergeben. Er begibt sich ins OMG und sieht den Countdown für die Postenan- oder -abnahme:

Übernahmeanfrage: Emil kann von Sabine die Telefonvertretung annehmen oder ablehnen

Emil hat erst einmal nichts dagegen, das Telefon zu übernehmen, also nimmt er den Posten an. Weil sich jedoch Sabines Abwesenheit von ihrem Schreibtisch länger hinzieht und er selbst nun auch gerne woanders hingehen würde, übergibt er den Posten an Janina. In diesem Moment kommt Sabine an ihren Platz zurück und sieht, dass Emil die Telefonvertretung wieder loswerden möchte:

Sabine sieht, dass Emil die Telefonvertretung an Janina abgeben möchte

Solange Janina sich nicht entschieden hat (oder die 30 Sekunden noch nicht um sind), muss Sabine noch warten. Erst danach kann sie den Posten wieder zurücknehmen.

Urlaubs- und Krankheitsvertretung

Wenn Sabine krank oder im Urlaub ist, übernimmt einer ihrer Kollegen solange die Hauptverantwortung für Telefon und Empfang. Emil meldet sich freiwillig für die Telefonvertretung. Dazu klickt er zunächst im Menü auf „Posten für heute leiten“.

Emil übernimmt für einen Tag die Postenleitung

Nun erscheint der Richterhammer in seiner Ansicht, aber auch ein Uhrsymbol, denn Emil hat die Rolle des Maintainers ja nur zeitweise übernommen. Im OMG nennen wir seine neue, leicht veränderte Nutzerrolle „Substitute“.

Emil ist temporärer Postenleister für die Telefonvertretung

Auch seine Kollegen sehen im OMG, dass Emil sich als Substitute für Sabine eingetragen hat:

Emil wird seinen Kollegen im OMG als temporärer Postenleiter angezeigt

Am Ende seines Arbeitstages kann er die Substitute-Rolle wieder abgeben, indem er im Menü auf „Heutige Postenleitung beenden“ klickt. (Falls er es vergisst, erledigt es das OMG für ihn automatisch über Nacht.)

Emil gibt die Postenleitung für die Telefonvertretung wieder ab

Technische Besonderheiten

Das Grundgerüst des auf Spring im Backend und Angular im Frontend basierenden OMG haben wir mit JHipster generiert. Was das Tool aus Entwicklersicht aber besonders spannend gemacht hat, sind die folgenden zwei funktionalen Bedingungen:

  1. Alle eingeloggten Nutzer müssen unverzüglich, d.h. sofort über Statusänderungen benachrichtigt werden.
  2. Aus Gründen der Übersichtlichkeit sollten sie das Tool nicht zwangsläufig permanent im Browser geöffnet haben müssen.

Als Lösung für Bedingung Nummer 1 kam nur das Netzwerkprotokoll WebSocket infrage. Während bei anderen Verbindungsarten jeder Client einzeln automatisierte Anfragen an den Webserver stellen muss, wird bei WebSocket der Server eigenständig aktiv, sobald ein Nutzer eine Änderung bei sich im Browser vornimmt. In einer Anwendung, in der Statusänderungen in einem unregelmäßigen Stundentakt vorkommen, würden automatisierte Client-Server-Abfragen nur unnötigen Traffic verursachen. Zudem würden diese Statusänderungen je nach gewähltem Abfrageintervall die einzelnen Nutzer nur verzögert erreichen – was ungünstig ist, wenn ein Nutzer 30 Sekunden Antwortzeit hat. Da ist WebSocket eindeutig die praktischere und effizientere Lösung.

Bedingung Nummer 2 haben wir mit Hilfe eines Service Workers umgesetzt. Eine schlanke JavaScript-Datei lässt den Code im Hintergrund weiterlaufen, selbst wenn ein Nutzer den Browser-Tab mit der Anwendung geschlossen hat. Wenn der betreffende Nutzer für eine Vertretung angefragt wird, gibt der Service Worker die entsprechende Nachricht des Servers als Push-Benachrichtigung aus.

Zukunftsmusik

Als kreative Entwickler haben wir natürlich auch schon ein paar Ideen, wie wir unser praktisches Office-Tool zu einem späteren Zeitpunkt erweitern könnten. In der Übersicht über unsere Microservices-Architektur sind dem OMG zwei weitere Anwendungen nachgeordnet: EAR und TTI. EAR steht für „Employee’s Absence Referent“ – ein Tool, das auf unseren Confluence-Kalender zugreifen und uns übersichtlich anzeigen soll, wer von uns heute aus welchem Grund nicht im EsPresto-Büro anwesend ist. TTI wiederum ist ein Microservice, der anhand der Daten aus unserer Zeiterfassung ermittelt, wer tatsächlich gerade arbeitet und wer Pause macht.

Im Zusammenspiel sollen beide Tools dem OMG mitteilen, welche Mitarbeiter gerade nicht für die Empfangs- oder Telefonvertretung infrage kommen. Denn wer zwar grundsätzlich im Büro anwesend ist, aber gerade jetzt in der Lounge sein Mittagessen einnimmt und deshalb die Zeiterfassung pausiert hat, muss gar nicht erst für die Telefonvertretung angefragt werden. Gleiches gilt für einen Mitarbeiter, der im Homeoffice arbeitet oder gerade in einer Besprechung sitzt.

Aber wie in der Überschrift schon gesagt: Diese kleinen Tools sind noch Zukunftsmusik.