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
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.
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.
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.
| Code | Severity | What it means | Recommended 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
- If any issue is in a BLOCKER category → verdict is
DO NOT MIGRATE. - Otherwise, if any issue is in a WARN category → verdict is
PROCEED WITH CAVEATS. - 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:
- Rehearsal ID
- Verdict at time of sign-off
- Count of warnings and infos acknowledged
- Approver name and timestamp
- Optional note / approval reason
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
- Migration Rehearsal overview
- Rollback preview — if a real run surfaces something the rehearsal did not
- Executable file handling — detail on
blockedFileType - Modernization scan — detail on
unsupportedFeature