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 8/9: Die Einrich­tung in Power Automate – Flow 5 'Urlaubsan­trag stornieren'

Fortsetzung der Tutorial-Reihe zur Urlaubs­ge­neh­migung: Nicht immer läuft im Leben alles wie geplant – umso besser, wenn man flexibel 🤹‍♂️ darauf reagieren kann. Mithilfe des Flows ‘Urlaubsantrag stornieren’ können Anträge storniert 🔙 werden, unabhängig davon, ob der Genehmigungsprozess noch läuft oder bereits genehmigt wurde.


Abschluss der Einrichtung in Power Automate

Sie haben es fast geschafft! Der Flow zur Stornierung von Urlaubsanträgen ist das letzte Teil 🧩 im Power Automate-Puzzle. Erstellen Sie wieder einen automatisierten Cloud-Flow und überspringen Sie das Fenster ‘Automatisierten Cloud-Flow erstellen’. Suchen Sie nach dem Forms-Trigger ‘Bei Übermitteln einer neuen Antwort’ und setzen Sie für die Formular-ID die Umgebungvariable ‘EV Formular Urlaub stornieren’ ein.

Als zweite Aktion setzen Sie die Forms-Aktion ‘Antwortdetails abrufen’ mit der Formular-ID ‘EV Formular Urlaub stornieren’ und als Antwort-ID die ‘Antwort-ID’ aus dem Trigger.

Initialisieren Sie anschließend die folgenden flowinternen Variablen. Für die Variable AntragsNr können Sie den Rückgabewert ‘Antragsnr.’ aus ‘Antwortdetails abrufen’ einsetzen, die anderen können leer bleiben – denn sie werden über den Verlauf des Flows gefüllt.

Name Typ
AntragsNr Zeichenfolge
Genehmigungsstatus Zeichenfolge
AntragstellendePerson Zeichenfolge
NutzendePerson Zeichenfolge
EmailVorgesetztePerson Zeichenfolge
Urlaubsform Zeichenfolge
HalberTag Zeichenfolge
FeldLeeren Zeichenfolge
LookupID Float
Urlaubstage Float
GenehmigterUrlaubTage Float
GenehmigteTage Float

Forms Antworten Variablen anlegen

Setzen Sie die Office-365-Users-Aktion ‘Nach Benutzern suchen’ mit dem Rückgabewert ‘Responders’ Email’ als Suchbegriff. Legen Sie danach die Variable ‘NutzendePerson’ fest mit dem Wert ‘Anzeigename’. Durch diese Abfrage entsteht eine Auf-alle-anwenden-Schleife. Verlassen Sie diese und rufen Sie mit der SharePoint-Aktion ‘Elemente abrufen’ die vorhandenen Anträge ab. Geben Sie für die Websiteadresse die Umgebungsvariable ‘EV Site Urlaubsgenehmigung’ und für den Listennamen die Umgebungsvariable ‘EV Liste Urlaubsanträge’ an. Filtern Sie die Abfrage auf Title eq '@{variables('AntragsNr')}'.

Urlaubsantraege Antrag abrufen

Im nächsten Schritt werden die Variablen festgelegt, die Werte aus dem Antrag benötigen. Legen Sie diese alle innerhalb der gleichen Auf-alle-anwenden-Schleife ‘Werte festlegen’ fest, welche sich auf die SharePoint-Aktion ‘Urlaubsanträge: Antrag abrufen’ bezieht.

Name Wert
Genehmigungsstatus Rückgabewert zu ‘Inhaltsgenehmigungsstatus’
LookupID Rückgabewert zu ‘Urlaubstage ID’
AntragstellendePerson Rückgabewert zu ‘Name Antragsteller Display Name’
Urlaubstage float(items('Werte_festlegen')?['Urlaubstage'])

Variablen Antrag festlegen

Fügen Sie eine neue Bedingung ein und prüfen Sie, ob die Variable ‘AntragstellendePerson’ gleich ‘NutzendePerson’ ist. Erzeugen Sie im „Nein“-Zweig eine E-Mail, welche die Person, die das Formular genutzt hat, darüber informiert, dass die angegebene Antragsnummer zu einem fremden Antrag gehört. Setzen Sie danach die Steuerung-Aktion ‘Beenden’ mit dem Status ‘Abgebrochen’.

Bedingung antragstellende Person gleich nutzende Person nein

Beispieltext:

Sie haben versucht einen Antrag zu stornieren, der von jemand anderem gestellt wurde.

Sie können nur solche Anträge stornieren, die Sie selbst gestellt haben.

Pfad AntragstellendePerson gleich NutzendePerson: Ja

Im „Ja“-Zweig kann es zu zwei Konstellationen kommen. Entweder ein Antrag ist bereits genehmigt oder ein Antrag liegt dem/der Genehmigenden zur Genehmigung vor. In beiden Fällen soll auch der/die Vorgesetzte darüber informiert werden, dass der Antrag storniert wurde. Ist der Antrag bereits genehmigt, soll eine Genehmigung der Stornierung durchgeführt werden.

Legen Sie die Office-365-Users-Aktion ‘Vorgesetzten abrufen’ an, mit dem Rückgabewert ‘Benutzerprinzipalname’ aus der Aktion ‘Nach Benutzern suchen’. Anschließend setzten Sie den daraus ermittelten Wert ‘Mail’ in die flowinterne Variable ‘EmailVorgesetztePerson’ ein. Bleiben Sie für diesen und die folgenden Schritte innerhalb der Auf-alle-anwenden-Schleife.

Fügen Sie eine neue Bedingung ein, die die Variable Genehmigungsstatus ist gleich Approved überprüft.

Pfad Status ist genehmigt: Nein

Im „Nein“-Zweig dieser neuen Bedingung fügen Sie die Power-Automate-Management-Aktion ‘Flow-Ausführung abbrechen’ ein. Setzen Sie die Umgebungsvariablen ‘EV Power Automate Umgebung ID’ (Umgebung) und ‘EV Flow ID’ (Flow) und geben Sie als ‘Ausführungs-ID’ den Rückgabewert ‘Flow ID’ aus der Aktion ‘Urlaubsanträge: Antrag abrufen’ an. Bleiben Sie innerhalb der Auf-alle-anwenden-Schleife.

Status ist genehmigt nein Flow abbrechen

Nachdem Sie dadurch den laufenden Genehmigungsflow beendet haben, können Sie die am Antrag hinterlegte Flow ID entfernen. Setzen Sie die SharePoint-Aktion ‘Element aktualisieren’ ein. Geben Sie alle Werte, die mit einem roten Asterisk * markiert sind, an, setzen Sie den Wert ‘Storniert’ auf ‘Ja’ und fügen Sie die Variable ‘FeldLeeren’ im Wert ‘Flow ID’ an. Leeren Sie die anderen vorausgefüllten Felder, um diese Werte im Antrag nicht zu überschreiben.

Status ist genehmigt nein Antrag aktualisieren

Danach wird für diesen Pfad die Outlook-Aktion ‘E-Mail senden’ benötigt, um sowohl dem/der Genehmigenden als auch dem/der Antragstellenden zurückzumelden, dass der Antrag erfolgreich storniert wurde.

Status ist genehmigt nein Email

Beispieltext:

Der Urlaubsantrag Nr. @{variables(‘AntragsNr’)} wurde von @{variables(‘AntragstellendePerson’)} storniert.

Der Flow für den Genehmigungsprozess wurde gestoppt.

Pfad Status ist genehmigt: Ja

In diesem Schritt soll eine neue Genehmigung erstellt werden, da ein Antrag storniert werden soll, der bereits genehmigt wurde. Legen Sie dafür zuerst die beiden Variablen ‘Urlaubsform’ und ‘HalberTag’ fest. Wenn Sie auf ein Element einer multiplen Abfrage – z. B. innerhalb einer Auf-allen-anwenden-Schleife – zugreifen wollen, können Sie über die Konstruktion items() folgendermaßen darauf zugreifen:

items(Name der Schleife)?[Wert]

if(abzufragender Ausdruck, wenn ja, wenn nein)

Name Wert
Urlaubsform if(items('Genehmigung_erstellen')?['Sonderurlaub'], 'Sonderurlaub', 'Urlaub')
HalberTag if(items('Genehmigung_erstellen')?['Halber_x0020_Tag'], 'Ja', 'Nein')

Status ist genehmigt ja Variablen anlegen

Fügen Sie als Nächstes die Teams-Aktion ‘Genehmigung erstellen’ ein. Setzen Sie den ‘Genehmigungstyp’ auf ‘Genehmigen/ablehnen: Erste Antwort’, vergeben Sie einen für Sie aussagekräftigen Titel und weisen Sie die Variable ‘EmailVorgesetztePerson’ zu. Im Feld ‘Details’ geben Sie die Daten an, die für die Genehmigungsnachricht relevant sind. Mit dem Rückgabewert ‘Link zu Element’ aus der Abfrage ‘Urlaubsanträge: Antrag abrufen’ können Sie einen Link angeben. Den Wert ‘Neuzuweisung aktivieren’ sollten Sie auf ‘Nein’ setzen, sofern Sie nicht ausdrücklich wünschen, dass die Genehmigung an eine andere Person neu zugewiesen werden kann. Bedenken Sie, dass dies nicht explizit an den Flow zurückgemeldet wird und Sie dadurch keine Nachverfolgung der Neuzuweisung erhalten.

Damit der Flow auf eine Rückmeldung wartet, erstellen Sie die Teams-Aktion ‘Auf Genehmigung warten’ und geben die ‘Genehmigungs-ID’ der vorhergehenden Aktion an.

Status ist genehmigt ja Genehmigung

Beispieltext:

@{variables(‘AntragstellendePerson’)} möchte den Urlaubsantrag Nr. @{variables(‘AntragsNr’)} stornieren.

Zeitraum: @{formatDateTime(convertTimeZone(items(‘Genehmigung_erstellen’)?[‘Startdatum’], ‘UTC’, ‘W. Europe Standard Time’),‘dd.MM.yyyy’, ‘DE’)} - @{formatDateTime(convertTimeZone(items(‘Genehmigung_erstellen’)?[‘Enddatum’], ‘UTC’, ‘W. Europe Standard Time’),‘dd.MM.yyyy’, ‘DE’)}
Urlaubstage: @{variables(‘Urlaubstage’)}
Halber Tag: @{variables(‘HalberTag’)}
Urlaubsform: @{variables(‘Urlaubsform’)}

Bleiben Sie innerhalb der ‘Genehmigung erstellen’-Schleife und erzeugen Sie eine neue Bedingung, bei der das Ergebnis der Genehmigung auf ist gleich Approve geprüft wird. Erzeugen Sie im „Nein“-Zweig eine neue Outlook-E-Mail, in der die antragstellende Person darüber informiert wird, dass der Stornierungsantrag abgelehnt wurde.

Status ist genehmigt ja Genehmigung abgelehnt

Beispieltext:

Eine Stornierung des Urlaubsantrags Nr. @{variables(‘AntragsNr’)} wurde abgelehnt.

Kommentar: @{items(‘E-Mail:_Storno_abgelehnt’)?[‘comments’]}

Pfad Storno ist genehmigt: Ja

Wählen Sie die Outlook-Aktion ‘Ereignis löschen’ aus und geben Sie den Kalender ‘Urlaub’ sowie den Rückgabewert ‘Event ID’ aus der SharePoint-Aktion ‘Urlaubsanträge: Antrag abrufen’ an, um das am Antrag hinterlegte Ereignis aus dem gemeinsamen Kalender zu entfernen.

Fügen Sie die SharePoint-Aktion ‘Element aktualisieren’ ein. Nutzen Sie die Ihnen bekannten Umgebungsvariablen, um auf die Liste ‘Urlaubsanträge’ zuzugreifen und füllen Sie die Felder mit dem roten Asterisk * mit den Werten aus der Aktion ‘Urlaubsanträge: Antrag abrufen’. Setzen Sie den Wert ‘Storniert’ auf ‘Ja’ und leeren Sie alle anderen vorausgefüllten Felder, um nichts versehentlich zu überschreiben. Den Wert ‘Event ID’ leeren Sie im Antrag, indem Sie die Variable ‘FeldLeeren’ einfügen.

Status ist genehmigt ja Genehmigung erteilt

Um nun die Anzahl der genehmigten Tage in der SharePoint-Liste ‘Urlaubstage’ anzupassen, rufen Sie den Eintrag aus der Liste ab und legen für die Variable ‘GenehmigterUrlaubTage’ fest, ob die Zahl der insgesamt genehmigten Urlaubstage oder die bereits genehmigten Sonderurlaubstage gespeichert wird. In der Fx-Formel für den Ausdruck prüfen Sie über if() und startsWith(), ob die weiter oben im Flow festgelegte Variable ‘Urlaubsform’ mit dem Wort ‘Sonder’ beginnt. Ist dies der Fall, dann wird der Rückgabewert ‘Genehmigter Sonderurlaub’ übernommen, wenn nicht, wird der Rückgabewert ‘Genehmigt’ eingefügt.

if(startsWith(variables('Urlaubsform'), 'Sonder'), outputs('Urlaubstage:_Eintrag_abrufen')?['body/Genehmigter_x0020_Sonderurlaub'], outputs('Urlaubstage:_Eintrag_abrufen')?['body/Genehmigt'])

Legen Sie danach die Variable ‘GenehmigteTage’ fest, um den neuen Wert zu berechnen. Dafür ziehen Sie mittels der Fx-Formel sub(x, y) den Wert y (= Subtrahend) von dem Wert x (= Minuend) ab.

sub(variables('GenehmigterUrlaubTage'),variables('Urlaubstage'))

Status ist genehmigt ja Urlaubstage berechnen

Über die SharePoint-Aktion ‘Element aktualisieren’ können Sie nun den Eintrag in der Liste ‘Urlaubstage’ anpassen. Setzen Sie die Umgebungsvariablen sowie die Variable ‘LookupID’, füllen Sie die mit dem roten Asterisk * markierten Felder mit den passenden Rückgabewerten aus der Aktion ‘Urlaubstage: Eintrag abrufen’ und leeren Sie die übrigen Felder. Die beiden Werte für ‘Genehmigt’ und ‘Genehmigter Sonderurlaub’ werden wie folgt ermittelt: Genau wie beim Festlegen der Variable ‘Urlaubsform’ ermitteln Sie den benötigten Wert darüber, ob eben jene Variable mit dem Wort ‘Sonder’ beginnt.

Ist dies der Fall, so wird der bisherige Wert für ‘Genehmigt’ übernommen und die Variable ‘GenehmigteTage’ wird in das Feld ‘Genehmigter Sonderurlaub’ eingefügt. Ist dies nicht der Fall, so wird ‘GenehmigteTage’ in ‘Genehmigt’ eingefügt und der bisherige Wert für ‘Genehmigter Sonderurlaub’ wird übernommen.

Name Wert
Genehmigt if(startsWith(variables('Urlaubsform'), 'Sonder'), outputs('Urlaubstage:_Eintrag_abrufen')?['body/Genehmigt'], variables('GenehmigteTage'))
Genehmigter Sonderurlaub if(startsWith(variables('Urlaubsform'), 'Sonder'), variables('GenehmigteTage'), outputs('Urlaubstage:_Eintrag_abrufen')?['body/Genehmigter_x0020_Sonderurlaub'])

Status ist genehmigt ja Urlaubstage aktualisieren

Danach sollte noch eine E-Mail erzeugt werden, die die antragstellende sowie die genehmigende Person darüber informiert, dass die Stornierung des Antrags erfolgreich ausgeführt wurde.

Status ist genehmigt ja Email Storno angenommen

Als letzten Schritt setzen Sie am Ende des Pfades ‘AntragstellendePerson ist gleich NutzendePerson’ die Steuerung-Aktion ‘Beenden’ mit dem Status ‘Erfolgreich’.

Pfad antragstellende Person gleich nutzende Person ja beenden

Denken Sie daran, alle Aktualisierungen in Ihrer Power Automate-Lösung zu veröffentlichen und zu exportieren.

Herzlichen Glückwunsch 🎉 – Sie haben alle Flows erstellt, die Sie für die Urlaubsgenehmigung benötigen! Im letzten Schritt dieses Tutorials werden Sie einen Testlauf durchführen, um die Flows zu überprüfen und gegebenenfalls zu korrigieren. Ihre Urlaubsgenehmigung steht jetzt in den Startlöchern! 🚀

Weiter geht’s mit dem Tutorial zur Urlaubsgenehmigung in ➡️ Teil 9/9: Testlauf und Administration der Urlaubsgenehmigung.