Skip to article
Schedule data

What is actually inside an XER file — and what quietly does not survive the trip

An XER export is a set of named database tables in a text file. Here is what each one carries, and the five things Oracle's own documentation says are dropped on the way out.

One XER file, one block per table. TASK and TASKPRED are the spine and the logic; everything else describes the world they sit in.

Somebody emails you an XER. You import it, P6 says the import succeeded, and the dates are wrong. Nothing errored. Nothing warned. The schedule simply is not the schedule that was sent.

This happens constantly, and it is not a bug. It is the documented behaviour of the format, and Oracle publishes the list of what it drops. Almost nobody reads that list, which is why this keeps being a surprise.

#It is a database export wearing a text file's clothes

An XER is not a document format. It is a set of relational tables serialised into tab-delimited plain text, one block per table, with a header record naming the export version and the database that produced it. Open one in a text editor and you can read it. That is not an accident of the design — it is the design.

Oracle publishes the table-level map in its XER Import/Export Data Map Guide, which names the tables and every field inside them: TASK for activities, TASKPRED for activity relationships, PROJWBS for the WBS, CALENDAR for calendars, TASKRSRC for resource assignments, and the UDFTYPE / UDFVALUE pair for user-defined fields.1

#Three tables carry the schedule. The rest describe the world it lives in

TASK holds the activities — ids, durations, dates, constraints, percent complete, activity type. TASKPRED holds the relationships: predecessor, successor, relationship type, lag. Between them you have a network. Everything else is context, and the context is where the quiet failures live.

CALENDAR is the one that catches people. Two schedules with byte-identical TASK and TASKPRED tables and different calendars do not finish on the same day, and calendars are imported by name. Import into a database that already owns a calendar called "5 Day Workweek" and you find out what that database means by it, not what the sender meant.

User-defined fields are split across two tables — UDFTYPE declares them, UDFVALUE holds the values — which is why a naive parser that reads activities and relationships and stops will silently lose every custom field on the project. If your risk register, your responsible party, or your commissioning sequence lives in a UDF, it lives in the table most likely to be dropped by whatever is reading the file.

#What Oracle says it drops

The right-hand column is not inference. Each line is a limitation Oracle states in its own Importing and Exporting Guide.

From that guide, in Oracle's words rather than ours:2

  • Baselines. "XER does not support the export of baselines. XML supports the export of baselines." The same sentence appears again for import. If your delay analysis needs the baseline, XER cannot carry it — and a schedule without its baseline cannot be measured against anything.
  • Risk data. "When connected to a P6 EPPM database: No risk data is exported when using XER format."
  • Past-period actuals. On import, "the financial periods in the XER file must exactly match the financial periods in the Financial Periods dictionary. If they do not match, no past period actual data will be imported." Exactly match. Not approximately.
  • Secure codes. "When you export project data, secure codes and secure code assignments related to the project are not exported."
  • Resource curves, on the Microsoft Project path: "The MPX file format does not support resource curves." Oracle also states plainly that "P6 Professional does not export past period actual data to Microsoft Project."

Every one of those drops is silent. The import reports success.

That is the whole problem in one sentence. A format that failed loudly would be an inconvenience. A format that succeeds while discarding your baseline is a trap, because the schedule you now hold looks complete.

#The settings that travel as a number but not as a behaviour

P6 decides how to handle out-of-sequence progress with a project-level scheduling option. Oracle's definitions are precise: under Retained Logic, "the remaining duration of a progressed activity is not scheduled until all predecessors are complete." Under Progress Override, "network logic is ignored and the activity can progress without delay." Under Actual Dates, "backward and forward passes are scheduled using actual dates."3

Those three settings produce three different completion dates from identical activity and relationship data. Which means the dates in a schedule are not a property of the network alone; they are a property of the network plus a setting somebody chose.

Our reading of Microsoft's published MSPDI schema is that it has no field carrying that setting — and we want to be clear that this is our reading of the schema rather than something either vendor states. MSPDI is a real, published Microsoft schema (mspdi_pj12.xsd, defined for Project 2007 and documented on Microsoft Learn),45 but it is Microsoft Project's data model, and Microsoft Project does not have P6's concept. So the setting does not survive the trip, the receiving tool applies its own scheduling behaviour, and the dates change without anything appearing to go wrong.

#Why .mpp is a different problem entirely

XER and MSPDI are interchange formats — one vendor-documented, one schema-published. Binary .mpp is neither. It is Microsoft Project's native store, and there is no published specification for it.

The clearest evidence of what that costs comes from MPXJ, the long-running open-source library that reads project files. Its maintainers, after two decades of reverse engineering, say writing MPP remains out of reach: "the knowledge we have of the file structure is still relatively incomplete, despite the amount of data we are able to correctly extract."6 Their support matrix is the practical summary — MSPDI can be read and written, XER and PMXML can be read and written, and MPP is read-only.7

This is why serious schedule tooling asks for XER or XML and not for .mpp, and it is why SP4N parses MSPDI XML where it is available and does not parse the binary .mpp directly. Saying so is more useful than implying otherwise: a tool that claims to read .mpp is either converting it first or is going to disappoint you on a schedule that matters.

#What to check on every schedule you receive

There is an off-the-shelf answer for the structural half of this. The DCMA 14-Point Schedule Assessment — Section 4.0 of DCMA-EA PAM 200.1 — defines fourteen named checks: Logic, Leads, Lags, Relationship Types, Hard Constraints, High Float, Negative Float, High Duration, Invalid Dates, Resources, Missed Tasks, Critical Path Test, Critical Path Length Index, and Baseline Execution Index.8 They are concrete and quantitative. The Logic check, for instance, flags incomplete tasks missing a predecessor or successor and sets the tolerance at 5% of incomplete tasks.8

What DCMA does not check is whether the file you received is the file that was sent. That is the gap this whole post is about, and it needs three questions the 14 points do not ask:

  • Did a baseline arrive at all, or only a current schedule? If it came as XER, the answer is no, and no amount of analysis will conjure one.
  • Do the calendars in the file match the calendars now applied, by definition rather than by name?
  • Which out-of-sequence progress setting was the sender using — and did anyone write it down before the file changed hands?

Then run the structural checks, because a schedule can be intact on arrival and still be unusable. Missing logic and hard constraints are what make float meaningless, and float is what every downstream question depends on — including whether that weather day was a delay or just float consumption. How the same data drives per-activity scoring is on the construction delay risk page.

Frequently asked

What is an XER file?

It is Primavera P6's proprietary export format: a set of named relational tables serialised as tab-delimited plain text, with a header record identifying the export version and source database. Oracle publishes the table and field map, which names TASK, TASKPRED, PROJWBS, CALENDAR, TASKRSRC, UDFTYPE and UDFVALUE among others.

Does an XER file contain the baseline?

No. Oracle states that XER supports neither the export nor the import of baselines, and that P6 XML supports both. If you need the baseline for delay analysis or variance reporting, request P6 XML instead.

Why do my dates change after importing a schedule?

The two usual causes are calendars and scheduling settings. Calendars are matched by name, so importing into a database that already has a calendar of that name applies the local definition. Separately, P6's out-of-sequence progress option — Retained Logic, Progress Override, or Actual Dates — changes calculated dates, and it is a setting rather than part of the network.

What is MSPDI?

MSPDI is Microsoft Project's XML Data Interchange schema, published by Microsoft as mspdi_pj12.xsd for Project 2007 and documented on Microsoft Learn. It is a real published schema, unlike the binary .mpp format, which is why tools that exchange schedule data with Microsoft Project generally use it.

Can software read a binary .mpp file directly?

Reading is possible; writing reliably is not. MPXJ, the most established open-source library in this space, supports read-only access to MPP and states that its knowledge of the binary structure remains incomplete after many years of reverse engineering. The same library reads and writes MSPDI, XER and PMXML, which is a good indication of which formats are genuinely open.

Sources

  1. 1Primavera P6 EPPM XER Import/Export Data Map Guide (Project), Version 23Oracle · 2023
  2. 2P6 Professional Importing and Exporting GuideOracle · 2018 editionSource of every quoted export and import limitation in this post.
  3. 3General tab — Schedule Options dialog box (P6 Professional Help)Oracle · 2020
  4. 4Introduction to Project XML DataMicrosoft · Project 2007 schema
  5. 5Project XML Data Interchange Schema ReferenceMicrosoft · Project 2007 schema
  6. 6MPXJ FAQMPXJ (open source, maintained by Jon Iles) · current
  7. 7File Formats — MPXJMPXJ (open source, maintained by Jon Iles) · current
  8. 8DCMA-EA PAM 200.1 — EVMS Program Analysis Pamphlet, §4.0 (14-Point Schedule Metrics)Defense Contract Management Agency, U.S. DoD · October 2012Retrieved from a public mirror; the DCMA host blocks automated fetches.
Share this
LinkedInPostEmail