P6 and Microsoft Project

Calendar Data That Typically Survives XER ↔ MSPDI

Work weeks vs exceptions that typically survive XER ↔ MSPDI

P6 General tab. Activity Calendar is Trades - 5 Day Workweek.
The activity calendar is a P6 field. Project base/task/resource calendars do not map 1:1.

Never write a real MPP. Generate MSPDI.

Models (do not force them to match)

P6 (Oracle / MPXJ): Global, Project, Resource (Shared or Personal). Project calendars may derive from a Global. Resource calendars may derive from a Global or have no parent. Activity clndr_id is required (global or project pool). Work week + exceptions live in CALENDAR.clndr_data (Oracle label: Data). Blob layout is unverified.

Project (Microsoft): Base templates + one project calendar + optional task calendar + per-resource calendars derived from a base. Task calendars are optional.

MPXJ: reads both into ProjectCalendar (hours per weekday, exceptions, work weeks, parent). On write, MPXJ "may end up flattening or otherwise simplifying" a hierarchy so the target app gets something functionally equivalent.

Typically survives (has an analogue)

FromToCaveat
Weekday working / non-working + hoursMSPDI week days / P6 week in clndr_dataHours/day may not match Admin time-period settings
Named one-day or range exceptionsProject exceptions / P6 exceptionsRecurrence expansion can differ
Calendar name + assignment to task/activityTask calendar (Project, optional) / TASK.clndr_idProject files often have no task calendar
Resource calendarResource calendarP6 personal vs shared is not an MSPDI concept
Hours per day/weekday_hr_cnt / week_hr_cnt vs Project MinutesPerDay / MinutesPerWeekConversion uncertain if "use assigned calendar for time periods" is on

Usually does not survive cleanly

  • P6 global dictionary as a first-class pool inside MSPDI (MSPDI has a calendar list, not EPS-global vs project pools).
  • clndr_data blob round-trip bit-identical.
  • P6 resource-cannot-use-project-calendar rule (Plan Academy) vs Project resources based on the project/base calendar.
  • Lag calendar option (P6 pred/succ/24h/project). Project lag calendar is unverified.
  • Personal resource calendars (rsrc_private, EPPM-only column).

Uncertain (do not implement as fact)

  • Whether MPXJ writes every P6 exception (including recurring / work-week date ranges) into MSPDI Exception records completely.
  • Whether MSPDI WorkWeek survives back into P6 clndr_data.
  • Hours-per-day used when expanding XER *_hr_cnt into Project durations.
  • Stored clndr_type codes (CA_Base / CA_Project / CA_Rsrc are unverified against Oracle).

Sources

Back to top