About Task Dependencies

Setting dependencies between tasks is a way to serialize the execution of tasks, making sure that one task does not start or finish until another task is started or finished.

Setting slack time is a way to pad the start and finish dates so a task starts a certain number of days before or after another task starts or finishes. When a dependency is added for a task, the task dates for the task that is depended on (the dependee task) determines the dates for the dependent task.

This page discusses:

How Dependencies Work

If a dependency defines Task A as dependent upon Task B, Task B's start and finish date do not change as a result of this dependency. Only Task A's dates can change and the change is a result of two components of the dependency:

Dependency Type

There are four types of dependencies:

FS (Finish-to-start). The selected task cannot start until this one finishes. This is the default task dependency.

SF (Start-to-finish). The selected task cannot finish until this task starts.

FF (Finish-to-finish). The selected task cannot finish until this task finishes.

SS (Start-to-start). The selected task cannot start until this task starts.

You can add dependencies for a task in the Create or Assign state. You cannot modify the dependency type of an existing dependency.

You can add up to 4 different dependencies on the same task.

Once you insert a sub-task under a task, the task becomes a summary task (meaning it has children that determine its start and end dates). In that case, if the summary task has an FF or SF dependency, that dependency becomes invalid. In the case of other dependencies, the scheduling of the Summary Task depends on the scheduling of its sub-tasks.

If a milestone or gate has a successor task, once that milestone/gate is promoted to the Completed state, the successor task gets auto-promoted to the Draft state.

On premises only: For more information about scheduling, set "emxFramework.DateTime.DisplayTime" to "true" in the emxSystem.properties file. It shows the time along with the date.

The scheduling is aligned with Microsoft Project scheduling.

For example, for a Summary Task with zero duration tasks as sub-tasks, the behavior will be as follows:

NameIDDurationDepStart DateEnd Date
T111 Day20Feb2017 8am20Feb2017 5pm
T221 Day1:FS20Feb2017 5pm21Feb2017 5pm
...T1.131 Day21Feb2017 8am21Feb2017 5pm
...G1.140 Day20Feb2017 5pm20Feb2017 5pm

In the above example, for the Summary Task T2, the start date is set as the earliest date among sub-tasks (G1.1) and the end date is the latest date among the subtasks (T1.1).

Slack Time

The number of days or hours before or after the date determined by the dependency type. For example, if the dependency type is Finish-to-Start, then the dependent task should start when the dependee task finishes. If you specify a slack time of +1.0 day, then the dependent task should start 1 day after the dependee task finishes. A slack time of -1.0 day means that the dependent task starts 1 day before the dependee finishes. You can also use hours to define slack time, such as +4.0 hours. But if the dependent and the dependee task with an estimated duration of 0 days, and having an FS dependency with slack time of 1 day, has the same start and end date, but the time component of the date will be different.

Below are examples of how dependency types and slack times impact task dates.

For each of these examples, assume the dependent task (the task the dependency is added to) is a task with a 2-day duration. Also assume the dependee task (the task specified in the dependency) is called FIXED TASK (indicating that its start and finish dates do not change as a result of the dependency). FIXED TASK is also a 2-day task and has these dates:

Start: Thur Jul 24, 2014

End: Fri Jul 25, 2014

The dependent task has this Dependency Type and Slack Time:

Will have this Estimated Start Date

And this Estimated Finish Date

Because the dependent task:

FS+0.0 d

Mon Jul 28, 2014

Tues Jul 29, 2014

cannot start until FIXED TASK finishes

FS+1.0 d

Tues Jul 29, 2014

Wed Jul 30, 2014

can start 1 day after or after the completion of the dependee FIXED TASK finishes

FS-1.0 d

Fri Jul 25, 2014

Mon Jul 28, 2014

cannot start until after FIXED TASK finishes minus one day, which means it starts the day the task finishes

SF+0.0 d

Tues Jul 22, 2014

Thur Jul 24, 2014

cannot finish before FIXED TASK starts so the system enters the earliest date allowable for the finish date: the day FIXED TASK starts

SF+1.0 d

Wed Jul 23, 2014

Fri Jul 25, 2014

cannot finish before FIXED TASK starts plus 1 day, so the task's finish date is 1 day after FIXED TASK starts

SF-1.0 d

Mon Jul 21, 2014

Wed Jul 23, 2014

cannot finish before FIXED TASK starts minus 1 day, so the task's finish is 1 day before FIXED TASK starts

SS+0.0 d

Thur Jul 24, 2014

Fri Jul 25, 2014

cannot start before FIXED TASK starts so the system enters the earliest start date allowable, which is the same as FIXED TASK's start date

SS+1.0 d

Fri Jul 25, 2014

Mon Jul 28, 2014

cannot start before FIXED TASK starts plus 1 day

SS-1.0 d

Wed Jul 23, 2014

Thur Jul 24, 2014

cannot start before FIXED TASK starts minus 1 day

FF+0.0 d

Thur Jul 24, 2014

Fri Jul 25, 2014

cannot finish before FIXED TASK finishes so the system enters the earliest date allowable for the task's finish date, which is the same as FIXED TASK's finish date

FF+1.0 d

Fri Jul 25, 2014

Mon Jul 28, 2014

cannot finish before FIXED TASK plus 1 day

FF-1.0 d

Wed Jul 23, 2014

Thur Jul 24, 2014

cannot finish before FIXED TASK minus 1 day

Dependency Syntax

When shown in the task structure, the dependencies are abbreviated using this convention:

Task ID: [Dependency Type] [Number of Slack Days or Hours, if any]

Multiple dependencies are displayed with a comma separator. For example, if the task has two dependencies, the column looks like this:

4:FS+2.0 d, 5:FS+12.0 d

The value displayed depends on the column width. If the column width is not sufficient, the user can mouse-over the entry to display all dependency details.

Furthermore, a dependency sequence can reflect a subproject in a master project or an external cross project dependency, as follows:

5:FS+12.0 d (subproject in a master project)
ProjectName:FS+12.0 d (external cross project dependency)

The default value "FS" is stored in the properties file. Possible values could be FS, FF, SS, or SF. When you edit the Dependency field for FS values, you need only enter the dependency number. For example, if you enter "8", the system appends ":FS" to the dependency number and the resulting dependency is "8:FS".

Below is a table of supported dependency formats.

Internal Dependency FormatExternal Dependency Format
2 -
2:FS ExternalProject:2:FS
2:FS+10 d ExternalProject:2:FS+10 d
2:FS+10 (Internally stored as 2:FS+10 d) ExternalProject:2:FS+10 (Internally stored as ExternalProject:2:FS+10 d)
2:FS+10 h ExternalProject:2:FS+10 h
2:FS+10 d, 3:FS+2 d ExternalProject:2:FS+10 d, 3:FS+10 d

Here are some examples of dependency abbreviations.

This Dependency:

Means this for the task that has the dependency:

3:FS+0.0 d

The task is dependent on task ID 3. The dependency is Finish-To-Start, which means task 3 must finish before the task can start.

2:SF+1.0 h

The task is dependent on task ID 2. The dependency is Start-To-Finish, which means task 2 must start before the task can finish. There is a slack time of 1 hour.

4:SS-3.0 d

The task is dependent on task ID 4. The dependency is Start-To-Start, which means task 4 must start before the task can start. There is a slack time of minus 3 days.

1:FF+5.0 d

The task is dependent on task ID 1. The dependency is Finish-To-Finish, which means task 1 must finish before the task can finish. There is a slack time of 5 days.

4:FS+0.0 d

The task is dependent on Task ID 4, with a dependency type of Finish-To-Start.

Cross Project Task Dependencies

It is possible to have cross project task dependencies within the root project schedule.

  • Only the Project Owner or the Project Lead can establish the task dependency between projects.
  • The Sub Project is added as a dependency to the selected task.
  • There can be dependencies or slack time between tasks in one project to another task in another project inside the root task schedule.
  • Cross project dependencies also support the standard dependencies such as Finish-To-Start, Finish-To-Finish, Start-To-Start, Start-To-Finish dependency along with the lag and lead time.

For example, consider two projects, P2 and P3, to be added in the schedule of project P1. Task T21 of project P2 is dependent on Task T31 of project P3 and vice versa. The schedule of P1 is shown below.

P1 Schedule

P1

---P2

-------T21

---P3

-------T31