Combined Constraints

Both Project.net and Microsoft Project allow the scheduled dates of a task to be constrained so its starts or finishes no later than, no earlier than, or on a specific date.

There are times that you may want a task to have both a start and a finish constraint.   In many cases, Project.net, unlike Microsoft Project, supports these joint constraints directly.  In addition, many joint constraints can be supported through a combination of constraints and dependencies. This article talks about how to implement combined constraints in a variety of ways, as well as how to arrange that tasks start and/or finish in between a pair of dates.

1. Joint Constraints

Project.net allows a task to have both start and finish constraints, although not all combinations are currently supported.  The allowable combinations (for both leaf and summary tasks) are:

 

Finish
 no later than

Finish on

Finish
no earlier than

Start no later than

OK

x

x

 Start on

OK*

OK (leaf tasks only)

x

 Start no earlier than

OK*

OK*

OK

In addition, the start constraint date must always be before the finish constraint date. 

If a task's start constraint is set or changed, so it is no longer consistent with the task's finish constraint, the finish constraint is removed.  Similarly, if a task's finish constraint is set or changed, so it is no longer consistent with the task's start constraint, the start constraint is removed.

Note that a leaf task can have both a start on and a finish on constraint, which fixes its scheduled duration.  However, it's generally better just to make it a manual task instead.

Some joint constraints -- the ones marked with an asterisk -- can also limit the scheduled duration of a task.  For example, if a 32 hr work / 4 day duration task is required to start no earlier than Monday and finish no later than Tuesday, then it will just be scheduled for Monday and Tuesday, and its scheduled duration will be 2 days instead of 4 days.  Note: This means that 16 hrs of work will need to be done each day, which might suggest that two people be assigned to it, or that the constraints be re-examined.

Joint constraints are not currently allowed if they could potentially force the scheduled duration to be longer than expected.  So, for example, the pair of constraints "start no later than Jan 15" and finish no earlier than Feb 15" is not allowed, since its enforcement would require the task to take at least a month.

2. Combining Constraints without Reducing Duration

The joint constraints marked above with an asterisk can potentially reduce the duration of a task.  In this section, we'll talk about how to enforce the same constraints, when possible, but without ever making the scheduled duration smaller than expected.

In the two allowed cases in the table where one of the constraints is a finish no later than constraint, you can combine constraints and dependencies so that

  • Both constraints will be satisfied if the task duration is small enough
  • Otherwise, the task will finish on the finish constraint date, but will start before the start constraint date

Suppose you want a task T to start no earlier than Oct 1, and finish no later than Oct 31, but without reducing the duration.  Then you can

  • Just constrain T to finish no later than Oct 31
  • Create a zero duration task TS constrained to start on Oct 1
  • Make T dependent on TS  {which aims to ensure that T starts no earlier than Oct 1}

If T takes less than a month, the Project.net scheduler will ensure that it starts and finishes in October.  If T takes longer than a month, it will be scheduled to end on Oct 31, but will start before October.

If you want a task T to start on Oct 1, and finish no later than Oct 31, but without reducing the duration.  Then you can

  • Constrain T to start no later than Oct 1 and finish no later than Oct 31
  • Create a zero duration task TS constrained to start on Oct 1
  • Make T dependent on TS  {which aims, in conjunction with T's start no later constraint, to ensure that T starts on Oct 1}

If T takes less than a month, the Project.net scheduler will ensure that T starts on Oct 1, and finishes in October.  If T takes longer than a month, it will be scheduled to end on Oct 31, but will start before October.

In the two allowed cases shown in the table, where just one of the joint constraints is an "on" constraint (a start on or a finish on constraint), you can simply not use the other constraint.  If the task's duration is short enough, it will satisfy the other constraint anyway.  If not, it won't.

3. Combining Constraints without Increasing Duration

Project.net does not currently support joint constraints which could potentially require increasing the duration of a task, though that will be supported in the future.  In this section, we'll talk about how to enforce these kinds of constraints, when possible, without making the scheduled duration larger than expected.

In the two disallowed cases with a start no later than constraint, you can combine constraints and dependencies so that

  • Both constraints will be satisfied if the task duration is large enough
  • Otherwise, the task will start on the start constraint date, but will finish before the finish constraint date

Suppose you want a task T to start no later than Oct 1, and finish no earlier than Oct 31 but without increasing the duration.  Then you can

  • Just constrain T to start no later than Oct 1
  • Create a zero duration task TF constrained to finish on Oct 31
  • Make T have a finish-to-finish dependency on TF  {which aims to ensure that T finishes no earlier than Oct 31}

If T takes a month or more, the Project.net scheduler will ensure that it starts no later than Oct 1 and finishes no earlier than Oct 31.  If T takes less than a month, it will be scheduled to start on Oct 1, but will end before Oct 31

If you want a task T to start no later than Oct 1, and finish on Oct 31, but without increasing the duration.  Then you can

  • Constrain T to start no later than Oct 1 and finish no later than Oct 31
  • Create a zero duration task TF constrained to start on Oct 31
  • Make T have a finish-to-finish dependency on TF  {which aims, in conjunction with T's finish no later constraint, to ensure that T finishes on Oct 31}

If T takes a month or more, the Project.net scheduler will ensure that it starts no later than Oct 1 and finishes on Oct 31.  If T takes less than a month, it will be scheduled to start on Oct 1, but will end before Oct 31.

In the two disallowed cases shown in the table, where just one of the joint constraints is an "on" constraint (a start on or a finish on constraint), you can simply not use the other constraint.  If the task's duration is long enough, it will satisfy the other constraint anyway.  If not, it won't.

4. In Between Constraints

A combination of constraints and dependencies can also be used to ensure that a task starts and/or finishes in between a pair of dates.  For example, if you want to make sure that T starts between Jan 15 and Feb 15.

  • First, constrain T to start no later than Feb 15.
  • Create a new zero duration task TS, constrained to start on Jan 15
  • Add a start-to-start dependency of T on TS.  This ensures that T starts no earlier than Jan 15

Similarly, if you want to make sure that a task T finishes between Oct 15 and Nov 15.

  • First, constrain T to finish no later than Nov 15.
  • Create a new zero duration task TF, constrained to finish on Oct 15
  • Add a finish-to-finish dependency of T on TF.  This ensures that T finishes no earlier than Nov 15

We could use both these approaches together, which would ensure that T starts between Jan 15 and Feb 15, and finishes between Oct 15 and Nov 15, as long as the task's duration fits those dates.  If the task takes too little time, it will start on Feb 15, but end before Oct 15.  If the task takes too long, it will end on Nov 15, but start before Jan 15.

Ellis S Cohen
Project.net
(last updated) Jan 2015

Tags: 
combined constraintstask constraintsMicrosoft Project