P6 and Microsoft Project

Calendar Exceptions: P6 vs Project

P6 calendar exceptions ≠ MSP Exceptions; not suspend; blob not bit-identical

P6 General tab. Activity Calendar is Trades - 5 Day Workweek.
This is the calendar field. Exceptions are calendar nonwork dates, not this General-tab pick.

What each actually is

P6: an exception is a day (or hours on a day) that is not the Standard Work Week. Oracle: “work or nonwork days or hours that are different than the standard hours defined on the Standard Work Week tab.” Set a date to Nonwork or back to Standard. A globe on the day means the base calendar has an exception; override it and the globe goes away; Set to Standard and the inherited exception returns. Primavera Cloud also: exception time as a block of hours, or a range Unavailable / Available. Imported iCal events that exceed the day’s standard worktime become all-day nonwork exception time.

Storage: CALENDAR.clndr_data (Oracle label: Data). Work week and exceptions live in that blob. Internal layout is unverified. Do not invent a parser from this note.

Project: holidays and one-off work/nonwork are Exceptions on Change Working Time (name + start/finish). Recurring exceptions (yearly Memorial Day, etc.) are a Project Details option. MSPDI stores them under the calendar Exceptions list. The Standard Work Week is a different grid (weekday hours).

Same idea, not the same object

P6Project
Week patternStandard Work Week tabChange Working Time week days
One-off / holidayCalendar day Nonwork / hours ≠ standardNamed Exception row
InheritanceGlobe = exception from base calendarResource/task calendar based on a base; exceptions can be local
RecurrenceRange / Manage Exceptions (Cloud); no Oracle “yearly Nth Thursday” sentence on the P6 pages citedRecurring exception in Details
Where storedclndr_data blobMSPDI Exceptions

MPXJ may flatten calendar hierarchy on write. Exception count and recurrence expansion can differ. See calendars-map.md.

What Do not treat as the same

  1. A P6 suspend gap is not a calendar exception. Suspend is TASK.suspend_date / resume_date. Calendar necking and activity-nonwork necking are two bar settings. See Suspend / Resume (Not a Calendar Exception, Not an MSP Split).
  2. Do not assume clndr_data round-trips bit-identical to MSPDI Exceptions. Weekday hours usually have an analogue; recurring / inherited / partial-day exceptions are unverified as complete.
  3. Do not drop inherited (globe) exceptions when copying a resource calendar off its base. Set to Standard restores the base exception.
  4. Do not treat Project “Exception” as P6 Expected Finish or a constraint.
  5. Do not invent a P6 global holiday dictionary inside MSPDI. MSPDI has a calendar list, not EPS-global vs project pools.

Sources

Back to top