PathixDataverse Forensics
One Question · Ep. 02 · Effective permissions

Who can actually change it?

account.creditlimit

An auditor asks who can change a customer's credit limit. Not who did, but who can, and in Dynamics 365 that answer is spread across the security model.

One Question · Ep. 02
1 of 3

Access doesn't live in one place.

Illustration · the places a review by hand has to open

It comes through a security role, a team someone joined years ago, a business unit, a manager in the hierarchy, or a column security profile. By hand, you open the role editor, one role at a time.

2 of 3

Pathix resolves it for a single column.

In the demo environment, thirty principals can write credit limit. Most are Microsoft's own service accounts, on the list because they hold the privilege. A marketing connector that was never given the role directly gets write twice: through the sales team, and through the hierarchy, as the ERP sync's manager.

3 of 3

Every row carries its path and its scope.

The path is a direct role, a team, or the hierarchy. The scope says how far it reaches: Org is every record in the environment, BU + children is their business unit and everything beneath it, User is only their own records and those shared with them. Credit limit isn't column-secured, so table-level write reaches it; if it were, Pathix would narrow this list to the people holding a profile.

Pathix MCP

Or, ask your agent.

One Pathix call returns the thirty principals, and the path each one took. With the Dataverse MCP alone, your agent reads roles, teams and business units, and works out the hierarchy itself.

How the Pathix MCP works →

Demo environment · illustrative
How Pathix knows

A read-only metadata scan of your environment that reads the logic inside the components: compiled plugins, flow definitions, workflow XAML and scripts.

How it works →
Follow the edge
Ep. 03 · Next questionIf it changes, what breaks?Before a new calculation for estimated value ships, you want to know what reads it, and what reads those. The platform's dependency check lists the declared references, but it doesn't read the logic.Next question →
Or branch from something in this answer
What's already wrong in here?Contoso DemoThe integration with a global role comes back in Ep. 06, as a Critical finding: it can rewrite the security model.Is this secured column actually protected?contoso_permitapplication.contoso_taxidCredit limit isn't column-secured. Ep. 09 takes a column that is, and follows where the value goes next.

Or check it by hand: the integration account problem→All questions →

The long answer

The detail behind the answer, for the reader who needs it.

  1. 01Why a role list is not an answer
  2. 02What Pathix reads
  3. 03Able to write is not the same as writes
  4. 04What this is not
  5. 05The findings this surface raises
Read the long answerClose the long answer
Why a role list is not an answer

“Has write on account” can mean four different things.

Every privilege in Dataverse carries a scope, and the scope is what decides whether a grant is routine or a problem. The same privilege on the same table means one record or the entire environment depending on it, so Pathix reads the scope on every grant rather than reporting that the privilege exists.

SCOPE 1 OF 4
Basic

Their own records only.

SCOPE 2 OF 4
Local

Every record in their business unit.

SCOPE 3 OF 4
Deep

Their business unit and everything beneath it.

SCOPE 4 OF 4
Global

Every record in the environment.

These are the platform's own depth names, the values a role actually stores. The classic role editor labeled the same four User, Business Unit, Parent: Child Business Units, and Organization, and Pathix shows them as User, BU, BU + children and Org.

The hierarchy widens it further

A Local or Deep scope means nothing until you know where the principal sits in the tree and who reports to them. Pathix walks the business-unit structure and the manager hierarchy, and it applies the platform's documented depth cap on that rollup rather than implying the walk goes on forever.

Teams are a second path to the same grant

Access reached through a team is identical in effect to access held directly, and it is the path that survives an offboarding checklist. Pathix resolves both and labels which one a given grant came through, so a review can tell a decision from an inheritance.

What Pathix reads

7 security surfaces, read on every scan.

All of it read-only, through the documented API, by an application user holding a least-privilege role Pathix ships and documents.

Security roles and privileges

Every role, every privilege it grants, and the scope of each grant: Basic, Local, Deep, Global, or Filtered, the depth Dataverse sets with a record filter. The scope is the part that decides whether a privilege is routine or a problem.

Principals

Users, application users (the integrations), and teams, each with its type and its enabled or disabled state. Disabled is tracked because a disabled account that still holds roles is one of the conditions worth catching.

Assignments and team memberships

Roles held directly, and roles reached through a team. Both paths grant the same access, and the team-mediated one is the path access reviews miss.

Business units and the manager hierarchy

The business-unit tree and the manager hierarchy that widens a Local or Deep scope into real reach. The hierarchy rollup has a documented depth cap, which Pathix applies rather than pretending the walk is unbounded.

Column security profiles

Which columns are secured, which profiles grant read, update or create on them, and who is a member of each profile.

Manual record sharing

Share counts and the tables shared, in aggregate. Pathix never stores which records were shared: that question is a deliberate handoff back to Dataverse, and the boundary is a design decision rather than a gap.

Organization security settings

The environment-level switches that change what the rest of this means, including audit configuration and hierarchy settings.

How Pathix itself is deployed and constrained is on Security, and what it stores about your principals is on Your data. Filtered grants, the fifth privilege depth, are covered in the record filter guide.

A line Pathix will not cross

Able to write is not the same as writes.

Permissions and dependencies are kept as two separate projections and never merged into one edge. A role that grants write access to a column is not a writer of that column, and letting a permission appear in a dependency list as though it were would create exactly the confusion an access review exists to remove.

The single point where they touch is a runtime access grant: logic that programmatically shares a record is an action rather than a permission, so it is recorded as an edge, and only on the security projection.

The same line from the dependency side →

Limits

What this is not.

It is not a runtime authorization check

Pathix reads the security model as it was configured at scan time and resolves what a principal is able to reach. It did not observe a request being allowed or denied, and an answer here is a statement about configuration, not about something that happened.

Sharing is counted, not enumerated

Manual record shares come back as counts and the tables involved. Pathix never stores which records were shared. That question belongs to Dataverse and is a deliberate handoff, which is also why a permissions review here cannot leak record contents.

It is a scan, so it has a timestamp

The answer reflects the environment as of the scan that produced it. A role assigned an hour ago shows up on the next scan, and the view says which scan it came from rather than implying it is live.

When it finds something

The conditions Pathix flags on this surface.

Resolving access is the investigation. Every scan also runs the deterministic checks over the same model without being asked: a role shared between a human and an integration, a disabled account still holding its roles, an integration able to rewrite the security model, a column secured with nothing granting access. Those are cataloged as findings, with the control they map to, rather than repeated here.

Bring the question you already have.

A 30-minute walkthrough on a pre-scanned demo environment. No access to your tenant, nothing to install.

Book a demoRead the sample report →
Pathix in two minutes
© 2026 Pathix L.L.C. · self-hosted · metadata-only
Not affiliated with Microsoft. Dynamics 365, Dataverse, and Power Platform are trademarks of Microsoft Corporation.π