Resources & Cost

Resource Leveling Delays Work Until Units Fit

Leveler delays activities to fit max units; not Calculate schedule; no Leveling Delay column

P6 Resources tab. Assignment columns include Resource, Start, Finish, and units.
These are assignment rows. Resource leveling delays activities for limits. It is not Calculate schedule.

What a planner means

Level Resources (in EPPM: Actions → Leveler) is a separate job from scheduling. It compares assignment demand against a resource's maximum quantity available and delays an activity whenever units are short. Oracle describes the mechanics as typically a forward pass to find the earliest dates that fit, followed — if that push affects the project finish — by a backward pass that recalculates late dates.

Leveling is not the same operation as Schedule. Calculate schedule can optionally also level resources, but only if "Level resources during scheduling" is turned on. That checkbox, per Oracle, is stored at the user level rather than as a project field, and it is unavailable to a user who lacks leveling privilege. Leveling itself never reassigns people to different roles or resources — it only shifts dates — and a red histogram on its own is not proof that a leveling run ever happened.

Options that change the dates

Several dialog options on Level Resources directly change which dates come out the other side. "Preserve scheduled early and late dates," when on, keeps the current early dates and forward-levels only; when off, it also backward-levels from the project's late finish, which means an activity can be pulled earlier if its late dates carry no unit conflicts, and both early and late dates get updated as a result. "Level resources only within activity total float" caps any delay at the activity's late dates — late finish if the activity has finish float, late start if it has start float. "Preserve minimum activity float" reserves a number of hours of total float that leveling is not allowed to spend; Oracle's own example has an activity with 5 days of float and 16 hours (2 days at 8 hours) preserved, which limits the possible move to 3 days — and the field accepts shorthand like 2w or 3d, which P6 converts to hours automatically.

"Maximum percent to over allocate resources" sets how far above the maximum units the leveler is permitted to go on a given run. "Consider assignments in other projects" applies only to projects whose priority is equal to or higher than a chosen threshold, where 1 is the highest priority; for closed projects specifically, Oracle assumes the resource is available 24 hours a day, seven days a week for the whole activity, and the resource's own calendar is not used at all. "Recalculate assignment costs" applies cost recalculation as part of the leveling run. The leveler can also be scoped to all resources or to a selected subset, and its prioritization is an ordered list of fields — Project Leveling Priority, Activity Leveling Priority, or another chosen field — sorted Ascending, Descending, or by Hierarchy.

Priorities (two different scales)

Project Leveling Priority and Activity Leveling Priority are not the same scale, and confusing them produces a leveling run that ignores the priority a planner actually intended.

RangeDefaultXER
Project Leveling Priority1 (highest) … 100 (lowest)10PROJECT.priority_num
Activity Leveling PriorityTop, High, Normal, Low, Lowest (Oracle API / reporting)Normal (UI example)TASK.priority_type

Do not invent PT_* stored tokens for the activity scale. And PROJECT.strgy_priority_num is Strategic Priority, an entirely different field from anything the leveler reads.

XER

Leveling is a command, not a stored delay. It writes new dates directly onto the activity, and Oracle's project XER map has no Leveling Delay field at all — do not invent leveling_delay_hr_cnt.

ColumnOracle label (or published name)
PROJECT.priority_numProject Leveling Priority
TASK.priority_typeActivity Leveling Priority
SCHEDOPTIONS.level_all_rsrc_flaglevel_all_rsrc_flag
SCHEDOPTIONS.level_within_float_flaglevel_within_float_flag
SCHEDOPTIONS.level_keep_sched_date_flaglevel_keep_sched_date_flag
SCHEDOPTIONS.level_outer_assign_flaglevel_outer_assign_flag
SCHEDOPTIONS.level_outer_assign_prioritylevel_outer_assign_priority
SCHEDOPTIONS.level_over_alloc_pctlevel_over_alloc_pct
SCHEDOPTIONS.level_float_thrs_cntlevel_float_thrs_cnt
SCHEDOPTIONS.LevelPriorityListLevelPriorityList

The XER map prints those level_* names as their own labels rather than translating them into friendlier UI titles; the actual meaning of each option is documented on the Level Resources pages, not in a second set of Oracle column titles.

Microsoft Project

MSP stores Leveling Delay directly — as elapsed duration from early start on the task, or as working duration on the assignment — and Clear Leveling zeros it back out. Priority in MSP runs 0–1000, with 1000 meaning "do not level" and 500 as the default. MSP leveling can split tasks and adjust individual assignments independently, and "Level only within available slack" is its equivalent of a float cap.

Do not map P6's 1–100 scale, or its Top/High/Normal/Low/Lowest scale, onto MSP's 0–1000 as though they were the same numbering. Do not invent a P6 Leveling Delay field to match MSP's.

Don't

  • Treat Calculate schedule as leveling, or a red histogram as "already leveled."
  • Invent a Leveling Delay XER column.
  • Map TASK.priority_type or PROJECT.priority_num onto MSP Priority 0–1000.
  • Treat closed-project assignments as using the resource calendar (Oracle: 24×7).
  • Treat assignment lag as leveling delay. See Assignment Lag.

Sources

Back to top