You have a project with several tasks and resources assigned to those tasks. Some resources are assigned to multiple tasks, resulting in over-allocated resources.
Resource leveling is the act of taking a resource-loaded schedule and making it so that those people don’t have to work overtime. The main goal is to have a critical path that is corrected for resource dependencies. Furthermore, all other tasks and deliverables should have reliable finish dates.
Author Sander Nekeman recently delivered an in-depth look at the resource leveling feature during a live webinar with MPUG. Watch the PMI® PDU eligible session on-demand to gain a better understanding of the topic.
Manual resource leveling means that you reassign or take action to resolve potential problems. Microsoft Project also has a feature that evaluates your work and resource allocations and adjusts your schedule so that your resources have no over-allocations.
Some people call this a bug; others are just afraid of it; and still others can’t live without it. No matter where you stand on the use of resource leveling, I’ve written this article to lay out the basics. After all, what you don’t know could end up allowing Project to “mess up” your schedule.
One reason some project managers prefer not to use resource leveling in Project is because they don’t fully trust the tool. Project could come back with unexpected or strange results. When that happens, it means somebody hasn’t checked the completeness and correctness of the schedule’s network logic (dependencies or links). If, for instance, you didn’t use a dependency to indicate that the task of “reviewing document” has to take place after the task, “writing document,” resource leveling might reorder them nonsensically since Project has to rely on the leveling algorithm.
The elegance of automatic resource leveling is that it will solve the over-allocations based on the settings, just like Excel would do the calculation for you based on the formulas you enter.
Since automatic resource leveling respects all settings within your schedule, your schedule should adhere to some basic guidelines to take advantage of the logic in the program’s leveling algorithm. Let’s examine that logic more closely.
Resource Leveling Scope
A misconception we often hear is that resource leveling is only one button with enormous consequences. If you don’t want to level your whole project at once (Level all), you can also level on a per-allocation basis. This keeps you very much in control and on top of the changes. We advise always starting with the most critical resource (on the critical path) and working your way through as resources become less important for the timing of your project.
Project offers the following ways of dealing with resource leveling (starting with the smallest incremental changes to your schedule):
- Reschedule to available date: only one task will move;
- Level selection: only the tasks you select will be leveled;
- Level resource: only one resource you select will be leveled; and
- Level all: level all resources at once
Resource Leveling Order
When solving over-allocation, Project chooses which task to put first and uses a certain logic (algorithm) to achieve this. For each task in the schedule, a score value is calculated based on all factors that have an impact on the leveling process:
- Tasks are scheduled in the order of the calculated value. Tasks with a lower score are pushed out further in time;
- Resource leveling only splits and delays (!) tasks; and
- Tasks will never be scheduled to start earlier than initially planned, even where it’s possible. Leveling twice without clearing leveling will result in introducing more delay.
The leveling “score” for each task is calculated based on:
- Task ID: This is the order in the schedule from top to bottom. Tasks with a lower ID get a better score (very little impact on the score though);
- Duration: Tasks with a longer duration get a higher score;
- Constraints and dependencies: They have a negative impact on the score, because Project will honor constraints and dependencies (if set in options > schedule > task will always honor their constraint dates); and
- Priorities: Have a big impact on the score. A higher priority has a higher score. (Priorities are only a “hint” for Project, and are NOT always honored). Priorities can be set in Task information > General > Priority. Of course, this field can also be added as a column to the task views.
Resource Leveling Options
Next to the regular scheduling options (constraints, dependencies) and the leveling algorithm, it’s important to understand the impact of each resource leveling option that can be found by clicking Resource tab > Leveling Options:
- Automatic vs Manual: Choosing “automatic” calculates and levels your schedule automatically each time something changes. When choosing “manual,” you need to click the level resources button.
- Day by Day, Week by Week, etc. Determines when the red puppet will appear. Day by day basis means that puppets will be red at more than 8 hours in a day; week by week more than 40 hours in a week, and so on.
- Clear leveling values before leveling: Having this option on makes sure each leveling action uses a new start, instead of continuing on top of the already leveled tasks.
- Leveling order. Choosing “ID,” it will only use the location in the schedule to determine which task goes first. Choosing “standard” will use the algorithm logic as explained previously and weighs in the priority field for the leveling score. Choosing “priority, standard” means that the priority will always precede the factors of the standard algorithm.
- Level only within available slack. Having this option on won’t increase the duration of your schedule. It will only solve the over-allocation up to the point that there is available slack.
- Leveling can adjust individual assignments on a task. Having this option on enables resources to start on a task when they’re available. This means that tasks scheduled to start at the same time could start at a different moments depending on the resource availability. Additionally, if you have more than one resource assigned to a task, this allows one person to start and another person to join when available.
- Leveling can create splits in remaining work. Tasks are allowed to depart the work for another task or meeting and resume at a later moment. Without this option ticked, a 10-day task would be planned when there is a 10-day gap in the availability of the resource. With this option ticked, it will split the work over shorter periods of availability. This means that this option ticked will create much shorter lead times for the schedule.
- Level resources with the proposed booking type. Project has the ability to indicate whether an assignment is only proposed or definitively booked. Default is always definitively booked. This option will have no consequences for you if you don’t change the booking type of the resource.
- Level manually scheduled tasks. Manually scheduled tasks aren’t moved by Project. With this option you can have Project level these tasks as well.
The following image shows our preferred settings, which also mirrors the settings shown when somebody has completed all the “It’s-your-turn” assignments.
The Resource Allocation View
The Resource Allocation view (view tab > more views > resource allocation view) is perhaps the best view to use when you have Project do the leveling for you. This combination view combines the resource usage view and the Leveling Gantt view. To understand and appreciate its value, look at the images below. The first shows an over-allocation; the second shows the delay of each task as a consequence of the leveling action.
The olive-green bar represents the pre-leveled task and the olive-green line is the leveling delay. The field leveling delay keeps track of the number of days the task was delayed as a consequence of the leveling action. These are called “edays,” short for elapsed days.
Finally, Try Resource Leveling Yourself!
Get confidence in the feature by recreating the following situation in MS Project. Create each task one by one and click “level all” to learn what got pushed out and what Project found more important. What you’ll see is that mostly the task with the most amount of (Total) Slack is pushed out. Quite logical isn’t it?