Constraints are used to artificially modify or restrict the dates of a milestone or activity. The recommendation is that a well-built schedule should not contain any constraints. However, constraints are very commonly used in working baselines and updates. The only cases where the use of constraints would be justified are those where the scope of work depends on a third party, for example the delivery of materials to site outside the scope of the project being executed. Constraints can also be used to control the float of an activity or work structure, for example by setting a finish constraint.

Hard constraints

  • Mandatory start/finish - This constraint forces the start or finish of an activity to the selected date and time, violating the relationships between activities and even the working time. With this type of constraint, the activity can start on a public holiday or before its predecessor.

Soft constraints

  • As late as possible - By default, all activities are scheduled as soon as possible. This constraint delays the start by consuming the activity's free float; if the free float is zero, the dates remain unchanged. This constraint makes it possible to calculate the late S-curve.
  • Start/Finish on - Allows the start or finish date of an activity to be set. Relationships and calendars take priority over this constraint.
  • Start/Finish on or after - Allows the date from which an activity may start or finish to be set. Relationships and calendars take priority over this constraint.
  • Start/Finish on or before - Allows the latest date on which an activity may start or finish to be set. Relationships and calendars take priority over this constraint.

The main difference between Start/Finish on and Start/Finish on or before/after is that Start/Finish on always makes the activity critical. The other types of constraint may or may not make the activity critical depending on the dates and relationships.