top of page

Dataverse-Zugriffsrechte auslesen: Wer hat Zugriff auf welche Connection Reference?

  • Autorenbild: kim
    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!




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?


🔗 NĂŒtzliche Ressourcen

 
 
 

Commentaires


bottom of page