Willkommen zurück zu meinem Blog-Artikel über das Anlegen von Projekten in Planner Premium über die Power Automate API. Im ersten Teil habe ich dir gezeigt, wie du einen Flow erstellen kannst, der mit der Aktion msdyn_CreateProjectV1 ein Projekt mit einem Namen anlegt. Dabei haben wir den erweiterten Modus genutzt, um JSON-Code zu verwenden. Das hat uns ermöglicht, mehr Kontrolle über die Parameter zu haben, die wir an die API schicken wollen. Aber was ist, wenn wir nicht nur den Namen, sondern auch andere Felder wie Kunden, Status oder Projektleiter festlegen wollen? Wie können wir Lookupfelder ändern, die auf andere Datensätze verweisen? Und wie können wir benutzerdefinierte Felder nutzen, die wir selbst erstellt haben? Das sind die Fragen, die ich dir in diesem zweiten Teil beantworten möchte. Ich werde dir zeigen, wie du den JSON-Code so anpassen kannst, um dein Projekt nach deinen Wünschen zu gestalten.
Lese auch: Planner Premium – Projekte anlegen über Power Automate API (Teil 1)
Inhaltsverzeichnis:
Hinweis: Um die API „msdyn_CreateProjectV1“ zu nutzen, benötigst du eine Microsoft Project Plan 1, Plan 3 oder Plan 5 Lizenz Wenn du dir nicht sicher bist, ob du die richtigen Lizenzen hast, wende dich an deinen Administrator oder deinen Microsoft-Partner.
Projektfelder auslesen
Um den Code anzupassen, müssen wir zunächst die Schemanamen der Felder kennen, die wir in unserem Projekt nutzen wollen. Die Schemanamen sind die technischen Bezeichnungen der Felder, die wir abfragen oder verändern wollen. Um diese zu ermitteln, gibt es zwei Möglichkeiten. Die erste ist, die Entität selbst zu öffnen und die Schemanamen dort nachzuschlagen. Die zweite ist, die Inhalte über einen eigenen Power Automate Flow auszulesen. Ich empfehle die zweite Möglichkeit, da wir so auch die korrekte Schreibweise der Entität erfahren können.
Erstellen wir den Flow. Öffne hierzu Power Automate und klicke auf der linken Seite auf die Option „Meine Flows“. Klicke im oberen Bereich auf „+ Neuer Flow“ und wähle im Kontextmenü „Sofortiger Cloud-Flow“ als Trigger aus. Gib als Name „Projektinformationen auslesen (1)“ ein und wähle den Trigger „Einen Flow manuell auslösen (2)“ aus. Klicke unten auf „Erstellen (3)“.

Jetzt wollen wir die Projektinformationen zu einem Projekt abrufen. Klicke zuerst unter dem Knoten „Einen Flow manuell auslösen“ auf das Pluszeichen und wähle „Aktion hinzufügen“ aus. Klicke im Aktionsmenü auf „Microsoft Dataverse“ und wähle die Aktion „Zeile nach ID abrufen (1)“ aus.

Jetzt benötigen wir zuerst die ProjectID. Diese finden wir am einfachsten, indem wir ein Projekt in Project for the Web öffnen. Dabei ist es egal, welches Projekt es ist; wichtig ist nur, dass die Felder mit Inhalten gefüllt sind, die wir später durch unseren Flow eintragen wollen. Öffne also einfach ein Projekt in Project for the Web. Gehe oben in die URL im Browser und kopiere die ID hinter „projectId=“ in deine Zwischenablage.

Gehe nun wieder zurück in unseren Power Automate Flow. Wähle unter Tabellennamen „Projekte (1)“ aus und gib als Zeilen-ID die in deiner Zwischenablage befindliche ID ein. Speichere den Flow, indem du im oberen rechten Bereich auf „Speichern (2)“ klickst.
Hinweis: Solltest du ein englisches Environment nutzen, so wird die Tabelle als „Project“ angezeigt. In neuen Umgebungen wurde die Tabelle auch schon angepasst und heißt nun „Plans“.

Teste nun den Flow. Klicke im oberen Bereich auf „Testen“. Wähle „Manuell“ und klicke dann unten auf „Testen“. Klicke erneut auf „Flow ausführen“ und bestätige deine Eingabe mit „Fertig“. Der Flow sollte erfolgreich ausgeführt worden sein.

Flow-Daten auswerten
Nachdem wir unseren Flow erfolgreich ausgeführt haben, können wir nun die Ausgabe des Flows analysieren. Diese enthält wichtige Informationen über die Datentabelle, die wir in Power Automate verwenden wollen. Warum ist es besser, die Auswertung hier zu machen, anstatt einfach nur den Schemanamen der Tabellenspalte zu nehmen? Weil wir im Code sehen können, wie die genaue Entitätsbezeichnung ist, im Gegensatz zum Originalnamen. Richtig, du hast richtig gelesen: Bei jeder Entität wird ein „s“ angehängt. Somit wird aus der msdyn_project die Tabelle msdyn_projects oder aus der Tabelle User die Tabelle Users. All diese Informationen können wir aus der XML-Datei auslesen. Klicke also auf den Knoten „Zeile nach ID abrufen„. Auf der linken Seite öffnet sich ein Fenster. Klicke unteren Kasten „Ausgabe“ auf „Unformatierte Ausgabe anzeigen“.

Jetzt öffnet sich auf der rechten Seite ein weiteres Fenster, in dem wir die Ausgabe sehen. Suche jetzt nach dem Feld, das du mit einem Wert über den Flow füllen möchtest. In meinem Beispiel ist das der Projektmanager. Wir können alle wichtigen Informationen aus der Datei herausziehen. Das Feld heißt „msdyn_projectmanager“. Das „underline“ und „_value“ kannst du abschneiden. Wir wissen, dass der Projektmanager „Willi Plum“ heißt und die ID 37d70830-9651-e911-a969-000d3ab3a38d besitzt. Noch wichtiger ist, in welcher Entität die Informationen liegen. Diese liegt in der Entität „systemuser“. Aber Achtung, du musst immer daran denken, dass du beim Erstellen des Codes ein „s“ anhängst, also „systemusers“. Das war’s zum Code. Kopiere dir die Inhalte am besten in eine Text-Datei.

Planner Premium API anpassen
Wir haben nun alle Informationen, die wir benötigen, um unseren Flow aus dem ersten Teil anzupassen. Mit diesen Informationen können wir die Werte der Spalten in unserer Datentabelle dynamisch befüllen, ohne sie hart zu kodieren. Dazu müssen wir den aktuellen Flow schließen und wieder den Flow aus unserem ersten Teil öffnen. Sobald du den Flow geöffnet hast, klicke auf den Knoten „Eine ungebundene Aktion ausführen“. In dem sich öffnenden Fenster auf der linken Seite kannst du jetzt den Code erweitern.
Klicke mit der Maus hinter die Aktion „Projektname“. Gib ein Komma ein und wechsle in die nächste Spalte, indem du die Entertaste drückst. Gib ein Anführungszeichen ein und dann den Schemanamen der Spalte, in der du deinen Wert hinzufügen möchtest. In meinem Beispiel ist das die Spalte „msdyn_projectmanager“.
Wichtig: Egal, ob es sich bei der Ausgabe um eine versteckte Spalte handelt oder nicht, gib immer den richtigen Schemanamen ohne das „Underline-Zeichen“ ein. Beachte ebenfalls, dass du immer die gleiche Schreibweise nutzt, wie sie in unserer Ausgabe angezeigt wird. Auch der nachfolgende Wert(_value) fällt weg und wird nicht benötigt!
Als Nächstes wollen wir das Feld an unser Optionsfeld binden. Gib dazu dahinter ein „@odata.bind“ an. Schließe die Spaltenangabe mit einem erneuten Anführungszeichen, gefolgt von einem Doppelpunkt und einem weiteren Anführungszeichen ab.
Jetzt müssen wir den Wert eingeben. Hierzu geben wir als erstes die Entität an, aus der die Werte stammen. Wie du in der oberen Grafik erkennen kannst, kommen die Daten aus der Systemuser-Entität. Denke daran, dass du immer noch ein „s“ anhängen musst. Hieraus ergibt sich dann der Code-Snipe: „/systemusers“. Jetzt brauchst du nur die gewünschte ID des Feldes in Klammern anzuhängen. In meinem Beispiel ist das die ID 37d70830-9651-e911-a969-000d3ab3a38d für Willi Plum. Schließe die Zeile noch einmal mit Anführungszeichen ab. Dein Aktionsparameter sollte wie folgt aussehen:

Hinweis: Egal, welches Lookupfeld du befüllen möchtest, du musst immer mit den IDs arbeiten, nie mit dem realen Namen! Natürlich kannst du die ID zu einem späteren Zeitpunkt auch mit dynamischen Aktionen füllen lassen.
Teste erneut den Workflow. Klicke hierzu in der oberen rechten Ecke auf „Speichern“ und wähle dann gleich daneben den Button „Testen“. Wähle die Option „Manuell“ und im unteren Bereich dann den Button „Testen“. Gib als Projektnamen „Flow Projekt mit Projektleiter“ ein und klicke dann im unteren Bereich auf „Flow ausführen“. Klicke auf „Fertig“. Der Flow sollte erfolgreich ausgeführt worden sein.

Wechsle jetzt erneut in die Model-Driven-App „Project“ ins Project Center. Hier findest du jetzt das gerade vom Flow angelegte Projekt. Du kannst nun erkennen, dass der Flow den Projektleiter angelegt hat.

Beachte, dass dieses Beispiel nur in einer Testumgebung durchgeführt wurde und hier keine weiteren technischen Feinheiten beachtet wurden. Wenn du einen Flow für eine echte Anwendung erstellen möchtest, solltest du darauf achten, dass der Flow in der richtigen Project-Lösung veröffentlicht wird und als Dienstkonto eventuell ein über Azure-App registrierter Account genutzt wird. Dies erhöht die Sicherheit und Zuverlässigkeit deines Flows.