KTBnet

ChildFlowNeverPublished-Workaround als Unmanaged Layer

Die Bereitstellung einer Solution ist möglicherweise nicht so einfach, wie es zunächst scheint. Bei einem unserer Testdeployments wurden alle Prozesse automatisch…

└ Bereitstellung einer Child-Flow-Solution ┐

Herausforderung

Die Bereitstellung einer Solution ist möglicherweise nicht so einfach, wie es zunächst scheint. Bei einem unserer Testdeployments wurden alle Prozesse automatisch deaktiviert. Das ist nach einem Deployment an sich eine ganz normale Situation – diesmal führte der Versuch, sie wieder zu aktivieren, jedoch zur Meldung „ChildFlowNeverPublished”. Interessant, wenn man bedenkt, dass es zuvor nie nötig war, Power-Automate-Solutions manuell zu veröffentlichen. Noch interessanter war, dass auch das Veröffentlichen der Solution nicht half. Ebenso wenig half es, die Flows einzeln zu veröffentlichen. Was war also passiert? Und warum trat das Problem in der Entwicklungsumgebung nicht auf?

Lösung

Nachdem ich in meinen Flows nach Antworten gesucht hatte, durchforstete ich das Internet. Nach kurzer Recherche stellte sich heraus, dass auch Tomek Poszytek mit demselben Problem konfrontiert war, und in beiden Fällen war der Grund für die Ausnahme derselbe – zirkuläre Referenzen in der Solution.

Mehr dazu: https://poszytek.eu/en/microsoft-en/office-365-en/powerautomate-en/childflowneverpublished/

Der Aufbau meiner Automatisierung unterschied sich jedoch etwas von dem Tomeks:

Laut dem Artikel meines Kollegen sollte das Hinzufügen eines Proxys das Problem lösen. Der Aufbau würde dann so aussehen:

Die obige Lösung scheint auf den ersten Blick das Kernproblem nicht zu beseitigen. Der Proxy-Flow durchbricht die zirkuläre Referenz in diesem Szenario nicht – er fügt ihr lediglich einen weiteren Schritt hinzu. Allerdings verweist keiner der Flows direkt auf einen anderen, was hier der entscheidende Hinweis sein könnte. Leider löste die obige Umsetzung das Problem nach dem Deployment in die Testumgebung nicht – die Ausnahme ChildFlowNeverPublished trat weiterhin auf.

Was also tun? Die zirkuläre Referenz scheint das eigentliche Problem zu sein, und sie muss durchbrochen werden, damit der Fehler nicht mehr auftritt. Wie lässt sie sich also durchbrechen? Beim Nachdenken über das Problem fiel mir auf, dass im Entwicklungssystem die gesamte Verarbeitung von Anfang an nie deaktiviert worden war. Nachdem sie aktiviert wurde, funktionierte alles einwandfrei. Es musste also nur die zirkuläre Referenz durchbrochen werden, um die Flows zu aktivieren. Anschließend könnte diese Änderung wieder rückgängig gemacht werden. Und es scheint, dass Power Automate genau das richtige Werkzeug dafür bietet – die Unmanaged Layer.

Dazu bearbeitete ich in einem Verarbeitungs-Flow den Schritt „Untergeordneten Flow ausführen” so, dass er auf einen Dummy-Flow verweist, und speicherte ihn. Ein Punkt für mich – korrekt gespeichert. Dann aktivierte ich ihn – zweiter Punkt, der Flow wurde ohne Ausnahme aktiviert. Der Aufbau sah an dieser Stelle so aus:

Die zirkuläre Referenz war vorübergehend durchbrochen, also probierte ich es mit den anderen Flows. Alle ließen sich ohne Fehler aktivieren. Schließlich war es Zeit, die Änderungen rückgängig zu machen. Nachdem alle Flows aktiviert waren, löschte ich die Unmanaged Layer am Verarbeitungs-Flow – und siehe da! Keine Ausnahmen mehr. Weitere Tests des Flows bestätigten, dass er wie vorgesehen funktioniert. Fall gelöst ✅

Zusammenfassung

Bei der Bereitstellung einer Solution mit Child Flows können Probleme wie der ChildFlowNeverPublished-Fehler auftreten. Der Schlüssel zur Lösung dieses Problems liegt darin zu verstehen, dass er durch zirkuläre Referenzen in der Solution verursacht werden kann. Das vorübergehende Durchbrechen dieser Referenzen durch das Bearbeiten von Flows und den Einsatz der Unmanaged Layer kann dabei helfen, die Flows ohne Ausnahmen zu aktivieren. Nachdem alle Flows aktiviert wurden, können die Änderungen rückgängig gemacht werden, wodurch die ursprüngliche Struktur der Solution wiederhergestellt wird.

Ähnliche Fälle wurden von Tomek Poszytek in seinem Blog beschrieben. Seine Lösung bestand darin, einen Proxy-Flow hinzuzufügen, um die zirkulären Referenzen zu durchbrechen, was in meinem Fall jedoch nicht funktionierte. Jedes Deployment kann seine eigenen, einzigartigen Herausforderungen mit sich bringen, daher ist es wichtig, bei der Problemlösung flexibel und kreativ zu bleiben.

Michał Lutoborski
Power Platform Consultant | KTBnet

Erfahrener Experte für CRM-Lösungen mit Praxis in RPA und BPM, spezialisiert auf Design, Optimierung und Implementierung von Geschäftsprozessen. Begeistert von Power Platform und Cloud-Technologien.

Optimistischer Extrovertierter, der an Erfolg durch stetige Selbstverbesserung glaubt und dabei seine Leidenschaften und Interessen weiterentwickelt. Bereit für neue Herausforderungen.