-
Download
Printer-friendly (PDF) Sample MS Project 2002/2000 File (MPP) Sample MS Project 98 File (MPP)
Translations
Microsoft Project is a widely-used scheduling tool. Its quirks and complications are a huge drain of time on the Project Management community. This series will go beyond tips and tricks to discuss solutions to real-life problems, to save time for its many users.
Most Project Managers have learned a specific method to build dependencies between tasks and to build a resource-leveled schedule in MS Project. It is a relief to find something that works. Fear of upsetting a working schedule is great. We stick with what works even while cursing its shortcomings. Project Managers have choices, though, and choosing the best method for the project at hand is the best way to save time and reduce frustration.
Three Methods Plus One
There are three solid methods to build a plan, plus one that appears in MS Project marketing. Each method offers different ways to build dependencies and level resources:
- The “easy” way: enter tasks, then key in start dates to make the resources level. Point-and-click simplicity!
- The “dependency-driven” method: every task that every person does is joined in a start-to-finish chain. MS Project encourages this approach.
- The “traditional” approach: build a work breakdown structure (WBS), draw a network diagram, estimate task duration and cost, assign resources, and resource-level the schedule. Only by exploring hard-to-find settings can the Project Manager find the keys to unlock this method. This article puts all those keys in one place. Full disclosure: this author favors the traditional approach.
There is a fourth method, featured in MS Project marketing and help files: create your plan, add resources and dependencies, and run the “auto-resource-leveling” algorithm. The author cannot recommend this method, except to create a quick estimate of the project end date. The software puts tasks in a very strange order. A variety of seasoned users have provided the following advice over the years:
- “You will see it on the menu. Never, ever click automatic resource leveling.”
- “I do not like to use it. If you want to use it, always save your plan before clicking the button. You never know what it will do to your schedule.”
If anyone has had success with this feature, please e-mail me.
[Added after publication: A helpful reader, Lynn Frock, PMP, has reported success with automatic leveling. He has used it on single projects and also to balance resources across a portfolio of more than 15 projects in a resource constrained environment. He maintained this portfolio for over two years, with no more than a couple of work days spent each month. Lynn found that accurate, resource balanced schedules can be created and maintained. These schedules make efficient use of available resources and allow good time/cost/scope trade-off decisions. He found that this approach saved time planning and re-planning project schedules, particularly to see the effect of adding new resources and new projects. He offers an Advanced MS Project class that teaches the technique. His company provides assistance with planning, training, mentoring leaders, and implementing scheduling systems as well. Visit his website at http://www.lynnfrock.com/ for more information.
I have new hope for this feature. Once I get some time to explore and apply this feature myself, I will write a feature on this technique. It is still fair to say that this feature requires caution. A solid approach, like the one Lynn has developed, is important to use it successfully.]
The “Easy” Way
-
A typical ‘Easy’ Gantt chart
The first method is the easiest to use. It is great for a simple, milestone-based plan or a high-level plan. First key in all the tasks in the WBS. Do not enter any dependencies; assigning resources and work effort is optional. Enter the duration for each task, and set zero duration for all milestones.
By default, each task starts on the project start date. Enter the correct start date for each task. Pick start dates that allow predecessor tasks to finish in time, and that level your resources.
Advantages: quick and easy to enter. For a project with less than 50 tasks, this method is the shortest way to get from WBS to schedule. The more information the Project Manager enters, the more useful MS Project reports are, but almost everything is optional.
Disadvantages: the burden of tracking dependencies and resource allocations falls entirely on the Project Manager. Simple projects are good candidates, with few dependencies and simple use of resources. The only value of MS Project is to produce reports, though. Drawing and spreadsheet programs often do a better job, using less time and less money.
The “Dependency-Driven” Way
The Project Manager can drive every date with dependencies. Dependencies can even force resource leveling. First activate the “auto-link tasks” feature of MS Project in the Options dialog box. Build the WBS for the project. If one person performs several tasks, enter them in order. Allow MS Project to link task #1 to task #2 to task #3, and so on. Assign resources to each of the tasks. Break the dependencies only when you change resources. For instance, resource A will perform tasks #1 to 7. Resource B will perform tasks #8 to 12. Break the dependency between 7 and 8, and leave 1 to 7 linked together, as well as 8 to 12 linked together.
-
A dependency-driven network diagram shows who is working on what; logical dependencies can be hard to find
For this method, task duration is absolutely required, and work estimates are strongly encouraged. MS Project will calculate the end date for each task. The chains of dependent tasks are resource leveled, so long as all resources put 100% of their available time on each task from start to end. Create milestones to mark resource start dates, and make their first assignment dependent upon the milestone. If the milestone start-date changes, all future tasks will neatly roll forwards or backwards in time. Enter work calendars for each resource, and MS Project will schedule tasks around vacation time. As actual work time changes start and end dates, all tasks in the plan assigned to the affected resources will roll forward and backward.
Disadvantages: MS Project constantly changes dates. The Project Manager must monitor the plan closely, watching for unwanted automatic adjustments.
Resource leveling only works if each resource is assigned one full-time task at a time. Resources that perform more than one task simultaneously are frustrating to schedule.
Advantages: Schedule problems are relatively easy to diagnose; follow chains of work through the schedule. Dependencies are easy to remember because they match the work assignments.
Even if the real-life project execution does not match the rigid dependencies in the plan, MS Project often adjusts the remaining work in a sensible, resource-leveled fashion. For example, a resource starts both task #1 and task #2 in the same week, even though the schedule has #2 dependent on #1, finish-to-start. The remaining work on task #2 automatically scheduled after task #1 is 100% complete.
A Project Manager can also add logical (a.k.a. “hard”) dependencies, and MS Project will enforce them. For instance, if resource B cannot start task #12 until resource A completes task #3, MS Project will force the start-date for task #12 to slip if the finish date for #3 slips. Resource-driven dependencies and required dependencies appear identical in the tool. To keep track, add a column called “Unique ID Predecessor” to the Gantt view. Track the unique ID for all hard-dependencies either in the task description (i.e. “(4389)” at the end) or in a text field for each task.
MS Project starts assignments when resources are available. If task #1 ends 4.25 hours into Monday’s schedule, task #2 will put exactly 3.75 hours in on Monday, to make an eight-hour day. It automatically keeps resources fully allocated.
The “Traditional” Way
The third method provides the highest level of control. It enforces dependencies and shows resource allocation clearly without making a lot of automatic schedule changes. Start with a basic WBS, with no dependencies. Add resources, work estimates, and duration for each task.
-
A traditional network diagram shows only logical dependencies, helping a manager evaluate scheduling and resource assignment alternatives
Create a network diagram. Create two milestones: “project start” and “project finish.” Anything that can truly start at any time should be dependent upon “project start”. Anything that can happen anytime up until the last minute is a dependent task of “project end”. In between these two tasks, every task should be part of a chain that starts with “project start” and ends with “project finish”. Use milestones to draw together large number of dependencies. For instance, if five tasks must complete before four other tasks can begin, create a milestone with a descriptive name, like “assembly complete”, with the five tasks as predecessors and the four tasks as successors.
These dependencies should not be affected by resource assignments, so they should remain fairly static throughout the execution phase. By contrast, the dependencies in the second “dependency-driven” method change every time a resource is reassigned. This network diagram is a useful, lasting map to the project. It shows the unchanging relationships between tasks.
The Gantt view of the plan will show an optimistic end-date for the project. Tasks are scheduled without any regard for resource limits. Adding leveling delays will even out the workload.
Leveling delay lets a project manager precisely manage the start and end of every task without adding dependencies and without fixing the start date. Leveling delay is a hidden field that exists at two places: the task level and the resource-assignment level:
- Task level is the easiest to apply, but the hardest to manage. Simply add the “Leveling Delay” column to the Gantt chart view, or use the “Leveling Gantt” view. Enter the number of hours or days delay, and the entire task shifts out in time. Unfortunately, the delay must be in ELAPSED days or hours. Elapsed days do not honor holidays and non-work time. A project manager must often adjust these delays manually as task start and end dates shift.
- Resource-assignment leveling delay can be entered for each resource assigned to a task. It can be entered in work-hours or work-days. It provides flexibility to level out any imaginable work. If two people are assigned to a task, but only one is over allocated by 4 hrs, delay the over allocated resource by 4 hrs. The other resource’s start date is unaffected. To delay the entire task, though, every resource assigned to the task must be delayed. Make maintenance simpler; allocate one and only one resource per task.
Leveling delay is measured from the dependencies of the task. For instance, if task #4 and task #5 are both dependent upon task #3, ending on Monday, they will both begin on Tuesday with no delay. Putting a two-day delay on #5 will make task #4 start on Tuesday and #5 start on Thursday. If the end-date of #3 moves to Tuesday, they will both roll forward to Wednesday and Friday start-dates.
By combining units (% allocation) and leveling delays, a project manager can accurately represent complex work. People can work multiple tasks simultaneously, participate in multiple chains of dependent tasks, and still work all available work hours, and not one hour more.
This method helps the manager walk step-by-step through the PMBOK method of creating a schedule and a budget: first WBS, then network diagram, duration estimates, cost estimates, and so on. The other methods add that same information to the schedule for each task, as each task is added. Each entry immediately ripples through the schedule. The “traditional” method lets a manager enter each PMBOK deliverable one at a time. The full schedule appears only after the last step is complete. Both methods involve all the PMBOK processes, but the “traditional” method makes it easier to focus on each dimension of the project (scope, time, cost, and so on) one at a time.
Disadvantages: This method is labor-intensive. It is time consuming to create an organized network diagram for a large project. It is easier to create dependencies to force work to occur in a certain order, instead of calculating leveling delays and entering them for each task. The project manager must adjust delays every reporting period.
Advantages: Unmatched control over the schedule and dependencies. Creates a human-readable network diagram. Step-by-step process creates a schedule following PMBOK recommendations. Separates decisions about dependencies from decisions about resource assignments and resource leveling. Supports arbitrary execution of separate tasks by a single resource or by multiple resources.
Milestones and hard-dependencies control MS Project’s rescheduling of work. If work happens early or late, MS Project only adjusts dates when milestone dates change.
The Project Manager has full control. Maintenance of any schedule is time consuming; with this method schedule updates are more predictable and consistent.
Pick Your Tool, Pick Your Poison…
Maintaining a schedule is hard work. None of these methods is a silver bullet. By picking the right method, though, the Project Manager can focus time and energy. Each method uses some MS Project features and hides others. Each manager can pick the right approach for each situation.
Feel free to blend all the approaches above. Often times a single project has a different need for each phase. A single MS Project file can use all of these techniques. When you pick your tools, though, you also pick your poison. The next time you are frustrated while trying to update a schedule, remember that you have choices; perhaps you chose poorly last time, and perhaps it is time to rethink your approach.

I want task B to finish no later than task A. How do I set up that relationship in MS Project. Thanks.
Thanks for the question, Bob. Getting one task to finish “no later than” another in MS Project can be difficult, and it does involve some trade-offs, depending on what you are trying to accomplish.
One way to achieve this effect is to create a milestone “C”, and make both A and B finish-to-start predecessors of milestone “C”. Select an appropriate description for the milestone, so that you know that you want to ensure that you do not mark “A” as complete until “B” is completely done. Also, any tasks that need to follow task “A” in your network diagram can be given a predecessor of milestone “C”. If you change the information about task “B”, then the milestone will automatically be adjusted to be the later of the two finish dates for tasks A and B.
Another way to achieve this is to use finish-to-finish relationships. Sometimes these are perfect for your schedule, but often they cause unexpected, unpleasant results. Make A a predecessor to B with a finish-to-finish relationship, and that will ensure that task B cannot complete before task A completes. Make B a predecessor to task A with a finish-to-finish relationship, and that will ensure that A cannot complete until B completes. Neither of these relationships is exactly “finish B no later than A”, but they are one method to approximate what you are looking for.
If the finish date of the finish-to-finish successor falls too early, the successor tasks’ start and finish dates will be shifted up so that the finish date matches the predecessor. If the finish date of the successor falls on or later than the finish date of the successor, the relationship has no effect on the schedule.
What throws people off about finish-to-finish relationships is that they not only change the finish date of the successor task, but the start date as well. If you extend the duration of the successor, the START date might change instead of the finish date. Some scheduling tools have a concept of “hammock” tasks where you can fix the start date using a finish-to-start relationship and let the end date move according to a finish-to-finish relationship. MS Project does not have this capability, and you would need to play with the duration, work, and units with every schedule update if you want to simulate a hammock task.
Building a solid network diagram using finish-to-finish relationships is not simple. In a typical network diagram, you want to avoid “open ends” or tasks with no predecessor and no successor. Everything should eventually tie to a start milestone and a finish milestone. Figuring out if you have open-ends when you start using finish-to-finish, start-to-start, and finish-to-start dependencies can be difficult, and it often confuses newcomers to the tool. I much prefer to use milestones and finish-to-start relationships instead of the other types of dependencies.
Explaining this in depth is a topic for a new article, not a quick comment reply. Basically the issue to watch out for with finish-to-finish is that the successor’s finish date is constrained, but not its start date. If you create a task and its only predecessor is a finish-to-finish dependency, you have an open end. The start date of this task could extend before it is logical to start the work. You must add another dependency in order to somehow control the start date as well, and tie it off to the start-date milestone. Usually you do that with another predecessor with a start-to-finish type. If this paragraph does not make sense to you, I VERY strongly recommend using the milestone method. If this paragraph does make sense to you, you might want to use a finish-to-finish relationship to accomplish your goals, but do it carefully and sparingly. I almost never use them, and when I do I watch those tasks very carefully for unintended effects when I update the schedule.
Bob cannot use any of the predecessor link types to achieve what he wants because none of them do that.
An FF link is the only one which refers to the finish of both A and B.
A FF link means that Task B cannot finish any earlier than Task A finishes.
The purpose of building the network is primarily to find out how soon Tasks can start and finish, not to set them to finish as late as the finish of some other Task.
If the goal is to ensure that the finish date of Task B is always the same as the finish date of Task A, a Hammock is possible and it can be done in MSP, easy.
Copy the finish date cell of Task A and Paste Special, Link in the finish date cell of Task B.
Trevor,
Thanks for the ideas. I have never used the “Paste Special” feature to create a hammock task, but that is an interesting technique. I always get a little nervous about setting either the start or finish date directly in MS Project. Usually that winds up creating a date-constraint, which I do not usually want. I will have to experiment with the “paste special” command to see the full implications of this.
You are correct that the network diagram does not set tasks to start as late as possible or as soon as possible. Another possible method to get finish dates to line up is to set the task type from “as soon as possible” (the typical type) to the “as late as possible” value. Sometimes that can be a good way to move a task as late as possible, without chaning the network diagram.
For any readers who have not heard of a “hammock” task, it is a feature seen in Primavera and some other scheduling programs. A hammock task is a task that will start at the same time as one task, and finish at the end of a phase or right before the start of another task. Often this is used for level-of-effort work, like status reports or weekly meetings. You want the duration of these tasks to grow and shrink depending on the length of the project or phase. Because they span the whole phase, no matter how long or short it is, they are called a “hammock”.
I have heard scheduling experts say that a hammock task is impossible in MS Project. Some people say that this feature is something important, and software like Primavera is better because it allows hammocks. This “paste special, link” technique may be a way to create that function in MS Project.
I am trying to link Task A (FF+”n” days) to Task B AND Task C, however I want Task A to finish “n” days after whichever task finishes last (i.e. if Task B finishes on 5/1 and Task C finishes on 5/3, I want Task A to finish on 5/3 +”n” days. When I try to include 2 FF+ constraints into Task A it is not distinguishing between the first and last finish dates.
Any ideas???
Keith,
My first recommendation is to change the finish-to-finish relationships into finish-to-start. Anytime I have a problem getting relationships to work, I go back to the most basic relationship type. I go out of my way to avoid ANYTHING but a FS relationship. If you subtract the duration of A from your “n” days value, it is easy to create a FS predecessor to A using FS. In other words, have A start on 5/3 + “n – A’s duration” days. If “N” is 5 days, and A has a duration of 2 days, then the prececessors would be “B FS+3d, C FS+3d”, for instance.
So long as you are setting B and C both as predecessors of A, though, your logic should work. It should be setting A to finish “n” days after the later of the two task finish dates. I tried out several examples in small sample schedules, and it worked well. I created tasks A,B, and C as numbers 1,2, and 3, and gave task 1 (“A”) a predecessor of “2FF+2 days,3FF+2 days”. I could modify the duration of all three tasks, and Task A consistently finished two days after the later of the two finish dates (task B and C).
Make sure there are not any other relationships that might be forcing A into a certain date. Also, check the date constraints. If you put in a “must finish on”, “finish no later than”, or other similar constraint, it could destroy the effect of all your work. I was using “as soon as possible” for my tasks.
Also, double-check your resource schedule and calendars. Perhaps the relationship is pushing the task to a certain date, but then resource availability is pushing one of the tasks even further into the future.
Best wishes, Keith. Let us know what works for you.
–Alex
Hi:
I’m new to MSP(1 week). I’ve entered my project and have task durations and start dates for each. I have 24 phases and 10 tasks for each phase (these tasks are the same for each phase). Phases 1 & 2 are concurrent, as are 3&4, 5&6, etc. Because of this, I have linked concurrent phases — I have 12 “links”. My problem is after linking the phases: 1&2…11&12, I noticed my start dates have changed. I don’t know why. I don’t want them to. Phases 1&2 start July 15, but after linking phases 11&12 I see MSP has changed the dates for 1&2, 3&4, etc. Pushing them back in to May?! Can you tell me what its changing the my dates? What did I do wrong? Ultimately, if 1 is delayed, I want 2 delayed by as much, the same for 3&4, etc. Thansks so much/
Jackie O,
I am not sure exactly what types of links you have created between the phases, but I recommend removing ALL of them.
MS Project allows you to create predecessor/successor links between summary tasks (“phases”), but it is NOT good scheduling practice. I tell all my students to never, ever create a predecessor or successor on a summary task. It just causes all sorts of problems, pushing all the tasks that are subordinate to the summary task back and forth in time. It is very hard to diagnose these scheduling problems. Eric Uyttewaal and every professional scheduler I know makes the same recommendation.
Create relationships between the tasks within the phases. Put milestones at the start and end of each phase, perhaps, to help contain all of the relationships and to give boundaries to the phase.
Then the summary task or phase in MS Project is just a reporting tool. It will not drive your scheduling logic at all. It will let you roll up dates, costs, and hours worked without interfering with your start and end dates. Individual tasks should drive the start and end dates.
I hope this helps. Best wishes.
–Alex
Mr. Brown:
Thank you very much.
Mr Brown,
Am working in a part of the world where all tasks inevitably fall behind schedule.
Is there a way to have MS Project automatically extend task durations to the Today line until the task is marked Complete? This would allow the project schedule to automatically adapt to actual progress, without having to manually edit everyday. All one would have to do is mark the task complete once it is done,
This would be similar to my PIM, that keeps bringing items forward items to Today’s ToDo list intil Marked Done.
Is this feature already built in somewhere in MS Project or am I just dreaming?
Thank you.
Laurent
Laurent,
There is no solution that is 100% automatic. MS Project does not do the schedule updates 100% automatically.
I would recommend posting the updates (% complete or actual hours worked), then make sure the “remaining work hours” or “remaining duration” information is correct on your task. Then click the “Reschedule Work” button on your Tracking toolbar. This button splits the task and shifts all the uncompleted work ahead to the current status date. Be sure to set the status date on your project to today before doing these steps.
The Tracking toolbar will help you with these updates. There is a button to “Update as Scheduled”, mark the tasks 100% complete, “Reschedule Work” and other functions. It is definitely not an automatic process. Even if you have a fancy time-sheet interface, and all the actual vs. planned work is updated by computer, you still usually need to click on these buttons to properly update the tasks.
I hope this advice helps.
–Alex
Hi Alex,
Thanks for the detailed information on traditional approach. I did take the approach prescribed by you and have hit a bottle neck. I had a task (A) which was assigned to a resource for 3 days. The resource load for the 3 days was 14.5 hrs, 12 hrs, 2 hrs. This milestone end date of the project was 4th day. When I tried to use leveling, I always got a “could not level because max units exceeded..” error. I ventured to change the resource allocation manually in the resource usage view by spreading the load as 8hrs, 8hrs, 8hrs, 4.5 hrs and extended the task (A) into the 4th day. The milestone end date of the project moved to 5th day now but I saw a “Finish No later Than” constraint automatically set in task (A). Not sure if my editing caused the issue.
Note: Thanks to your insight on leveling delay. Never knew it was based on elapsed days.
- Prakash
Hi,
I am currently working on a 3 year project plan which has few thousand lines of dependencies. Is there a way to have MS Project generate a dependencies report according to task category and date range?
Thank you.
Trista
Prakash,
I am not sure why you got that particular “max units” message. Usually these messages indicate the the schedule is “over constrained”. There are probably too many limits and constraints put on the tasks. When you attempt to level, MS Project cannot resolve the constraints, and so it stops.
I would begin by removing the “finish no later than” constraint. Particularly if there is a chain of dependencies that include a task with “start no earlier than”, you have probably created an impossible situation. I usually remove all constraints on all tasks, and keep them just on milestones. MS Project makes it far too easy to create these date constraints. All you need to do is type in a start or finish date accidentally, and they appear. They cause huge problems with the leveling and dependency logic.
It might also make sense to raise the “max units” value for the resource. Sometimes I have staff that work overtime for a specific task or a specific period. MS Project can be very inflexible, and not allow me to have that overallocation. Setting the overallocation formula to go by week, by month, or any larger value can help. Sometimes I increase their “max units” for a limited period or the whole project as a way to resolve the problem.
I hope one of these suggestions help. You may also want to look at the chain of predecessors and successors for the task. Perhaps another task has a date constraint that is making it impossible to move or reschedule. Also, check whether the task is fixed duration, work, or units. Depending on the leveling and task settings, MS Project might refuse to lengthen the task.
–Alex
Trista,
I would use a combination of a custom table and a custom filter to get that report.
Check the MS Project documentation on how to create a custom table. Create one with just the columns you want — task ID, task name, predecessor, and successor might be all that you need.
Then filter the list based on date range. There are many powerful date-based filters included, so you will probably not need to create a custom one.
You can also use the network diagram to review the chain of dependencies. I find it very difficult to sort out all of the task-level predecessor and successor relationships by using task ID. The graphical network diagram can be much easier to review. I do a custom view so that I simplify each task down to the bare minimum data — usually just task ID. The diagram will still be huge for a large project plan, but I can begin to review and sort it out.
Also, make sure that you are using plenty of milestones for such a large plan. Hopefully there will be “sub networks” or “fragnets” in your plan, bounded by milestones. If you have thousands of dependencies all extending from different tasks, the diagram is difficult to read. If you tie most of the large-scale dependencies to milestones, the diagram and reports become much easier to understand.
I hope this helps.
–Alex
Hi Alex,
Thanks for your reply. I did as you suggested (increasing max units and removing the finish no later than constraint), I was able to level resources now. Thank you so much. You have made my life easier
Hi Alex
I have an interesting one. First of all, the purpose behind my plan is not necessarily to monitor progress on a specific project, but to track the use and demand of resources on the various projects. Having said that, i have assigned a priority to tasks (which can have many resources allocated) and then hit the dreaded ‘Auto Level’. Due to the priorities being set, it worked just great. Now to the problem. A lower priority task, which would take 10 days split over two resources (say 5 each) is going to take an elapsed time of 100 days, due to availability of the individual resources. That is not a problem, but what I would love the project to do, is not to schedule resource 1 now and resource 2 in 95 days time, but rather to schedule resource 1 and resource 2 in 95 days time, ideally setting the resource schedule around the last possible resource availability date, and not to start as soon as possible. Due to the nature of the resource allocation ( i do want it to be dynamic) i can’t join the tasks with a start as late as property.
Many thanks
Marc
Marc,
There are a few ways to fix this problem. The one I would recommend is to just go into the task itself, undo the auto-leveling, and level the work manually. MS Project has almost certainly introduced a leveling delay for the task, and a leveling delay for one of the two resource assignments for the task. Remove the leveling delay for the resource, so that both resources work on the task at the same time. Then add a leveling delay to the task, so that the task is moved forward to day 95, when you want it to occur.
If you are faced with many tasks and the same basic problem, you might want to handle it differently. One of the options in the automatic resource leveling dialog box is “Leveling can create splits in remaining work”. If you uncheck that box, MS Project will not schedule any splits in the work. This setting MIGHT be driving part of your problem. Even more important is the option “Leveling can adjust individual assignments on a task”. If you uncheck that box, MS Project will not introduce assignment delays. It will only schedule the task when BOTH resources are available to work on it.
If you want to get really fancy, you can automatically level the whole schedule with your current settings, then automatically level a few, selected tasks with these checkboxes unchecked. When you do resource leveling, MS Project will ask “Entire Project” or “Selected Tasks”. You can do some very complex automatic leveling if you are willing to select specific tasks, level with different options, and then re-level again. The possibilities are virtually endless.
I hope this helps.
–Alex
I have two task A & B, that are dependent strangly. The task-A should end when the task-B starts. The task-B has a start dependency with many other tasks, which works fine. Hence when task-B is delayed, due to some reason, expectation is: task-A end date should change aswell, increasing the duration of taskA. Please help.
MS Project does not automatically change the duration of tasks based upon dependency relationships.
Primavera has this feature, I have been told, and experts with that tool have called task A a “hammock” task. A “hammock” task is one that will expand and contract its duration to fill the space in between.
There are two good strategies to handle this situation in MS Project:
1. Set up task A and task B with finish-to-start relationships, and manually adjust the duration of task A whenever the dates change. Be careful, because if task A’s duration is too long, it will artificially push task B’s start out into the future. Also, if task A’s duration is too short, then task B’s start date will be set by its other predecessors, and will not match the end-date of A.
2. Convert task A into two milestones — a start and an end milestone. Give the start milestone the same finish-to-start relationships as the original task A. Give the end-milestone a finish-to-start relationship with task B, and make it start as late as possible. This should make the end-milestone follow the start-date of task B. To keep the network diagram whole and logical, also make the start-milestone a finish-to-start predecessor to the end-milestone. This effectively creates a “hammock”. The start and end milestones will follow their predecessors and successors naturally. You can even create a summary task that contains ONLY the two milestones, and it will appear that you have created a true task that changes its duration.
It is not a real task, though, just a summary. I do NOT recommend adding resources to this summary task, nor do I recommend putting scheduling logic on the summary task. You can create new, ugly problems if you treat the summary task as a real task.
Both of these methods are work-arounds, not true solutions. Depending on how many of these types of tasks you need, and whether you are tracking resources, one solution or the other will probably work better for you.
Alex,
I want the ability to assign multiple resources to a task (for scheduling purposes). Then, when I resource-level the project, I want Project 2003 to only select a single resource for the task. Currently, Project is assigning the tasks to all the resources. Is it possible for Project to only select a single resource to finish a task from start to finish?
MS Project will not automatically substitute resources for you. It will never make the decision for you, whether to use Resource A or Resource B to complete the same task. There are some wizards to make it easier to substitute resources, but there is no way for it to automatically decide who to assign.
If you wanted to, you could create a VB application or macro that uses some kind of a rule to decide which resource to assign. That would be complex, though. I recommend getting a VBA-experienced programmer, who also knows MS Project, if you decide to do that.
Personally, I just make multiple passes through the schedule, substituting resources, to figure out the best solution to the problem. Usually if you first level your most critical, skilled people, then fill in the remaining work with the available people, you should be able to get the best outcome.
You might even want to continue to assign multiple resources to each task, but then mark the work as 0% for one and 100% for the other. Having the resource assigned at 0% would be a reminder that the resource is qualified to complete the task. Then, when you fix the resource leveling each time you update the project plan, you can change the actual work assignments quickly and easily.
A final suggestion is to use “resource pools” instead of individual resources. For instance, if you have a single resource “programmers”, which represents 5 programmers, then you do not need to worry about which programmer is assigned. Just assign the “programmer” resource at 100% to each task as needed, and you can assign the actual programmer later. This “programmers” resource should have a max units setting of 500%, because there are 5 people available.
I hope one of these solutions works for you.
–Alex
Mr. Brown,
I have set up a project timeline with all of the events I need. For simplicity we’ll say they are all linked in series to the task before them. What I am looking to be able to do is see how accurate the dates and durations I scheduled are. What I would like is if it takes 3 days longer then predicted to do task A, then there would be a little 3 day red extension on the timeline. If it finishes 3 days early, there would be a green part of the line. I am hoping to get the subsequent tasks to move accordingly. What I have now is a comparison of every task to a baseline. When a task takes longer than predicted, it shows the comparison. However, it compares the other tasks to when they were supposed to have started too. I would only really like to see when they will start and finish based on the new timing and only have the early or late task compared. Any thoughts?
Will,
Your needs are fairly complex, and I know for sure that they could be solved with a Visual Basic for Applications extension to MS Project. Figuring out the code is too complex to post here, and I would recommend against it. I think you can do a lot of things with the built-in formatting features of MS Project, and create a nearly-perfect view with a lot less work.
To solve this problem, you will need to become VERY familiar with the custom formatting dialog box for the Gantt chart view. This dialog box lets you set the colors, bar styles, and other settings for a Gantt chart. Every “view” in MS Project has different settings, and I recommend exploring the dialog box for any of the built-in views that are close to what you want.
I am going to break your problem into parts, and suggest some possible solutions using bar styles. Experiment with these to see which ones best meet your needs. I think you will use a combination of these to solve your problem.
You mention having a green bar if a task is early, and a red one if the task is late. Create two special bar styles, one colored red, and one colored green. The green one will show the number of days AHEAD of schedule that the task is, and the red one will show the number of days BEHIND schedule the task is. Several of the built-in views show the schedule in relation to the baseline. Other views highlight the critical path tasks in red; these views will give you a good example of how to show different colors, depending on a conditional formula. Use these as a model for the new bars for your tasks.
A more difficult problem is to show these values ONLY for the task that is late, and NOT for the tasks that get pushed earlier or later. Most of the built-in views compare the planned start/finish to the baseline start/finish, so any variance in an early task creates a visible variance in all the tasks that follow.
I recommend that you use the planned vs. baseline DURATION instead of the start/finish dates. If you display the difference between the planned vs. baseline duration on the Gantt chart, then you will show that bar ONLY for the tasks that are causing the variance, and not the tasks that have just been pushed backwards or forwards by their predecessors.
Exactly how to best display these values is up to you. There are hundreds of combinations of color, position, text, pattern, and other variables available to you. You might want to create some custom fields to help drive your new view. A custom field can contain the results of a formula, like “baseline duration – planned duration”, and it might help you draw the chart that you want to display. If your chart requires custom calculations, I suggest creating a view and a table that displays these custom fields. People always ask, “What does that bar mean?” when you create a custom view. Having the number appear right on the chart will help people understand the graphical view.
Finally, be sure to create a new, custom-named view before you start experimenting. Copy the built-in view that is closest to what you need, but do not start changing that built-in view. I have forgotten to create a custom view sometimes, and it always causes problems later. Inevitably I eventually decide that I need the built-in view also, and then I must copy views back and forth. Do all your experiments on a custom view, and save yourself the time and rework.
I hope this helps.
–Alex
Mr. Brown;
I’m trying to develop a yearly plan of the operations depending on the availability of resources.
For each month I have a certain number of tasks that need to be accomplished during the month, to guarantee the accomplishment of the tasks I put the constraints of do not start early than the beginning of the month and the end of the month as a deadline.
in the other hand I have a certain number of tasks that need to be done during the year regardless of the beginning date but depending on the availability of the resources.
I faced a certain number of problems:
- I do not have enough resources so some of the tasks are delayed to the next month. So i need to add resources (I need to know how many resources do I need to perform all the tasks during the available period).
- The tasks that need to be done any time during the year represent a sequence of tasks that need to be done without any delay between them. let’s say A–B–C–D need to be performed in that sequence and with no delay between them. the software need to consider the the whole sequence and try to fit it where ever the resources are available. I’m having a lot of troubles implementing the sequence of precedence between the tasks. The result of the levelling automatically adds a delay between A, B, C and D and put every single task whenever resources are available. THE CONSTRAINT ASS+N days do not work properly and also if I add a SF constraint to a generic task that I added at the end of the desired sequence deadline A–B–C–D–G (G=A FS + number of days of (B+C+D)). The tasks B, C and D are still affected after the due date of the milestone G even though the task has a SF constraint linked to G. I tried also to create a consolidated project hoping that the project will be considered as a whole set and it will be affected without changing the delay between the tasks. That also did not work.
I did unchecked the option that guarantee the accomplishment of tasks within the constraint dates in the calculation tab of the tool menu. I also do not use the effort driven option, I just want to schedule a certain number of tasks knowing there exact duration(it is fixed and can not be changed) and also knowing how many resources will be affected to each task in order to finish the assignment. I just need to find out what will be the start dates (finish dates are assumed knowing the duration) of all the tasks in order to realize the whole set of duties.
I’m really being frustrated with those problems, Hope you can help me.
Thanks a lot
Hi Alex,
I am using the variation of traditional approach of project planning using both dependencies and priorities. I also use manual resource levelling with all options unchecked for the entire resource pool. I also input actuals and remaining work into the project on a weekly basis, and then re-level the projects. It works well most of the time, but sometimes MSP introduced Assignment Delays to tasks for whatever reasons. That really screws up the finish time. The second issue is that, sometimes, if I level the resources several times in a row, a task’s work can increase dramatically (eg., 1d -> 10d). Why does it happen? Is there anyway to avoid it?
Hi Alex,
My question is similar to raised by Marc on 25-Feb-2009. The problem is that after leveling the tasks with Split option, the task is split mutliple time even for few hours. It spans even a days work over few weeks. I am using “Day by Day” leveling “Priority and Standard” options. I want to split the tasks, but not the extent of fractions of 1 day. Plus, I see a task started on given day, but it actually starts in right manner only after a long delay.
Please help.
I am trying to resource load my MS Project schedule where the resources are time phased. The task has start and finish dates that cannot change, but when I add resources to the task the start/finish date changes. Also when I enter the amount of budgeted hours for each month the start and finish dates change. Is there a way to setup the schedule so I can enter the budgeted hours or cost into the appropriate month in Project without changing the start and finish dates?
Thanks,
Rena
I recommend taking a look at this article “Take Back Control”. If you want your start and finish dates to stay the same, even as you change work-hours and resources, you probably want to create “Fixed Duration” tasks. If your tasks are a “Fixed Work” or “Fixed Units” type (“units” is the default), then every time you add resources or change their work-hours, the duration of the task will recalculate.
If you truly want to just allocate budgeted hours to a particular month, I would think about doing your budget tracking in Excel instead of MS Project. I find most accounting groups prefer to work in Excel, because they create separate columns for each monthly reporting period, and the budgets match what they see in their general accounting system.
In MS Project, you must attached budgeted hours to tasks, which is not the way most accountants approach budgeting.
If you have more questions around this, please feel free to contact me.
Saurabh,
It sounds like you are like me, and want a high level of control over resource leveling on your projects. I would recommend doing your resource leveling manually instead of automatically. The automatic leveling features force you to decide “split” or “no split”. If you wanted a custom leveling method, where splits of one day or more are allowed, but not splits of just a few hours, then you would need to write your own leveling method, using Visual Basic script.
You might find that you can do resource leveling in a less restrictive approach. Try using “Week by Week”, and then MS Project will not be as aggressive in splitting and changing your tasks.
I usually prefer to manually resource level, though, because of these types of problems.
–Alex
Patrick,
If you do not want assignment-level delays, then uncheck the “assignment level” check box in the automatic resource leveling dialog box. I have also found that assignment-level delays typically cause many more problems than they solve. I never allow MS Project to automatically introduce them, and I rarely put them in by hand.
You can also see strange results if you apply automatic leveling over and over again. By default, MS Project will review the schedule, leave all of the existing leveling delays in place, search for any areas of over allocation, and then spread the work out even more to level them. Usually that is not what you want. I like to first “Clear Leveling” before running the automatic leveling feature. The “Clear Leveling” button will set all assignment- and task-leveling delays to zero. If you click this each time, you should avoid the problems you are seeing when you level more than once.
–Alex
Khaled,
I suspect that your frustration is due to the fact that MS Project is fairly poor as a job-based scheduler. I often work with mainframe systems that have a sequence of computer processing jobs. The total set of jobs must be done in a certain order, and must be completed in a specific window of time. I have tried using MS Project to model these schedules, and it just does not work very well.
MS Project has the concept of sequencing, but it also assumes that any task can be delayed by an arbitrary length of time without penalty. There is also no concept of a “hammock” task (the term “hammock” is used in Primavera), which is an activity that shrinks and fills as needed, to fill in the space between two other tasks.
Since you do not want to have any delays between any tasks, I recommend that you do NOT use ANY resource-leveling features of MS Project. All of the automatic resource leveling features use delays of different kinds. They will always create breaks between work, which you cannot allow.
Instead, I would recommend using chains of predecessor and successor relationships to create a resource-leveled plan. If the sequence must be A-B-C-D, then make B the successor to A, C the successor to B, and D the successor to C. If you need to level resources for these tasks, add or remove resources to each of the tasks, and adjust the units. You can use the resource usage views to see when you are over- or under-allocated, but do NOT use the automatic leveling features.
It sounds like you are using “fixed duration” tasks. That choice is a good one, because your work always has a set duration. When you change units or work, you do not want the duration to change. A “fixed duration” task will handle that situation well.
If you create chains of fixed-duration tasks, then add the necessary resources and work amounts to each task, then the resource usage report should tell you exactly how many units of work are needed in each time period. If you do not have enough resources to complete all this work, then you will need to delay some of the tasks to a future month. I would recommend putting milestones into the plan, representing when resources become available to you. Then make the tasks dependent on that milestone. If you get the additional resource, you can remove the milestone and the constraint.
For instance, assume you need to do A-B-C and D-E-F (two different chains of work), both in the same month. You have enough resources to do A-B-C just fine, but you cannot start D until B is complete, because you do not have enough people to staff task A or B at the same time as D. Create a milestone called “Staff Available From Tasks A-B”. Make task B its predecessor, and make D its successor. This milestone will “snap” the whole D-E-F sequence ahead in time, fixing the resource over-allocation. If you are able to get additional resources, then you can remove the milestone, and the D-E-F sequence will snap back to your project start date.
I hope this helps. MS Project is not ideal for these types of scheduling problems.
–Alex
Hi Alex
I’m a very handy excel vba’er, but am bashing my head against a wall trying to do my tricks in Project.
I’ve written a good import from an excel sheet into a custom project template, that’s all fine. I even got the hang of the indent/outdent stuff to categorise (or group, I don’t know what the word is for it, I mean subtasks within main tasks, and jobs within the subtasks)
But now I’m working on an ‘update’ macro, and I’m about to cry.
All I want to do, is say “For each row in the excel sheet, check to see if the UniqueID field in excel exists within Project. IF IT DOESN’T, then create a new subtask under that task at the right place”
The closest I’ve got is the if statements working, but it adds the new task at the bottom.
My research has led me to believe there’s no easy ’select’ feature, and defining rows is nigh impossible.
I want it to search through the subtasks, and if it finds the right one, insert a new task under the same parent, and then I can marry up all the columns in excel with it.
I can’t find any sort of “insert new task”, only “Rowinsert”, and if I DO a RowInsert, how do I then select that newly inserted row or ‘task’ as my object so I can add its properties?
Cheers
C
I am not experienced using VBA to automate MS Project, but I suspect that the RowInsert method is the one you want. From reading the on-line documentation, it sounds like you want to use SelectRow to select the row BELOW the one where you want to add the new task, then RowInsert to add the new one. I believe the new row will be selected after the RowInsert method adds the new row.
I also recommend looking at the Excel import/export functions. I have been able to do “round trip” updates of MS Project using Excel. The key is to use the UniqueID field, as you have already discovered. You might be able to accomplish your goal using an Excel import/export mapping instead of using VBA.
Good luck, and let us know how it turns out!
–Alex
Hello, Alex!
I’ve been working to integrate MS Project plans with a centralized SharePoint site using third party software that works very well to publish multiple plans into a single SharePoint task list.
The challenge is in how I get a flat list in SharePoint to roll up in a way that’s similar to how the project is rolled up, under a series of project plans, categories, and master tasks.
There are two components to this issue:
1. All tasks with the same info.
In order to differentiate one project plan from another, ALL tasks within that project must have the same identifier. All tasks for the project plan for the product release of “Widget Version 5″ must be labelled as “Widget Version 5″.
This is tough to control. All users must make sure that, every time they add a task, it has this information within it. It’d be much easier if you could set some sort of default that could change from project to project.
2. Sub-tasks under Master-tasks.
Similar to #1, there are many tasks that have the same information, but vary based on which task they are sub-grouped under.
Parallel efforts are organized into categories. The categories each have efforts that are broken down into the tasks that represent a single objective.
So, for example, under a project plan of “House Renovation” you might have one category devoted to “Interior Decoration”, and then a group of efforts under that. These objectives might include “Paint” or “Carpet”.
Each objective, in turn, has tasks associated to it. “Carpet”, for example, may have “Pick color” as the first task, and then “Order carpet” as the second. In this example, however, “Pick color” and “Order carpet” would be lines in the project plan that have custom fields saying (as in question #1) “House Renovation”, but also “Interior Decoration” as a category and “Carpet” as a master task.
I’m sure I’ve made this explanation far more complicated that it need be, but do you know of any way to automate this?
I am tryign to create a report but only want 10 milestones in my project plan containing 25. How can I accomplaish this?
thanks
Snigdha,
If you do not need the other 15 lines, you could simply delete them. If you want to have only 10 milestones appear, I recommend creating a custom view and hiding the other 15 lines in the schedule using a filter of some kind. Read the help files under “New View” and “New Filter” for details.
–Alex
Chris,
I do not mean to be difficult, but at this point my recommendation would be “stop using Microsoft Project and SharePoint.” I have struggled with similar integration issues on my own and have become a big advocate of web-based software like DotProject.
I am not a SharePoint specialist, but I believe you can create custom, structured data types in SharePoint. I would recommend modifying the third-party software to import/export a hierarchical list. I have found that trying to force users to match project and roll-up task names exactly is a difficult process. If they could pick the project names and parent task names from a drop-down list, I believe you would get much better data quality.
Let us know if you work out a solution. I wish I could help more directly, but SharePoint-to-MSP interfaces are not my specialty.
–Alex
In an Agile development, we have 8 work stream ie individual MS project plans. I want to set up dependencies between these sub projects and then monitor them, so that any changes due to the dependencies are highlighted in the individual MS project plans. Some of the sub project plans are thousands of lines and managesd by individual project managers. Any suggestions
You could use the MS Project master plan and cross-project dependencies, but it may be slow with such big plans. I recommend establishing milestones in each plan to show cross-project dependencies. You can have amacro sync them, or just keep them updated by hand.
I have simple project 5 parallel paths and relatively few constraints. Resource leveling is starting each task parallel path on day one and overallocating the single person resource rather than delaying the start dates of anything.
What might be causing that?
Thanks
If you do not add any predecessor/successor relationships, then all tasks start on the project start date, and you get the “problems” you describe. If you follow any of the approaches to resource leveling described in the article above, you can create a leveled plan.
–Al
Hi,
Is there an easy way of setting start and finish variances so that they only count working days?
Thanks
The default variances are set in calendar days. You can get variances in working days by creating a custom field that calculates the number of working days between the actual and baseline dates, but it is not a built-in field in MS Project.
When creating your custom, calculated field, think hard about which calendar you want to use to calculate the number of working days. It might be more useful to calculate using the task and resource calendars. Many calculations in MS Project use the project calendar. Be sure to review the custom field documentation closely to see which calendar your variance calculation is using.