Project Scheduling Engine

arun_vydianatha
ServiceNow Employee
ServiceNow Employee

This post describes the behavior of the Project Scheduling Engine in the Fuji & Eureka releases. This post covers the following topics:

  • Project Schedule
  • Time Constraints
  • Dates & Duration
  • Relations

All examples in this post assume use of the out-of-box Project Management Schedule.

Project Schedule


In ServiceNow, schedules are rules that include or exclude time for various actions or tasks. The Project Management application ships with a schedule Project Management Schedule, which specifies a 40-hour workweek.The durations specified in projects and project tasks take the schedule into consideration. So, for instance, a task planned duration of 1-day means 8 hours of work. Conversely, if you create a task with 8 hours of duration, it would be saved as a 1-day task. To understand this behavior, consider the following examples:

Input durationEventual duration (after recalculations   for the schedule)
8 hours1 day
12 hours1 day 4 hours
1 day 8 hours2 days

The project schedule engine always computes a duration based on the schedule specified in the Project record rather than the value in the Planned duration field.   The other aspect to consider is the schedule entries associated with the schedule. For example, the Project Management schedule that we ship has two schedule entries:

  • Monday-Friday 8AM-12PM
  • Monday-Friday 1PM-5PM

This has an impact on the end date calculation of a task given its start date and duration. Consider the following examples:

#

Planned Start

Planned Duration

Planned End

1

2015-09-08 08:00:00

1 day

2015-09-08 17:00:00

2

2015-09-08 08:00:00

5 hours

2015-09-08 14:00:00

3

2015-09-11 08:00:00

2 days

2015-09-14 17:00:00

For #1, we have a task with a duration of one day. It starts at 8AM on a work day and ends at 5PM on the same day.

For #2, we have a task with a duration of five hours. It starts at 8AM, but the end is set to 2pm instead of 1pm, because the schedule specifies a break from 12PM to 1PM.

For #3, we have a task with a duration of 2 days. It starts on a Friday, so the end date is set to the Monday of the following week. The schedule specifies Saturday and Sunday as holidays, so these days are not included in the work week.

Time Constraints


A Time Constraint is a restriction on a project task that determines when the project should start. The following two types of time constraints are supported:

Start ASAP — The task is set to start ASAP.

Start on specific date — The task is set to start on a specific date.

The following examples explain how time constraints affect the start dates of tasks.

Consider the following project structure.

#

Task

Time Constraint

Planned Start

Parent

1

Project

2015-09-08 08:00:00

--

1.1

Task 1

Start ASAP

2015-09-08 08:00:00

Project

1.2

Task 2

Start on

2015-09-10 08:00:00

Project

Then, the following scenarios demonstrate how time constraints affect the derivations of the planned start dates.

Task

Parent

Time Constraint

Planned Start

Task 3

Project

Start ASAP

2015-09-08 08:00:00

Task 4

Task 1

Start ASAP

2015-09-08 08:00:00

Task 5

Task 2

Start ASAP

2015-09-10 08:00:00

When Task 3 is added under Project with the time constraint Start ASAP, the planned start date of Project is set as the planned start date of Task 3.

When Task 4 is added under Task 1 with the time constraint Start ASAP, the planned start date of Task 1 is set as the planned start date of Task 4..

When Task 5 is added under Task 2 with the time constraint Start ASAP, the planned start date of Task 2 is set as the planned start date of Task 5, because that is the earliest that Task 5 can start.

If a task is created at any level with the time constraint Start on, the planned start date of the task can be set to anything on or after the Project start date. For example, in the above project structure, you cannot add a task with the time constraint Start on and the planned start earlier than 2015-09-08 08:00:00.

Automatic change of time constraint on a task


When children tasks are added to a task in a project, the time constraint of the task becoming parent is automatically set to Start on a specific date. In the above example, when Task 4 is added to Task 1, time constraint of Task 1 is changed from ASAP to specific and then the Task 1 Start date cannot be changed. To understand the behavior, consider the following example.

Consider a Task with the time constraint Start ASAP.

Task

Time Constraint

Planned Start

Task

Start ASAP

2015-09-08 08:00:00

Consider adding the following task Task 1 as a child task to Task.

Task

Parent

Time Constraint

Planned Start

Task 1

Task

Start ASAP

2015-09-08 08:00:00

Then, Task is modified as follows (the time constraint is changed):

Task

Time Constraint

Planned Start

Task

Start on

2015-09-08 08:00:00

Consider adding the following task Task 2 with the time constraint Start on as a child task to Task.

Task

Parent

Time Constraint

Planned Start

Task 2

Task

Start on

2015-09-06 08:00:00

Then, Task is modified as follows (planned start date is changed):

Task

Time Constraint

Planned Start

Task

Start on

2015-09-06 08:00:00

Dates & Duration


We have two sets of dates in Project and Project Tasks. One is the planned start date, planned end date and other is the actual start date and actual end date. Depending on the state of the project & task the planned or actual values are populated.

Planned Start Date


The following table includes different scenarios for the setting of default start dates for a project and its tasks.

Scenario

Planned Start Date

Project is created

The default start date of the project is 08:00:   00AM on the next working day

Task is created with with the time   constraint Start ASAP

The default start date of the task is the same   as the start date of the project

Sub-task is created with the time   constraint Start ASAP

The default start date of the sub-task is the       same as the start date of the parent task

Start date of sub-task is changed

The start date of the parent task is changed       to the start date of the sub-task

Note: If a task has multiple sub-tasks, the start date of the task is the same as the earliest start date of the children tasks.

Planned start date of a project or a task can be modified if the project or the task does not have any children. If a project or a task has children, the earliest planned start date of the children is set as the planned start date of the project or the task.

Planned End Date


For a project or for a task in the project, the planned end date is calculated using the following formula:

Planned End Date = Planned Start Date + Planned Duration

This formula is applicable only when the task or the project is in the pending or the open state. When the task moves to the work in progress state, the actual start date gets populated. For a task that is in the work in progress or the closed state, the planned end date is calculated using the following formula:

Planned End Date = Actual Start Date + Planned Duration

The planned end date of a project or a task can be modified if the project or the task does not have any children. If a project or a task has children, the latest planned end date of the children is set as the planned end date of the project or the task.

Actual Start Date


When the state of a project or a task changes to the work in progress state, the current time is set as the actual start date of the project or the task. The actual start date can be edited and set to a new value until the task remains in the work in progress state.

The actual start date of a project or a task can be modified if the project or the task does not have any children. If a project or a task has children, the earliest actual start date of the children is set as the actual start date of the project or the task.

Actual End Date


When the state of a project or a task changes to the closed state, the current time is set as the actual end date of the project or the task. The actual end date can be edited and set to a new value until the task remains in the closed state. The actual end date is calculated using the following formula:

Actual End Date = Actual Start Date + Actual Duration

The actual end date of a project or a task can be modified if the project or the task does not have any children. If a project or a task has children, the latest actual end date of the children is set as the actual end date of the project or the task.

Planned Duration


Planned duration is calculated using the following formula:

Planned Duration = Planned End Date — Planned Start Date

Any change in the planned duration of a task affects the planned end date of the task. The planned duration of a project or a task can be modified if the project or the task does not have any children.

Let us now see the impact of editing of each of those dates and duration fields for various task states — what changes it will cause

Task State

Edit Field

Field Recalculated

Pending/Open

Planned Start Date

Planned End Date

(Planned Start Date + Planned Duration)

Pending/Open

Planned End Date

Planned Duration

(Planned End Date - Planned Start Date)

Pending/Open

Planned Duration

Planned End Date

(Planned Start Date + Planned Duration)

Work in progress/Closed

Planned Start Date

No impact

Work in progress/Closed

Planned End Date

Planned Duration

(Planned End Date - Actual Start Date)

Work in progress/Closed

Planned Duration

Planned End Date

(Actual Start Date + Planned Duration)

Work in progress

Actual Start Date

Planned End Date

(Actual Start Date + Planned Duration)

Closed

Actual Start Date

Planned End Date

(Actual Start Date + Planned Duration)

Task Relationships


Project Management supports one type of relationhip between tasks: Finish-to-Start.

Consider these tasks:

Task

Time Constraint

Planned Start Date

Planned End Date

Task 1

Start ASAP

2015-09-10 08:00:00

2015-09-10 17:00:00

Task 2

Start ASAP

2015-09-01 08:00:00

2015-09-01 17:00:00

Adding a relation from Task 1 to Task 2, which makes Task 2 the successor in the relationship: recalculates Task 2's planned dates as follows:

Task

Dependency

Time Constraint

Planned Start Date

Planned End Date

Task 1

Start ASAP

2015-09-10 08:00:00

2015-09-10 17:00:00

Task 2

Task1

Start ASAP

2015-09-11 08:00:00

2015-09-11 17:00:00

If Task 2 has a Start on time constraint instead of a Start ASAP time constraint, Task 2's planned dates do not change.

Task

Time Constraint

Planned Start Date

Planned End Date

Task 1

Start ASAP

2015-09-10 08:00:00

2015-09-10 17:00:00

Task 2

Start on

2015-09-01 08:00:00

2015-09-01 17:00:00

5 REPLIES 5

kellykaufmann
Mega Guru

This is very helpful, thank you for posting it!


serene_ly_oh
Giga Contributor

Does this applies to the Geneva version too?


You can read about Geneva (onwards) behavior in this post - Project Scheduling Engine - Geneva


Thank you, Balaji.



We have issue with the Planned End Date (of task/sub project) changed to a diff date after approval and still trying to figure out what happen to it.