Take the 2-minute tour ×
Project Management Stack Exchange is a question and answer site for project managers. It's 100% free, no registration required.

I have run into unexpected behavior in Microsoft Project 2013. To reproduce, create the tasks seen in the screenshot:

screenshot

Where Requirements has a maximum unit of 100%.

  1. Notice that when you "Level All" Project will complain "Requirements" is over-allocated even though it can schedule Summary1 and Summary2 as non-overlapping.
  2. Removing predecessors from Task3 causes the error to go away but I don't see why it should make a difference.

Is this a bug? Is there a workaround short of copying resources into the sub-tasks (this would make my project much harder to maintain as there are hundreds of sub-tasks)?

share|improve this question
    
Are you sure B isn't a prerequisite to C, instead of a follow-on to A? –  CodeGnome Feb 2 '13 at 3:59
    
@CodeGnome, does that change anything? The problem remains: I can't provide a fixed lag/lead time. So what are you suggesting? –  Gili Feb 2 '13 at 4:02
add comment

3 Answers

If you hard coded your start and finish dates, it constrains the schedule such that the tool, when leveling, cannot resolve by moving task b. It will over constrain resources. Make your tasks fixed duration and keep dates constraint free by selecting schedule as soon as possible. This should fix your issue.

Your schedule logic rests at the leaf level. Load all resources there and create your sequencing logic there, as well. I don't care what project allows you to do, but you should never put any logic into hammock levels.

share|improve this answer
    
It turns out I can reproduce the problem without predecessors. Please see the updated question. –  Gili Feb 2 '13 at 6:46
1  
The question is now completely different. –  David Espina Feb 2 '13 at 7:18
    
Sorry, you're right but it had to change once I discovered how to reproduce the problem. The original question I asked wasn't really responsible for the problem I was seeing. –  Gili Feb 2 '13 at 8:50
add comment
up vote 1 down vote accepted

According to Google assigning resources to summary tasks is legal but highly discouraged.

Specifically, according to http://office.microsoft.com/en-ca/project-help/outline-tasks-into-subtasks-and-summary-tasks-HA010351689.aspx:

WARNING Assigning resources to summary tasks can create unpredictable durations and assignment values. If you have the same resource assigned to the summary task and its subtask, you will not be able to resolve an overallocation if the summary task is automatically scheduled. In addition, fields such as %Comp are usually used on summary tasks to indicate amount of progress made on all its subtasks. However if there is an assignment on the summary task as well, then the %Comp is used for tracking both the progress made on subtasks and progress from that summary assignment. Under these circumstances, Project may not be able track specific progress accurately.

I ended up taking David Espina's advice and moved all resource allocations to leaf level. I created the following VBA macro to automate the act of adding support resources to a task. The code is ugly (I have virtually no VBA experience) but it does the job.

' Add a Project Manager, Requirements Analyst and Graphics Designer resources with 10% units each (unless they already exist). Duration is kept the same but work increases.
Sub AddSupportStaff()
  For Each task In ActiveSelection.Tasks
    If Not task Is Nothing Then
      If Not task.Summary Then
          Dim resource As resource
          Dim projectManager As assignment
          Dim requirements As assignment
          Dim graphics As assignment
          Dim assignments As Collection
          Dim i As Integer
          Dim totalWork As Long
          Dim oldDuration As Long
          Dim containsProjectManager As Boolean
          Dim containsRequirements As Boolean
          Dim containsGraphics As Boolean
          Dim assignWork As Boolean

          containsProjectManager = False
          containsRequirements = False
          containsGraphics = False
          totalWork = 0
          For i = 1 To task.assignments.Count
              totalWork = totalWork + task.assignments(i).Work
              If task.assignments(i).ResourceName = "Project Manager" Then
                containsProjectManager = True
              End If
              If task.assignments(i).ResourceName = "Requirements Analyst" Then
                containsRequirements = True
              End If
              If task.assignments(i).ResourceName = "Graphics Designer" Then
                containsGraphics = True
              End If
          Next i

          oldDuration = task.Duration
          If Not containsProjectManager Then
            Set projectManager = task.assignments.Add(task.ID, ActiveProject.Resources("Project Manager").ID, 0.1)
          End If
          If Not containsRequirements Then
            Set requirements = task.assignments.Add(task.ID, ActiveProject.Resources("Requirements Analyst").ID, 0.1)
          End If
          If Not containsGraphics Then
            Set graphics = task.assignments.Add(task.ID, ActiveProject.Resources("Graphics Designer").ID, 0.1)
          End If
          For i = 1 To task.assignments.Count
              assignWork = False
              If (Not projectManager Is Nothing) Then
                If (task.assignments(i) = projectManager) Then
                  assignWork = True
                End If
              End If
              If (Not requirements Is Nothing) Then
                If (task.assignments(i) = requirements) Then
                  assignWork = True
                End If
              End If
              If (Not graphics Is Nothing) Then
                If (task.assignments(i) = graphics) Then
                  assignWork = True
                End If
              End If
              If (assignWork) Then
                task.assignments(i).Work = totalWork * 0.1
              End If
          Next i
          task.Duration = oldDuration ' Add work but keep duration constant
      End If
    End If
  Next task
End Sub
share|improve this answer
    
You could also set all the resources on one task and then either drag downwards (as in excel) to populate other tasks, or copy & paste into the Resources field. But writing the VBA macro was probably a fun exercise. –  Shannon Davis May 22 '13 at 14:36
add comment

You shouldn't assign resources to a summary level task. Not only in Microsoft Project, but just in general. You assign resources to the detailed level.

share|improve this answer
    
It makes sense for resources that cannot be deallocated between sub-tasks (such as project management). –  Gili Mar 28 '13 at 3:27
    
What do you mean by 'de-allocated between sub-tasks". I haven't seen the term "de-allocated" before. –  Shannon Davis May 22 '13 at 14:34
    
for project management, I create a single task that spans the project (or the phase), but I don't create any sub-tasks. Having sub-tasks is the definition of a "Summary Level" task. –  Shannon Davis May 22 '13 at 14:34
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.