## Background Information

Recently, one of my fellow EPMA team members and I conducted three presentations for a large aerospace manufacturer. These presentations offered a “Deep Dive” into task planning topics such as using constraints, using task dependencies, and using Task Types. During the presentation on constraints, one of the participants asked if constraints affect the *Total Slack* calculation. The participant’s question got me thinking about the exact relationship between constraints and the *Total Slack* calculation.

In response to the question, in this blog post I will answer the participant’s question and show you how Microsoft Project calculates the *Total Slack* values when you apply constraints to tasks in a project. I will also show you how Deadline dates affect the *Total Slack* calculation as well. In my follow-up blog post, I will show you how a missed constraint date or Deadline date can generate negative *Total Slack* values in a project, and show Critical tasks that are not truly Critical.

## How Do Constraints Impact Total Slack?

Notice in the project shown in the following figure that I have no constraints applied to any task, as indicated by the *ASAP* value in the *Constraint* column for each task. This results in a *Total Slack* calculation of *0 days* for each task. By the way, the *Total Slack* value for each task is the number of the days the task can slip without affecting the *Finish* date of the entire project. If a task has a *Total Slack* value of *0 days*, this means that the task cannot slip, indicating that the task is a Critical task. In the following figure, you can see that every task is a Critical task, as indicated by the red Gantt bar for each task.

There are several situations in which applying a constraint to a task can generate a *Total Slack* value greater than *0 days*. The first situation occurs when you apply a constraint to the *Start* date or *Finish* date of a task so that so that the *Constraint Date* value is ** greater than** the original

*Start*date or

*Finish*date value. The constraints you might use in this situation include Start No Earlier Than (SNET), Must Start On (MSO), Finish No Earlier Than (FNET), and Must Finish On (MFO). When you do this, Microsoft Project moves the

*Start*date of the selected task away from the

*Finish*date of its immediate predecessor task, which creates a “gap” between the these two tasks. Microsoft Project calculates the

*Total Slack*value for every predecessor task as the amount of the “gap” between these two tasks measured in working days. This means that any predecessor task can slip up to the

*Total Slack*value without delaying the

*Finish*date of the entire project.

To show you how the first situation works, I apply a Start No Earlier Than (SNET) constraint to the Test 1 task with a *Constraint Date* value of *02/18/15*. Because the Constraint Date value is greater than the original *Start* date value of this task, Microsoft Project calculates a *Total Slack* value 0f *2 days* for the two predecessor tasks, which are the Design 1 and Build 1 tasks. Because the *Total Slack* value for these tasks is greater than 0 days, this means these two tasks are now non-Critical tasks, as indicated by the blue Gantt bars for these two tasks shown in the following figure.

The second situation occurs when you apply an inflexible constraint to the *Start* date or *Finish* date of a task so that the *Constraint Date* value is ** greater than or equal to** the original

*Start*date or

*Finish*date value for the task. These two inflexible constraints include Finish No Later Than (FNLT) and Start No Later Than (SNLT). In this situation, Microsoft Project calculates the

*Total Slack*value for the selected task and for every predecessor task using the difference between the

*Constraint Date*value and the original

*Start*date or

*Finish*date value. There is one exception to this calculation formula, but I will explain the exception a little later in this blog post.

To show you how the second situation works, I apply a Finish No Later Than (FNLT) constraint to the Build 1 task with a *Constraint Date* value of *02/13/15*. Because the *Constraint Date* value is equal to the *Finish* date value for the Build 1 task, Microsoft Project calculates a *Total Slack* value of *0 days* for the Design 1 and Build 1 tasks. You can see this in the following figure.

If I change the *Constraint Date* value to *02/16/15* for the FNLT constraint on the Build 1 task, Microsoft Project recalculates the *Total Slack* values. Because the *Constraint Date* value is *1 day* greater than the *Finish* date value for the Build 1 task, the software calculates a *Total Slack* value of *1 day* for the Design 1 and Build 1 tasks. You can see this in the following figure.

If I change the *Constraint Date* value to *02/17/15* to for the FNLT constraint on the Build 1 task, the software recalculates the *Total Slack* value again. Because the *Constraint Date* value is *2 days* greater than the *Finish* date value for the Build 1 task, the software calculates a *Total Slack* value of *2 days* for the Design 1 and Build 1 tasks. You can see this in the following figure

Now I want to show you the exception to the *Total Slack *calculation formula. If I change the *Constraint Date* value to *02/18/15* to for the FNLT constraint on the Build 1 task, Microsoft Project ** does not** recalculate the

*Total Slack*value for the task and its predecessor. Instead, the software continues to calculate a

*Total Slack*of

*2 days*on the Design 1 and Build 1 tasks. You can see this in the following figure.

So, the plot thickens! Why did Microsoft Project only calculate a *Total Slack* value of *2 days* when we might have expected it to calculate a value of *3 days* instead? In my previous two examples, I gave you the simplified description of how the software calculates the *Total Slack* value for a task with an inflexible constraint such as FNLT. The real calculation formula for this example is as follows:

1. The software calculates the difference between the *Constraint Date* value and the *Finish* date value for the task. In this case, the difference would be *3 days*.

2. The software also calculates the difference between the *Finish* date value of the task and the *Start* date value of its immediate successor task. In this case, the difference would be *2 days*.

3. The software sets the *Total Slack* value as the ** smaller** of the values calculated in steps #1 and #2 above. In this case,

*2 days*is the smaller value, therefore, the

*Total Slack*value is

*2 days*.

By the way, the *Constraint* column shown in each of the preceding figures ** is not** a default column available in Microsoft Project. The software

**does**include a

*Constraint Type*column, which shows values such as Finish No Later Than or Start No Earlier Than in the column. The

*Constraint*column I am using is actually a custom column containing a formula that shows the abbreviation for the type of constraint applied to the task. This allows me to use a narrower column to show the constraint type for each task. If you would like to know the formula I am using to show the abbreviated constraint type values, please send me an e-mail at the following address and I will share the formula with you:

**[email protected]**

So, do constraints affect the *Total Slack* calculation? Now you know that the answer to this question is yes. And you also know precisely how Microsoft Project calculates the *Total Slack* when constraints are applied to tasks in a project.

## How Do Deadline Dates Impact Total Slack?

For **Critical tasks**, *Deadline* dates **do not** impact the *Total Slack* calculation in Microsoft Project. In the project shown in the following figure, notice that I set a *Deadline* date of *03/04/15* on the Phase I Complete task. The *Deadline* date is three days later than the *Finish* date of this task, but the *Total Slack* value is still *0 days* for every task in the project.

For **non-Critical tasks**, the situation is the opposite: Deadline dates **do impact** the *Total Slack* calculation. In the following figure, notice that all of the tasks in the PHASE II section of the project are non-Critical tasks, indicated by their blue Gantt bars. Notice that I applied a *Deadline* date of *02/10/15* on the Build 2 task, which resulted in a *Total Slack* value of *1 day* for this task. Notice also that I applied a *Deadline* date of *2/20/15* on the Phase II Complete milestone task, which resulted in a *Total Slack* value of *3 days* for this milestone task.

When analyzing the *Total Slack* in a project, keep in mind that *Deadline* dates **do not** affect how Microsoft Project calculates the *Total Slack* values for Critical tasks, but *Deadline* dates **do **affect how the software calculates T*otal Slack* values for non-Critical tasks. In my follow-up blog post, I will show you how missed constraint dates or missed *Deadline* dates can cause the software to generate **negative** *Total Slack* values in a project, and to display Critical tasks that are not truly Critical tasks! Be watching for this follow-up blog post to learn even more about how constraints and *Deadline *dates impact the *Total Slack* calculation.

Did this blog post help you? Would you like to learn more about how to effectively use Microsoft Project, Microsoft Project Server, or Project Online to manage your projects? If so, please consider enrolling in one of our upcoming open enrollment training classes.

You can take our training classes “in person” in our EPMA training center in Houston, Texas or “live-virtual” over the Internet. And don’t forget to follow us on Twitter, LinkedIn, and Facebook.