Contracts are full of dates, and the temptation in Microsoft Project is to type them straight in. Do that and Project quietly adds a constraint, and a constraint can hold a task on its date even when the work feeding it is running late. The result is a schedule that reports the contract date while the logic says otherwise. Project has a better tool for most contract dates: the deadline, which flags a miss without hiding it. This lesson covers the eight constraint types, when each is justified, how deadlines differ, and how Northgate's owner should carry its Ready-for-Takeover date.
Learning outcomes
- Name Project's eight constraint types and group them as flexible, semi-flexible or inflexible.
- Set and reset constraints and deadlines in Project desktop, and recognize constraints created by typing dates.
- Predict how a delay shows up under an inflexible constraint compared with a deadline.
- Write owner rules for which dates may be constrained in a master or contractor schedule.
The lesson
Eight constraint types
Every auto-scheduled task has a constraint type. In a project scheduled from its start date, as Northgate's is (Lesson 3), the default is As Soon As Possible; in one scheduled from its finish date, it is As Late As Possible [1][2]. The other six tie the task to a date. Microsoft groups all eight in three families [1], shown in Figure 1:
- Flexible constraints do not tie the task to a date: As Soon As Possible (ASAP) and As Late As Possible (ALAP).
- Semi-flexible constraints set one edge: Start No Earlier Than (SNET), Start No Later Than (SNLT), Finish No Earlier Than (FNET) and Finish No Later Than (FNLT).
- Inflexible constraints fix the date: Must Start On (MSO) and Must Finish On (MFO).
Setting, resetting and accidental constraints
To set one, select the task, choose Task > Information, open the Advanced tab, pick from the Constraint type list and, for anything other than ASAP or ALAP, enter the Constraint date [1]. Microsoft points out that you cannot really delete a constraint; you reset it to ASAP (or ALAP when scheduling from finish), which ties the task back to its links [1].
Most constraints in real schedules are not chosen. They are typed. Microsoft warns that changing a task's Start or Finish date in the sheet makes Project add a constraint that forces the task to that date [1], and the Constraint Type article spells out that a typed start date becomes Start No Earlier Than, with your date as the constraint date [2]. Typed finish dates also become constraints. If you change the start of a task that already has a start constraint, the Planning Wizard asks whether to keep the old constraint or replace it with SNET on the new date [3]. The fix for an accidental constraint is always the same: reset to ASAP and let the links drive.
To audit a file, insert the Constraint Type and Constraint Date columns, or sort by Constraint Type. The Indicators column also shows an icon on constrained tasks.
When constraints fight logic
A semi-flexible constraint usually just stops a task moving earlier (SNET, FNET) or flags lateness (SNLT, FNLT). An inflexible one can do more. Under File > Options > Schedule, the option Tasks will always honor their constraint dates (the HonorConstraints setting in Project's object model [6]) is on in a new file. With it on, an MSO or MFO task stays on its date even if its predecessors finish later, and the conflict shows up as negative slack, which Microsoft says is usually caused by constraint dates [5]. With it off, links win and the task moves past its constraint date. Neither setting makes a bad constraint good; they only change where the problem appears.
Deadlines: the owner's tool
A deadline is a target date that does not move the task. Set it in Task Information, Advanced tab, in the Deadline box [4]. Microsoft describes it as the right choice when you need a reminder rather than a fixed date [4]. A deadline does not change scheduling and does not produce the scheduling error messages constraints can, but it can affect how total slack is calculated [7]. It appears as an arrow on the Gantt chart [4][7], and if the task finishes after it, an indicator appears in the Indicators column [2][4].
In practice that gives an owner exactly what it wants from a contract date: the task's forecast follows the logic, the deadline stays where the contract put it, and the gap shows up as negative total slack (Lesson 11) and a missed-deadline flag.
Northgate worked example
For Northgate Distribution Centre (fictional), M9 is Ready-for-Takeover and Substantial Performance on Fri Jan 14, 2028, and M10, the start of the owner's racking and occupancy work, is Mon Jan 17, 2028 (Northgate fact sheet). In NDC_OwnerMaster_2027-01-11.mpp, M10 follows M9 finish-to-start. The question is how to carry the contractual M9 date.
A what-if: commissioning runs ten days late
Take a hypothetical, not a fact-sheet event: Halvorsen Builders Ltd. (fictional) reports that commissioning work feeding M9 will finish ten working days late, on Fri Jan 28, 2028. Figure 2 shows three ways the owner's file could react.
- M9 as Must Finish On, honor constraints on. M9 stays on Jan 14 and M10 still shows Mon Jan 17. The predecessors run past M9 and carry negative slack, but the milestone report, the Timeline and the board deck all say "on time".
- M9 as Must Finish On, honor constraints off. M9 moves to Jan 28 and M10 to Mon Jan 31. The dates are right, but the constraint is now a broken promise sitting in the file, and the next person to switch the option back on gets the first picture.
- M9 as ASAP with a deadline of Jan 14. M9 forecasts Fri Jan 28, M10 moves to Mon Jan 31, the deadline arrow stays at Jan 14, the missed-deadline indicator appears and M9 shows ten days of negative slack. The delay is visible and measured.
View the data
| Set-up | M9 shows | M10 shows | How the delay appears |
|---|---|---|---|
| MFO Jan 14, honor constraints on | Fri Jan 14, 2028 | Mon Jan 17, 2028 | Negative slack on predecessors; milestone looks on time |
| MFO Jan 14, honor constraints off | Fri Jan 28, 2028 | Mon Jan 31, 2028 | Constraint date passed; constraint left in file |
| ASAP with deadline Jan 14 | Fri Jan 28, 2028 | Mon Jan 31, 2028 | Missed-deadline indicator; M9 total slack -10 days |
Where constraints are justified
Constraints are not banned; they need a reason the logic cannot express. The kickoff meeting, M1 on Tue Jan 19, 2027, is booked in people's calendars and cannot happen earlier, so Start No Earlier Than on that date is honest. A delivery that a supplier has confirmed for a given day can carry SNET too. In each case the constraint is semi-flexible, it records an outside fact, and a note on the task says where the date came from. Figure 3 is the test the owner's scheduler applies.
Owner's move
- Carry contract milestones as deadlines. M4 to M9 and M11 get deadlines at their contract dates; their constraints stay ASAP.
- Ban inflexible constraints without approval. Any MSO or MFO in the owner's master or a contractor's Project file needs a written reason. In an Oracle Primavera P6 schedule the same rule applies to mandatory constraints.
- Audit constraints every update. Sort by Constraint Type. Every SNET created by a typed date in the last month is a task that has stopped following its logic.
- Keep "honor constraint dates" on. It makes conflicts show up as negative slack, where you will see them, rather than as silently moved tasks.
- Report negative slack, not just dates. A milestone that shows its contract date with predecessors at -10 days is late, whatever the date column says.
Common mistakes
- Typing dates into the Start column. Each one becomes an SNET constraint [2], and the task stops moving earlier when its predecessors finish early.
- Must Finish On for contract milestones. The milestone stays on time on paper while the work behind it runs late.
- Turning off "honor constraint dates" to make red go away. The constraint is still there; you have just stopped looking at it.
- Using deadlines as targets nobody watches. A deadline only helps if someone reads the indicator and the negative slack every update.
Quick quiz
In a project scheduled from its start date, the default constraint is:
- Start No Earlier Than
- As Soon As Possible
- Must Start On
- As Late As Possible
You type a new date in an auto-scheduled task's Start cell. Project:
- Sets a deadline
- Sets a Start No Earlier Than constraint on that date
- Sets Must Start On
- Changes the task to manually scheduled
Which pair is inflexible?
- SNET and FNET
- SNLT and FNLT
- MSO and MFO
- ASAP and ALAP
A deadline that a task misses:
- Holds the task on the deadline date
- Changes the task's constraint to MFO
- Leaves the dates alone, shows an indicator and can make total slack negative
- Deletes the task's predecessors
In the Northgate what-if, M9 is MFO Jan 14, 2028 with honor constraints on, and its work finishes Jan 28. What does M9 show?
- Fri Jan 14, 2028
- Fri Jan 28, 2028
- Mon Jan 31, 2028
- No date
Show answers and explanations
- B. ASAP is the default when scheduling from the start date; ALAP when scheduling from the finish date [1][2].
- B. A typed start becomes SNET with your date as the constraint date [2].
- C. Must Start On and Must Finish On fix the date [1].
- C. Deadlines do not change scheduling, show an indicator when missed and can affect total slack [7].
- A. With constraints honoured, the MFO keeps M9 on Jan 14 and the conflict appears as negative slack on the work feeding it.
Key terms
- Constraint
- A restriction on when a task can start or finish, set by type and, for six of the eight types, a date.
- Semi-flexible constraint
- SNET, SNLT, FNET or FNLT: limits one edge of a task's dates.
- Inflexible constraint
- MSO or MFO: fixes a task's start or finish date.
- Deadline
- A target date on a task that does not move it, shows as an arrow and flags a miss.
- Honor constraint dates
- The schedule option that makes constraints take priority over links, so conflicts appear as negative slack.
- Planning Wizard
- The prompt that asks whether to keep or replace a constraint when you change a constrained task's date.
References
- Microsoft. Set a task start or finish date (constraint) for a task. Microsoft Support (Project desktop).
- Microsoft. Constraint Type (task field). Microsoft Support.
- Microsoft. Changing a start date for a task constrained by a date. Microsoft Support.
- Microsoft. Set a deadline for a task. Microsoft Support.
- Microsoft. Negative Slack (task field). Microsoft Support.
- Microsoft. Application.OptionsSchedule method (Project). Microsoft Learn.
- Microsoft. Deadline (task field). Microsoft Support.
Verified on November 6, 2026.
Next lesson in this trackTask types: units, duration, workPMI, PMP and PMBOK are registered marks of the Project Management Institute, Inc. Oracle and Primavera are trademarks of Oracle. Microsoft Project is a trademark of Microsoft. BRC Academy is not affiliated with or endorsed by these organizations.