Es gibt viele positiven Aspekte in Power Automate, allerdings heute widme ich mich einem, der ziemlich irritierend ist: Die Upsert-Aktion.
Der Sinn von Upsert ist es, das Nachschlagen (Lookup) einer Spalte zu vermeiden, bevor man eine Zeile entweder einfügt oder aktualisiert. Das soll für Entwickler eigentlich eine Hilfe sein und in der SDK funktioniert das auch. Aber in Power Automate muss man noch eine Zeilen-Id (Row-Id) angeben als Pflichtfeld!

Wie kommt man denn auf so eine sinnlose Idee? Wenn ich doch nicht weiß, ob die Zeile existiert, wieso muss ich dann eine ID angeben? Wohlgemerkt, nicht meine eigens definierte Key Column, sondern die von Dataverse intern generierte GUID-Spalte.
Wie funktioniert es denn? Es reicht, wenn man hier die guid()-Funktion einträgt (ohne Parameter), da wird in Zweifel eine neue GUID generiert… Und was passiert wenn eine neue GUID generiert wird? Richtig: eine neue Spalte wird IMMER erzeugt. Und mal ehrlich, wie viele nutzen die Dataverse Row GUID als eigentliche ID, wenn man Daten aus einem Drittsystem (SharePoint, SQL etc.) einsetzt? Da ist immer eine eigene Key dran. Am Ende muss ich trotzdem eine eigene Abfrage für die Existenz der Custom Key absetzen (1 Aktion), dann anhand des Ergebnisses (1 Aktion, Wenn-Abfrage) eine Zeile entweder aktualisieren oder neu erstellen (1 Aktion da entweder-oder). Also brauche ich kein Upsert…
Sinnvoll oder logisch ist das jedoch nicht. Und das aus Entwicklersicht, ein Citizen Developer (Bürgerentwickler?) würde spätestens hier aufgeben. Und doch ist die Plattform für Citizen Developer gedacht, oder? Ein Appel hier an das Produkt-Team: Holt euch mehr Feedback von Nichtentwicklern, nur so wird das Produkt verständlicher und leichter nutzbar.
