Resource leveling is one of the most misunderstood features in Primavera P6. I’ve watched schedulers click the “Level Resources” button like it’s a magic fix, then spend the next two days figuring out why their schedule now finishes eight months late.
Here’s what I’ve learned after running leveling on everything from 500-activity building projects to a 12,000-activity oil & gas turnaround.
What Leveling Actually Does
P6’s resource leveling engine does exactly one thing: it delays activities to resolve resource over-allocation.
It does not:
- Add resources to shorten durations
- Split activities across time periods
- Negotiate scope reductions with your client
- Suggest alternative resource assignments
When you have a pipe fitter assigned to three activities on the same day, leveling picks one to do first, one second, and one third. The other two get pushed out. That’s it.
The algorithm walks through your schedule in time order, checks resource availability against assignments, and delays activities that would cause over-allocation. The order in which it resolves conflicts depends entirely on your leveling priority settings.
Prerequisites — Skip These and Leveling Is Useless
I can’t stress this enough. Running the leveler on a schedule that isn’t set up for it produces garbage output.
Proper resource assignments with realistic units. If your electrician is assigned at 8h/d to every activity but actually splits time across three tasks, your leveling results will be fiction. Assign realistic hours. A crew lead who spends 4 hours a day supervising and 4 hours on paperwork should be assigned at 50%, not 100%.
Accurate resource calendars. Not everyone works Monday through Friday, 8 hours a day. Your field crews might work 10/4 schedules. Your shutdown team works 6x12. If your resource calendars say 40 hours but reality is 60, leveling will over-correct and push work out further than necessary. I once cut three weeks off a leveled schedule just by fixing resource calendars to match the actual shift patterns.
Activity priority values set intentionally. P6 assigns a default priority of 10 to every activity. If you leave them all at 10, the leveler resolves ties by Early Start date, which is often fine — but not always. Critical procurement activities should get higher priority than nice-to-have landscaping tasks. Set priorities deliberately for at least your top 20% of activities.
Logic-driven schedule. If your schedule is full of hard constraints — “Must Start On” and “Must Finish On” dates everywhere — leveling fights the constraints. It can’t push an activity out if a constraint pins it in place. The result is either ignored over-allocations or error messages. A logic-driven schedule with Finish-to-Start relationships gives the leveler room to work.
The Settings That Matter
Open the Level Resources dialog (Tools → Level Resources) and pay attention to these:
Level resources only within activity Total Float. This is the safer option. The leveler will only delay activities that have float to absorb the delay. It won’t push anything past the project finish date. The trade-off: it might not resolve all over-allocations. Some conflicts can only be fixed by extending the project.
Preserve scheduled early and late dates. When checked, P6 saves your pre-leveling dates so you can compare. Always check this box. You need to know what changed.
Leveling priorities. I use this order:
- Project priority (for multi-project leveling)
- Activity priority
- Early Start date
- Total Float (ascending — activities with less float get priority)
This keeps critical and near-critical work from being delayed in favor of activities with months of float.
Max hours/time period. This sets the capacity ceiling for each resource. If you have 3 electricians, each at 8h/d, your max is 24h/d. P6 uses this to determine when a resource is over-allocated.
When Leveling Works
Resource-constrained environments. You have 4 welders and 4 welders only. No hiring, no overtime, no subcontracting. The schedule must reflect that reality. Leveling does this well.
Long-term portfolio planning. When you’re looking at 18 months of projects across a program, leveling shows you where resource demand exceeds capacity. I ran a portfolio-level leveling for a defense client across 14 projects and 200+ resources. The leveled histogram showed a clear bottleneck in Q3 that no one had noticed. That alone justified the effort.
Construction schedules with crew constraints. A concrete crew can only pour one foundation at a time. If your schedule shows them pouring two simultaneously, leveling sequences those activities correctly.
When Leveling Doesn’t Work
Early-stage planning. Your logic isn’t tight enough, your durations are rough estimates, and your resource assignments are placeholders. Leveling this schedule produces precise-looking nonsense. At this stage, do rough-cut capacity planning in a spreadsheet.
Time-constrained projects. The deadline is fixed by contract. Leveling tells you the schedule can’t finish on time with available resources — which is useful information, but it’s not a solution. The solution is adding resources, reducing scope, or extending the deadline. Leveling just quantifies the problem.
Schedules with poor logic. If 40% of your activities have no predecessors, leveling will sequence them arbitrarily based on priority and dates. The results look random because the schedule itself has no logical backbone. Fix the logic first.
Heavily constrained schedules. I once saw a 3,000-activity schedule where over 800 activities had “Start On” constraints. Leveling did almost nothing because every activity was pinned in place. The scheduler complained leveling was “broken.” It wasn’t — the schedule was.
The Before/After Analysis
Never level without comparing results. Always:
- Save a baseline or copy before leveling. Use “Preserve scheduled early and late dates” at minimum.
- Check total project duration. How much did leveling push the end date? On a recent infrastructure project, leveling added 11 weeks. That’s real information your project manager needs.
- Identify which activities moved. Sort by the difference between pre-leveled and post-leveled start dates. The activities that moved the most are your leveling-critical activities.
- Look for new critical paths. Leveling creates resource-driven critical paths that don’t show up in a CPM analysis. An activity with 60 days of float might become critical because the resource it needs is the bottleneck.
- Check the resource histograms. Did the peaks actually flatten? If you still see over-allocations after leveling, something is wrong — usually a constraint preventing the activity from moving.
Manual vs. Automatic: The Pragmatic Approach
Here’s what I actually do on most projects:
Step 1: Run auto-leveling on the full schedule. Look at the overall impact.
Step 2: Identify the top 10-15 resource conflicts driving the biggest delays.
Step 3: Undo the auto-leveling.
Step 4: Manually resolve those top conflicts by adjusting logic, resequencing, or reassigning resources. This gives you operationally sensible results because you understand the work.
Step 5: Re-run auto-leveling to catch the remaining minor conflicts.
Pure auto-leveling on a large schedule often produces results that don’t make operational sense. The algorithm doesn’t know that pouring the north foundation before the south foundation requires remobilizing the crane — a human scheduler knows that.
Most experienced schedulers I know follow some version of this hybrid approach. The leveler is a tool, not an oracle. Use it to identify conflicts and quantify impacts. Use your judgment to resolve them.
One Last Thing
After leveling, always run a schedule check (Tools → Schedule → F9) to recalculate. Leveling changes activity dates, and you need a clean forward/backward pass to see accurate float values. I’ve seen people make decisions based on post-leveling float numbers that were stale. Don’t be that person.