I have been looking at various ways of resource forecasting to the executive and the board. We are a typical professional services company. There is so much work we can take on and also another minimum amount to ensure we have enough to keep all staff busy. This is a delicate balance to handle. Any decision to hire new staff cannot be made simply on a hunch. A seasonal spike needs to be adjusted by moving out some other projects or sometimes by getting in some contractors. However, continuously shifting work to the side has implications about customer satisfaction and potential lost opportunity for growth.
We use Microsoft Project Server 2010 as our project management tool and Microsoft Dynamics as our customer relationship management (CRM) tool. Typically we have a set of projects that are in flight – contract agreed, resource assigned and in work mode. There are another set that we have leads for. For some of the leads, we will have made a decision to invest in pre-sales effort to win the project and therefore requires committed resource to win it. However, the project itself is still uncertain. Then there are the rest, which we have leads for, but have not committed resources, for one reason or another. My challenge is to translate all of this into the required resource profile. Previously we had tried to use the probability of success and then dividing the value with our charge out rate to try and predict resource requirement. That had not given us the required information, as simply put, that does not reflect reality. I will elaborate what we have used to gain this visibility.
The first challenge we needed to overcome is the ability to assign resources from a group, rather than individual people. The reason being, we do not know months ahead which of our leads will turn into real projects. We therefore want to retain the ability to assign the resources closer to time for maximum outcome. At the same time, we do not want our capacity to be affected. Project Server resolves this by allowing a concept of a resource pool. In order to create a resource pool, you need to create a custom lookup under Server Settings by clicking the Enterprise Custom Fields and Lookups option in Project Server. Under the section Look Tables for Custom Fields create a new lookup table and enter your resource resource pools. We have executives, analysts, developers, project managers and support staff. So I created a table with these values. Now associate this table with the Team Name field in the Enterprise Custom Fields section.
Team assignment pool
Now create a group as a single assignment pool and the individual users. Scroll down to the bottom of the page and select the Team Assignment Pool button. Assign team name from the lookup. For the individual resources, leave the Team Assignment Pool check box unticked. For the assignment pool group account, tick the checkbox. In my case the _Analyst role has this checked, and the user Shoaib Ahmed has it un-ticked. This will now allow you to assign resource to either the Project Manager group or me individually. Remember, capacity is driven by individual users, whereas assignments can be done either to the pool or individuals. It will not alter capacity.
Proposed vs committed booking
Now create your in-flight projects as you would normally do, assigning to individual resources. When you build the team from the enterprise, remember to add them as committed resources. I also add resources to pre-sales activities that we have decided to purse as committed resources. Where a project is somewhat speculative and you do not know exactly who you want to assign to it, I would assign it to the group. This still lets you see the overall picture about total assignment for the group, without necessarily having to commit individual resources.
Now, if you want to see the status of your portfolio, that you have committed to, simply select all your resources from the group you wish to analyse, including the assignment pool, and click Resource Assignments button. In the first instance, run the report with committed resource only, this is the actual amount of work that you have committed to doing. Now run the report again with the proposed bookings. This tells you what the resource impact is for the other work that you have pencilled in. As you can see in our case, it now shoots through our capacity. This means we have to shift some of the work to be done later. How do we select what to push out to the future? Run the report including proposed bookings with the view modified to Work by Project. Now un-check the least important project and review the resource status. If you are still above capacity, then remove the next least important one. If you are able to get within capacity doing this great. At some point you will reach a stage where you cannot satisfactorily put off doing proposed work. That is the time to hire/contract new resources.
Resource assignment - committed
Resource assignment - proposed
Resource assignment - by project
This is how I have tried to get a visibility of required resources. I do not claim this one to be the only, or even necessarily the best method of doing so. I’m keen to hear your comments. If you have successfully used a different method, I am keen to hear it.