Power Automate ist eine cloudbasierte Lösung zur Automatisierung von Geschäftsprozessen. Mit sogenannten Flows lassen sich wiederkehrende Aufgaben meist ohne Programmierkenntnisse automatisieren – von der strukturierten Datenerfassung über die Dokumentenerstellung bis hin zur nahtlosen Synchronisation zwischen Softwareanwendungen.
Damit diese Automationen zuverlässig funktionieren, ist jedoch eine sorgfältige Planung und Überwachung notwendig. Ein Flow kann durch unerwartete Fehler fehlschlagen – sei es durch die Eingabe unvorhergesehener Datenformate oder Verbindungsprobleme bei der Kommunikation mit API-Endpunkten. Die Gründe für Fehler können vielfältig sein und lassen sich bei der Entwicklung nicht immer voraussehen.
Um zu verhindern, dass solche Fehler den Geschäftsbetrieb beeinträchtigen, ist ein effektiver Umgang mit Fehlern essenziell.
In diesem Artikel zeigen wir euch bewährte Best Practices zur Fehlerbehandlung in Power Automate, mit denen ihr eure Flows robuster gestalten könnt.
Benachrichtigung über fehlgeschlagene Flows
Wenn wir Fehler schon nicht vermeiden können, wollen wir zumindest darüber benachrichtigt werden. Zwar versendet Microsoft standardmäßig eine E-Mail über fehlgeschlagene Flows an die jeweiligen Eigentümer, allerdings handelt es sich dabei um eine Sammelbenachrichtigung, die zum Teil erst Stunden später zugestellt wird. Für eine effektive Fehlerbehandlung ist das nicht ausreichend.
Ein wesentlich besserer Ansatz besteht darin, eigene Benachrichtigungen zu konfigurieren, die umgehend versendet werden, sobald eine Aktion innerhalb eines Flows fehlschlägt.
Configure Run After
Dafür können wir eine Einstellung nutzen, die in jeder Aktion eines Flows zur Verfügung steht: Configure Run After.
Damit können wir festlegen, unter welchen Bedingungen eine Aktion ausgeführt wird. Standardmäßig startet eine Aktion nur, wenn die vorangegangene erfolgreich abgeschlossen wurde. Allerdings lässt sich diese Konfiguration anpassen, sodass eine Aktion – beispielsweise der Versand einer E-Mail – nur dann ausgeführt wird, wenn die vorherige Aktion fehlschlägt.
Diese Einstellung nehmen wir in der Registerkarte Settings der jeweiligen Aktion vor.
Try and Catch
Damit wir nicht für jede einzelne Aktion eine eigene Fehlerbehandlung einrichten müssen, können wir stattdessen eine ganze Gruppe von Aktionen überwachen und eine Benachrichtigung erhalten, wenn eine dieser Aktionen fehlschlägt. In Power Automate können wir das Kontrollelement Scope verwenden, um Aktionen zu gruppieren.
Um dies zu testen, erstellen wir einen neuen Flow und fügen ein Scope-Element mit einer einzelnen Compose-Aktion hinzu. Damit unser Flow gezielt fehlschlägt, ergänzen wir die Aktion um einen ungültigen Ausdruck (Expression) – in diesem Fall eine Division durch null.
Diesen Scope-Block benennen wir – gemäß gängiger Praxis – “Try”, da er alle Aktionen enthält, die wir “versuchen” erfolgreich auszuführen.
Anschließend fügen wir einen zweiten Scope-Block hinzu, der im Anschluss an den Try-Block ausgeführt wird. Dieser Block enthält alle Aktionen, die für die Fehlerbehandlung erforderlich sind. Gemäß gängiger Namenskonventionen nennen wir diesen Block “Catch” – da er den Try-Block “auffängt”, falls dort ein Fehler auftritt.
Nun müssen wir in den Einstellungen des Scope-Elements festlegen, unter welchen Bedingungen der Catch-Block ausgeführt wird (Configure Run After). In unserem Fall soll er nur dann starten, wenn eine der Aktionen im Try-Block fehlschlägt.
In den Catch-Block fügen wir nun eine Aktion hinzu, die uns über den fehlerhaften Flow informiert – beispielsweise durch den Versand einer E-Mail an einen definierten Verteilerkreis. Dadurch werden wir sofort per E-Mail benachrichtigt, sobald der Flow fehlschlägt.
Wenn wir den Flow nun testen, erhalten wir eine E-Mail-Benachrichtigung. Allerdings wird der Flow im Ausführungsverlauf als “Succeeded” aufgeführt. Das liegt daran, dass der Flow technisch gesehen erfolgreich beendet wurde – obwohl ein Fehler aufgetreten ist.
Damit der Flow stattdessen mit dem Status “Failed” endet, fügen wir eine “Terminate”-Aktion hinzu, die den Flow mit dem gewünschten Fehlerstatus abschließt.
Benachrichtigung um Fehlerdetails anreichern
Eine Benachrichtigung über einen fehlgeschlagenen Flow ist gut, allerdings wäre es noch besser, wenn die Benachrichtigung gleich Details über den Fehler enthält, der aufgetreten ist.
Mit der Funktion results()
können wir ein Array erzeugen, das uns den Status aller ausgeführten Aktionen innerhalb eines Scopes zurückgibt.
Hierzu fügen wir die Aktion *Filter Array* zu unserem Catch-Block hinzu und fügen als Quelle (From) den folgenden Ausdruck ein:
results('Try')
Wir wollen nur Informationen zu fehlgeschlagenen Aktionen erhalten, deshalb ergänzen wir im Feld Filter den folgenden Ausdruck:
or(equals(item()?['Status'], 'Failed'),equals(item()?['Status'], 'TimedOut'))
Dadurch bekommen wir ein Array, das nur Informationen zu Aktionen enthält, die entweder fehlgeschlagen sind (‘Failed’) oder das Zeitlimit überschritten haben (‘TimedOut’).
Dieses gefilterte Array können wir nun in einer HTML-Tabelle verarbeiten, die wir später unserer Benachrichtigung hinzufügen. Dazu benötigen wir die Aktion Create HTML table.
In unserem Beispiel definiere ich dort drei Spalten, deren Werte dynamisch aus dem gefilterten Array gefüllt werden.
Die HTML-Tabelle (Output der Aktion Create HTML table) können wir nun einfach zum Body unserer E-Mail hinzufügen.
Zum Abschluss wäre es hilfreich, wenn die Benachrichtigung einen Link enthalten würde, der uns direkt zum fehlerhaften Flow führt.
Das können wir mit einem <a>-Tag und dem folgendem Ausdruck im Body der E-Mail erzielen:
concat('https://make.powerautomate.com/environments/', workflow()?['tags']['environmentName'],'/flows/',workflow()?['name'],'/runs/',workflow()?['run']['name'])
Fehler protokollieren und analysieren
Neben der direkten Benachrichtigung über Fehler ist es wichtig, Fehler strukturiert zu protokollieren. So lassen sich Muster erkennen, Ursachen analysieren und langfristige Verbesserungen an den Flows vornehmen.
Eine bewährte Methode ist das Speichern von Fehlerdetails in einer SharePoint-Liste oder einer Dataverse-Tabelle.
Hierzu kann der Catch-Block einfach um eine weitere Aktion ergänzt werden – zum Beispiel der Aktion Create item. Selbstverständlich muss zuvor eine entsprechende SharePoint-Liste mit relevanten Spalten (Zeitstempel, Aktion, Fehlermeldung, etc.) erstellt werden.
Fazit
Ein durchdachter Umgang mit Fehlern in Power Automate sorgt dafür, dass Flows robuster und ausfallsicherer werden. Durch gezielte Benachrichtigungen, die Bereitstellung von Fehlerdetails und die Protokollierung in SharePoint oder Dataverse können Probleme schnell erkannt, analysiert und behoben werden.
Microsoft Learn widmet dem Thema Fehlerbehandlung ein eigenes Lernmodul.