By Kenneth Steiness, Sensei Project Solutions, Inc.
Resource Leveling in Microsoft Project is probably one of the most misunderstood features available, yet it is one of the most important tools in the proactive project manager’s tool kit. We will provide a very comprehensive review of resource leveling in this article to help you get over any concerns you may have about it, and to hopefully convince you that it really does help develop a very effective project schedule (that doesn’t burn out your team from over-allocation).
Resource Leveling Overview
In its most simplistic form, resource leveling ensures that the project’s resource demand does not exceed the resource availability. When it does find an instance where the demand is greater than availability, it will attempt to correct the over-allocation primarily by changing the schedule to move tasks to a date when there is available resource capacity.
Figure 1- Resource Leveling Overview
Before leveling, Johnny was over-allocated on Monday and Tuesday and is scheduled to work 16 hours on each of these two days. The leveling process moved the second task forward to the next week when Johnny has capacity to complete the task.
Pre-requisites to resource leveling
Before using the automated feature, you will need to ensure that each resource has the appropriate project allocation set and that there are no manual over-allocations.
The automated resource leveling will NOT adjust tasks where the resource assignment is above Max Units, nor will it change the assignment level to resolve task/resource level over-allocations. Automated resource leveling will adjust only the scheduling of tasks, not the allocation of resources to tasks.
Use a Resource Usage view (with the appropriate columns exposed) to adjust the project allocation, check for manual over-allocations and view the peak assignments for resources:
- ‘Max Units’ is assigned at the resource level and is reset each time the schedule is loaded from the enterprise database. Therefore, if your project resource allocation is less than the enterprise resource load, this field needs to be adjusted to the appropriate project allocation each time you are working with resource leveling.
- ‘Assignment Units’ is set for each task assignment. This value is set when resources are assigned to a task. This field CANNOT be changed by the leveling process, so it is important to ensure that no individual assignment is greater than the max units the resource has for this project. Adjust these manually, as needed, if they do exceed max units.
- ‘Peak’ for each resource is calculated as a rollup of all the overlapping assignments. When the peak is greater than max units, the resource assignment will need to be changed or assignments moved to other resources.
In any resource view, over-allocated resources can be identified by the warning icon in the ‘Indicator Column’, as well as the resource name listed in red. The ‘Resource Usage’ view will highlight not only the resource itself, but also any specific assignments on the days it is over-allocated (or the summary allocation, as is the case here).
Figure 2 – Resource Usage View
The ‘Resource Graph’ view also provides a good overview of where resources are over-allocated and by how much.
Figure 3 – Resource Graph
While it is easy to spot Johnny’s over-allocation in the simplistic example above, it’s not so straightforward in a real project schedule with hundreds of tasks and dozens of resources. This is where the automated resource leveling functionality is especially effective and can help us recognize issues even in very large schedules.
From the ‘Resource ribbon > Level section’, there are a number of commands related to leveling. We start with ‘Leveling Options’, which brings up the ‘Resource Leveling’ dialog.
Figure 4 -Resource Leveling Dialog
Resource Leveling should always be a deliberate exercise, so set the ‘Leveling Calculations’ to ‘Manual’ to ensure the most control over leveling and avoid issues if multiple schedules are open.
Microsoft Project will show over-allocations only when they occur at a specified level of detail. For example, if you choose ‘Week by Week’, over-allocations will show only if the resource is booked more than 40 hours per week. That means you could end up in a situation where a resource works 40 hours in one or two days, but doesn’t show up as over-allocated. We recommend that you set ‘Look for overallocations on a’ to ‘Day by Day’ since this seems to be the appropriate level of detail for most organizations.
‘Level entire project’ will level all tasks regardless of date range, which is typically what we are looking for.
Set ‘Leveling order’ to ‘Priority, Standard’ to ensure that prioritized projects and tasks are scheduled appropriately and leave the remaining options unselected.
The ‘Leveling Gantt’ view is particularly effective for validating the results of leveling as the changes made by leveling are clearly visible in the Gantt area. With the ‘Leveling Gantt’ view selected, from the ‘Resource ribbon > Leveling section’, select ‘Level All’. This first pass at leveling is based on the options for resolving over-allocations discussed above.
Figure 5 – Schedule Before Leveling
Figure 6 – Resource Leveling Pass 1
As shown on the screenshots above, Microsoft Project has addressed the resource over-allocation on Johnny, but in doing so has moved the project end date. We will review these results in considerable detail, as it is important that you understand how this works, because it is critical that you develop trust in this feature.
First, notice the amount of ‘Change Highlighting’ visible: all but tasks 4, 5 and 6 were impacted by leveling. The most significant change was rescheduling the Review Current Documentation task to a future date where Johnny has availability. As a result of this change, the project’s overall schedule was also impacted as all successor tasks had to also be rescheduled – which ended up moving the project end date. If this change to the end date is acceptable, we declare levelling a success, as all resources are scheduled to work within the assigned max units. If, however, the end date is not movable, we explore some of the levelling options we turned off on our initial leveling pass – most specifically the first option in the third section – ‘Level only within available slack’.
By selecting this option, we’re effectively telling Microsoft Project that the finish date is not movable, and that leveling should make use of available slack only in non-critical path tasks.
Before we do this, we must ‘Clear Leveling’, thereby taking the project back to the original state where Johnny is over allocated. Next, we select the ‘Level only within available slack’ checkbox, save the changes, and then ‘Level All’ again. This time the results are in between the original and the previous attempt. The Review Current Documentation task is still rescheduled, but not as significantly; this resolves some of the over-allocation on Johnny, but not all, and most importantly, the finish date is not changed. Better, but not perfect.
Figure 7 – Resource Leveling Pass 2
In this example, the other leveling options will not improve this schedule, but we encourage you to explore these options as well as they may help with your projects.
Since we have exhausted all of the leveling options, we have the options of accepting the reduced over-allocation and asking Johnny to work overtime for the one remaining day, or of reviewing the estimates, resource assignments or task dependencies to remove the over allocation and preserve the end date. Resource leveling can do a lot for us, but as we have seen there will be instances where, given the project plan we have created, over-allocations cannot be fully resolved by the automated feature.
Setting task priorities to fine-tune resource leveling
While typically resource leveling will create a very effective schedule, there will be instances where it doesn’t give you the exact results you want. Specifically, this occurs when there are multiple independent tasks assigned to the same individual but the order of the schedule developed by Microsoft Project is different than desired. For example, you may have two tasks assigned to Johnny, one to develop Training Materials and the other to develop Operational Documentation, and resource leveling schedules the Operational Documentation first, but we would prefer that the Training Materials be completed first. While we could accomplish the proper sequence using Dependencies, it is not recommended as this would introduce an artificial dependency based on Johnny’s availability, something we want to avoid as future resource changes (getting Betty to do the documentation, for example) would still be impacted by this artificial dependency. Instead, we recommend setting the ‘Priority’ on the task higher than the default 500 to achieve the desired results. We enter the ‘Priority’ from the ‘Task Information’ dialog or by adding the ‘Priority’ column. With the ‘Priority’ set, the tasks within a project will be rescheduled as desired the next time we level the resources.
Figure 8 – Setting Task Priorities
Figure 9 – Leveled Schedule without priorities
Figure 10 – Schedule after leveling with Priorities set
As you can see from the above, resource leveling is a very powerful feature in Microsoft Project that helps you build a realistic project schedule while ensuring that resources are properly allocated.
This article has been extracted from the book Proactive PPM with Microsoft Project 2016 for Project Server and Project Online.
Ready to learn more? If you have any questions, we’d love to hear from you! Contact us here.