🦊 MigrationFox Docs

Rehearsal verdict reference

Every Migration Rehearsal produces a one-pill verdict and an issue list grouped by ten categories. This page defines each verdict, each category, the severity assigned, and the recommended fix. Use it as the vocabulary for your change-review conversations.

The three verdicts

READY TO MIGRATE

No issues in any blocking category. Warnings may exist (they show on the detail view) but none would cause a failure during cutover. You can schedule the real run with confidence.

PROCEED WITH CAVEATS

No blockers, but warnings exist in categories where the migration will continue with a known outcome — some files auto-renamed, some permissions skipped. The migration lead and stakeholder should acknowledge the caveats in the sign-off record.

DO NOT MIGRATE

At least one issue is in a hard-blocking category. The real migration would fail for this item. Fix the underlying cause, re-run the rehearsal, and only proceed after a clean or cautioned verdict.

The ten issue categories

Every issue emitted by the rehearsal is tagged with exactly one category code. Ten is the enumeration of issue classes we have seen cause production rollbacks. Each category also has a severity: BLOCKER, WARN, or INFO.

CodeSeverityWhat it meansRecommended fix
schemaMismatch BLOCKER A source content type or site column conflicts with a destination-tenant definition of the same name but different schema (different type, different choice values, different required flag). Rename at source before migration, or map to a new destination name in the migration profile.
permissionRisk WARN A permission assignment references a principal that does not exist in the destination tenant. Without mapping, the grant will be silently skipped. Upload a user-mapping CSV, or explicitly decide to skip. Flagged individually per principal.
blockedFileType WARN A file extension is on the destination tenant’s blocked-extension policy. Upload will fail with 403. Exclude the file, rename the extension on source, or request a policy exception in tenant settings. Details.
oversizedFile WARN A file exceeds the destination library’s per-file limit (typically 250 MB for classic libraries, 250 GB for modern). Split, compress, or re-path to a library with a larger limit. For legitimately-large media, enable chunked upload in the profile.
apiThrottleRisk WARN Predicted request volume in a phase exceeds safe throttle headroom for the tenant (Graph or SharePoint REST). Schedule the cutover in a low-tenant-activity window, or stage in batches. Rehearsal predicts the request count per phase.
invalidCharacter WARN A filename or field value has characters illegal on the destination (e.g., #, %, * at the end of filenames). Character-replacement rule in the migration profile auto-sanitises. Review the renamed items post-migration.
pathTooLong BLOCKER Destination path (site URL + library + folder depth + filename) exceeds 400 characters. SharePoint rejects the upload. Rebase to a shorter destination path, flatten folder depth, or rename the offending items.
unsupportedFeature BLOCKER A source feature has no destination equivalent — Access Services list, InfoPath form binding, classic workflow with code-behind, PerformancePoint content. Decide per feature: skip, convert (via the Modernization scan), or block the migration until a target is built.
configurationGap INFO A source site setting is not present on the destination — multilingual variation, custom MUI labels, custom action menus, quick-launch customisations. Provision the missing config on the destination before migration, or accept the loss.
dataIntegrity WARN A source artefact is inconsistent — a lookup referencing a deleted list, a calculated column with a broken formula, a required field that is null. Clean up at source (recommended), or accept scrambled values at the destination.

How the verdict is computed

  1. If any issue is in a BLOCKER category → verdict is DO NOT MIGRATE.
  2. Otherwise, if any issue is in a WARN category → verdict is PROCEED WITH CAVEATS.
  3. Otherwise → verdict is READY TO MIGRATE.

There is no partial-credit scoring. The verdict is designed for a change ticket (green / yellow / red) where the nuance lives in the issue detail.

Severity override

You can override the severity of a category on a per-profile basis if your organisation has a different risk tolerance. For example, some teams treat apiThrottleRisk as a blocker (they do not accept throttle drag). Configure overrides in the migration profile under Rehearsal · Severity.

DO NOT RELAX BLOCKERS

Demoting a blocker to a warning lets the cutover run, but the underlying issue still causes failure. The only safe use of severity overrides is to raise severity, not lower it.

Sign-off record

When the client (or change board) approves the rehearsal, a sign-off record is written to the project. The record captures:

The sign-off locks the rehearsal version against the real migration. If the source content changes between rehearsal and cutover, the drift is flagged and a fresh rehearsal is recommended.

Related