{"id":3230,"date":"2021-02-18T14:43:04","date_gmt":"2021-02-18T13:43:04","guid":{"rendered":"http:\/\/192.168.3.48\/?p=3230"},"modified":"2023-06-28T10:58:07","modified_gmt":"2023-06-28T08:58:07","slug":"office-365-ein-ticketsystem-in-30-minuten-bauen-teil-3","status":"publish","type":"post","link":"https:\/\/192.168.3.55\/office-365-ein-ticketsystem-in-30-minuten-bauen-teil-3\/","title":{"rendered":"Office 365 \u2013 ein Ticketsystem in 30 Minuten bauen – Teil 3"},"content":{"rendered":"\n

TEIL 3 \u2013 Die Gesch\u00e4ftslogik (Power Automate), Zusammenfassung und Ausblick.<\/h2>\n

Im dritten und letzten Teil dieser Reihe sollen die Komponenten logisch verkn\u00fcpft werden. Das Ticketsystem aus Office 365 Komponenten wird hier fertiggestellt. Hierf\u00fcr werden zwei neue Flows in Power Automate erstellt. Ein Flow zur Anlage neuer Aufgaben \/ Tickets nach \u00dcbermittlung des Formulars. Sowie ein Flow zur R\u00fcckmeldung an den Ticketersteller, sobald das Ticket geschlossen wurde.<\/p>\n

Dieser Beitrag verteilt sich auf 3 Teile:<\/u><\/p>\n

Erster Teil \u2013 Die Idee zum Ticketsystem, die Anforderungen und das Zielbild.<\/a><\/p>\n

Zweiter Teil \u2013 Das Webformular (Microsoft Forms) und der Aufgabenplan (Microsoft Planner).<\/a><\/p>\n

Dritter Teil \u2013 Die Gesch\u00e4ftslogik (Power Automate), Zusammenfassung und Ausblick. Dieser Teil.<\/p>\n

Vierter Teil – Das Ticketsystem erweitern und verbessern<\/a><\/p>\n

Neuer Flow: Ticket er\u00f6ffnet<\/h3>\n

Zur Anlage der Flows wechseln Sie jeweils in Power Automate<\/a>, w\u00e4hlen Sie \u201eErstellen\u201c (Mit leerer App starten) und \u201eAutomatisierter Cloud-Flow\u201c. Vergeben Sie einen Flownamen (hier: Ticketsystem-DEMO bzw. Ticketsystem-TicketClosed-DEMO) und definieren Sie einen Trigger. Im ersten Fall (Anlage neues Ticket) ist dies Forms \u2013 Bei \u00dcbermitteln einer neuen Antwort. Im zweiten Fall Planner \u2013 Bei Abschluss einer Aufgabe.<\/p>\n

Hinweis: Sie erreichen alle Komponenten von Office 365 \u00fcber das Backend office.com<\/a>.<\/p>\n

Im Folgenden werden beide Flows n\u00e4her erl\u00e4utert.<\/p>\n

\"Flow
Flow zur Anlage neuer Aufgaben. Dieser wird mit Absenden des Formulars ausgel\u00f6st.<\/figcaption><\/figure>\n
    \n
  1. Der Flow wird getriggert durch die den Forms-Trigger \u201eBei \u00dcbermitteln einer neuen Antwort\u201c. <\/strong>Hier ist die Formular-ID des angelegten Formulars zu w\u00e4hlen (hier: neues Ticket-Demo). Der Trigger selbst liefert nur die Antwort-ID des Formulars zur\u00fcck, sodass die Aufgabendetails im n\u00e4chsten Schritt abzurufen sind.<\/li>\n
  2. Durch die Aktion \u201eAntwortdetails abrufen\u201c werden die Details der Antwort (also Stichwort, Beschreibung, Priorit\u00e4t, etc.) ermittelt. Diese Aufgabe \u00fcbergibt dann alle Formulareingaben als Ausgabe weiter.<\/li>\n
  3. In Abh\u00e4ngigkeit der gew\u00e4hlten Kategorie (hier: Webseite, ERP, CRM) wird eine Aufgabe im Planner erstellt, dem verantwortlichen Bearbeiter zugewiesen und um Details (hier: Beschreibung des Tickets) erg\u00e4nzt. Hinweis: In der Abbildung oben ist nur der Entscheidungszweig \u201eWebseite\u201c dargestellt. ACHTUNG: <\/strong>Aktuell scheint Power Automate noch Probleme mit Umlauten bzw. dem scharfen s “\u00df” zu haben. Der Fehler tritt auf, wenn der Flow erneut zum Bearbeiten geladen wird. Die definierte Option (Hier: Webseite, ERP bzw. CRM) geht dann verloren. Workaround f\u00fcr dieses Verhalten: Benennen Sie Ihre Optionen um. D.h. statt “Gro\u00df-\/Kleinschreibung” z.B. “Webseite” oder “Option1”, etc.<\/li>\n<\/ol>\n

    Wie in Teil 2<\/a> schon erw\u00e4hnt soll die Priorit\u00e4t der Tickets als Teil des \u00dcbergebenen Formularwertes (String) \u00fcbermittelt werden (z.B. \u201e3-Wichtig\u201c). Das entsprechende Feld \u201ePriorit\u00e4t\u201c in der Aktion \u201eEine Aufgabe erstellen\u201c akzeptiert aber nur Integer-Werte (Vgl. folgende Abbildung).<\/p>\n

    \"Flow-Aktion
    Eine Aufgabe in Microsoft Planner erstellen.<\/figcaption><\/figure>\n

    Wir m\u00fcssen also den String zerlegen und das erste Zeichen (hier: \u201e3\u201c) in eine Zahl (Integer) umwandeln. Hierf\u00fcr wird im Bereich Ausdruck folgende Formel eingegeben:<\/p>\n

    int(substring(outputs('Antwortdetails_abrufen')?['body\/rfa56259d98224076949117e3f4ba293a'],0,1))<\/code><\/p>\n

    Wobei 'body\/rfa56259d98224076949117e3f4ba293a'<\/code> sich auf einen dynamisch erzeugten JSON-Key bezieht. Am einfachsten k\u00f6nnen Sie den Bezug herstellen indem Sie mit dem Cursor zwischen den zwei Klammern der substring-Funktion den Reiter \u201eDynamischer Inhalt\u201c w\u00e4hlen und das entsprechende Feld (hier: Priorit\u00e4t) markieren (Vgl. folgende Abbildung). Mit einem Klick auf den blauen \u201eOK\u201c-Button \u00fcbernehmen Sie den Ausdruck in das Feld.<\/p>\n

    \"Einf\u00fcgen
    Die Priorit\u00e4t wird aus dem \u00fcbergebenen String ermittelt.<\/figcaption><\/figure>\n

    Folgendes Video zeigt die Erstellung des dynamischen Ausdrucks f\u00fcr die Priorit\u00e4t:<\/p>\n

    In der letzten Aktion des Kontrollflusses \u201eAufgabendetails aktualisieren\u201c wird der Aufgabe noch die Beschreibung sowie als erstes Pr\u00fcflistenelement (Pr\u00fcflisten ID 0) die E-Mail des Ticketerstellers (Responders E-Mail) \u00fcbergeben. Dieses Vorgehen w\u00e4hle ich als pragmatischen Weg die Anforderung A 4 aus Teil 1<\/a> abzubilden.<\/p>\n

    \"Aufgabendetails<\/p>\n

    Neuer Flow: Ticket geschlossen<\/h3>\n
    \"Flow
    Flow zur Benachrichtigung bei Abschluss des Tickets \/ der Aufgabe im Support.#<\/figcaption><\/figure>\n
      \n
    1. Der Flow wird getriggert durch den Planner-Trigger \u201eBei Abschluss einer Aufgabe\u201c. Hier ist die Gruppen-ID (in welcher der Plan sowie das Team registriert sind) und die Plan-ID anzugeben.<\/li>\n
    2. Um alle Details der abgeschlossenen Aufgabe zu beziehen muss die Aktion \u201eAufgabendetails abrufen\u201c folgen. Hier ist die von der Vorg\u00e4ngeraktion \u00fcbergebene ID anzugeben.<\/li>\n
    3. Als n\u00e4chstes muss die E-Mail des Benutzers ermittelt werden, welcher das Ticket initial erstellt hat. Also der Benutzer, welcher das Formular (Forms) abgeschickt hat. Wie oben beschrieben ist wurde die E-Mail im ersten Pr\u00fcflistenelement der Aufgabe hinterlegt. Diese gilt es nun aus dem \u00fcbergebenen Payload zu ermitteln. Hierf\u00fcr wird der Datenvorgang \u201eVerfassen\u201c gew\u00e4hlt. In dessen Eingabe wird folgender Ausdruck hinterlegt: outputs('Aufgabendetails_abrufen')?['body\/checklist'][0]['value']['title']<\/code><\/li>\n<\/ol>\n
        \n
      1. Nach Kenntnis der Benutzer-ID m\u00f6chten wir nun auch weitere Informationen zum Nutzer (E-Mail, Vornamen, etc.) um ad\u00e4quat mit diesem kommunizieren zu k\u00f6nnen. Hierf\u00fcr wird die Aktion \u201eBenutzerofil abrufen (V2)\u201c erg\u00e4nzt. Dieser wird die in der Vorg\u00e4ngeraktion ermittelte Benutzer-ID \u00fcbergeben.<\/li>\n
      2. Zuletzt soll der Anforderer per Teams-Chat \u00fcber den Status (Ticket geschlossen) des Tickets informiert werden. Hierf\u00fcr wird die Aktion \u201eNachrichten in einem Chat oder Kanal ver\u00f6ffentlichen\u201c erg\u00e4nzt (siehe Abbildung unten).<\/li>\n<\/ol>\n
        \"Flow
        Aktion zur Benachrichtigung bez\u00fcglich des Abschlusses der Aufgabe.<\/figcaption><\/figure>\n

        Nach Anlage der Flows k\u00f6nnen Sie diese testen (Icon \u201eTest\u201c oben rechts). W\u00e4hlen Sie hier erst \u201eManuell\u201c und l\u00f6sen Sie den Flow manuell aus. Dies erfolgt im ersten Fall (neues Ticket) durch Absenden des Webformulars und im zweiten Fall (Ticket geschlossen) durch Schlie\u00dfen der Aufgabe im Planner. Alle weitere Testdurchl\u00e4ufe k\u00f6nnen auf die Daten des ersten Manuellen Tests (Option \u201eAutomatisch\u201c) durchgef\u00fchrt werden.<\/p>\n

        Demo und vollst\u00e4ndige Videoanleitung<\/h3>\n

        Hier ein kurzes Demo der Funktion des Ticketsystems (fertig – wie im Tutorial beschrieben):<\/p>\n