ms project gantt duration not moving when 2 ressources change % units

Posted on 2008-10-29
Medium Priority
Last Modified: 2013-11-15
ms project 2007

i have a task job oriented, workload: 80 hours
i assigne 2 ressources, at 50% (r1 and r2)
duration: 16 days

i change the % units assigned to r2 from 50% to 100%
duration: 16 days

i change the % units assigned to r1 from 50% to 100%
duration: 8 days

why is the duration not changing when i change my ressource number 2 % units? (r2)
this behavior happen in project 2003 too on a brand new formated computer
it also happen on all computers we tried it (4 at the moment)

and yes my task is:
fixed work
driven by effort
Question by:Serge Fournier
  • 5
  • 3
LVL 17

Assisted Solution

aflockhart earned 800 total points
ID: 22839603
When you first split the job equally between 2 resources r1 and r2, MS Project divides the WORK for the job into two equal parts ( 40 hours for r1 and 40 for r2 according to your figures, although that doesn't look like 16 days for 2 people at 50% effort ..).

When you change r2 to 100%, this will reduce the time that r2 needs to spend on their half of the job. But it will not affect the time that r1 needs to spend on their half; and the task will not finish until BOTH r1 and r2 have done their half.

Look at the detailed allocation of work hours to the task ( on the Task Usage sheet) to see who is working on which days.
LVL 13

Expert Comment

ID: 22839671
Hello wildboy85,

Let's walk through this together.

I open Project 2007, double check to ensure my default task type is set to Fixed Work and effort driven.  I enter a new task (t1) and set the duration to 16 days.  

A point of confusion.  Using a standard calendar with 8 hour days, a 16 day duration task spans 128 (16x8) work hours, not 80...

Using the task form I create a resource (r1) on my task and set the units at 50%.  Project automatically sets the work for this resource to 64 hours.  I repeat this action to create a second resource (r2) with the same result.

Now I change the assigned units for my second resource to 100% and as you have described, the duration is still 16 days.

But when I look a bit closer, I notice that the work assigned to r2 is still 64 hours and the work assigned to r1 is 64 hours.  The reason that the duration has not changes is because the firt resource is still assigned to do half the work (64 hours) working half the work day (50% units) and this is going to take 16 days.  It doesn't matter that resource r2 finishes his assigned work 8 days earlier.  The task isn't finished untill ALL the work is finished.

The key to scheduling in Mictosoft Project is the formula

     Duration * Units = Work   (D * U = W)

The task Type and Effort Driven flag you choose tells Project how to apply the formula.

One thing Project will not do for you, is reallocate work between resources.  This is the project managers job and what has to happen to produce the result I suspect you were expecting in this case.

Does this answer your question?  If not elaborate a bit more...

Bob Segrest, PMP
MCITP, Microsoft Project Blackbelt

LVL 12

Author Comment

by:Serge Fournier
ID: 22840560
the answer look good, i understand it, but...

my task is tagged "as soon as possible"
that tell msproject to reallocate work between resources to finish the job faster

now, if msproject cannot do that... what is it's purpose?

i will wait for more answers a little bit, i cannot belive that there is not something to reallocate work automatically in ms project. That would be half of msproject reasons to exist blown away...

[Webinar] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

LVL 13

Accepted Solution

bobsegrest earned 1200 total points
ID: 22841454
Hello wildboy85,


Microsoft Project is a best in class tool for modeling projects based on the judgement and data provided by a project manager.

Microsoft Project is not an artificial intelligence tool and does not make judgements.  It might be nice if it was and did, but it would probably be called Microsoft Project Manager and I would probably spend half my time fighting with results.  

The problem isn't the calculation, its the fact that you are using more than one resource.

Consider the following scenario.  We need to paint a house and have estimated that it will take 80 man hours of effort (Work) to complete.  We have another job that might happen about the same time so we commit our two painters (Tom and Bill) to work on this job 50% each.

There are two ways we can show this in a Project plan.  

We can insert both painters and set their availability (Units) to 50%.  The down side to this is that Project will not rebalance workloads between multiple resources.  Tom and Bill are different resources and Project does not know enough about why they are different to make a judgement.  This is why we build expert systems (artificial intelligence)...

The other way to approach this is think of the resources in terms of skill set rather than individuals.  We could simply assign the work to a generic resource labeled Painter.  If we fulfill this requirement with half a Bill and half a Tom, it is still one Painter.  The advantage to this approach is that if we want to get the job done faster, we can just as easily change the assignment to use one and a half (150%), two (200%) or as many Painters as we like and Project will automatically adjust the duration accordingly.

Whenever more than one resource is assigned to a task, the ONLY person that can be held responsible for completion of the task is the Project Manager.

I strongly recommend that only one resource be assigned to each task as a "Best Practice".

If you are forming a team to work on a task, my recommendation is to assign the task to the team, identify who the responsible team leader is and set the team availability (Units) to reflect the composition of the team.

I hope this helps.

Bob Segrest, PMP
MCITP, Microsoft Project Blackbelt

LVL 12

Author Comment

by:Serge Fournier
ID: 22841659
that is perfect! exactly the answer i was looking for

i will simply use a team when poeple have the same skills

thx a lot

and next time, you can shorten the answers, by looking as my skill level ;)

you could have just said:
"form a team with the ressource that have the same skill"
"use the team as the only ressource"

LVL 12

Author Comment

by:Serge Fournier
ID: 22843124
appaprently, according to my boss, our resources have too many specialities to be put in teams
their work would be splitted in too many parts and lost in the size of the project itself
they must stay as individual

so i will program a macro to reassign the hours for each resources for a task

i will post it here once finished

LVL 13

Expert Comment

ID: 22843339
Hello wildboy85,

Fair enough, we all work for someone.

Another approach would be to elaborate the task to another level of detail.

Extending my previous scenario a bit...

If Tom specializes in painting walls and Bill does the trim, consider creating a Walls task and a Trim task under Painting.  The assign Tom and Bill accordingly.  The original Painting task thus becomes a summary task and represents the sum of its sub-tasks.

The advantages to this approach include:

1.  One resource on one task means that accountability is clear.
2.  It becomes very easy to see which task and which resource is driving the duration.
3.  These points should make it easier for the project manager to reallocate resources when needed and you can always write a macro to automate where necessary.

Bob Segrest, PMP
MCITP, Microsoft Project Blackbelt
LVL 12

Author Comment

by:Serge Fournier
ID: 22844766
actually my boss know msproject more than me ;)
we are trying to generate a big msproject including all projects and all resources for planification purposes

we are not interested in seeing what group do what, but WHO is doing what
we want close individual monitoring even if both resources are doing the same task

what we really need is to assign "skills" to our resources
then ask project to recalculate the time schedule for the resouces with the same skills on a certain task
(only if all the resouces on this task have the same skills, the task will be shorter)

that is the beauty is relational database
you can look at it one way or the other
so the group will be assigned to the resources, as a skill, instead of the resource to the group, and lose it's visual identity that we absolutly need to make plans when we are in a planification meeting

i will still post the macro, when it's done, right here :)
this macro will recalculate the selected task schedule, assuming that all resources can do the same task
(curently, i am working on it part time, will take a day or 2)
LVL 12

Author Comment

by:Serge Fournier
ID: 22889178
this macro will recalculate hours/resources according to their units (%) contribution, assuming all the resources in the selected task work with the same skill, and the same number of hours each days

the duration of the task will go down if the % is bigger in one resource

use alt F11 to insert the macro in ms project
it will change all the selected task in the project explorer

so you select a task, press F8, run macro
insert the macro as a button in the toolbar
and select a task and press the button to execute the macro

Sub test()
'=== trouver tous les travaux et les recalculer
Dim t01 As Tasks
Dim t As Task
Dim r As Resource
Dim t2 As Task
Dim res01 As String
Dim s As Assignment
'Set t01 = ActiveProject.Tasks
res01 = ""
houday = 8
For Each t In ActiveSelection.Tasks
   If Not t Is Nothing Then
      If Not t.Summary Then
         res01 = res01 & " name: " & t.Name & vbCrLf
         a = t.Work
         res01 = res01 & " Work: " & a & " " & a / 60 & " " & a / 60 / houday & vbCrLf
         alldistra = 0 '=== all disponibilities and work allocated
         '=== total productivity each day by all employe
         projrs = 0
         For Each s In t.Assignments
            projrs = projrs + s.Units * houday
         '=== total work according to productivity
         If projrs <> 0 Then
             totwrk = t.Work / projrs
         End If
         For Each s In t.Assignments
            res01 = res01 & "   TEST: " & s.BudgetWork & vbCrLf
            res01 = res01 & "   % " & s.Units * 100 & vbCrLf
            res01 = res01 & "   OLD work: " & s.Work / 60 & "   NEW work: " & (s.Units * houday * totwrk) / 60 & vbCrLf
            s.Work = (s.Units * houday * totwrk)
      End If
   End If
'MsgBox (res01)
End Sub

Open in new window


Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: x-men
Where used to see Gantt charts for illustrating project timelines, but what if I wanted to visualize passed timed events? Here's how.
A simple overview of the possibilities of using technology for project management.
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…
Enter Foreign and Special Characters Enter characters you can't find on a keyboard using its ASCII code ... and learn how to make a handy reference for yourself using Excel ~ Use these codes in any Windows application! ... whether it is a Micr…

579 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question