Phase 0
Decide & Plan
Resolve edition, scope, residency and success-criteria questions before any export or build work begins.
-
Risk if skipped: Building a transform pipeline for one edition then discovering the org licensed a different one forces a full rework of the mapping spreadsheet and the load scripts.
-
Risk if skipped: Provisioning Plan 1 then discovering a Plan 5 feature is mandatory forces a mid-migration license uplift and a re-provisioning of every user.
-
Risk if skipped: Implicit scope expands mid-project as stakeholders discover missing data, blowing the timeline.
-
Risk if skipped: Importing unbounded history inflates Dataverse storage on Project for the Web and slows every Roadmap and Power BI view.
-
Risk if skipped: A US-region tenant holding EU personal data breaches GDPR Article 44 obligations from cutover onward.
-
Risk if skipped: Without written criteria, sign-off becomes a negotiation instead of a verification step.
Phase 1
Pre-Migration Prep
Cleanse the source, build the destination schema and stage users so the import has somewhere correct to land.
1a. Source-system audit and cleansing
-
Risk if skipped: Without a baseline, post-cutover deltas can be explained away as "normal" instead of investigated.
-
Risk if skipped: Duplicates merged after import require manual cleanup against destination Dataverse GUIDs that did not exist at source time.
-
Risk if skipped: Date imports silently shift days at the date-line, producing wrong deadlines on hundreds of tasks.
-
Risk if skipped: Import jobs abort partway when a required field is unset, leaving the project plan in a half-loaded state.
-
Risk if skipped: A source plan with 30 custom fields cannot land on Project for the Web without dropping or concatenating 20 of them.
-
Risk if skipped: Creating a Text field on the destination then needing a Number means deleting and rebuilding, losing every value already loaded.
-
Risk if skipped: An export that opens fine on Project 2019 may fail silently on Project 2024 after the late-2025 CSV parsing change.
1b. Destination tenant and schema setup
-
Risk if skipped: An EU-resident customer provisioned in a US region must move tenant-to-tenant later, costing a second migration.
-
Risk if skipped: Testing in the production environment exposes incomplete data to end users before sign-off.
-
Risk if skipped: A wrong calendar shifts every task end date by the difference between source and destination working hours.
-
Risk if skipped: Loading Manually Scheduled source data into an Auto Schedule destination shifts hundreds of dates on import.
-
Risk if skipped: Importing into a field that does not yet exist silently drops the column's data on most edition flows.
-
Risk if skipped: Without a captured Baseline, Earned Value Management reports lose their reference point.
-
Risk if skipped: Over-assigning Project Manager rights bypasses approval flows and exposes plan edits to the wrong audience.
-
Risk if skipped: Status-change flows fire on every imported task, generating a flood of notifications and Teams pings to end users.
-
Risk if skipped: Mixing migration writes with admin writes makes Dataverse audit-log triage impossible after cutover.
1c. People and process prep
Phase 2
Source Export
Pull every in-scope object out of the source in a transformable format, with timestamps captured so the delta is known at cutover.
-
Risk if skipped: Exporting only to CSV loses Baselines, calendars, dependencies and formula custom fields that the binary formats preserve.
-
Risk if skipped: Without Outline_Level, the imported plan flattens every task to level 1 and the hierarchy is rebuilt by hand.
-
Risk if skipped: Discarding lead/lag values drops every "start two days after the predecessor finishes" link and shifts the Critical Path.
-
Risk if skipped: Mixing assignments into the task export forces a row per (task, resource) and breaks the task uniqueness needed for upserts.
-
Risk if skipped: Losing the source Baseline breaks every Earned Value report and SPI/CPI calculation post-cutover.
-
Risk if skipped: Aggregated time without timephased detail loses the ability to reconstruct per-day burn-down and trend reports.
-
Risk if skipped: Discarding source comments because they "do not import natively" loses years of decision context.
-
Risk if skipped: Re-fetching missing attachments after the source goes read-only is harder than re-uploading from a fresh pull.
-
Risk if skipped: Without a known export timestamp, the delta export at cutover misses any record edited inside an ambiguous window.
Phase 3
Transform & Map
Build the field mapping, run the transforms and resolve every PM-specific structural question before sandbox load.
3a. Mapping spreadsheet
-
Risk if skipped: Without a single mapping artefact, transformation rules drift between engineers and the same source field maps two different ways.
-
Risk if skipped: Without a stable upsert key, partial re-imports duplicate every previously loaded task.
-
Risk if skipped: A custom field provisioned as Text that should have been Number must be deleted and recreated, losing every value loaded so far.
-
Risk if skipped: Tasks whose owner emails do not resolve to any provisioned user fail to land assignments and show as unassigned post-cutover.
-
Risk if skipped: If "original created date" reports drive SLA calculations, losing source timestamps misrepresents historical performance.
3b. Data transformation
-
Risk if skipped: Datetime values without timezone shift up to 24 hours depending on the importer's interpretation.
-
Risk if skipped: An ambiguous duration of "5" loaded as minutes instead of days collapses a 5-day task to 5 minutes.
-
Risk if skipped: Truncation without warning silently loses the back half of long task names.
-
Risk if skipped: Mixed-encoding CSV files surface as garbled cells in the Import Wizard with no row-level error.
-
Risk if skipped: An unescaped newline in a single cell breaks every subsequent row's column alignment.
3c. Relationship and audit-trail decisions
-
Risk if skipped: Without a back-reference, debugging "why did this task end up here" requires a manual hunt through the source MPP file.
-
Risk if skipped: Re-uploading every binary into Dataverse can exhaust the tenant file storage cap and silently fail later uploads.
3d. Microsoft Project structural transforms
-
Risk if skipped: Flattening a 5-level source nesting without preserving Outline_Level produces a single-level task list with no rollups.
-
Risk if skipped: Loading dependencies into Auto Schedule mode without correct types or lag re-shifts hundreds of dates the moment the first link is created.
-
Risk if skipped: Loading only Actual Work without Work and Remaining Work corrupts every burn-down and forecast view.
-
Risk if skipped: Posting every historical comment at high rate burns through throttling limits and stalls.
-
Risk if skipped: Loading the expanded occurrence rows as ordinary tasks loses the recurrence definition; the recurring task stops generating future entries.
-
Risk if skipped: Without a Baseline captured, every Earned Value report and Schedule Performance Index calculation reads as zero.
3e. Throughput planning
-
Risk if skipped: Unsized batches trigger throttle responses mid-job, leaving partial loads that have to be reconciled by hand.
-
Risk if skipped: Loading sub-tasks before summary tasks leaves orphans; loading dependencies before tasks errors at every pair.
Phase 4
Sandbox Test Migration
Run the full pipeline end-to-end into the sandbox environment, catch every gotcha, and sign off before production cutover.
-
Risk if skipped: Sampling only the easy rows hides the field-type gotchas until production load.
-
Risk if skipped: Custom field 11 silently drops on import, losing data that the mapping spreadsheet thought was covered.
-
Risk if skipped: Day-shift bugs found in production force a per-row recompute against the source export.
-
Risk if skipped: Auto-recomputed Critical Path differing from source means downstream forecasts disagree with the historical plan.
-
Risk if skipped: A flattened hierarchy requires per-row re-indent under cutover pressure.
-
Risk if skipped: A production project that loads slower than the cutover window leaves the team in a half-migrated state at go-live.
-
Risk if skipped: Carrying defects forward to production turns the cutover into the discovery phase.
Phase 5
Production Cutover
The tightly-sequenced load window. Freeze, delta-export, load in order, verify counts at each step.
-
Risk if skipped: A late source write after the delta export creates a task that never lands on Microsoft Project and is invisible to validation.
-
Risk if skipped: A re-enabled flow firing on import generates thousands of notifications mid-cutover and floods user inboxes.
-
Risk if skipped: Out-of-order loads error on missing parent IDs and force a partial rollback.
-
Risk if skipped: Non-idempotent inserts on re-run double every previously loaded task.
-
Risk if skipped: Continuing past a count mismatch propagates the deficit through every downstream step.
Phase 6
Validate
Prove the migration was correct on counts, relationships, audit trail and end-user workflows before opening the destination to the org.
6a. Reconciliation
-
Risk if skipped: An unexplained count delta means tasks are missing or duplicated and the team does not know which.
-
Risk if skipped: Skipping random sampling means systematic bugs in rare columns ship to production users.
6b. Relationship validation
-
Risk if skipped: Broken dependencies surface as wrong dates and a corrupted Critical Path long after cutover.
-
Risk if skipped: Truncated or replaced binaries are only discoverable by opening the file.
6c. Audit and compliance validation
-
Risk if skipped: Tasks missing the back-reference timestamp lose their audit context permanently.
-
Risk if skipped: A US-region environment holding EU personal data breaches GDPR Article 44 from cutover onward.
6d. User-acceptance check
-
Risk if skipped: Skipping UAT means real workflow defects ship to every user simultaneously on day 1.
6e. Sign-off
-
Risk if skipped: Without written sign-off, scope debates re-open weeks later under the heading "the migration was never finished".
Phase 7
Post-Migration Cleanup
Open the destination to end users, rebuild what did not transfer, and decommission the source on a scheduled date.
-
Risk if skipped: An editable source post-cutover invites users to update both systems and split the source-of-truth.
-
Risk if skipped: Rebuilding every flow at once and then enabling them in bulk surfaces interaction bugs as a single tangled outage.
-
Risk if skipped: Leavers retaining access exposes the platform to insider-risk breaches between offboarding and manual removal.
-
Risk if skipped: Discarded source exports remove the only forensic record if a post-cutover dispute arises a year later.
Watch list
Risks to track throughout
These risks live across multiple phases — keep an eye on them from kickoff through cutover.
-
Edition fragmentation across Project for the Web, Project Online, Project Server and Project desktop
Microsoft sells four products under the Project name: Project for the Web (Dataverse-backed, modern), Project Online (SharePoint-backed, legacy with a retirement trajectory), Project Server (on-prem) and Project Standard/Professional desktop (MPP file-based). Each has a different data model, a different ingest mechanism (Dataverse bulk operations, PSI/CSOM, file format converters) and different field-cap rules. Lock the target edition in Phase 0 and audit every script and mapping rule against that one edition.
-
Custom-field caps and immutable types on Project for the Web
Project for the Web caps custom fields at 10 per project, hard. Field types (Text, Number, Date, Yes/No) cannot be changed after creation: a wrong-typed field has to be deleted and rebuilt, losing every loaded value. Project Online and desktop are more permissive (Text1-Text30, Number1-Number20, Date1-Date10, Flag2-Flag20) but still enforce per-type caps. Decide field count and type in Phase 3 before any field is provisioned on the destination.
-
Dataverse service-protection throttling under bulk load
Project for the Web sits on Dataverse, which throttles per-user, per-app and per-environment. Bulk migrations using CreateMultiple, UpdateMultiple and UpsertMultiple all draw against the same budget; sandbox runs, transform-fix re-runs and the production load compound the consumption. Honour any back-off signal returned, distribute heavy loads across multiple service principals, and track cumulative consumption from Phase 4 onward so the cutover window does not stall on a throttle response.
-
CSV parsing regression and encoding traps in current Project releases
Late-2025 updates to Project desktop introduced a regression where CSV files encoded in UTF-8 or ANSI fail to open in the Import Wizard. Excel-import paths and the Power Apps Dataverse import behave differently from the Import Wizard. Re-encode every CSV to UTF-8 with BOM, test the chosen format on the destination version before relying on it, and prefer XML over CSV for high-fidelity loads where the source supports it.
Pair this with the long-form guide
The complete Microsoft Project migration guide
Same research, written as prose: data model, import mechanisms, mapping strategy, pitfalls, and partner landscape.