Bei vielen Firmen – und auch bei uns – werden die Tätigkeiten der Mitarbeiter zunächst mit Hilfe des Outlook-Kalenders individuell oder durch das BackOffice geplant. Zur Abrechnung und Auswertung müssen jedoch in einem zweiten Schritt – und in einem zweiten System – später von den Mitarbeitern Leistungs- bzw. Arbeitsnachweise erstellt werden. Und das ist doppelte Arbeit. So auch bei uns: Die Leistungsnachweise erfassen wir in unserem CRM (Microsoft Dynamics 365), wo sie mit einer benutzerdefinierten Entität abgebildet werden. Diese Entität besitzt Felder, in denen u.a. der Titel und der Kunde gespeichert werden. Für die Mitarbeiter (und auch für uns Azubis) ist bzw. war diese Tätigkeit ziemlich Nerv tötend – wobei sie natürlich nichts desto weniger wichtig ist. Eine meiner ersten produktiven Aufgaben im Rahmen meiner Ausbildung bei der R.iT bestand darin, hier für Abhilfe zu sorgen: Ich wollte den täglichen Aufwand möglichst minimieren und für die Erstellung der Leistungsnachweise die Informationen nutzen, die bereits in Outlook vorlagen, um damit die Pflege von zwei Systemen auf eins zu reduzieren. Dazu entwickelte ich ein Outlook Add-In. Zur technischen Umsetzung nun ein paar Details: Wie funktioniert unsere Lösung? Um eine Microsoft Office-Anwendung zu erweitern, muss ein so genanntes VSTO- Add-In entwickelt werden. Anleitungen hierfür finden sich zur Genüge im Internet. Über eine XML-Datei werden dem Kontextmenü und dem Menüband eines geöffneten Termins in Outlook zwei Buttons hinzugefügt.
Um einzelne Bereiche ansprechen zu können, gibt es für jeden anpassbaren Bereich eine ID, in unserem Fall waren das ContextMenuCalendarItem und TabAddIns. Ein Link zu einer Dokumentation über die IDs findet sich im Anhang. Die Buttons bekommen dann eine onAction-Methode hinzugefügt, welche die Logik zum Erstellen oder Öffnen des Leistungsnachweises starten. Outlook bietet mit dem aktiven Explorerelement den Kontext, wie ihn der Nutzer sieht. Es wird damit möglich, den aktuell ausgewählten Termin zu bestimmen, auszulesen und die Daten für den Arbeitsnachweis zu extrahieren. Über eine Instanz der OrganizationServiceProxy-Klasse wird eine Verbindung zu unserem CRM hergestellt. Es wird programmtechnisch eine Entität vom Typ Leistungsnachweis erstellt, die die Attribute des Outlook-Termins zugewiesen bekommt. Dieser Leistungsnachweis wird dann über den Proxy in unserem CRM erstellt und gibt die GUID an das Add-In zurück. Um nun eine Verbindung zwischen Outlook Termin und CRM Arbeitsnachweis herzustellen, wird die GUID des Leistungsnachweises in den benutzerdefinierten Attributen (UserProperties) des Outlook Termins abgespeichert. Bevor ein Leistungsnachweis erstellt werden kann, wird geprüft, ob bereits eine GUID gespeichert wurde oder ob die GUID in den UserProperties einem bestehenden Arbeitsnachweis im CRM zugeordnet werden kann. Ist dies der Fall, wird der Anwender gefragt, ob ein weiterer Datensatz aus diesem Termin erstellt werden soll. Konnte der Arbeitsnachweis im CRM erfolgreich erstellt werden, wird dem Titel des Termins ein Haken "?" vorangestellt. Somit ist für den Anwender direkt ersichtlich, welcher Termin bereits als Arbeitsnachweis erstellt wurde.
Auch die Zuordnung zu den entsprechenden Kunden geschieht automatisch: Jedem Kunden ist systemintern ein Kundenkürzel zugeordnet, welches den Leistungsnachweisen vorangestellt wird. Anhand dieser Kennung kann das Add-In mithilfe des Proxys im CRM nach dem Kunden suchen und den Bezug zur Firma setzen. Das Add-In kann bei Bedarf einfach um neue Funktionen erweitert werden und bietet mit seinem Anpassungspotenzial vielfältige Möglichkeiten. Mit solch einer (scheinbar) recht trivialen Lösung habe ich es geschafft, den Zeitaufwand für die Arbeitszeiterfassung sowohl für diverse Kunden als auch für uns deutlich zu reduzieren. Da alle Mitarbeiter mit dem Add-In arbeiten, multipliziert sich die Zeitersparnis im Unternehmen auf ein Vielfaches und es hat sich gelohnt, ein solches Add-In zu entwickeln. Neben diesem eher "betriebswirtschaftlichen" Nutzen hat es mir aber vor allem Spaß gemacht, diese Funktion zu recherchieren und zu programmieren – und ich freue mich auch jetzt noch, wenn ich sehe, wie die Kolleginnen und Kollegen das Tool täglich nutzen.