Project Management migration checklist

Migration Checklist: Moving to Microsoft Project

An exhaustive, phased punch list for moving an existing project portfolio onto Microsoft Project — from edition selection through cutover to source decommission.

143 tasks 6–16 weeks typical Updated May 27, 2026
Microsoft Project
Projects
Tasks
Subtasks
Comments
Attachments
Dependencies
0 of 143 tasks complete

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.