Real-Life MS Project: Delays (the good kind…)

Alex S. Brown, PMP IPMA-C

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.

Experienced schedulers build their schedules carefully, using dependencies, calendars, and other tools to build a model of their project. They avoid fixing tasks to dates, because dates always change.

What do you do, though, when resource-leveling and other issues demand that a particular task start just a few days or weeks later? How do you model these situations so that your schedule will handle change gracefully? The easiest approach is to overtype the start or end date, creating a constraint, but a more effective method is to use delays.

MS Project offers three types of delays, allowing a project manager to model almost any project accurately. Many project schedules require just one or two of these delays, but learning all three ensures that you can select the correct tool in any situation. The three types of delays are

  • Task-level leveling delay
  • Assignment-level leveling delay
  • Assignment delay

This article assumes experience creating basic predecessor and successor relationships between tasks in a MS Project schedule. Examples focus on the common finish-to-start relationships. Experiment before using other types (FF, SS, SF).

All these delays build on top of the basic dependencies with leads and lags. Let’s review the use of leads and lags.

Leads and Lags

  • Screen capture showing a two-day lag and the resulting scheduleTwo tasks with a two-day lag between them

Predecessors usually appear as a task number or a list of task numbers. It is possible to adjust the task relationships by entering a lead or lag time. For instance, a predecessor of “3FS+2d” means that the task will start two days after task #3 finishes. Lags are represented by positive numbers and leads by negative numbers. You can enter these adjustments right into the predecessor or successor column of a task list, or in the “Lag” column of the Task Information dialog box or the Task Form window.

You can enter a lead or lag in any unit of duration, including weeks, days, hours, or minutes. Using leads or lags, a project manager can make just about any date adjustment. With this one tool, you can completely eliminate the use of fixed-date constraints in a schedule. Unlike fixed-date constraints, leads and lags will make all the dependent tasks move together when a predecessor’s date changes.

So Why Use Delays At All?

If leads and lags can do the whole job, why even use delays? Why worry about mastering three different types of delays?

Leads and lags are designed to represent inflexible constraints on your schedule. For instance, if walls cannot be erected until at least three days after the concrete foundation is poured, that is typically entered as a finish-to-start predecessor with a three-day lag. This waiting period is part of the sequencing logic of the schedule.

Delays are designed to represent constraints that are not part of the strict sequencing rules for the project. Resource leveling is the most common application for delays. If you want, you could use leads and lags to do resource leveling, but how would you know if a particular lead or lag was introduced as part of the project’s sequencing rules or because of a resource conflict? Using separate fields for delays make the difference clear.

Using Leveling Delays

If you have ever used the automated Resource Leveling features of MS Project, you may have wondered, “How does it make my tasks jump around that way? It is not fixing the start or end dates, so why are the dates moving around?” The leveling delay fields are the secret. You can change them by hand, either instead of or in addition to automated Resource Leveling.

The easiest way to see them is to use the built-in Leveling Gantt view. Go to the View menu, select “More Views…” and pick “Leveling Gantt” from the list. The column “Leveling Delay” appears as the second column. Of course, you can also add this column to your favorite view if you prefer, but this view is pre-configured with useful information for resource leveling.

  • Screen capture of two tasks, resource leveled using leveling delayBoth tasks have the same predecessor but one starts later because of leveling delay

Task leveling delay is an unusual duration field. It must be entered in elapsed duration units. “Elapsed” means that it is calendar or clock time, not work time. Put an “e” in front of the unit to enter an elapsted duration. For instance “ed” represents elapsed days. Three elapsed days starting on a Friday will end on Monday even if the weekends are non-working days. You can actually enter elapsed days in many duration fields. Task leveling delay is unusual because it requires elapsed duration.

If you have used Resource Leveling in MS Project, there may already be values in the fields. If not, they will start as zero. As you enter values into the fields, the start date for the matching task will move further into the future. By fine-tuning these values you can resolve resource conflicts and over allocations.

Assignment Leveling Delay

The Task Leveling Delay field moves the entire task in time. What if you want to delay the start date for just one resource assigned to a task? The Assignment Leveling Delay field allows you to delay each assignment individually.

You can add this column to any assignment-level view, but the simplest way to display it is to use the Task Entry view. This view features a split screen with a Task Form in the bottom pane to enter details about the task selected up top. Click on the Task Form in the lower pane to select it, then go to the Format…Details… menu and select the “Resource Schedule” format. Each assignment will show a value in the Leveling Delay column. This delay is entered in standard duration units, not elapsed units.

  • Screen capture of a task in the top pane with the Task Form in the Resource Schedule in the bottom pane. Both Leveling Delay and Delay columns appear in the bottom pane.One task with two resources assigned. One assignment has a two-day leveling delay, turning a five-day task into a seven-day task.

Entering a number in this column will delay the start of that particular assignment. The start date for the task remains unchanged, but the finish date may move as you change the delay.

Using both assignment and task leveling delays can lead to confusing situations, where it is hard to tell why a task has a particular start or end date. I tend to avoid assignment delays and instead create multiple tasks, one for each resource. I find that this treatment makes the schedule easier to read and track. Each resource gets their own start and end date clearly marked at the task level. Of course, it is good to have the flexibility to delay an individual assignment when you need it.

Assignment Delay

MS Project provides a third delay field, called assignment delay. It is a different field from the assignment leveling delay, but it works exactly the same. Enter a duration into the assignment delay and the resource will begin work that number of hours, days, or weeks after the task start date. Enter a value for both assignment delay and assignment leveling delay and the total delay will be the total of the sum of the two delays.

The assignment delay field is available in the “Resource Schedule” Task Form discussed above. It is labeled “Delay” in that view. You can add the value to any assignment-level table by adding the “Assignment Delay” field to the table.

Use of Leveling Delays vs. Other Delays

People sometimes ask why there are separate leveling delays at a task and assignment level. After all, they just add to the effects of task-level lags and assignment-level delays.

  • Screen capture of Resource Leveling dialog boxThe Resource Leveling dialog box lets you automatically adjust leveling delays for the whole schedule

These dedicated leveling-delay fields are devoted to the issue of resource leveling. Under the Tools menu, the Level Resources… menu item displays the Resource Leveling dialog box. This screen allows the scheduler to re-level resources automatically. The “Clear Leveling…” button, resets all the leveling delays to zero. “Level Now” automatically adds leveling delays to the tasks of the project to attempt to level the resources. The “leveling can adjust individual assignments” checkbox determines whether or not this leveling engine will use the assignment leveling delay.

The assignment delay field is never changed by this dialog box, and neither is the task-level lead or lag. A scheduler can use these two fields for scheduling constraints that exist regardless of resource availability and the leveling delays to represent scheduling constraints that are based on resource constraints.

Putting It All Together

These techniques will help you build a more robust schedule. They help you apply change to just one part of a schedule and have the changing dates ripple through the rest of the schedule more consistently.

For instance, imagine creating a schedule for a deliverable with four one-week tasks. They could be done in any order, so you enter them with no dependencies and use fixed dates to allow one person to accomplish them over a period of four weeks. If the resource actually starts doing the work out of order or delays start on the work, the dates for each task must be updated manually. Building a predecessor chain for the tasks would help with rescheduling remaining work, but would require a lot of rework if the resource does the work out of order.

Using delays, though, you can schedule these four tasks with a single start milestone as a predecessor and a single finish milestone as a successor. Enter appropriate leveling delays for each task to level out the resource use. Now if the work is rescheduled, you can simply move the start milestone’s date and the rest of the tasks will follow, keeping the previous leveling delays intact. In most situations, these tasks will remain resource-leveled after changing the one milestone. If the resource does the work out of order, you can adjust the leveling delays as needed. Because your predecessor and successor values only show real dependencies, you do not need to change them. Adjusting leaving delays, you can be confident that your project’s sequencing rules are still enforced.

The Good Kind of Delays

The word “delay” usually causes stress for project managers, giving them visions of overrun budgets, late delivery, and lots of overtime. In MS Project, though, delays are a critical scheduling tool. By using

  • Leads and Lags
  • Leveling Delays (task and assignment)
  • Assignment Delays

a project manager can accurately represent the most complex schedules. Schedules built using these delays will be much more resilient than ones built using fixed-dates constraints. Tasks will move together according to the rules set by their constraints and their delays, instead of being fixed to a particular date.