Tutorial zur
Urlaubsgenehmigung
mit SharePoint und
Power Automate Teil 5/9: Die Einrichtung in Power Automate – Flow 2 'Urlaubsantrag stellen'
Fortsetzung der Tutorial-Reihe zur Urlaubsgenehmigung: Nun geht es darum, den Flow ‘Urlaubsantrag stellen’, welchen Sie in Power Automate bereits angelegt haben, mit Blick auf Variablen und Bedingungen weiter einzurichten.
Fortsetzung der Einrichtung in Power Automate
Erstellen Sie einen automatisierten Cloud-Flow. Klicken Sie im folgenden Einrichtungsfenster auf ‘Überspringen’ und suchen Sie anschließend den Forms-Trigger ‘Bei Übermitteln einer neuen Antwort’. Als Formular-ID geben Sie die Umgebungsvariable ‘EV Formular Urlaubsantrag stellen’ an. Für die Forms-Aktion ‘Antwortdetails abrufen’ geben Sie dieselbe Umgebungsvariable an sowie die Antwort-ID, die der Trigger ‘Bei Übermitteln einer neuen Antwort’ zur Verfügung stellt. Anschließend speichern Sie den Flow ab.
Legen Sie mit der Aktion ‘Variablen initialisieren’ die folgenden flowinternen Variablen – zwischen dem Trigger ‘Bei Übermitteln einer neuen Antwort’ und der Aktion ‘Antwortdetails abrufen’ – an.
Name | Typ | Wert |
---|---|---|
AntragsNr | Zeichenfolge | |
Anzeigename | Zeichenfolge | |
ArtSonderurlaub | Zeichenfolge | |
Startdatum | Zeichenfolge | |
Enddatum | Zeichenfolge | |
Zeichenfolge | ||
Benutzerprinzipalname | Zeichenfolge | |
LookupID | Ganze Zahl | |
Zahl | Ganze Zahl | |
NutzerVorhanden | Boolescher Wert | Ausdruck: equals(1,2) |
Wochenende | Boolescher Wert | Ausdruck: equals(1,1) |
HalberTag | Boolescher Wert | Ausdruck: equals(1,2) |
Sonderurlaub | Boolescher Wert | Ausdruck: equals(1,2) |
Hinweis zu den Ausdrücken: Für manche Werte und Aktionen in den Flows werden Ausdrücke benutzt, d. h. hier kommen Formeln zum Einsatz so wie equals(Wert1,Wert2)
, die je nachdem, ob Wert1 und Wert2 identisch sind, true oder false ausgeben. Um eine Formel anzulegen, klicken Sie auf ‘Dynamischen Inhalt hinzufügen’ und wechseln Sie dort zum Reiter ‘Ausdruck’. Fügen Sie die Formel in das Fx-Feld ein. Wenn Sie weiter nach unten scrollen, finden Sie dort alle weiteren Formeln, die Sie nutzen können.
Tipp: Wenn Sie eine Aktion mehrfach bzw. an mehreren Stellen in Ihren Flow integrieren wollen, können Sie die Zwischenablage nutzen. Öffnen Sie dazu über die drei Punkte ’…’ das Menü der gewünschten Aktion und wählen Sie ‘In Zwischenablage kopieren’ aus. Wenn Sie nun einen neuen Schritt hinzufügen, finden Sie Ihre duplizierte Aktion im Reiter ‘Zwischenablage’.
Wenn Sie alle Variablen initialisiert haben, sollte Ihr Flow so aussehen:
Fahren Sie anschließend nach der Aktion ‘Antwortdetails abrufen’ fort, indem Sie die Rückgabewerte daraus für die Variablen ‘Startdatum’ und ‘Enddatum’ festlegen.
Nun soll in der ersten Bedingung geprüft werden, ob der Forms-Rückgabewert zu ‘Halber Tag’ ist gleich Ja entspricht. Ist das der Fall, so wird die Variable ‘HalberTag’ mit der Fx-Formel equals(1,1)
zu wahr geändert. Der „Nein“-Zweig bleibt leer.
Fügen Sie danach eine weitere Bedingung ein und prüfen Sie den Rückgabewert von ‘Urlaubsform’ auf ist ungleich Urlaub. Wenn ja, dann wird die Variable ‘Sonderurlaub’ mit der Fx-Formel equals(1,1)
auf wahr gesetzt und für die Variable ‘ArtSonderurlaub’ wird der Rückgabewert ‘Bei Sonderurlaub’ festgelegt.
Um die/den Vorgesetzten der antragstellenden Person für die Genehmigung bestimmen zu können, müssen Sie den Benutzer festlegen. Die Aktion ‘Antwortdetails abrufen’ verfügt über die ‘Responders’ Email’, mit der Sie die benötigten Daten aus Microsoft 365 (Office 365) ermitteln können. Fügen Sie die Aktion ‘Nach Benutzern suchen’ ein, mit der ‘Responders’ Email’ als ‘Suchbegriff’ und 1 für den Parameter ‘Oben’, der angibt, wie viele Ergebnisse ausgegeben werden sollen. Danach setzen Sie den Rückgabewert zu ‘Benutzerprinzipalname’ in die gleichnamige Variable ein.
Um im nächsten Flow – ‘Urlaubsantrag genehmigen’ – eine Genehmigung erstellen zu können, wird ein Vorgesetzter oder eine Vorgesetzte benötigt.
Hinweis: Für alle Mitarbeitenden – auch für Sie selbst – in Ihrem Unternehmen, die zukünftig die Urlaubsgenehmigung nutzen sollen, muss im Azure Admin Center ein Verwalter bzw. Manager hinterlegt sein. Somit können die Flows die genehmigende Person ermitteln, ohne dass eine separate Tabelle dafür gepflegt werden muss. Wenn Sie über das Microsoft Intune Admin Center oder das Microsoft Entra Admin Center arbeiten, erreichen Sie diese Eigenschaft über den Pfad ‘Home > Benutzer > Benutzername > Eigenschaften bearbeiten > Verwalter hinzufügen/bearbeiten’.
Alternativ können Sie auch im Microsoft 365 Admin Center über den Pfad ‘Benutzer > Aktive Benutzer > Benutzername > Manager bearbeiten’ einen Manager zuweisen.
Mit der Aktion ‘Vorgesetzten abrufen’ und der Variable ‘Benutzerprinzipalname’ kann der oder die Vorgesetzte ermittelt werden. Setzen Sie als Nächstes die Outlook-Aktion ‘Email senden’, um eine Nachricht zu erzeugen, falls kein Verwalter bzw. Manager ermittelt werden kann.
Beispieltext:
Es konnte kein Urlaubsantrag gestellt werden.
Es wurde kein/e Vorgesetzte/r oder Manager/in gefunden, der/die Ihre Anfrage genehmigen kann. Sprechen Sie mit Ihrer Administration, sodass im Azure Admin Center ein/e Vorgesetzte/r oder Manager/in für Sie hinterlegt wird.
Im Anschluss können Sie einen neuen Urlaubsantrag stellen.
Wenn Sie die Benachrichtigung erstellt haben, öffnen Sie das Menü und wählen Sie die Option ’“Ausführen nach” konfigurieren’ aus. Die E-Mail soll nur gesendet werden, wenn die vorherige Aktion fehlerhaft ist. Der Verbindungspfeil zu dieser Aktion wird durch diese Anpassung gestrichelt dargestellt.
Anschließend fügen Sie einen parallelen Branch zwischen den Aktionen ‘Vorgesetzten abrufen’ und ‘E-Mail senden’ hinzu.
Legen Sie die Variablen ‘Email’ und ‘Anzeigename’ fest, indem Sie jeweils die Rückgabewerte ‘E-Mail’ und ‘Anzeigename’ aus der Aktion ‘Nach Benutzern suchen’ zuweisen.
Fahren Sie – außerhalb der Schleife – mit der SharePoint-Aktion ‘Elemente abrufen’ fort. Geben Sie die Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubstage’ (Listenname) an. Filtern Sie dann die Abfrage mittels Name eq ‘@{variables(‘Anzeigename’)}’, sortieren Sie nach Name desc – also in absteigender Reihenfolge – und geben Sie für die ‘Top-Anzahl’ 1 an.
Setzen Sie die nächste Bedingung, um mit dem Ergebnis zu ermitteln, ob eine Person gefunden werden konnte. Prüfen Sie, ob der Rückgabewert ‘Mitarbeiternr.’ ungleich NULL ist. Geben Sie dafür null
als Fx-Ausdruck ein. Im „Ja“-Zweig können Sie die Variable ‘NutzerVorhanden’ über den Fx-Ausdruck equals(1,1)
auf wahr setzen.
Pfad Person vorhanden: Wenn nein
Wird kein Datensatz ermittelt, befindet sich kein Eintrag zu dieser Person in der Liste ‘Urlaubstage’ oder der Eintrag ist fehlerhaft. Dann ist es sinnvoll, eine Benachrichtigung an den Antragsteller oder die Antragstellerin zu schicken.
Beispieltext:
Sie haben versucht, einen Urlaubsantrag in der Urlaubsgenehmigung zu erstellen.
Derzeit sind für Sie keine Informationen in der Liste ‘Urlaubstage’ vorhanden. Es wurde kein Urlaubsantrag erstellt.
Bitte wenden Sie sich an Ihre/n Vorgesetzte/n oder Ihre/n Administrator/in. Sobald ein Eintrag für Sie angelegt wurde, können Sie Urlaubsanträge stellen.
Damit ist dieser Pfad beendet.
Pfad Person vorhanden: Wenn ja
Der „Ja“-Zweig dieses Pfades beginnt mit einer weiteren Prüfung, in der ermittelt wird, ob das angegebene Enddatum vor dem Startdatum liegt. Dafür werden jeweils zwei Prüfungszeilen zu einer UND-Gruppe zusammengefasst, sodass diese nur gelten, wenn beide Prüfungszeilen wahr sind. Beide Gruppen wiederum werden über ein ODER miteinander verbunden. Dadurch gilt das Ergebnis der Gesamtprüfung genau dann als wahr, wenn mindestens eines der Ergebnisse beider Gruppen wahr ist.
Und-Gruppe 1: Startdatum bis Enddatum ergibt einen oder mehr Tage und Halber Tag wurde nicht im Formular angekreuzt
Wert 1 | Prüfung | Wert 2 | Verbindung |
---|---|---|---|
Variable ‘Enddatum’ | ist gleich oder größer | Variable ‘Startdatum’ | Und |
Variable ‘HalberTag’ | ist gleich | false |
Und-Gruppe 2: Startdatum bis Enddatum ergibt genau einen Tag und Halber Tag wurde im Formular angekreuzt
Wert 1 | Prüfung | Wert 2 | Verbindung |
---|---|---|---|
Variable ‘Enddatum’ | ist gleich | Variable ‘Startdatum’ | Und |
Variable ‘HalberTag’ | ist gleich | true |
Um dieses Bedingungskonstrukt in einem Flow umzusetzen, fügen Sie die zweite Prüfung über ‘➕ Hinzufügen’ als Zeile hinzu.
Verbinden Sie die beiden Prüfungen zu einer Gruppe, indem Sie diese markieren und über ‘Gruppe erstellen’ zusammenfügen.
Fügen Sie nun die zweite Gruppe über das mit dem äußeren UND verbundene ‘➕ Hinzufügen’ ein.
Setzen Sie hier die beiden Prüfungen Variable ‘Enddatum’ ist gleich Variable ‘Startdatum’ UND Variable ‘HalberTag’ ist gleich true. Die äußere Verbindung wird über ein ODER definiert.
Pfad Enddatum größer Startdatum: Wenn nein
Ist durch die Prüfung ermittelt worden, dass das im Formular angegebene Datum nicht den geforderten Kriterien entspricht, sollte wieder eine Benachrichtigung an die antragstellende Person erzeugt werden. Somit wird diese informiert, dass das angegebene Datum nicht passt und ein neuer Antrag gestellt werden muss.
Beispieltext:
Bei der Eingabe Ihres Urlaubsantrags ist ein Fehler aufgetreten.
Die Ursachen hierfür könnten folgende sein:
1. Um einen Urlaubsantrag anlegen zu können, muss das Enddatum entweder mit dem Startdatum identisch sein oder zeitlich dahinter liegen.
2. Es wurde ‘Halber Tag’ für mehr als ein Datum ausgewählt. Halbe Tage sind immer einzeln zu beantragen, wobei das Startdatum und das Enddatum jeweils identisch sein müssen.
Es konnte kein neuer Urlaubsantrag angelegt werden. Bitte füllen Sie das Formular erneut aus.
Damit ist dieser Pfad beendet.
Pfad Enddatum größer Startdatum: Wenn ja
Wurde das Datum als valide verifiziert, kann jetzt im „Ja“-Zweig ein neuer Eintrag in die SharePoint-Liste ‘Urlaubsanträge’ eingefügt werden.
Um eine neue Antragsnummer vergeben zu können, muss die höchste vorhandene ID in der Liste ‘Urlaubsanträge’ ermittelt werden.
Legen Sie die SharePoint-Aktion ‘Elemente abrufen’ an und geben Sie die Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubsanträge’ (Listenname) an. Sortieren Sie nach ID desc – um das Feld ‘ID’ in absteigender Reihenfolge abzurufen – und begrenzen Sie ‘Top-Anzahl’ auf 1.
Die Spalte ‘Antragsnr.’ der Liste ‘Urlaubsanträge’ basiert auf der – durch SharePoint automatisch angelegten – Spalte ‘Title’ und ist ein Textfeld. Um nun den Wert darin um 1 zu erhöhen, ist es notwendig, den ermittelten Feldwert in eine Zahl umzuwandeln. Diese wird um 1 erhöht, wieder in Text umgewandelt und mit in den neuen Antrag übernommen.
Erstellen Sie die Datenvorgang-Aktion ‘Verfassen’ und wählen Sie zunächst den Rückgabewert ‘Antrangsnr.’ aus ‘Urlaubsanträge: Eintrag höchste ID abrufen’ aus. Dadurch entsteht erneut eine ‘Auf alle anwenden’-Schleife. Umschließen Sie danach diesen Wert unter ‘Ausdruck’ mit der Funktion int()
. Legen Sie die ‘Ausgaben’ dieser Aktion als ‘Wert’ für die Variable ‘Zahl’ fest.
Hinweis: Wenn Sie in einer SharePoint-Liste eine vorhandene Spalte umbenennen, behält diese ihre ursprüngliche Bezeichnung. Sie können die originäre Spaltenbezeichnung prüfen, indem Sie in den Listeneinstellungen eine umbenannte Spalte öffnen und den Namen mit der Adressleiste in Ihrem Browser vergleichen. Die Spalte ‘Antragsnr.’ der Liste ‘Urlaubsanträge’ hieß vorher ‘Title’, was sich auch im Ausdruck zeigt: int(items('Antragsnr._um_1_erhöhen')?['Title'])
.
Verlassen Sie die ‘Antragsnr. um 1 erhöhen’-Schleife und fügen Sie eine weitere Bedingung hinzu. Prüfen Sie, ob die Variable ‘Zahl’ größer oder gleich 1 ist. Ist dies nicht der Fall, so legen Sie die Variable ‘AntragsNr’ auf string(1)
fest.
Innerhalb des „Ja“-Zweigs legen Sie die Variable ‘AntragsNr’ neu fest, indem Sie dazu den Fx-Ausdruck string(add(variables('Zahl'),1))
’ angeben. Auf diese Weise führen Sie die Addition und die Umwandlung in eine Zeichenfolge in einem Schritt aus.
Verlassen Sie die ‘Bedingung: Zahl ist größergleich 1’ und legen Sie die Variable ‘LookupID’ mit dem Wert ‘ID’ an sowie die Variable ‘Wochenende’ mit dem Wert ‘Wochenende – freie Tage’ – beides sind Rückgabewerte aus der SharePoint-Aktion ‘Urlaubstage: Mitarbeitende*n abrufen’.
Nun verlassen Sie die ‘Auf alle anwenden’-Schleife, die durch den Abruf der Rückgabewerte entstanden ist. Nutzen Sie die SharePoint-Aktion ‘Element erstellen’, um einen neuen Eintrag in der Liste ‘Urlaubsanträge’ zu erzeugen. Geben Sie die Umgebungsvariablen ‘EV Site Urlaubsgenehmigung’ (Websiteadresse) und ‘EV Liste Urlaubsanträge’ (Listenname) an und weisen Sie den Parametern die passenden Variablen zu.
Hier finden Sie eine Übersicht der Parameter-Variablen-Paare:
Parameter | Variable |
---|---|
Antragsnr. | AntragsNr |
Startdatum | Startdatum |
Enddatum | Enddatum |
Name Antragsteller Claims | Anzeigename |
Halber Tag | HalberTag |
Sonderurlaub | Sonderurlaub |
Grund f. Sonderurlaub Value | ArtSonderurlaub |
Wochenende – freie Tage | Wochenende |
Urlaubstage ID | LookupID |
Abschließend fügen Sie noch die Steuerung-Aktion ‘Beenden’ mit dem Status ‘Erfolgreich’ ein.
Damit ist dieser Pfad beendet und Sie haben den zweiten Flow Ihrer Urlaubsgenehmigung erfolgreich fertiggestellt. 💪
Tipp: Stellen Sie sicher, dass alle Aktionen, die Referenzen wie Outlook und SharePoint verwenden, auf jene Verbindungsreferenzen eingestellt sind, die Sie bei der Erstellung der Projektmappe im vorherigen Schritt angelegt haben. Speichern 💾 Sie außerdem den jetzigen Stand Ihrer Lösung ab, indem Sie diese exportieren und zur langfristigen Sicherung z. B. auf GitHub oder in Azure ablegen.
Weiter geht’s mit dem Tutorial zur Urlaubsgenehmigung in ➡️ Teil 6/9: Die Einrichtung in Power Automate – Flow 3 ‘Urlaubsantrag genehmigen’.