Milestones and Key Dates
Last reviewed 9 September 20262,375 words11 min read
Contractual, planning and interface milestones β and which ones get a constraint
π© In one line: A milestone is either a contractual obligation, an interface with someone else, or an internal target β code it as one of the three, constrain only the first two, and keep planned completion and contractual completion as two separate milestones.
π€ Who this is for: Junior to mid-level planners building or reviewing a milestone node. Prerequisites: P6-constraint-types, Float-ownership-and-contract, Wbs-structure-design.
First, let's be honest about why this page exists
Milestone lists arrive from three directions β the contract, the client's PMO and the project manager's whiteboard β and they end up in one P6 node with the same look, the same code and, worst of all, the same constraint. Then the schedule shows negative float against an internal target nobody is liable for, and nobody can tell which red number matters.
Sorting them is a one-afternoon job that saves months of argument. This is a reference page: tables first, argument in the linked pages.
π¨ The standard β what "good" looks like
| Source | What it says (paraphrased) | Use it for |
|---|---|---|
| FIDIC 1999 Cl 8.2, Cl 10.1, Cl 8.7; 2017 Cl 8.2, Cl 10.1, Cl 8.8 | Contractor completes the Works, and each Section, within the Time for Completion; taking over on completion; delay damages per Section (check the edition in your contract) | Which dates carry liability |
| FIDIC 1999 Appendix to Tender / 2017 Contract Data | Sections and their Times for Completion listed with damages per Section (check against your copy) | Source of sectional milestones |
| FIDIC 2017 definition of Milestone | 2017 introduces a defined term for a part of the Works to be completed by a stated date (check against your copy) | Flag β check whether the contract uses it |
| NEC3 / NEC4 Cl 11.2 (Completion, Key Date, Condition), Cl 30.1, Cl 30.3, Cl 25.3 | Completion Date for the whole; Key Dates require a stated Condition met by a date; Employer's cost recoverable if a Condition is not met (check the edition in your contract) | NEC's two kinds of obligation |
| NEC Option X5, X7 | Sectional Completion; delay damages (check against your copy) | When NEC has Sections |
| NEC Cl 31.2 | Programme shows Completion Date, Key Dates, planned Completion, and other dates the Scope requires | Why planned and contractual are two milestones |
| DCMA 14-Point, item 5 (Hard Constraints); GAO Best Practice 4 | Hard constraints minimised; constraints justified and documented | Constraint register discipline |
| PMI Practice Standard for Scheduling, 3rd ed. | Milestones as zero-duration events with defined acceptance criteria (check against your copy) | Every milestone has a completion criterion |
| Hub convention | Constraints only Start On or After (access) and Finish On or Before (contractual completion); register entry with document reference; Must Finish By blank; planned and contractual completion as a pair | Your defaults |
π’ Rule: if a milestone is in the contract it gets a Finish On or Before and a register row; if it is a date someone else owes you it gets a Start On or After and a register row; if it is neither, it gets a code and nothing else.
How it actually works
The three kinds
| Type | Examples | Who is liable | P6 milestone type | Constraint | Milestone Type code |
|---|---|---|---|---|---|
| Contractual β completion | Time for Completion; each Section; NEC Completion Date | Contractor | Finish Milestone | Finish On or Before, dated per contract | CONTRACT / SECTIONAL |
| Contractual β key date / condition | NEC Key Dates; FIDIC 2017 Milestones; specified hand-back of a road | Contractor | Finish Milestone | Finish On or Before | KEYDATE |
| Contractual β commencement | Commencement Date; Access Date to site or part | Employer | Start Milestone | Start On or After | INTERFACE-IN |
| Interface β inbound | Employer-supplied equipment; other contractor's handover; utility connection | Employer / third party | Start Milestone | Start On or After, dated per notice or contract | INTERFACE-IN |
| Interface β outbound | Handover to fit-out contractor; energisation for tenant | Contractor to others | Finish Milestone | None unless in contract (then KEYDATE) | INTERFACE-OUT |
| Planning β internal | Topping out; envelope watertight; planned completion; payment milestones | Nobody contractually | Start or Finish Milestone | None | PLANNING / PAYMENT |
P6 set-up
| Item | Setting |
|---|---|
| WBS | Standing node Milestones, children by type; sectional milestones may also sit under their Section's node β pick one and state it in the SBM |
| Activity type | Start Milestone or Finish Milestone (Activities β Activity Details β General β Activity Type; verify against version in use) |
| Duration | Zero, always |
| Calendar | The calendar of the work it closes; contractual completion on the contract-day calendar (7-day if the contract counts calendar days) |
| Resources | None |
| Logic | Finish milestones: FS or FF in from the last real activity; no successors except the next contractual milestone chain. Start milestones: one FS out to the first activity needing it |
| Codes | Milestone Type as above; Report Level = L1; Responsibility = the party that owes the date |
| Notebook | Constraint Basis: document reference, clause, date, acceptance criterion |
| Layout | 04 Float reports total float at each CONTRACT/SECTIONAL/KEYDATE milestone; 05 Constraints lists every constrained milestone against the register |
Planned vs contractual completion β always two milestones.
| Milestone | Constraint | Float shown | Purpose |
|---|---|---|---|
| Planned Completion (PLANNING) | None | Float to contractual completion = terminal float / TRA | Shows the contractor's real target and how much room remains |
| Contractual Completion (CONTRACT) | Finish On or Before, contract date | Negative when late; zero or positive when not | The only date liability attaches to |
Linking them FS with the TRA activity between makes the contractor's time-risk allowance visible and named (NEC Cl 31.2 requires it; on FIDIC it is good practice and protects the float argument).
The constraint register β one row per constrained milestone: ID, name, constraint type, date, reason, document reference, date added, date last changed, change reference. No document reference, no constraint. Register in SBM section 3 and every narrative.
Moving a contractual milestone. Only on a written EOT award (FIDIC Cl 8.4 / 2017 Cl 8.5; NEC Cl 65 / 66 implementation β verify), a revised Completion Date, or a signed amendment. Until then the milestone shows negative float with one explanatory sentence in the narrative. Planning milestones move whenever the plan does; that is what they are for.
π NEC Key Dates vs FIDIC Sections β what the difference means for the schedule
| Point | NEC Key Date | FIDIC Section |
|---|---|---|
| What must be achieved | A stated Condition β a state of the works, not necessarily a completed part (Cl 11.2) | Completion of a defined part of the Works fit for taking over (Cl 10.1) |
| Remedy if missed | Employer's additional cost of its own or others' work (Cl 25.3), not delay damages | Delay damages for the Section per Appendix/Contract Data (Cl 8.7 / 8.8) |
| Extension | Compensation event may move the Key Date (Cl 63) | EOT may extend the Section's Time for Completion (Cl 8.4 / 8.5) |
| In P6 | KEYDATE milestone; its predecessor chain defines the Condition β write the Condition in the Notebook, not just the date | SECTIONAL milestone closed by the Section's last activity and its tests |
| Float reported | At the Key Date and at Completion separately | At each Section and at the whole Works separately |
π’ On both forms, report float at every contractual milestone, not just the last one. The last one is often the least critical.
π₯ Where people go wrong
- Finish On or Before on internal targets. Topping-out gets a constraint because the PM promised it to the region, and the schedule shows β12 days on a date with no liability. Internal targets are coded PLANNING and reported as a variance, not constrained.
- Must Finish By at project level instead of a milestone. It hides the float calculation and cannot carry a document reference. Leave Must Finish By blank; constrain the milestone.
- One milestone for planned and contractual completion. The TRA disappears into the last activity, and every day of early finish looks like the contractor "had float". Two milestones, a named TRA between them.
- Milestones with successors into production work. A contractual completion milestone that drives a later activity distorts the longest path. Contractual finish milestones close chains; they don't open them.
- Sectional milestones with no test-and-commissioning chain in front of them. The Section "completes" when the last wall is painted, and the taking-over certificate is six weeks later. The Section's milestone follows its T&C and inspection activities (see Commissioning-and-handover-planning).
- Interface dates without a document reference. "Chiller plant delivered by Employer 15-Mar" with nothing behind it is a bare assertion the Employer will deny in the claim. Register row, letter or contract reference, or no constraint.
- Payment milestones treated as schedule milestones. They are coded PAYMENT so the QS can filter them, and they carry no constraint and no logic beyond the activities that trigger them.
βοΈ When you're challenged
"Why does the schedule show minus fifteen days against the podium handover? That's not in the contract." It shouldn't, and it doesn't now β that milestone was constrained by mistake. It's coded PLANNING with no constraint; the narrative shows it as a 15-day variance against our internal target, which is the honest way to report it.
"Just move the completion milestone to match the recovery plan." The contractual milestone moves only on a written EOT. The recovery target is the Planned Completion milestone, and it already shows the recovered date. Both are in the report, with the gap between them.
"What's the difference between a Key Date and Completion? Both are just dates." A Key Date is a Condition β a state the works must reach so the Employer or another contractor can proceed β and missing it costs us their extra cost under Clause 25.3, not delay damages. Completion is the whole. The schedule reports float at each of them separately because the Key Date is on a different path.
"Why is the access milestone constrained when we haven't got access yet?" Start On or After represents the date the Employer is obliged to give access under the contract. If access comes later, the milestone's actual start records the real date, and the difference is the basis of the notice we've already sent.
π Related pages
- P6 Constraint Types β why only SOoA and FOoB, and what Must Finish By does to float
- Float ownership and the contract β the planned/contractual pair and the TRA argument
- Total float β reporting float at the contractual milestone, never mid-path
- Commissioning and Handover Planning β the chain that must close every sectional milestone
- NEC Accepted Programme β Key Dates, planned Completion and Cl 31.2 content
- FIDIC Time Clauses β Sections, Time for Completion, taking over
- Activity Coding Structure β the Milestone Type code and its controlled values
- Templates and registers β constraint register template
βοΈ Worked example β Doha twin towers, milestone register extract
Contract: FIDIC 1999 Red, three Sections; Employer supplies district-cooling connection.
| ID | Milestone | Type code | P6 type | Constraint | Date | Document ref | TF at DD 25-Apr |
|---|---|---|---|---|---|---|---|
| MS-010 | Commencement Date | INTERFACE-IN | Start | SOoA | 01-Feb (Y1) | Letter of Commencement ref C-001 | Actual |
| MS-020 | Access to Plot B (Tower B) | INTERFACE-IN | Start | SOoA | 01-Jun (Y1) | Contract Appendix, item 4 | Actual (12-Jun, notice N-003 issued) |
| MS-100 | District-cooling connection available | INTERFACE-IN | Start | SOoA | 15-Mar (Y3) | Employer's letter E-041 | +22 |
| MS-210 | Section 1 β Podium & car park, Time for Completion | SECTIONAL | Finish | FOoB | 30-Sep (Y2) | Appendix to Tender, Section 1 | β9 |
| MS-220 | Section 2 β Tower A, Time for Completion | SECTIONAL | Finish | FOoB | 31-Mar (Y3) | Appendix to Tender, Section 2 | +4 |
| MS-230 | Section 3 β Tower B / whole Works | CONTRACT | Finish | FOoB | 30-Sep (Y3) | Appendix to Tender, Section 3 | +18 |
| MS-225 | Tower A β planned completion | PLANNING | Finish | None | 10-Mar (Y3) | Internal | +25 (to MS-220, incl. TRA-A 15 d) |
| MS-300 | Tower A topping out | PLANNING | Finish | None | 15-Aug (Y2) | Internal | +31 |
| MS-400 | Handover of L1 retail shells to fit-out contractor | INTERFACE-OUT | Finish | None | 15-Nov (Y2) | Employer's Requirements Β§3.4 (no liability stated) | +6 |
Read of the register: The whole-Works date has 18 days; Section 1 has β9. The narrative reports Section 1 first, names the driving chain (podium waterproofing β car-park MEP β fire test), and states that MS-210 stays on its contract date pending the EOT claim referenced in notice N-007. MS-300 topping out is 31 days behind the internal target and is reported as a variance, not as float.
π References
- FIDIC Conditions of Contract for Construction 1999, Cl 1.1.3, 8.2, 8.4, 8.7, 10.1, 10.2, Appendix to Tender (check the edition in your contract)
- FIDIC Conditions of Contract for Construction 2017, Cl 8.2, 8.5, 8.8, 10.1, Contract Data; definition of Milestone (check against your copy)
- NEC3 / NEC4 ECC, Cl 11.2, 25.3, 30.1, 30.3, 31.2, 63, Options X5 and X7 (check the edition in your contract)
- DCMA 14-Point Schedule Assessment, item 5; GAO Schedule Assessment Guide GAO-16-89G, Best Practice 4
- PMI, Practice Standard for Scheduling, 3rd ed. (check against your copy)
- Oracle Primavera P6 Professional User Guide β Activity types; Constraints (check against your P6 version)
From the field
Experience from working planners. Unreviewed β read it as experience, not guidance.
Add what you know about milestones and key dates. What worked, what the consultant pushed back on, what you would do differently next time. A paragraph is plenty.
Contributors get their name and one link on the site β your own templates, course or consultancy. We take nothing and hold nothing.
Add your experience