Skip to content

07 Leveling

zhuoguangming edited this page Oct 5, 2026 · 1 revision

Leveling

The problem it solves

Automatic scheduling only guarantees that dependencies are satisfied, regardless of whether there are enough people. If two people are each scheduled for 100% of their work on the same day, there's no dependency problem, but in reality the work can't get done.

Resource leveling is: when a resource is scheduled beyond its availability on some day, push the tasks that can be postponed later, until everything fits—or until slack runs out.

How it decides who gives way

Rule Notes
Push with slack Only pushes tasks that have slack; the amount pushed never exceeds the available slack
Higher priority wins Tasks have a Priority field (larger value = higher priority). On a resource conflict, the higher-priority task keeps its slot
Pinned tasks never move Manually scheduled tasks and tasks held down by constraints are not moved by leveling
Respect the minimum delay A task can set a delay (delay by at least n workdays); leveling honors it and is clamped by the available slack

If it doesn't fit, say so honestly

Leveling is best-effort, not wishful thinking. When slack runs out, pinned tasks collide, or a resource simply can't be scheduled no matter what, Planit reports a conflict (which resource, which day, how much over)—it does not claim "leveled".

Beside the Gantt chart and on the resource view's timeline, the overloaded days are highlighted, so you can see at a glance who's double-booked.

Leveling is an undoable operation

Leveling is just one command—Ctrl+Z undoes the whole thing. Feel free to experiment.

Where to see the effect

  • Resources view: select a resource and the timeline on the right shows which tasks it's scheduled for on each day; overloaded days are highlighted.
  • Inspector → Resource tab: this resource's attributes and assignment list.
  • Outline / inspector: after a task's start/finish dates are pushed, its variance from the baseline grows too—see Baselines and Earned Value.

The full implementation of resource leveling (including comparison against real OmniPlan files) is still evolving; the current version follows the principle of "push only when there's slack, report when it can't be pushed".


Next: Baselines and Earned Value.

Clone this wiki locally