Career Paths · Scheduling & Tools · 14 min read

MS Project to Primavera P6 Migration: A Field Guide for Construction Schedulers (2026–2027)

How to move a live construction programme from Microsoft Project into Primavera P6 without breaking the logic, the float, or your credibility with the client.

By Dr. Hassan Eliwa, PhD Founder of PMMilestone.org & PMMilestone.com · 2026-09-10

Reading time · 14 min · Updated 2026-09-10
MS Project to Primavera P6 migration field guide for construction schedulers — two laptops showing an MS Project Gantt chart and a Primavera P6 activity table, with data, structure, logic, resources and calendars crossing between them on a construction site
MS Project to Primavera P6 migration field guide for construction schedulers — two laptops showing an MS Project Gantt chart and a Primavera P6 activity table, with data, structure, logic, resources and calendars crossing between them on a construction site

Every few months someone sends me a Primavera P6 schedule that was "converted from MS Project last week" and asks why the completion date moved nine days when nothing changed on site. The honest answer is nearly always the same. The import worked. Nobody checked what the import actually did.

MS Project to Primavera P6 migration — data, structure, logic, resources and calendars moving from an MS Project Gantt chart to a Primavera P6 activity table, with a prepare, map, convert, validate, optimise, deliver checklist
Figure 1 — Same project, greater control: what actually has to cross the gap when a live programme moves from Microsoft Project into Primavera P6.

In 2026 that trickle has become a queue. Microsoft retires Project Online on 30 September 2026, and plenty of contractors who ran their programmes in Project Web App are using the moment to rethink their tools. At the same time, more owners and public agencies are writing native P6 submissions straight into their contract specifications. So a lot of schedules are crossing from one tool to the other right now, many of them mid-project, with progress, baselines and delay notices already attached.

This guide is the process I use, and teach, for that crossing. It isn't a click-by-click software tutorial. It's the thinking a scheduler needs before, during and after the import, so the P6 version tells the same story as the MS Project original. And where it doesn't, so you can explain exactly why.

★ Key takeaways
  • ▸ The import takes minutes. The reconciliation afterwards is the real job, and it deserves a plan of its own.
  • ▸ MS Project and Primavera P6 both run the Critical Path Method, but they make different assumptions about calendars, constraints, float, progress and the data date. Those assumptions, not software bugs, explain most "mystery" date movement.
  • ▸ Take a schedule fingerprint before you export: finish date, activity and relationship counts, critical path, and float on key milestones. Without it you can't prove the conversion is faithful.
  • ▸ Clean the schedule inside MS Project first. Fixing typed-date constraints, manual tasks and summary-task logic at the source costs a fraction of fixing them in P6.
  • Never submit a converted schedule until every variance against the fingerprint is either eliminated or explained in writing.

Quick answer: can you import an MS Project schedule into Primavera P6?

Yes. P6 Professional imports Microsoft Project data through the Microsoft Project XML format (and the older MPX format), using an import template that controls how fields, calendars and custom fields map across. You need an Admin Superuser account with access to all resources to run an MSP XML import, and any cost-type or number-type custom fields in MS Project have to be mapped to matching user-defined fields (UDFs) in P6, or the import throws errors.

What the import does not do is make the two scheduling engines agree with each other. That part is on you, and it's what the rest of this article is about.

Why so many schedules are moving to P6 in 2026

Let's get the Microsoft news straight first, because I've already heard it misquoted in site meetings. It's Project Online, the SharePoint-based Project Web App service, that is being switched off. The desktop application most schedulers simply call "MS Project" isn't going anywhere.

Microsoft product Status What it means for a scheduler
Project Online / Project Web AppRetires 30 September 2026. No access to the service or its data afterwards.Export every live plan to MPP and XML, and archive it, well before the cut-off.
Project for the webRetired in August 2025; features folded into Microsoft Planner.Fine for task lists. Rarely a credible construction master programme.
Project desktop (Professional)Still supported, subject to each version's lifecycle.You can still open, clean and export MPP files, which is exactly what a migration needs.
Project Server Subscription EditionStill supported on-premises.An option for organisations that want to stay inside Microsoft PPM.

Table 1 — What Microsoft is retiring, and what it isn't.

The retirement is only part of it. On the projects I work around, three other pressures keep pushing schedules towards P6:

  • Contract specifications that require native P6 files (usually XER) for the baseline and every monthly update, particularly on public infrastructure and larger commercial work.
  • Delay and extension-of-time claims. Forensic schedule analysis is overwhelmingly done on P6 data, so an MS Project programme often gets converted once a dispute starts. That's the worst possible moment to do it.
  • Joint ventures where one partner plans in MS Project and the lead partner reports to the client in P6.
⚠ Converting while a claim is live

If a dispute is already running, keep the original MPP untouched and convert a copy. The native file is evidence; the converted file is an analysis tool. Blurring the two hands the other side an easy argument about data integrity — see EOT claim preparation for how records get tested in practice.

The 6-stage migration workflow

Stage What happens Output
1Freeze & fingerprint — lock the MPP; record dates, counts, floatSchedule fingerprint
2Clean at the source — manual tasks, summary logic, typed datesClean MPP file
3Export to XML — Save As › XML, named with the status dateMSP XML file
4Import with a template — sandbox EPS, UDF mapping, ID rulesUnscheduled P6 project
5F9, log & reconcile — data date = status date; compareVariance register
6Baseline & document — re-baseline; 1–2 page conversion reportSubmission-ready XER

Figure 2 — The six stages of an MS Project to Primavera P6 migration, each with an output someone else can check. Gate rule: a second person checks each output before the next stage starts.

Treat the conversion like a small project with its own gates. Each stage produces something tangible that a second person can review before you move on. On a 300-task fit-out programme the whole thing might take a day. On a 3,000-activity, resource-loaded hospital schedule, budget one to two weeks, most of it in Stage 5.

Stage 1 — Freeze the source and take a fingerprint

Agree a cut-off with the project team and stop editing the MS Project file. Save three things side by side: the native MPP, an XML export, and a PDF of the Gantt at the status date. Then record what I call the schedule fingerprint: a short set of numbers that describes how the schedule behaves, not just how it looks.

Metric Where to find it in MS Project Why it matters once you're in P6
Project finish dateProject summary task / Project InformationYour first sanity check after scheduling (F9)
Status dateProject › Status DateIt becomes the P6 data date
Task and milestone count (no summaries)Filter out summary tasks and countProves nothing was dropped on import
Relationship countExport predecessors to Excel and countLinks on summary tasks are the usual casualty
Critical tasks and driving sequenceCritical filter, plus a critical path Gantt PDFThe P6 critical path must tell the same story
Total slack on 10–15 key milestonesTotal Slack columnExposes calendar and float-setting differences
Constraints by typeGroup by Constraint TypeHidden Start No Earlier Than constraints show up here
Hours per day / per weekFile › Options › ScheduleDrives how durations are displayed in days

Table 2 — The schedule fingerprint: capture it before you export.

On a 2,000-task schedule this takes about an hour. It's the most valuable hour in the whole conversion, because it turns "the dates look about right" into a pass-or-fail test.

Stage 2 — Clean the schedule in MS Project first

This is where most of the value sits. Every problem you fix here is a problem you won't have to explain to the client's P6 reviewer later.

  • Switch manually scheduled tasks to auto scheduled. P6 has no equivalent, and manual tasks carry dates that logic isn't driving.
  • Move logic off summary tasks and onto the first or last detail task underneath. WBS elements in P6 can't hold relationships.
  • Review every Start No Earlier Than constraint. MS Project quietly adds one whenever someone types a start date into an auto-scheduled task in a forward-scheduled project. Keep the ones that reflect a real access date or contract restriction; remove the rest.
  • Delete blank rows and presentation-only "heading" tasks. P6 won't accept activities without names.
  • Check the Hours per day option against your real working calendar (see the note below).
  • Decide how elapsed durations and lags will be handled. A 7ed curing lag needs a deliberate P6 equivalent, usually a 7-day or 24-hour calendar.
  • Copy MS Project's Unique ID into a text custom field and map it across, so every activity stays traceable to the RFIs, early warnings and delay notices that quote the old IDs.
➜ The hours-per-day trap

MS Project stores durations in minutes and turns them into "days" using the Hours per day option under File › Options › Schedule. That option isn't linked to your calendar. If the site works 10-hour days and the option still says 8, a task typed as "5 days" is really 40 hours, which the calendar finishes in four working days.

P6 imports the 40 hours faithfully and, if it's set to use calendar-based hours, displays them as 4 days. Same work, same dates, different label — and a reviewer who thinks you've quietly shortened the durations. Fix the setting, or explain it, before anyone else notices.

Stage 3 — Export to XML

In MS Project, use File › Save As and choose XML Format. Put the status date in the file name (for example, TowerA_Prog_Upd14_2026-06-30.xml) so there's never an argument later about which version was converted. I'd resist reaching for a third-party converter on the first attempt unless the native route genuinely fails. Every extra tool adds another field mapping you'll have to verify.

Stage 4 — Import into P6 with a deliberate template

Import into a sandbox EPS node, never straight into production. The import wizard lets you create a new project, add into an existing one, or replace or update an existing project. The last two are powerful and unforgiving: pointed at the wrong project, they can overwrite relationships in a live schedule. Before you click Finish, settle four things:

  1. Activity ID convention. Decide it now. Renumbering after the first submission breaks every cross-reference in correspondence.
  2. Calendars. Import as project calendars for the first pass, then map to your organisation's global calendars once you've proven they behave identically.
  3. UDF mapping. Map the MS Project Unique ID, any cost or number fields, and any codes you rely on for reporting.
  4. Security. Confirm the importing account has Admin Superuser rights and access to all resources, or the job will fail partway.

Stage 5 — Schedule, read the log, reconcile

Set the P6 data date to the MS Project status date, press F9 with the Log to file option ticked, and read the schedule log before you look at a single bar. It lists open ends, constraints, out-of-sequence progress and activities with no predecessors or successors. Then compare the result against your fingerprint.

Check Acceptable result If it fails, look at…
Project finish dateIdentical, or variance fully explainedData date, calendars, constraints, Hours per day
Activity countExact matchBlank rows, presentation tasks, export filters
Relationship countExact, or losses traced to summary tasksSummary-task logic; duplicate links
Critical pathSame driving sequenceFloat calculation option; lag calendar
Key milestone floatWithin ±1 dayCalendars and hours-per-day display
ConstraintsSame count and typesTyped dates; Mandatory vs Start On
Open endsNo new open endsDropped links; deleted summary rows

Table 3 — Reconciliation tolerances: match, explained variance, or unexplained.

➜ Expert tip: run F9 twice

First, schedule with P6 options set to mirror MS Project as closely as you can — for example, total float computed as the smallest of start and finish float. That pass proves the conversion is faithful. Then switch to the settings your contract or specification requires and schedule again.

Now you can separate conversion variance (did the data survive?) from methodology variance (what changed because P6 is set up differently?). Mixing the two is how a two-day problem becomes a two-week argument.

Stage 6 — Re-baseline and write a conversion report

P6 baselines are copies of a project. Baselines stored inside an MPP file don't arrive as usable P6 baselines, so plan to re-establish the baseline in P6 and record how you did it. Then write a one- or two-page conversion report: source file and status date, import template, schedule options used, the fingerprint comparison, and a plain-English explanation of every variance. Submit it with the first P6 update. It's a small document that heads off a lot of rejection letters.

Real-world example: the tower that "slipped" two weeks during conversion

Here's a pattern I see all the time. Picture a residential tower with the structure running level by level on a two-week slab cycle. The MS Project status date is the end of week 6. Levels 4 and 5 are finished and statused properly. But the level 5 columns and core, and the façade brackets for levels 4–6, were planned to start before the status date, haven't started, and nobody updated them. MS Project is perfectly happy to show that unstarted work sitting in the past.

P6 is not. The data date is a hard line: remaining work can't be scheduled before it. The first F9 pushes the level 5 columns to the data date, and the rest of the structure follows like dominoes.

Levels 4–8 structure — MS Project dates vs P6 after the first F9
MS Project (as exported) P6 actual P6 remaining P6 critical
L4 slab (complete)
L5 slab (complete)
L5 columns & core
L6 slab
Façade brackets L4–6
L7 slab
Roof slab
Status date / P6 data date sits at 44% of the bar area — nothing remaining may start to its left.

Figure 3 — Gantt comparison: MS Project dates (light bars) against P6 dates after the first F9. Unstarted work behind the status date moves to the data date and the roof slab finishes two weeks later.

The P6 schedule isn't wrong. It's the first honest version of that programme in two months. The fix belongs in MS Project, before export: use Project › Update Project › Reschedule uncompleted work to start after the status date. That way the slip appears in the right reporting period, in the native tool, and the converted file matches the source on day one.

MS Project vs Primavera P6: the differences that actually move dates

Most comparison articles talk about price, licensing and user interfaces. That's useful when you're choosing software. When you're converting a schedule, these are the behaviours that matter:

Topic Microsoft Project Primavera P6 What to do
Data dateStatus date is optional; unfinished work can sit in the pastRemaining work can never start before the data dateReschedule uncompleted work in MSP before export
DurationsStored in minutes; shown in days via Hours per dayStored in hours; day display depends on admin settingsAlign Hours per day with the real calendar
ConstraintsOne constraint per task, plus a separate deadlinePrimary and secondary constraints; no deadline fieldMap each type deliberately; check Mandatory vs Start On
Typed datesCreate Start No Earlier Than constraints automaticallyArrive as Start On or After constraintsRemove unjustified ones before export
RelationshipsOnly one link between any two tasksSeveral links allowed, e.g. SS and FF togetherRebuild SS + FF pairs for linear work
LagsWorking-time or elapsed lag (e.g. 7ed)Measured on the calendar chosen in Schedule OptionsChoose the lag calendar consciously; test curing lags
Total floatTotal slack reported as the smaller of start and finish slackStart float, finish float, or smallest of the twoMatch the setting for the fidelity check, then document
Critical pathSlack ≤ threshold (0 days by default)Total float ≤ threshold, or Longest PathAgree the definition with the client in writing
Level of effortNo true LOE; summary or fixed-duration tasks usedLevel of Effort and WBS Summary activity typesConvert preliminaries and supervision to LOE
ProgressDepends on update method and optionsRetained Logic, Progress Override or Actual DatesUse the method your contract specifies
CalendarsBase calendars, including work weeks for date rangesStandard work week plus date exceptionsRebuild seasonal calendars with exceptions
BaselinesUp to 11 stored inside the fileSeparate baseline project copiesRe-establish in P6 and record the method

Table 4 — Scheduling behaviour compared, with the action to take.

If you only remember three rows, make them the data date, typed-date constraints and hours per day. Between them they account for most of the date movement I get asked to explain.

Where the conversion effort really goes

The chart below is an illustrative issue log from a hospital expansion schedule of roughly 1,850 activities. The mix is typical of what I see on busy, multi-author MS Project programmes.

Where the conversion effort really goes
Illustrative issue log — 1,850-activity hospital expansion schedule
Typed-date SNET constraints
212
Calendar / hours-per-day
96
Progress & data date
73
New open ends
64
Relationship & lag issues
58
Summary-task logic
41
Manually scheduled tasks
37
Field / UDF mapping
29

Figure 4 — Illustrative reconciliation log: activities flagged by issue type during conversion of a 1,850-activity schedule.

Look at the top bar. More than one in ten activities carried a Start No Earlier Than constraint that nobody had consciously set. Planners had simply typed dates into the start column during coordination meetings. Under DCMA-style checks these don't count as hard constraints, so they rarely raise alarms. But they stop activities moving earlier when predecessors finish early, and they make parts of the network look date-driven rather than logic-driven. In a delay analysis that distinction matters a great deal.

Common mistakes to avoid

  • Treating the import log as quality assurance. A clean import log only tells you the file was readable. It says nothing about whether the schedule still behaves the same way.
  • Importing straight into production. Use a sandbox EPS node until the reconciliation passes, and be very careful with Replace or Update Existing Project.
  • Scheduling with the wrong data date. If the P6 data date doesn't equal the MS Project status date, every comparison afterwards is meaningless.
  • Leaving typed-date constraints in place. They survive the import, they mask logic, and a client reviewer running a constraint report will find them before you do.
  • Accepting default float and critical path settings. Check what the contract says about critical path definition and float calculation, then set P6 to match.
  • Renumbering activity IDs without a cross-reference. Keep the MS Project Unique ID in a UDF, permanently.
  • Submitting without telling the client it was converted. Disclose it, attach the conversion report, and move on. Surprises are what turn a routine review into a formal rejection.

Expert tips from the scheduling desk

  • Count relationships, not just dates. A finish date can match by coincidence while 40 links are missing somewhere in the middle of the network.
  • Create a CONV activity code with values such as Clean, Adjusted and Rebuilt. Every activity you touched is then filterable and auditable.
  • Test each calendar with a one-activity dummy project. Put a 10-day activity across a public holiday and check that both tools give the same finish date.
  • Rebuild SS + FF pairs on linear work. Pipelines, pavements and façade runs were often modelled with a single SS lag in MS Project because it only allows one link between two tasks.
  • Convert site supervision and preliminaries to Level of Effort so they stretch and shrink with the work they span.
  • Keep both files under the same naming convention and store them together. Future-you, or a claims consultant, will be grateful.

Lessons learned from real conversions

Field note 1 — The hospital schedule with 212 invisible constraints

On a large healthcare programme, removing unjustified Start No Earlier Than constraints before export changed the critical path. A mechanical services sequence that had looked comfortable turned out to be driving completion once logic, not typed dates, was in charge. Nobody enjoyed that discovery, but it came out during conversion rather than in the middle of an extension-of-time negotiation.

Lesson: a conversion is an audit whether you plan it that way or not. Plan it that way.

Field note 2 — The motorway night works that "lost" 20% of their durations

Night works ran four 10-hour shifts a week, but MS Project's Hours per day option still said 8. In P6, using calendar-based hours, every 5-day activity displayed as 4 days. The client's reviewer flagged dozens of "reduced durations". Not one date had changed. A single paragraph in the conversion report, with a worked example, closed the comment.

Lesson: explain display differences before the reviewer asks about them.

Field note 3 — The fit-out programme whose finish date matched by luck

A joint-venture fit-out programme converted with a finish date identical to the source, and everyone relaxed. The relationship count told a different story: 63 links had been attached to summary tasks and simply disappeared. The float on two floors of services was fiction until the logic was rebuilt.

Lesson: a matching finish date is a hypothesis, not a result.

Template: pre-submission conversion checklist

Check Evidence to keep
Source MPP frozen; MPP, XML and Gantt PDF archived togetherFile names with status date
Schedule fingerprint recordedFingerprint table (Table 2)
Manual tasks converted; summary-task logic movedBefore/after counts
Typed-date constraints reviewed and justifiedConstraint register with reasons
Hours per day aligned with calendars, or difference explainedWorked example
Uncompleted work rescheduled after the status dateMSP update record
Imported into sandbox EPS with documented templateTemplate name and settings
Data date equals MS Project status dateScreenshot of Project Details
Schedule log reviewed; open ends and out-of-sequence items resolvedSaved schedule log
Fingerprint comparison complete; all variances explainedVariance register
Contract float and critical path settings applied and recordedSchedule Options screenshot
Baseline re-established; conversion report issued with submissionReport reference

Table 5 — Copy this checklist into your conversion report.

Final thoughts

Software migrations tempt us to think about software. A schedule conversion is really about evidence: can you show, with numbers, that the P6 programme describes the same plan, the same progress and the same risks as the MS Project file it came from? If you can, the client reviewer has very little to argue with. If you can't, the most sophisticated P6 layout in the world won't save the submission. Freeze, fingerprint, clean, import, reconcile, document. It's not glamorous work, but it's the kind that keeps projects out of arguments.

If you want to sharpen the P6 side of this work, how expert planners read a P6 schedule in ten minutes covers the review habits a reviewer will apply to your converted file, the negative float case study shows what happens when constraints go unexamined, and the Riverside office building tutorial walks through building a clean P6 programme from scratch. For the underlying terminology, the PMMilestone Encyclopedia A–Z defines every term used above.

Frequently Asked Questions

  • Can Primavera P6 open an .mpp file directly?
    Not for current versions of MS Project. P6 Professional's native MPP support only ever covered very old versions of Project. For modern files, open the MPP in Project desktop, save it as XML, and import the XML into P6.
  • What happens to Project Online schedules after 30 September 2026?
    Microsoft has said the service and the project data inside it won't be accessible after retirement. If you have live programmes in Project Web App, open them in Project desktop, save MPP and XML copies, and archive them before the date. Don't leave it to the last week.
  • Why did my finish date change after importing into P6?
    The usual causes, in rough order, are: unstarted work sitting behind the status date being pushed to the P6 data date; calendar and hours-per-day differences; typed-date or mandatory constraints behaving differently; and different lag calendar or float calculation settings. Compare against your fingerprint to find which one applies.
  • Does my MS Project baseline come across to P6?
    Don't rely on it. Baselines stored inside an MPP don't arrive as usable P6 baseline projects. Re-establish the baseline in P6, keep the original MPP as the record of the approved baseline, and document the method in your conversion report.
  • How long does an MS Project to P6 conversion take?
    In my experience, a clean schedule of a few hundred activities takes a day including reconciliation. A resource-loaded programme of 2,000–3,000 activities with progress and multiple calendars typically needs one to two weeks, and most of that time is reconciliation, not importing.
  • Should I convert the schedule or rebuild it from scratch in P6?
    Rebuild when the schedule is small, early in its life, or so poorly structured that cleaning it would take longer than starting again. Convert when the project is progressed, when correspondence references existing activity IDs, or when the schedule may become evidence in a claim.
  • What's the difference between XER and XML files?
    XER is Oracle's proprietary exchange format for moving projects between P6 databases. P6 XML is Oracle's XML format for projects and baselines. Microsoft Project XML is a different schema altogether, and it's the one you use to bring an MS Project schedule into P6 before exporting an XER for submission.
  • Is an MS Project schedule acceptable for delay analysis?
    It can be analysed, and plenty of good analysis has been done in MS Project. But because most forensic tools and reviewers work natively with P6 data, schedules are frequently converted during disputes. If that happens, preserve the native file and document the conversion thoroughly.
  • Do I need special P6 permissions to run the import?
    Yes. An MSP XML import requires an Admin Superuser account with access to all resources. Without it the import can fail partway through, leaving a half-populated project that is easier to delete than to repair.

People also ask

Follow-up questions practitioners search for next — each one points to the calculator, template or reference entry that answers it.

  • Where do I look up the terms in this guide?

    Single-line definitions for 1,200+ project-management and controls terms. PM Glossary on PMMilestone.org

  • Which books deepen this career path?

    Field handbooks on project controls, P6 scheduling and EVM. Books & Publications

  • Which academy track maps to this career step?

    Structured progression from planner to programme controls director. Project Controls Academy

  • Which calculator should I learn first?

    PV / EV / AC / CV / SV / CPI / SPI in one workbook — the gateway tool. EVM Calculator

More career guides

Buy me a coffee