P6 and Microsoft Project

XER → MSPDI (and Back) at a Conceptual Level

What typically survives XER → MSPDI and back

P6 EPS / Projects tree. Enterprise nodes hold projects such as EC00515.
A project XER is not an MSPDI file. Do not claim MPXJ writes a real MPP.

This is not a field-by-field map. It is what usually survives a conceptual round-trip through MPXJ-style objects into MSPDI, and what usually does not. Marked uncertain where we lack a primary citation.

Never write a real MPP. See mpxj.md.

Typically survives (has an analogue)

P6 / XERProject / MSPDICaveat
TASK rows (activities)TasksWBS nodes become summaries, not extra activities
FS / SS / FF / SF + lag_hr_cntPredecessorLink Type 1/3/0/2 + LinkLagMSPDI Type: 0=FF, 1=FS, 2=SF, 3=SS (Microsoft). Lag calendars may differ
Calendars at a coarse levelProject/base calendars, optional task calendarException blob → Project exceptions is lossy; hours/day may not match
Constraints with an analogueConstraintType 0–7Mandatory Start/Finish collapse to MSO/MFO. See p6/constraints.md
PROJWBS hierarchySummary tasks + outlineProject has no PROJWBS table
Resource names / assignments (units)Resources + assignmentsCurves, roles, primary resource semantics uncertain
Planned / remaining durations (hours)Duration / RemainingDurationCalendar used to expand hours will differ
Actual start / finishActualStart / ActualFinish

Usually does not survive (no faithful analogue, or converter drops it)

P6 conceptWhy
Activity codes (ACTVTYPE / ACTVCODE / TASKACTV)Project has outline codes / custom fields, not P6 activity codes
Activity stepsNo MSPDI step table
LOE / WBS-summary / resource-dependent activity typesProject task types are Fixed Units/Duration/Work, not P6 activity types
P6 UDF mappingExtended attributes exist but types/tables do not line up automatically
Resource curves (curv_id, *_crv)MSPDI timephased is optional; MPXJ writer defaults it off
Retained-logic / progress-override / actual-dates flagProject has no equivalent schedule option
Data Date vs Status DateMust map last_recalc_date → Status Date, not StartDate. Easy to get wrong
Must Finish By (plan_end_date)Not the same as Project FinishDate / deadline / FNLT — mapping uncertain
Longest-path critical vs TF thresholdProject critical slack limit is a different control
Percent-complete type (Duration/Physical/Units/Scope)Project % Complete is duration-based; Physical is EV-only
Duration % Complete formulaP6 (Planned−Remaining)/Planned vs Project Actual/Duration
Expected Finish as a schedule driverNo cited MSPDI equivalent
P6 notebooks, risks, baselines-in-XERXER does not carry baselines (Oracle); notebooks/risks not in MSPDI

Uncertain (do not implement as fact)

  • Whether MPXJ writes P6 calendar exceptions into MSPDI exception records completely.
  • Role assignments vs resources.
  • How suspend/resume dates land.
  • Whether secondary constraints (cstr_type2) are dropped (Project has one constraint per task).
  • Units % Complete ↔ % Work Complete as a mechanical identity (similar idea, not cited as equal).

P6 vs Project disagreements to keep

  1. Remaining duration % formula (see p6/remaining-duration.md vs msp/percent-complete.md).
  2. Mandatory vs On constraints.
  3. Data Date vs Status Date vs Start Date.
  4. WBS is a table in P6; summaries in Project.
  5. Retained logic has no Project flag.

Sources

Back to top