PathixDataverse Forensics
One Question · Ep. 01 · Dependency analysis

What writes to this column?

account.creditlimit

Dynamics cannot answer that about itself. Its dependency tracking reads what components declare, and most writes live inside compiled plugins, flow definitions and form scripts.

One Question · Ep. 01
1 of 3

A write can come from almost anywhere.

Illustration · the places a search by hand has to open

A plugin step, a classic workflow, a cloud flow, a business rule, a script on a form, a canvas app, a Power Pages form, an agent flow. By hand, that means opening each one, one window at a time.

2 of 3

Pathix answers it on one screen.

In the demo environment, credit limit has thirteen writers across eleven kinds of component, from forms and plugin steps to an agent flow a Copilot Studio agent can run. One form script writes it only when a condition is met.

3 of 3

Every line says how Pathix knows it.

Deterministic: Pathix resolved the exact column, from the platform's own structure or by parsing the component's logic. AI-derived: a model proposed the edge and attached its evidence. Unresolved: Pathix saw a write but could not pin the column, so it lists it instead of dropping it. Here, all thirteen are Deterministic.

Pathix MCP

Or, ask your agent.

Through the Pathix MCP, it's one call: the same thirteen writers, each with its tier. With the Dataverse MCP alone, an agent opens definitions one at a time, and the plugin comes back compiled.

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. 02 · Next on account.creditlimitWho can actually change it?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.Next question →
Or branch from something in this answer
What does this plugin actually do?ContosoCredit.PostUpdate.RecalcLimitOne of these writers is a plugin step. Ep. 05 reads what it actually does.Is there a write Pathix couldn't prove?contoso_compliancereview.reviewnotesThis column has none. Ep. 07 finds one, and shows what Pathix does with it.

Or do it by hand: the manual method→All questions →

The long answer

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

  1. 01One plugin, four calls, resolved separately
  2. 02A role that grants write access is not a writer
  3. 03What structural parsing misses
Read the long answerClose the long answer
One hop, in detail

Four calls in one plugin, resolved four separate times.

This is why a single score per component would be useless. Pathix resolves each call on its own terms rather than grading the assembly as a whole: one is pinned by a registration, the rest are read out of the IL, and two are not edges at all but findings in their own right.

The plugin is from a scenario built to exercise the parsers: anything carrying a sim_ prefix is staged, not a customer environment.

CALL
WHAT PATHIX TAKES FROM IT
HOW IT RESOLVED
new Entity("sim_bankengagement")
Creates the downstream record and sets four columns on it, including the one the rest of the chain derives from.
DETERMINISTIC · PARSED
ExecuteWorkflowRequest(guid)
Invokes the classic workflow by a pinned identifier, so the target is exact rather than inferred.
DETERMINISTIC · DECLARED
HttpClient.PostAsync("http://...")
Posts outbound over plaintext HTTP. The destination is a literal, so Pathix resolves it and raises it. See the finding →
DETERMINISTIC · PARSED
catch { }
Swallows the exception, so a failure anywhere above leaves no trace and the chain appears to have succeeded. See the finding →
DETERMINISTIC · PARSED
A distinction that matters

A role that grants write access is not a writer.

Granting the ability to write is not the same as writing. Pathix keeps them on separate surfaces on purpose: write edges live in the dependency graph, and who can write lives with the roles and principals. They never merge into one edge.

Blur the two and a permission starts looking like a dependency, which is the confusion an access review exists to prevent. The dependency graph answers what could change this value. The roles and principals answer who could, and a list that mixes them is not a reliable answer to either one.

Who can write it: effective permissions →The findings that come out of both →
Coverage, honestly

What structural parsing misses, and what closes it.

Any tool that claims to find everything is guessing somewhere. Pathix labels the two gaps below in the product, so a clean-looking list never implies more certainty than it has.

Column names built at runtime

A late-bound or dynamically assembled column name cannot be resolved from structure alone. Pathix marks the write Unresolved and adds it to a worklist rather than guessing at a target. With AI enabled it reads the decompiled or original source and can propose an evidence-coupled edge for some of them, so the gap is smaller than the parser alone would leave it.

PCF controls, at manifest tier

Pathix traces bound properties from the manifest through each form binding. A control that takes its column name from runtime configuration is a documented gap in the coverage register.

Canvas apps are the one place depth is a setting rather than a limit. Standard parsing resolves them as far as the table; switch deep scan on for an environment and Pathix unpacks the app package for column-level attribution.

All of which is why an empty result is worded carefully. A column with no writers means no scanned surface resolved a write to it. Treat that as a strong lead worth checking, well short of a guarantee that nothing can write it.

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.π