Sofort-Kontakt

Kopfzeilen-Bild
Kopfzeilen-Filter
Kopfzeilen-Schräge

Power Platform

Kopfzeilen-Anführungszeichen Codearme Tools zur Effizienzsteigerung Kopfzeilen-Anführungszeichen

Tutorial zur
Urlaubsge­nehmigung
mit Share­Point und
Power Automate Teil 6/9: Die Einrich­tung in Power Automate – Flow 3 'Urlaubs­antrag genehmigen'

Fortsetzung der Tutorial-Reihe zur Urlaubsgeneh­migung: Während Sie mit dem Flow ‘Urlaubsantrag stellen’ die automatische Erstellung eines Antrags umgesetzt haben, erzeugen Sie mit dem Flow ‘Urlaubsantrag genehmigen’ die zugehörige Genehmigung und steuern die Verwaltung des Prozesses.


Fortsetzung der Einrichtung in Power Automate

Öffnen Sie den Flow ‘Urlaubsantrag genehmigen’, den Sie bereits angelegt haben und erstellen Sie die folgenden flowinternen Variablen:

Name Typ Wert
AntragsNr Zeichenfolge Rückgabewert zu ‘Antragsnr.’
HalberTagTxt Zeichenfolge Ausdruck: if(triggerOutputs()?['body/Halber_x0020_Tag'], 'Ja', 'Nein')
SonderurlaubTxt Zeichenfolge Ausdruck: if(triggerOutputs()?['body/Sonderurlaub'], concat('Ja – ', triggerOutputs()?['body/Grund_x0020_f_x002e__x0020_Sonde']), 'Nein')
Startdatum Zeichenfolge Rückgabewert zu ‘Startdatum’
NeuesEnddatum Zeichenfolge
EventID Zeichenfolge
FeldLeeren Zeichenfolge
LookupID Float Rückgabewert zu ‘Urlaubstage ID’
Urlaubstage Float Ausdruck: float(triggerOutputs()?['body/Urlaubstage'])
GenehmigterUrlaub Float 0
GenehmigterSonderurlaub Float 0
GenehmigteTage Float 0

Hinweis zu den Ausdrücken: Klicken Sie auf ‘Dynamischen Inhalt hinzufügen’. Wechseln Sie in den Reiter ‘Ausdruck’, um die Fx-Ausdrücke zu erstellen und beginnen Sie mit einer Funktion – z. B. if(), float() oder concat(). Setzen Sie den Cursor zwischen die beiden Klammern der jeweiligen Funktion und wechseln Sie auf den Reiter ‘Dynamischer Inhalt’, um den entsprechenden Wert aus dem Trigger – oder einer vorhergehenden Aktion oder einer Variablen – einzufügen. Wenn Sie so vorgehen, stellen Sie sicher, dass die korrekte Bezeichnung innerhalb Ihrer Urlaubsgenehmigung für den gesuchten Wert genutzt wird.

Alle Variablen

Tipp: Wenn Sie Rückgabewerte aus der Liste ‘Urlaubsanträge’ einbinden, können Sie – sofern nicht anders angegeben – auf die Werte aus dem Trigger ‘Wenn ein Urlaubsantrag erstellt wird’ zurückgreifen.

Als Nächstes soll der Eintrag in der SharePoint-Liste ‘Urlaubsanträge’ aktualisiert werden. Dazu wird die ID des gestarteten Flows in den Antrag übernommen. Nutzen Sie dafür die SharePoint-Aktion ‘Element aktualisieren’ und füllen Sie die Pflichtfelder, die mit dem roten Asterisk * markiert sind, mit den Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubsanträge’ (Listenname) sowie den Rückgabewerten aus dem Trigger des Flows. Zusätzlich setzen Sie in das Feld ‘Flow ID’ den Fx-Ausdruck workflow()['run']['name'] ein. Damit schreibt der gerade laufende Flow seine ID in den zugehörigen Antrag.

Im Urlaubsantrag Flow ID aktualisieren

Fahren Sie fort, indem Sie die Zeitplan-Aktion ‘Verzögerung’ mit der ‘Anzahl’ ‘25’ und der ‘Einheit’ ‘Tag’ hinzufügen. Anschließend setzen Sie die Outlook-Aktion ‘E-Mail senden’, um eine Benachrichtigung zu erzeugen, die die oder den Genehmigenden darüber informiert, dass diese Genehmigungsanfrage noch offen ist. Nach 30 Tagen wird ein Flow automatisch ohne Ergebnis abgebrochen. Als Empfänger wählen Sie den Rückgabewert ‘Mail’ aus der Office-365-Aktion ‘Vorgesetzten abrufen’.

Verzoegerung E-Mail ausstehende Genehmigung

Beispieltext:

Die Genehmigungsanfrage für den Urlaubsantrag Nr. @{variables(‘AntragsNr’)} von @{triggerBody()?[‘Name_x0020_Antragsteller’]?[‘DisplayName’]} wurde seit 25 Tagen nicht bearbeitet. Der Genehmigungsflow ist noch aktiv und wird in 5 Tagen abgebrochen.

Kehren Sie zu der Verbindung zwischen den beiden Aktionen ‘Urlaubsanträge: Flow ID aktualisieren’ und ‘Verzögern für 25D’ zurück und fügen Sie einen parallelen Branch ein, in dem jetzt die eigentliche Genehmigung erzeugt wird. Dadurch werden beide Zweige durchlaufen und die Verzögerung wartet die angegebenen 25 Tage ab, bis sie schließlich die Erinnerungs-E-Mail auslöst.

Parallelen Branch hinzufuegen

Setzen Sie die Genehmigungen-Aktion ‘Starten und auf Genehmigung warten’, wählen Sie als ‘Genehmigungstyp’ die Option ‘Genehmigen/ablehnen: Erste Antwort’, geben Sie einen ‘Titel’ an und weisen Sie auch hier den Rückgabewert ‘Mail’ aus der Office-365-Aktion ‘Vorgesetzten abrufen’ zu.

Die Eigenschaft ‘Details’ beinhaltet den Text, der in Ihrer E-Mail aufgeführt werden soll. Sie können auch einen Link, eine ‘Beschreibung des Linkinhalts’ sowie einen ‘Requestor’ – also die Person, die den Antrag gestellt hat – angeben. Wenn Sie den Punkt ‘Benachrichtigungen aktivieren’ auf ‘Nein’ ändern, wird keine Meldung mehr ausgegeben, das betrifft sowohl die Benachrichtigung in der Microsoft Teams-App als auch die E-Mail-Benachrichtigung.

Um zu verhindern, dass eine Genehmigung einer anderen Person zugewiesen wird, sollten Sie ‘Neuzuweisung aktivieren’ auf ‘Nein’ ändern. Es erfolgt nämlich keine Rückmeldung an den Flow, falls eine Neuzuweisung stattgefunden hat und es wird kein Protokoll über erfolgte Neuzuweisungen erstellt.

Genehmigung starten warten

Beispieltext:

@{body('Urlaubsanträge:_Flow_ID_aktualisieren')?['Name_x0020_Antragsteller']?['DisplayName']} hat einen Urlaubsantrag Nr. @{variables('AntragsNr')} für den Zeitraum vom @{formatDateTime(convertTimeZone(triggerBody()?['Startdatum'], 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy', 'DE')} bis zum @{formatDateTime(convertTimeZone(triggerBody()?['Enddatum'], 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy', 'DE')} gestellt.

Halber Tag: @{variables('HalberTagTxt')}

Sonderurlaub: @{variables('SonderurlaubTxt')}

Hinweis zu formatDateTime: Es ist möglich Zeitzonen unterschiedlich zu konvertieren . Die Formatierung zur Darstellung eines Datums im Format einer bestimmten Zeitzone wird in diesem Tutorial über die Fx-Funktionen formatDateTime() und convertTimeZone() realisiert. Beide Funktionen nutzen drei Parameter – x, y, z –, um ihr Ergebnis zu ermitteln. Im vorliegenden Fall werden die beiden Funktionen so verschachtelt, dass die Funktion convertTimeZone(x, y, z) den Wert x der Funktion formatDateTime(x, y, z) ermittelt. Hier zum Vergleich die abstrakte Schreibweise formatDateTime(convertTimeZone(x, y, z), y, z)
und mit den eingefügten Werten formatDateTime(convertTimeZone(triggerBody()?['Enddatum'], 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy', 'DE')

Bauen Sie erneut die Outlook-Aktion ‘E-Mail senden’ ein, um eine Benachrichtigung zu versenden, falls es bei der Erstellung der Genehmigung zu Fehlern gekommen sein sollte. Setzen Sie für den Parameter ‘An’ wieder die ‘Mail’ des/der Vorgesetzten. Öffnen Sie das Menü der Aktion und klicken Sie auf ‘“Ausführen nach” konfigurieren’. Setzen Sie nur ein Häkchen bei ‘ist fehlerhaft’. Nutzen Sie anschließend die Steuerung-Aktion ‘Beenden’ mit dem Status ‘Abgebrochen’.

E-Mail falls Genehmigung fehlerhaft

Beispieltext:

Start einer Genehmigungsaktion fehlgeschlagen. Bitte überprüfen Sie die für die Aktion zugewiesenen Werte.

Kehren Sie zurück zu dem gestrichelten Pfeil zwischen den Aktionen ‘Starten und auf Genehmigung warten’ und ‘E-Mail: Genehmigungsflow abgebrochen’, um einen parallelen Branch hinzuzufügen. Wählen Sie als Nächstes die Steuerung-Aktion ‘Bedingung’ und prüfen Sie den Rückgabewert der Genehmigung ‘Antworten’ ist gleich Approve.

Pfad Genehmigung erteilt: nein

Im „Nein“-Zweig beginnen Sie damit, die Flow ID im zugehörigen Urlaubsantrag zu leeren. Erstellen Sie eine SharePoint-Aktion ‘Element aktualisieren’ und tragen Sie die Werte für die Pflichtfelder ein. Das sind neben den Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubsanträge’ (Listenname) die Rückgabewerte ‘ID’, ‘Antragsnr.’, ‘Startdatum’ und ‘Enddatum’. Leeren Sie vorgegebene Werte, um diese im Antrag nicht zu überschreiben und setzen Sie die Variable ‘FeldLeeren’ bei ‘Flow ID’ ein.

Genehmigung nein Flow ID leeren

Wählen Sie als Nächstes die SharePoint-Aktion ‘Inhaltsgenehmigungsstatus festlegen’, setzen Sie die Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubsanträge’ (Bibliotheksname), den Rückgabewert des Triggers ‘ID’ und den Wert ‘Reject’ für den Parameter ‘Aktion’. Falls Sie sich dazu entscheiden Rückgabewerte aus der Genehmigung, wie die Kommentare, mit abzubilden, wird eine ‘Auf alle anwenden’-Schleife erzeugt.

Setzen Sie anschließend erneut die Outlook-Aktion ‘E-Mail senden’, um die antragstellende Person über die Ablehnung zu informieren.

Genehmigung nein Status anpassen Benachrichtigung

Beispieltext:

Der Urlaubsantrag Nr. @{variables('AntragsNr')} für den Zeitraum vom @{formatDateTime(convertTimeZone(triggerBody()?['Startdatum'], 'UTC', 'W. Europe Standard Time'),'dd.MM.yyyy', 'DE')} bis zum @{formatDateTime(convertTimeZone(triggerBody()?['Enddatum'], 'UTC', 'W. Europe Standard Time'),'dd.MM.yyyy', 'DE')} wurde von @{items('Genehmigungsstatus_anpassen_-_Ablehnung')?['responder/displayName']} abgelehnt.

Kommentar(e): @{items('Genehmigungsstatus_anpassen_-_Ablehnung')?['comments']}

Die letzte Aktion dieses Pfads ist ‘Beenden’ aus der Steuerung mit dem Zustand ‘Erfolgreich’.

Pfad Genehmigung erteilt: ja

Beginnen Sie diesen Pfad damit, dass Sie den zur antragstellenden Person gehörenden Eintrag aus der Liste ‘Urlaubstage’ abrufen. Setzen Sie also die Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubstage’ (Listenname) und als ‘ID’ die Variable ‘LookupID’.

Genehmigung ja Eintrag Urlaubstage abrufen

Mit den Rückgabewerten aus dieser Aktion werden die folgenden Variablen festgelegt.

Name Wert Erklärung
GenehmigterUrlaub Ausdruck: float(body('Urlaubstage:_Eintrag_abrufen')['Genehmigt']) Umwandlung von Typ ‘Zahl’ (SharePoint) in Typ ‘Float’ (Power Automate)
GenehmigterSonderurlaub Ausdruck: float(body('Urlaubstage:_Eintrag_abrufen')['Genehmigter_x0020_Sonderurlaub']) Umwandlung von Typ ‘Zahl’ (SharePoint) in Typ ‘Float’ (Power Automate)
GenehmigteTage Ausdruck: if(triggerBody()?['Sonderurlaub'], add(variables('Urlaubstage'), variables('genehmigterSonderurlaub')), add(variables('Urlaubstage'), variables('GenehmigterUrlaub'))) Wenn ‘Sonderurlaub = Ja’ dann werden die beantragten Urlaubstage und die bisher gesetzten Tage aus ‘Genehmigter Sonderurlaub’ addiert; Wenn ‘Sonderurlaub = Nein’, dann werden die beantragten Urlaubstage zum Wert ‘Genehmigt’ addiert
NeuesEnddatum Ausdruck: if(triggerBody()?['Halber_x0020_Tag'], addDays(triggerBody()?['Startdatum'], 1), addDays(triggerBody()?['Startdatum'],int(triggerBody()?['Kalendertage']))) Wenn ‘Halber Tag = Ja’ dann wird zum Startdatum 1 addiert; Wenn ‘Halber Tag = Nein’ dann werden die errechneten ‘Kalendertage’ zum Startdatum addiert

Genehmigung ja Variablen festlegen

Fügen Sie nun die SharePoint-Aktion ‘Element aktualisieren’ ein, um die Anzahl der genehmigten Urlaubstage in die Liste Urlaubstage zu übernehmen.

Parameter Wert
Websiteadresse Umgebungsvariable: EV Site Urlaubsgenehmigung
Listenname Umgebungsvariable: EV Liste Urlaubstage
ID Variable: LookupID
Mitarbeiternr. Rückgabewert: ID
Genehmigt Ausdruck: if(triggerBody()?['Sonderurlaub'], body('Urlaubstage:_Eintrag_abrufen')['Genehmigt'], variables('GenehmigteTage'))
Genehmigter Sonderurlaub Ausdruck: if(triggerBody()?['Sonderurlaub'], variables('GenehmigteTage'), body('Urlaubstage:_Eintrag_abrufen')['Genehmigter_x0020_Sonderurlaub'])
UA - Basis Rückgabewert: UA - Basis
UA - Zusatz Rückgabewert: UA - Zusatz
VU - Basis Rückgabewert: VU - Basis
VU - Zusatz Rückgabewert: VU - Zusatz
Wochenende - freie Tage Rückgabewert: Wochenende - freie Tage

Genehmigung ja Eintrag Urlaubstage aktualisieren

Nachdem der Eintrag in der Liste ‘Urlaubstage’ angepasst wurde, soll der Termin im Kalender ‘Urlaub’ erstellt werden. Im Parameter ‘Ganztägiger Termin?’ können Sie mittels des Fx-Ausdrucks if(triggerOutputs()?['body/Halber_x0020_Tag'], false, true) festlegen, dass halbtägige Termine nicht als ganzer Tag im Kalender markiert werden.

Genehmigung ja Termin in Kalender ‘Urlaub’

Legen Sie die Variable ‘EventID’ fest, indem Sie den Rückgabewert ‘ID’ aus der Outlook-Aktion ‘Termin im Kalender Urlaub eintragen’ setzen.

Updaten Sie mit der SharePoint-Aktion ‘Element aktualisieren’ in der Liste ‘Urlaubsanträge’ das Feld ‘Flow ID’ mit der Variable ‘FeldLeeren’ und ‘Event ID’ mit der Variable ‘EventID’. Leeren Sie alle vorgefüllten Felder außer ‘Storniert’.

Genehmigung ja Urlaubsantraege Event ID aktualisieren

Danach können Sie auch an dieser Stelle die Outlook-Aktion ‘E-Mail senden’ einfügen, um die antragstellende Person über die erfolgreiche Genehmigung zu informieren sowie die Genehmigung des Eintrags in der Liste ‘Urlaubsanträge’ setzen. Erstellen Sie dafür die SharePoint-Aktion ‘Inhaltsgenehmigungsstatus festlegen’ und setzen Sie die Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubsanträge’ (Bibliotheksname), den Rückgabewert des Triggers ‘ID’ und den Wert ‘Approve’ für den Parameter ‘Aktion’. Falls Sie sich dazu entscheiden Rückgabewerte aus der Genehmigung, wie die Kommentare, mit abzubilden, wird eine ‘Auf alle anwenden’-Schleife erzeugt.

Als Letztes fügen Sie die Steuerung-Aktion ‘Beenden’ mit dem Status ‘Erfolgreich’ ein.

Genehmigung ja Status E-Mail

Beispieltext:

Der Urlaubsantrag Nr. @{variables('AntragsNr')} für den Zeitraum vom @{formatDateTime(convertTimeZone(triggerBody()?['Startdatum'], 'UTC', 'W. Europe Standard Time'),'dd.MM.yyyy', 'DE')} bis zum @{formatDateTime(convertTimeZone(triggerBody()?['Enddatum'], 'UTC', 'W. Europe Standard Time'),'dd.MM.yyyy', 'DE')} wurde von @{items('Auf_alle_anwenden')?['responder/displayName']} genehmigt.

Kommentar(e): @{items('Genehmigungsstatus_anpassen_-_Genehmigt')?['comments']}

An dieser Stelle sind alle Pfade fertiggestellt und Sie haben die Erstellung des Flows ‘Urlaubsantrag genehmigen’ gemeistert! Sie schützen Ihre Fortschritte am leichtesten, indem Sie Ihre Lösung zur Versionssicherung exportieren.

Weiter geht’s mit dem Tutorial zur Urlaubsgenehmigung in ➡️ Teil 7/9: Die Einrichtung in Power Automate – Flow 4 ‘Vorgabeurlaube berechnen’.