Importing from Primavera P6 (XER and CSV)

LogicReader accepts two flavours of input today: XER (Primavera P6’s native exchange format) and CSV (a flat tabular fallback). XER is preferred when you have it; CSV is the back-up for environments where XER export is restricted.

Why XER is the preferred input

An XER carries the schedule with all of its structure intact:

  • Every activity carries the unique P6 task_id, so we never have to guess which row is which when versions change.
  • The full WBS hierarchy comes through, parent-child intact — no string-splitting on dots.
  • Dependencies carry their relationship type (FS / SS / FF / SF) and any lag.
  • Calendars, durations, total float, free float and constraints all come across.

If you can export an XER, do.

When CSV is the right choice

Some clients lock down XER export — usually because XER reveals more than the project sponsor wants outside their walls. CSV is the back-up. It is not a stub format: every LogicReader feature works on a CSV-loaded schedule, including compare, isolate, and critical path.

The trade-off: a CSV does not carry the unique P6 task_id. We synthesise an identifier from (project_id, task_code). That works as long as the user-visible activity code is unique within the project — which it usually is, but not always. If you are comparing two revisions and rows go missing, it’s almost always because the activity code repeats inside one of the files.

Expected CSV columns

Required columns (case-insensitive, in any order):

  • project_id — a stable identifier for the project this row belongs to.
  • task_code — the user-facing activity ID (must be unique within project_id).
  • task_name — the activity name as it should appear on the canvas.
  • start_date, finish_date — ISO-8601 dates (YYYY-MM-DD) or P6’s standard format.
  • wbs_path — the WBS hierarchy as a forward-slash-separated path, e.g. Project A / Substation / Civils / Earthworks.
  • predecessors — comma-separated list of task_code values, optionally with relationship and lag in parentheses, e.g. A100(FS+5d), A200(SS).

Optional columns we read if present: duration, total_float, free_float, constraint_type, constraint_date, calendar, resource.

Common pitfalls

  • Excel-mangled dates. Excel happily turns 2026-05-10 into a serial number then back into a different string. Always export from Excel as text, or use the CSV directly from P6.
  • Activity code repeats. Two activities with the same task_code in the same project_id will collide. The XER avoids this; CSV cannot.
  • WBS path containing forward slashes. If a WBS element legitimately contains a slash in its name, escape it as /.
  • Encoding. Save as UTF-8. Latin-1 / Windows-1252 will work for ASCII but mangle accented characters and the µ symbol used in some calendars.

Multi-project files

You can load several projects into the same LogicReader session. They appear in the Projects panel and you can toggle each one’s visibility independently. The composite key (project_id, task_code) means activities never collide between projects, even if both projects use the same numbering scheme.

This is the foundation for the Compare feature: load v1 and v2 of the same schedule as two projects, then ask LogicReader to diff them.

Scroll to Top