Finally: The Resource Leveling Feature Explained
You have a project with several tasks, and resources assigned to those tasks. Some resources are assigned to multiple tasks, which has resulted in some overallocated resources.
Resource leveling is the act of taking a resource-loaded schedule, and making it so that they 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.
Manual resource leveling means that you reassign or take action to resolve this. MS 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 again others can not live without it. How it may be (yet unexplained behavior is often called a bug ;-)), there is a lot of unclarity that needs to be explained. Because actually it is a simple feature, you just need to know a couple of things. Then again, if you are not aware of one of these things, MS Project might ‘mess up’ your schedule.
A question we hear quite often. If you have a tool at your disposal, why wouldn’t you use this? A reason could be that you do not fully trust the tool yet. MS Project could come back with some strange results, but whether it does, totally depends on whether you have checked the completeness and correctness of your schedule’s network logic (dependencies or links). If for instance you did not use a dependency to indicate that ‘reviewing document’ has to take place after ‘writing document’, resource leveling might put the order incorrect since it solely relies on the leveling algorithm.
Why do things manually if you can have the tool do it for you automatically? Automatic resource leveling will solve the overallocations based on the settings, just like Excel would do the calculation for you based on the formulas you put in.
As automatic resource leveling respects all settings within your schedule, your schedule should adhere to some basic guidelines, such as proper use of links and constraints (Critical Path Management). Next to these settings, MS Project uses a certain logic to determine which task to put first and which ones to delay when resolving the overallocation. This logic, the leveling algorithm, will be explained in the next couple of pages.
A often heard misconception is that it is only one button with enormous consequences. If you do not 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. Always start with the most critical resource (on the critical path) and work your way through as resources become less important for the timing of your project.
MS 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
- Level all: level all resources at once
These ways will be further explained in our e-course Resource Management.
For leveling your whole project at once, or by using any of the incremental steps, the MS Project leveling algorithm and the leveling options apply!
When solving overallocation, MS 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
- Tasks will never be scheduled to start earlier than initially planned, even if possible. It is even so, that 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, as MS Project will honour constraints and dependencies (if set in options > schedule > task will always honor their constraint dates).
- Priorities: have a big impact on the score. A higher priority has a higher score. (Priorities are only a ‘hint’ for MS Project, and are NOT always honoured). Priorities can be set in Task information > General > Priority. Of course, this field can also be added as a column to the task views.
Next to the regular scheduling options (constraints, dependencies) and the leveling algorithm, it is important to discuss the resource leveling options that can be found by clicking Resource tab > Leveling Options:
- Automatic vs Manual – Choosing ‘automatic’ will calculate and level 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 on a day. Week by week more than 40 hours in a week, etc.
- 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 in the previous paragraph and weighs in the priority field for the leveling score. Choosing ‘priority, standard’ means that the priority will always preceed the factors of the standard algorithm.
- Level only within available slack – Having this option on will not increase the duration of your schedule. This also means that it will only solve the overallocation up to the point that there is available slack.
- Leveling can adjust individual assignments on a task – Having this option on allows that resources could start on a task when they are available. This means that tasks which are 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 already start and another person to join when available.
- Leveling can create splits in remaining work – Tasks are allowed to split 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 – MS 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 did not change the booking type of the resource.
- Level manually scheduled tasks – Manually scheduled tasks are not moved by MS Project. With this option you can have MS Project level these tasks as well.
These settings are personal (and do not come with our template), so you can choose to deviate from the default settings where you prefer. In this image you see our preferred settings, which is exactly set like this when you have completed the assignment in our online training course.
The settings can also be applied on a task level, by inserting the column with these names in your view.
A useful help: 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 MS 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, have a look at the images below. The first shows an over allocation and in the second you will see 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 it 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 MS Project found more important and see that mostly the task with the most amount of (Total) Slack is pushed out, quite logical isn’t it?