P6 Constraint Types
We’re often asked about the differences between constraint types in a Primavera P6 EPPM or Primavera P6 Professional schedule. Some are self-explanatory, while others are more subtle and potentially confusing. The most common question concerning constraints is about the difference between a Mandatory Start or Finish vs. a Start On or Finish On constraint.
Here’s the deal with Mandatory vs. Start/Finish On constraints:
Mandatory Finish:
A mandatory constraint date will set both the Early Start and Late Finish dates for the activity to equal the constraint date. This wipes out any float on the activity and also allows it to violate schedule logic in some cases.
Mandatory Start sets the Early and Late Start Dates equal to the constraint date
Mandatory Finish sets the Early and Late Finish Dates equal to the constraint date
Start On or Finish On Constraint:
This constraint sets the early or late dates to equal the constraint date depending on whether its a start of finish On constraint, but unlike a Mandatory constraint doesn’t set both. This protects the schedule logic.
Start On constraints set the Late Start date equal to the constraint date
Finish On constraints set the Late Finish equal to the constraint date
Examples of Mandatory and Start/Finish On Constraints:
Control Group
The following is an example schedule with no constraints. The Early and Late date columns are displayed to show the different ways in which the constraints affect the activities. We will be placing constraints on the ‘B’ activity. As always, click to enlarge the following images.
Start On Constraint:
In this first example we placed a Start On constraint on activity B and entered a date of 07-Jan-15. This has changed the Late Start from 09-Jan-15 to 07-Jan-15. It has also generated 2 days of negative float for it and the preceding activity because we are attempting to start the activity two days earlier than the schedule originally calculated. Despite this constraint, the activity bars on the Gantt chart have remained in their calculated positions and schedule logic has been retained.
Mandatory Start:
In this example we set a Mandatory Start date of 07-Jan-15 on activity B. The outcome is rather different to the prior Start On constraint using the same date. It has set both the Early and Late dates equal to the constraint date. This has rendered the Total Float for activity B to zero (float is calculated as the difference between the early and late dates) and has pulled the bar forward to start on -07-Jan in violation of the network logic. It has also dragged its successor activity C to an earlier start date.
Finish On:
In this example, a Finish On constraint of 09-Jan-15 has been assigned to activity B. It was originally scheduled to complete on 11-Jan, but we are trying to pull in the date. The Finish On constraint has set the Late Finish date equal to the 09-Jan constraint date. Activity B and its predecessor A are both now showing a 2 day negative float, but the network logic has been maintained.
Mandatory Finish:
If we attempt to apply the same “earlier than scheduled” finish date of 09-Jan using a Mandatory Finish constraint, the outcome will be as follows:
Similar to the Mandatory Start constraint, both the Early and Late dates have been set to equal the constraint date of 09-Jan. This has removed the negative float from activity B, but not from its predecessor and has pulled the activity back to start on 09-Jan, dragging its successor with it; again violating the network logic that Primavera P6 originally calculated.
Summary
Mandatory constraints are the bad boys of the pack; they force artificial early and late dates onto their respective activities and, if not used wisely, can potentially cause trouble for the integrity of the schedule logic. That’s not to say there aren’t plenty of legitimate reasons to use Mandatory constraints, but like any tool, one should understand how to use it before applying it to the job.
In short, you can think of the two constraint types in the following terms: Start On and Finish On constraints will protect the network logic and only drive negative float into the network when their dates are exceeded. Mandatory constraints wipe out negative float on their assigned activity, and will move the activities in violation of their calculated dates.
For more Primavera P6 articles click here