Resource Management: Lost in the Woods? Here is Your Way Out

Resource management is a complex subject. There are many aspects to resource management using Project Server or Project Online. Just look at this course from ProjectPro Corp that outlines those aspects:

Capacity planning, demand management, balancing, allocation, optimizing and leveling. These are just some of the terms that you need to be aware of when venturing into resource management. There is even one more: Resource Finding, which is what headhunters and large consulting firms, like E&Y, Deloitte, PWC, Accenture and McKinsey often do.

This article focuses on two important elements from the training course mentioned previously: capacity planning and demand management: Creating a clear overview on how much effort is needed given a portfolio of projects and accommodating that need by carefully allocating resources to projects. There are many options for just these two and the details can make you feel lost.

Capacity Planning and Demand Management

Capacity planning is calculating how many resources you need for the demand of resources given a portfolio of projects. This is what consulting firms do that hire from across the world or firms like Tesla that are in a growth tornado. The approach is to adjust the capacity to the demand you want to meet and hire (or fire) resources accordingly.

The opposite of capacity planning is demand management: You will not vary your capacity and adjust the demand for resources instead by staggering the start dates of projects in such a way that you stay within this fixed resource capacity. In other words: You manipulate the demand for resources by scheduling projects carefully.

Whether you do capacity planning or demand management, as the flip‑side of the coin, you need to capture the demand for resources in programs, projects and operations, in other words, you need to model their workloads.

Project Online/Server offers different methods on how to capture demand. Here are the obvious choices that are available to you. You can:

  1. Use Generic Resources Only
  2. Use Actual Resources Only
  3. Combine Generic and Actual Resources

A) Use Generic Resources Only

Your organization might only be interested in the allocation of roles or functions. If this is the case, you could populate the resource pool with only generic resources. These are resources that are roles, not people of flesh and blood. For roles, you can use generic resource names such as: carpenters, programmers or trainers. You can indicate to MS Project that a resource is generic by setting the field Generic to Yes in MS Project or selecting ✓ Generic in PWA when creating new resources.

Generic resources are great for capturing future demand for certain roles. A role is a set of related skills needed to perform the role. You will (hopefully) never meet a generic resource in the hallways of your organization, because generic resources are an abstract concept without physical presence, which is why some people call generic resources jokingly ‘zombies’. Other people call them jokingly ‘clones’, because of the ease with which you can increase or decrease the number of them in what-if scenarios.

Should your generic resources in this situation have 0% Max. Units or Max. Units set to the number of resources in that role present in your organization?

The Max. Units in Microsoft Project represent the percentage of time a resource is expected to work on projects. A manager might only work on projects for 40%, i.e. two days a week. A consultant may be full time on projects: Max. Units = 100%.

In the situation where you ONLY work with generic resources, we recommend that you set the Max. Units to represent the number of resources you have in a certain role. For instance: you have 5 carpenters in your company, hence, you set the Max. Units to be 5 (or 500% expressed as a percentage). In the screenshot below, you can see we assigned Carpenters in increasing numbers to their activities, but with 500% Max. Units there is no overallocation:

What happens if you set Max. Units for the generic resource to 0%? You are basically telling MS Project that the resource doesn’t have any availability to work on projects. Every allocation with a generic resource with 0% will also show a burning man (red man) in the task-related field Indicator letting you know that there is an over-allocation, even though there really is no issue, after all, there really are 5 carpenters that can work on the tasks: Project is now only capturing demand, but no capacity, as you can see in the screenshot from Project Online below:

A final problem with Max. Units = 0 generic resources is that assigning them is hard, because it introduces a 0 (zero) for Units in the formula: Duration * Units = Work. We can conclude from this discussion that if you work with generic resources ONLY, you need to ensure that Max. Units represent the number of resources you have available to your project in that role.

If skill level is an issue, you could model this with two generic resources instead of one, for example, Senior Java Programmer and Junior Java Programmer instead of using actual resource names.

B) Use Actual Resources Only

Actual resources are the Tom, Dick and Harry’s; actual people of flesh and blood, so definitely not ‘zombies’ or ‘clones’. Actual resources are on a finer level of detail when using them for purposes of resource management. After all, you may have a single generic resource titled ‘Java programmer’, but you may have Mary, Charles, John, Megan and Chase as your Java programmers. As you can see, the amount of data to handle has just exploded by a factor of five when switching from generic resources to actual resources. Actual resources are needed when you want to model workloads on an individual‑by‑individual basis, or if you want to create to-do lists for individuals.

Actual resources are the default type and you just need to enter their Resource Name in MS Project.
If you use Project Online / Project Server, you need to make sure you retrieve the actual resources from the shared resource pool (ribbon Resource, button Add Resources, item Build Team from Enterprise).

The upside of using actual resources is that you get a better understanding of over/under‑utilization of individuals. For instance, Mary may be the favorite Java Programmer, but if you didn’t have Mary as an actual resource in the schedules, you would not know she is constantly overallocated. Some other resources may be flying under the radar, while as a group their workload looks healthy.

Another upside is that you can specify hourly rates more accurately with different actual resources. Mary might be a senior programmer where Chase might be junior. You can see the aggregated workloads for the team in the next stacked‑bar chart where each color represents the workload for one person on the team:

The problem with actual resources ONLY is that they make planning the capacity for the long term hard. It’s very difficult to plan all work out for a two-year timeframe and capture all demand at the start of those two years. It is too hard to assign actual resources many months ahead, because you do not know if they will still be around or if they will still be working in their current role. There is too much re‑work in scheduling with actual resources only.

In conclusion: Working with actual resources only makes it hard to capture demand and capacity for the longer term: You will probably NOT be able to get a clear allocation and thereby capacity planning for the longer term.

C) Combine Generic and Actual Resources

If you consider the dilemma with actual resources ONLY, we might look at a solution where we enter both actual and generic resources into our shared resource pool. As we will see, there’s a downside to this as well.

When we had generic resources only, we concluded that we need to set the Max. Units of generic resources to the number of resources working in that role. However, a generic resource called Java programmers with Max. Units equals 5 as a decimal (or 500% as a percentage), artificially doubles the resource capacity for that role, because Mary, Charles, John, Megan and Chase are in the resource pool as well as actual resources, so Project Online / Project Server ‘sees’ a total of eight people in the capacity of Java programmers and ‘thinks’ there is double the actual resource capacity:

As you will understand, this will wreck our capacity planning and demand management; the capacity line is twice as high as it should be: 10 resources * 176 hours/month = 1760 hours.

There is a fourth, better option that we would like to recommend when you combine actual and generic resources in your shared resource pool. We need to talk about a little‑known feature in Project Online / Project Server called Team Assignment Pool.

Team Assignment Pool Resources

The beautiful thing about Team Assignment Pool resources is that their capacity is set to zero by default. The team assignment pool resources can be created in Project Online / Project Server by performing several actions: Creating the team resources first and then associating them with the generic resources:

  1. Create team resources:
    1. Create a Team lookup table (in PWA, click Server Settings, item Enterprise Custom Fields) and create items in the lookup table for each role (generic resource) you will need.
    2. Link that new lookup table to the Team field that comes standard with Project Online / Project Server.
  2. Associate generic resources with their team:
    1. Create corresponding generic resources for all roles (in the lookup table).
    2. For each generic resource you create, select the checkbox ✓ Team Assignment Pool and select its corresponding Team Name (the lookup table presents itself in this pick list). You should set the Team Name correctly for every generic resource that you associate with a specific team (role). The next screenshot shows this section in the new resource screen for ‘developers’:
  3. For actual resources, you keep the checkbox clear: Team Assignment Pool!

Generic resources, marked as a Team Assignment Pool, do NOT have any capacity of themselves (not 0%, not 400%), which is hard-coded into Project Online / Project Server. On top of that, when you assign Team Assignment Pool resources to activities, you can enter the number of units, so you can assign, let’s say, 5 carpenters to the activity Frame the walls.

This means that you will see a clean capacity overview of all resources with a correct representation of the capacity of all resources. What makes this solution superior to all other options we reviewed is that you can now get an accurate capacity overview when all resources are in a report such as the one in the next screen shot: You can see that it only contains generic resources (Team Assignment Pools) and that their capacity line is at 0 FTEs (full‑time equivalent resources, a.k.a. ‘heads’)

The best thing is that you can now capture demand early on the long term. Because you can use the team‑assignment‑pool generic‑resources for the long term until you replace them with actual resources of flesh‑and‑blood. We observed in practice that organizations finalize assigning actual resources only in the short term, typically for the next one or two months out.

In addition to this, we recommend promising all your employees that you will not change their assignments in the next two weeks out, so your employees can plan their personal life with their families and friends and honor their commitments (See Frozen Assignments). All our recommendations are summarized in the following illustration:

In the 2-4 (or 3-6) month look‑ahead window, there should only be Generic resources in the schedules. As time goes by, those assignments will move within the 1-2 months look‑ahead window and the generic resources should be replaced by actual resources.

Remember: Create the generic resources as Team Assignment Pool resources!

Final notes

This article is an excerpt from Eric Uyttewaal’s NEW book ‘Forecasting Programs’ that you can order at:

This excerpt is a joint effort between Eric Uyttewaal and Erik van Hurck:

Find more about Eric Uyttewaal, author and President of ProjectPro Corp. on:

Find more about Erik van Hurck, blogger and senior PPM consultant at Projectum, on:

Related Content

Webinars (watch for free now!):
Advanced Tips for Resolving Resource Over/Underallocation
Resource Leveling: The Complete Series, Part 1

Microsoft Project Resource Leveling Series & “Cheat Sheet”
Common Issues in PM: Over-booked and Mismanaged Resources
Understanding Resource Engagements in Microsoft Project 2016

Written by Eric Uyttewaal
Eric is a thought leader on project, program, and portfolio management. He spends most of his time using software from Microsoft. He has authored seven well-known textbooks including ‘Forecasting Programs,’ 'Forecast Scheduling with Microsoft Project 2010/2013/Online,’ and ‘Dynamic Scheduling with Microsoft Project 2000/2002/2003.’ He founded ProjectPro, which specializes in Microsoft Project, Project Server and Project Online. Eric developed several Add-ins with his team that enhance the capabilities of Microsoft Project in creating better schedules (Forecast Scheduling App), managing cross-project dependencies (CrossLinksPro), identifying and documenting the Critical Path (PathsPro) and creating S-curve reports (CurvesPro). He was president of PMI-Ottawa in 1997. Eric has received awards from PMI in 2009, from MPUG in 2012, and from Microsoft from 2010 until 2017 (MVP).
Share This Post
Have your say!
  1. I was one of the lucky ones to have read Eric’s new book, Forecasting Programs.. One of his best books and very insightful and different ways to manage programs. Recommend that project managers order now and get a huge discount on his first printing.

    • Hi Michael, thank you for the plug for my 7th textbook; for those of you interested in it, please buy it at: (instead of on Amazon ; -) )

  2. Thanks for this article. This is something we have struggled with quite a bit. Wouldn’t it be great if Microsoft could explain its own products this clearly?

    • Hi Walter, yes that would be very nice, but Microsoft is just in the business of creating applications; training firms are in the business of explaining applications and that is what we do best and clearly according to you better than Microsoft. Thanks!

  3. Hi Michael and Walter,

    Thanks both of you for the comments. It’s been great to work with Eric on the chapter/post. The fun thing I keep realizing is that the world is so small now. Eric is in Canada, I’m in The Netherlands, and we talked to each other as if there wasn’t a huge distance at all.

    I would like it if Microsoft explained things just like we do,,, but then I’d be out of a job haha.

    Kind regards, hope you have a lovely Christmas and happy New Year.
    Erik v Hurck

  4. @Marcio,
    To me it looks like you should set up your Project Server / Project Online with only Generic resources in it and their Max. Units field set to the number of people in that role within your organization. Then you have all the benefits that you seem to be looking for (as far as I understand them right now).

  5. Hi Mr. Van Hurck,

    as part of booking hours in MS Project Online, I tried the “Team Assignments” and noticed the following behavior:

    1) It is possible to assign generic resources to a task.
    2) A personalized resource of the same team assigns this team allocation to itself.
    3) In the project plan, after approval via “Approval”, the personalized resource from 2) is added to the generic resource from 1) on the task and the working time is increased accordingly.

    Can this behavior be circumvented so that only the generic resource remains on the task and can be booked?

    I have tested what happens if the check mark is not set on “Team Assignment Pool”. Then, according to the flow above in point 3), the generic resource is replaced by the personalized one and the effort previously scheduled to the generic resource is scheduled to the personalized resource. Unfortunately, this is not helpful to me.

    My goal is to have the generic resource stay on the task and also can be postable. Is this possible?

    Thanks for all answers in advance.

    Many greetings

    • Hi Balint, what is the use case? i do not understand why you would want to do this. i understand your goal, but I do not understand the benefit this will provide to your organization; can you explain further?

Leave a Reply