🦊 MigrationFox Docs

Dependency Graph scan

The Dependency Graph at /governance/dependencies walks a tenant's Power Platform and SharePoint estate and maps which Power Apps and Power Automate flows depend on which lists, libraries, and sites. Run it before any restructuring or tenant-to-tenant migration so you know what will break if a list is moved or renamed — and what you need to rebind afterwards.

Example scan from a ~200-site tenant. Your results vary by estate size and environment count.

WHAT YOU'LL SEE

Every row is one binding — an app or flow that references a SharePoint object. Confidence badges (EXACT, POSSIBLE, HEURISTIC) tell you whether the binding is a hard reference, a title match, or a free-text hit. Sort/filter by confidence before you act.

Before you start

The scan reads from two surfaces: SharePoint REST/Graph and the Power Platform BAP (Business Application Platform) tenant admin API. Both need to be set up once per tenant.

Running a scan

  1. Go to GovernanceDependency Graph (/governance/dependencies).
    BreadcrumbGovernance › Dependency Graph › New scan
  2. Pick the SharePoint credential.
    Credential picker
    Credential:sp-contoso-reader· expires in 47 days
  3. (Optional) narrow the scope to a single site collection. Blank = all reachable sites.
    Scope
    Site collection URL (optional)
  4. Click Start scan. Runs server-side; typical runtime 3–12 minutes for a mid-size tenant.
    Start scanEnumerating environments…
  5. When status flips to Complete, the results table and interactive graph load at the bottom of the page.
    Status✓ Complete · 23 artifacts · View graph

TIP

For a first scan on an unfamiliar tenant, leave scope blank. The cost of a broader scan is a few extra minutes of runtime — the benefit is a complete map. You can always re-scan a single site later.

Reading the results

Results are grouped by SharePoint artifact. Each row represents one list, library, or site, and lists every Power App and flow that references it, along with a match strength.

Match strengthWhat it meansHow to act on it
ExactThe app or flow references the list by its stable listId GUID, or the flow's SharePoint trigger is bound to this list explicitly. Zero ambiguity.Treat as a hard dependency. Any rename/move will break the binding and must be re-pointed post-migration.
PossibleThe app references the site by URL and a list whose title matches (title only, no GUID). This is common in apps authored before modern SharePoint connectors. May be a real reference or a coincidental name match.Verify manually. If the app was cloned from a template, it is often a real reference; if the list name is generic (Documents, Tasks), it may be a false positive.
HeuristicThe app or flow JSON contains the list title as a free-text string somewhere in a formula, label, or comment. No binding relationship.Low signal. Use only to catch edge cases once you have cleared Exact and Possible matches.

Clicking a row opens the detail drawer with app/flow display name, owner UPN, environment, last modified date, and a deep link into Power Apps Studio / Power Automate.

RESULT

The typical first-run output for a 100-site tenant surfaces 15–40 artifacts. Anything under 5 almost always means BAP registration didn't take — head to Troubleshooting below.

v1 limitations

Troubleshooting

Scan completes but shows 0 apps or 0 flows

  1. BAP management app not registered for this clientId. Re-run New-PowerAppManagementApp -ApplicationId <clientId>. A bad registration silently returns an empty environment list — no error is raised.
  2. API version mismatch. We call api-version=2020-10-01. If sunset in your tenant's region, the scan logs bap.environments.empty. Open a support ticket with the scan ID.

Also verify the service account has Environment Admin on at least one Dataverse environment — tenant-level Power Platform Admin alone is not enough.

"SharePoint credential unauthorized"

Password rotated or app-only certificate expired. Re-test from CredentialsTest, then re-run.

What's next