Skip to main content

Constraints Deep Dive

Constraints override or limit the CPM engine’s ability to freely schedule a task. Use them when a task is tied to a real-world date that cannot move regardless of logic (a contract milestone, a delivery arrival, a regulatory deadline).

Feature Spec Reference

Module 2.7 — Constraint Types

The Eight Constraint Types

1. As Soon As Possible (ASAP)

Default for all tasks. No constraint is applied — CPM schedules the task at its earliest valid date given its predecessors. When to use: Most tasks. Only deviate when you have a real-world date requirement.

2. As Late As Possible (ALAP)

CPM schedules the task at its latest valid date without delaying its successors. When to use: Tasks where you want to defer work as long as possible without creating risk (e.g., procurement payments, subcontractor mobilization). Use carefully — ALAP tasks have zero float and appear on the critical path by definition.

3. Start No Earlier Than (SNET)

The task cannot start before the specified date. CPM may schedule it later if predecessors demand it. When to use: Regulatory approval windows, permit valid dates, seasonal work restrictions. The task can float later than the constraint date if predecessors push it.

4. Start No Later Than (SNLT)

The task must start by the specified date. If CPM calculates a later start, a warning is generated. When to use: Contractual milestones with penalty clauses, weather-dependent work with fixed windows. A violation warning appears in the task list when CPM cannot respect the constraint.

5. Finish No Earlier Than (FNET)

The task cannot finish before the specified date. Useful for minimum duration requirements imposed by inspections or curing periods. When to use: Concrete curing minimums, mandatory inspection hold periods, contractual proof-of-completion dates.

6. Finish No Later Than (FNLT)

The task must finish by the specified date. If CPM calculates a later finish, a warning is generated. When to use: Final completion deadlines, interim milestone deadlines, client delivery dates.

7. Must Start On (MSO)

The task is pinned to start on exactly the specified date, regardless of predecessor logic. When to use: Government inspection dates, external crew mobilization dates tied to contracts. This is the strongest start constraint — it overrides all predecessor dependencies.

8. Must Finish On (MFO)

The task is pinned to finish on exactly the specified date, regardless of predecessor logic. When to use: Permit expiration deadlines, contractual handover dates, regulatory compliance dates. This is the strongest finish constraint.

Constraint Reference Table

Setting a Constraint

  1. Open the Task Detail Panel (double-click the task row)
  2. Find the Constraint Type dropdown
  3. Select the constraint type
  4. If the constraint requires a date (SNET, SNLT, FNET, FNLT, MSO, MFO), select the date from the picker
  5. Click Save
The schedule recalculates immediately.

Constraint Violations and Warnings

When a constraint cannot be satisfied — for example, a FNLT constraint where predecessors push the finish past the constraint date — GlidePath:
  1. Displays a warning icon on the task row
  2. Shows a tooltip explaining the conflict (“Task cannot finish by [date] given its predecessor chain”)
  3. Still renders the task at its CPM-calculated date (does not force the impossible date)
You must resolve constraint violations manually by either adjusting the constraint date, modifying the predecessor chain, or accepting the schedule slip.

Constraints and Import

Imported schedules from MS Project XML and P6 XER include constraints in the source file. GlidePath maps these to the corresponding GlidePath constraint types during import. See MS Project Import and Primavera P6 Import for mapping details.

Screenshot

Constraint Type Picker Constraint type picker showing all eight options with the date field active.

Next Steps