Calendars
P6 Calendars (Global, Project, Resource, Activity)
Global / project / resource / activity calendars; remaining duration in calendar time

A calendar is the workweek the scheduler walks. Remaining duration is working time on that calendar, not a wall-clock count of days. P6 keeps calendars in three pools: global, project, and resource.
What the field is
Every activity draws its calendar from the global or project pool — the assignment is TASK.clndr_id — while each resource carries its own calendar in RSRC.clndr_id. Plan Academy notes that a resource may be assigned a global or a resource calendar, but never a project calendar.
There is no fourth stored "activity calendar" table. What planners call the activity calendar is simply the global or project calendar already assigned to that activity through TASK.clndr_id. Which calendar actually governs remaining work depends on how the activity is driven: resource-dependent activities use the calendars of their assigned resources when scheduling remaining work; task-dependent activities use the activity's own assigned calendar. Oracle: "Activity calendars can be assigned from the global calendar pool or the project calendar pool."
Professional and EPPM diverge on one point: Oracle's XER map marks CALENDAR.rsrc_private as "Personal Calendar (P6 EPPM only)." Do not assume Professional writes that column the same way.
The CALENDAR table carries day_hr_cnt, week_hr_cnt, month_hr_cnt, and year_hr_cnt for hours per period, base_clndr_id for the parent calendar, and clndr_data — Oracle's label for that column is simply "Data." The work-week pattern and the exception dates for holidays and non-work days both live inside that blob. Its internal layout is unverified here; do not invent a parser from this note.
Oracle defines Remaining Duration as "the total working time from the activity remaining start date to the remaining finish date," calculated using the activity's calendar. Before an activity starts, remaining duration equals planned duration. After it finishes, remaining duration is zero.
The hours-per-day figure used when converting displayed days into stored hours is not fixed. It depends on the Admin/Application time-period settings and on whether "Use assigned calendar to specify the number of work hours for each time period" is turned on. Oracle's own schedule-options help: a "1 day" float threshold can convert to either 5 hours or 20 hours, purely depending on those two settings, with no change to the underlying schedule.
What it is not
A calendar is not a WBS, not a shift, and not the Data Date. A shift is a 24-hour limit used in leveling. The Data Date is the as-of. Relationship lag consumes hours on a schedule option calendar (predecessor, successor, 24-hour, or project default) — that is not TASK.clndr_id.
Oracle's XER map lists clndr_type as "Calendar Type" but does not publish the values. Plan Academy refers to CA_base and CA_Project when editing XER calendars by hand; those tokens — along with CA_Rsrc — are unverified against Oracle documentation until confirmed on a live XER.
Must not
- Invent a fourth stored activity-calendar table.
- Invent
clndr_typecodes (CA_base,CA_Project,CA_Rsrc) and call them Oracle. - Treat remaining duration as calendar days without the activity calendar.
- Assume Professional writes
rsrc_privatethe way EPPM does. - Use the lag-calendar option as if it were the activity calendar.