🦊 MigrationFox Docs

SharePoint Modernization scan

The Modernization scan at /governance/modernization inventories classic-era workloads — InfoPath forms, SharePoint Designer workflows, classic publishing pages, web parts, custom master pages — and projects the effort to convert each one to a modern target (Power Apps, Power Automate, modern pages, SPFx). Use it to scope a modernization SOW with defensible hour estimates.

Example output from a mid-size engineering tenant. Hour totals assume the default blended rate.

WHAT YOU'LL SEE

Four summary tiles by artifact type with counts and an S / M / L / XL complexity breakdown. Each tile drills into a per-row list with the individual form/workflow/page name, its measured complexity inputs (field count, step count, etc.), and the recommended conversion target. The SOW export rolls these into a phased proposal.

Before you start

Running the inventory

  1. Open GovernanceModernization (/governance/modernization).
    BreadcrumbGovernance › Modernization › New inventory
  2. Select the SharePoint credential with the widest scope — the scan is bounded by credential reach.
    Credential
    Credential:sp-contoso-tenantadmin· Site Collection Admin on 87/87 sites
  3. Choose scope: Whole tenant, Specific site collections, or Hub. First pass on an unfamiliar tenant: Whole tenant.
    Whole tenant Specific sites Hub
  4. Click Start inventory. Budget ~30 seconds per site collection — a 200-site tenant is 60–90 minutes.
    Start inventoryScanning site 41 / 87…
  5. Results persist. Re-run monthly to trend progress; each run is a separate snapshot.
    Snapshotsrun_4e7a (today) · run_3d11 (Mar 15) · run_2a03 (Feb 15) · View trend

HEADS UP

Workflow Manager on hybrid tenants times out under load. If SP 2013 workflows show unknown state on more than a handful of rows, pause and verify Workflow Manager health before exporting the SOW — an unknown workflow becomes an open-ended line item nobody can size.

The effort model

Every row the scan produces has an effort band: S (up to 4 hours), M (4–16 hours), L (16–40 hours), or XL (40+ hours, scope separately). The band is not a guess — it is derived from the artifact's measurable complexity:

ArtifactInputs to the bandConversion target
InfoPath formField count, rule count, external data connections, code-behind presence, attachment handlingPower Apps canvas app, with Dataverse or the original SharePoint list as backing store. Signed/archival forms can also route to the InfoPath PDF Archive.
SP Designer workflowStep count, impersonation steps, HTTP calls, task process blocks, dictionary variablesPower Automate cloud flow (preferred) or desktop flow if the original uses file-system actions.
Classic publishing pageWeb part count, custom layout usage, reusable content blocks, JSLink presenceModern communication site page with configured web parts. XL band indicates a custom layout that needs an SPFx application customizer.
Sandboxed solution / farm solutionAssembly count, feature scope, event receivers, custom fieldsSPFx extension or SPFx web part, depending on what the solution does. Event receivers map to Power Automate or Graph change notifications.
Custom master page / themeCSS lines, JS lines, image assets, SharePoint-specific tokensModern theme JSON (Set-SPOTheme) plus an SPFx application customizer for any header/footer logic.

Hours are conservative — they assume a single engineer who knows the target platform but is seeing the source artifact for the first time. Teams that have already built the target pattern can divide by 1.5–2.

RESULT

The SOW export sheet gives you one row per artifact with inputs, band, hours, and target. Any defensible challenge from procurement ("why 14 hours for this form?") lands on the inputs column and closes itself.

Pricing a modernization SOW

The Export to SOW button produces an Excel workbook with one sheet per artifact type and a roll-up that sums hours by band, applies your configured blended rate, and adds a 15% contingency line. Rate is set per-project under SettingsGovernance and is never persisted in the export.

A defensible SOW typically presents three phases:

Run dependency graph first

A modernization row that depends on a list being migrated first is not independent work. Always run the Dependency Graph scan before finalizing the SOW order of operations — the graph tells you which conversions unblock which other conversions.

Troubleshooting

"InfoPath form count looks too low"

The scan inventories published form templates, not submitted content files. Submitted-only XMLs migrate as static content, not as modernization candidates.

Workflows show as unknown

SP 2010 workflow engine or Workflow Manager is unhealthy. For hybrid, re-run Get-SPWorkflowServiceApplicationProxy. For online-only, open a support ticket.

Throttle ceiling hit mid-run

The scan respects Graph/SharePoint throttle headers automatically. A hard throttle.exhausted failure means another process is consuming the same quota — retry outside business hours or scope to one hub at a time.

What's next