Dataverse-Zugriffsrechte auslesen: Wer hat Zugriff auf welche Connection Reference?
- kim
- 24. Mai
- 2 Min. Lesezeit
Aktualisiert: 31. Mai
đĄ Hinweis in eigener Sache
Du willst Power Apps & Power Automate von Grund auf lernen? In meinem Onlinekurs âLisaâs Challenge â Zeiterfassung mit Power Apps & Automateâ begleite ich dich Schritt fĂŒr Schritt beim Aufbau deiner ersten Business-App.
 đ Jetzt Kurs ansehen
 đ Tipp: Trag dich hier ein und erhalte den Kurs kostenlos! Gilt nur bis 31.08.25!
 đ Kostenlosen Zugang sichern
Wie Marie und Marvin beim Mofa-Schuppen herausfinden, wer auf eine Connection Reference Zugriff hat â und was genau erlaubt ist.
đ§ Ausgangssituation: Geteilt ist nicht gleich geteilt
Marie hat Marvin im letzten Blog Zugriff auf eine Connection Reference per Flow gegeben.
Jetzt fragt sich Marvin:
âWie kann ich eigentlich prĂŒfen, wer alles Zugriff auf diese Zeile hat â und ob ich wirklich die nötigen Rechte besitze?â
Und Marie möchte sicherstellen, dass niemand versehentlich mehr Rechte hat als nötig.
𧩠Die Lösung: principalobjectaccess + systemuser + Power Automate
Jeder explizit vergebene Zugriff auf eine Dataverse-Zeile wird in der Tabelle principalobjectaccessset gespeichert âauch bekannt als POA-Tabelle (Principal Object Access).
Diese POA-EintrÀge enthalten:
Feld | Bedeutung |
principalid | Wer hat Zugriff (User oder Team) |
objectid | Auf welchen Datensatz |
accessrightsmask | Welche Rechte (bitmaskiert) |
đ§ So sieht unser Flow aus â im Detail
Der Flow startet ĂŒber Power Apps mit einer Dataverse-ID als Eingabe(z.âŻB. eine Id aus der Connection Reference Tabelle).

Schritt 1: FetchXML mit Join auf Systemuser
Wir nutzen eine List rows-Aktion mit dieser FetchXML-Abfrage auf die Tabelle "principalobjectaccessset"
Hinweis: Diese Tabelle findet ihr i.d.R. nicht ĂŒber die normale Sucheingabe, ihr mĂŒsst den Wert also manuell eingeben. Details dazu, siehe: https://www.itaintboring.com/dynamics-crm/how-to-verify-principle-object-access-directly-from-the-flow/

đĄ Vorteil: Wir holen uns gleich den Klarnamen (fullname) des Users dazu.
Schritt 2: Select-Aktion â Wichtige Spalten selektieren & AccessMask ĂŒbersetzen
Der Output der List rows wird per Parse JSON verarbeitet und dann in einer Select-AktionÂ ĂŒbersetzt.

Dabei verwenden wir eine If/Else-Kette, um accessrightsmask in Klartext zu ĂŒbersetzen:
if(equals(item()?['accessrightsmask'],0),'No access',
if(equals(item()?['accessrightsmask'],1),'Read only',
if(equals(item()?['accessrightsmask'],3),'Read and Write',
if(equals(item()?['accessrightsmask'],5),'Read and Append',
if(equals(item()?['accessrightsmask'],7),'Read, Write, Append',
if(equals(item()?['accessrightsmask'],23),'Read, Write, Append, AppendTo',
if(equals(item()?['accessrightsmask'],262145),'Read, Share',
if(equals(item()?['accessrightsmask'],262147),'Read, Write, Share',
if(equals(item()?['accessrightsmask'],262151),'Read, Write, Append, Share',
if(equals(item()?['accessrightsmask'],262167),'Read, Write, Append, AppendTo, Share',
if(equals(item()?['accessrightsmask'],65539),'Read, Write, Delete',
if(equals(item()?['accessrightsmask'],65559),'Read, Write, Delete, Append, AppendTo',
if(equals(item()?['accessrightsmask'],589847),'Read, Write, Delete, Append, Assign',
if(equals(item()?['accessrightsmask'],851991),'Read, Write, Delete, Append, Assign, Share','Other'))))))))))))))
Disclaimer:
Mit Sicherheit nicht perfekt und vollstĂ€ndig, hat uns aber an dieser Stelle gereicht, um die wichtigsten Access Rights abzufragen und menschenlesbar zu machen. Wir haben uns auf 14 hĂ€ufige Kombinationen beschrĂ€nkt â sonst lĂ€sst sich die Funktion nicht speichern.
đ§Ș Beispielausgabe (JSON)
[
{
"fullname": "Marvin Neumann",
"accessrightsmask": 65559,
"accessrightsmask_readable": "Read, Write, Delete, Append, AppendTo"
},
{
"fullname": "Marie Hoffmann",
"accessrightsmask": 1,
"accessrightsmask_readable": "Read only"
}
]
đ± Schritt 3: In Power Apps anzeigen
Der Flow gibt das JSON direkt an Power Apps zurĂŒck.
Dort kannst du es mit ParseJSON()Â und ClearCollect()Â in eine Collection laden:


Anzeige in Power Apps OberflÀche
Welcher User hat welche Zugriffsrechte auf welche Verbindungsreferenz?

Commentaires