Dependencies

About dependencies

Tasks may need to be performed in a specific order, and Relay uses dependencies to keep track of these relationships. A dependency is a rule that specifies whether a task can start, or finish, depending on whether another task, known as the predecessor, has started or finished.

There are different types of dependencies.

The simplest type of dependency is a finish-start dependency, which means that this task cannot start until the predecessor task has finished.

Other types of dependency are also supported:

  • start-start – this task cannot start until the predecessor has started.
  • finish-finish – this task cannot finish until the predecessor has finished.
  • start-finish – this task cannot finish until the predecessor has started.
  • start-start + finish-finish – this task cannot start until the predecessor has started and cannot finish until the predecessor has finished.

If a task has sub tasks, then the subtasks have an implicit start-start dependency on the parent task, and the parent task has an implicit finish-finish dependency on all the sub tasks. Or, in plainer words, you cannot start a task until its parent has started, and a task is not considered finished until all its child tasks are finished.

If a start dependency isn't met, then when you attempt to send a task, start a task, or mark the task as ready, it will be marked as "waiting for dependencies". When the dependencies are met, the task will be marked as ready and you can continue with task processing.

Finish dependencies do not stop you completing the task, but the task will not be considered finished for further dependency processing until its finish dependencies have been met.

The Outline and Notes task types do not participate in dependency processing. You can use them, particularly the Outline type, for grouping tasks in project plans where you do not want to create dependencies. Implicit sub-task dependencies will apply between the parent of an outline task and the children of an outline task, i.e. the dependency processing applies as if the outline task was not there.

Creating and managing dependencies

Dependencies are listed in the Task section of the Task details page. The dependencies appear alongside the parent tasks and sub tasks in the related tasks table.

Related tasks showing dependencies

To create a dependency, select the predecessor task in the Task column, select the dependency type in the Relationship column, and use Add to create the dependency. The screenshot above shows a finish-start dependency to a "Business case" predecessor task.

The Action drop-down in the related tasks shows the related tasks' context menu. For dependencies, it has an additional option of Remove dependency to remove the dependency.

Because parent tasks and sub tasks are also involved in dependency checking, dependency information is shown for them too.

The dependency type in the relationship column will show an icon and is colour-coded to describe whether the dependency has been met. Hover over the icon to see a description of the state of the dependency. The start and finish columns record the planned or actual start and finish dates of the tasks. These will also have icons on them to indicate whether they are planned dates or actual dates, because only actual task start and finish fulfil dependencies.

In the screenshot below, the task "Sub task" is a child of "Main task" and a parent of "Sub-sub task". The parent dependency (an implicit start-start dependency) is met because "Main task" has started. The child dependency (an implicit finish-finish dependency) is not met because "Sub-sub task" has not finished. Hovering over the icon by the word Child shows what is going on.

Related tasks showing dependency status

Check dependencies

In the normal case, dependency calculations will be managed without any manual intervention. However, if you make changes to dependencies while tasks are in progress, move tasks around, or add new tasks, then the dependency information may need to be recalculated. Use the Check dependencies option from the project context menu to recheck dependencies.