Inhalt

Dataverse-Dateispalten mit Power Automate bereinigen

Ein paar Wochen nachdem ich einen Power-Automate-Prozess ausgeliefert hatte, der PDFs generiert und in einer Dataverse-Dateispalte speichert, kam mein Kunde mit einer scheinbar einfachen Anfrage:

„Können wir diesen Prozess auch bei Bedarf ausführen?“

Dabei bin ich auf eine unerwartete Einschränkung gestossen:

Man kann eine Dataverse-Dateispalte nicht mit „Update a row“ leeren.

Ich dachte zuerst, das sei trivial. Aber als ich die Aktion Update a Row verwenden wollte, wurde die Dateispalte gar nicht angezeigt 😐

TL;DR:

Wenn Sie eine Dataverse-Dateispalte mit Power Automate leeren möchten, funktioniert das nicht mit Update a row.

Stattdessen:

  1. Verwenden Sie Perform an unbound action
  2. Wählen Sie die Aktion DeleteFile
  3. Übergeben Sie die FileId der Datei

Dataverse speichert Dateien als separaten Datensatz. Wenn Sie diesen mit DeleteFile löschen, wird die Datei korrekt aus der Spalte entfernt.


Was ich ausprobiert habe

Zuerst habe ich versucht, mit Update a Row die Dateispalte auf null zu setzen.

Das funktioniert nicht - die Spalte erscheint in der Aktion gar nicht.

⚠️ Hinweis: Bei Bildspalten funktioniert das Leeren mit null über Update a Row. Diese Einschränkung betrifft nur Dateispalten.

Als Nächstes habe ich die Aktion Upload a file or an image verwendet und null als Inhalt übergeben:

/posts/dataverse-delete-file/image1.png

Interessanterweise wird dadurch keine Datei gelöscht, sondern eine leere Datei erstellt:

/posts/dataverse-delete-file/image2.png

Das ist ein Workaround - aber keine echte Lösung.

Die Datei wird nicht entfernt, sondern nur ersetzt.

Nicht ideal.


Warum das passiert

Wenn man eine Datei in eine Dataverse-Dateispalte hochlädt:

  • Erstellt Dataverse im Hintergrund einen separaten File-Datensatz
  • Die Dateispalte speichert nicht den Binärinhalt direkt
  • Stattdessen speichert sie eine Referenz (FileId) auf diesen Datensatz

Deshalb kann die Spalte nicht einfach mit null geleert werden.

Um die Datei korrekt zu entfernen, müss man den zugrunde liegenden File-Datensatz löschen.


Die Lösung

Mein erster Gedanke war:

„Wenn das in Dataverse existiert, gibt es bestimmt eine passende Aktion dafür.“

In Power Automate bedeutet das meist:

  • Perform a bound action
  • Perform an unbound action

Da Dateispalten generisch sind und nicht an eine bestimmte Tabelle gebunden sind, handelt es sich um eine unbound action.

Nach etwas Scrollen in der Liste…

/posts/dataverse-delete-file/image3.png
Ganz schön viele Aktionen...

… habe ich genau das gefunden, was ich brauchte:

DeleteFile

Diese Aktion benötigt einen Parameter:

  • FileId

Und genau das ist der entscheidende Punkt.

Wenn eine Datei in einer Dateispalte gespeichert ist, stellt der Datensatz die FileId zur Verfügung - diese kann man dynamisch auslesen:

/posts/dataverse-delete-file/image4.png

Wenn man diese FileId an die Aktion DeleteFile übergibt, wird die Datei vollständig entfernt:

/posts/dataverse-delete-file/image5.png

Voilà 😎


Schritt-für-Schritt: Dataverse-Datei löschen

1️⃣ Perform an unbound action hinzufügen
2️⃣ Aktion auswählen: DeleteFile
3️⃣ Im Parameter FileId die FileId aus dem Datensatz übergeben
4️⃣ Speichern und testen

Nach der Ausführung ist die Datei vollständig aus der Spalte entfernt.


Wichtige Hinweise

  • Gilt nur für Dateispalten, nicht für Bildspalten
  • Man benötigt entsprechende Berechtigungen zum Löschen
  • Viele erweiterte Dataverse-Funktionen sind nur über unbound actions verfügbar

Fazit

Wenn etwas in einer Standard-Dataverse-Aktion fehlt, lohnt es sich, einen Blick auf die bound und unbound actions zu werfen.

Oft gibt es bereits eine saubere Lösung - sie ist nur etwas versteckt.

Während ich diesen Artikel vorbereitet habe, wollte ich eigentlich ein KI-Bild zur Illustration generieren. Ironischerweise hat die KI etwas erstellt, das der Lösung sehr nahe kam 😅

/posts/dataverse-delete-file/image6.png

Und das zeigt etwas Wichtiges:

Auch wenn jemand das Thema schon beschrieben hat - Ihre Perspektive, Ihr Szenario und Ihre Erfahrung helfen anderen auf eine ganz eigene Weise.

Wenn dieser Artikel jemandem 30 Minuten Frust erspart - dann hat er sich gelohnt.

👉 Wenn du Unterstützung bei solchen Themen brauchst, kannst du mir gerne eine E-Mail schreiben: comment@martinplopez.com – ich helfe gerne 😉