A milestone is a zero-duration event that marks a significant point in your project — a decision gate, a deliverable handoff, a phase boundary, or a contractual deadline. In DPlan, milestones appear as diamonds on the Gantt timeline and carry their own set of properties.
| Property | Task | Milestone |
|---|---|---|
| Duration | 1 or more working days | Always 0 days |
| Gantt appearance | Horizontal bar | Diamond (◆) at a single date point |
| Drag to reschedule | Drag bar body | Drag the diamond |
| Resize by dragging right edge | Yes | No — duration is fixed at 0 |
| Progress field | 0–100 % | 0 % (incomplete) or 100 % (complete) |
| Can have dependencies | Yes | Yes — predecessors and successors |
| Can be anchored | Yes | Yes — use MSO constraint for a hard deadline |
| Appears in Dashboard milestones panel | No | Yes |
There are three ways to add a milestone:
After inserting, the new milestone row is selected and in edit mode. Type the milestone name and press Tab to move to the date field. Enter the target date. Because duration is always zero, there is no end-date field — the milestone's start and end date are the same.
Double-click the milestone row or press Enter to open the Task Editor. The following fields are available:
| Field | Description |
|---|---|
| Name | The milestone label, shown on the Gantt beside the diamond. |
| Date | The single date this milestone occurs. Corresponds to both start and end date in the data model. |
| Constraint | Controls how Auto Schedule treats this milestone. Default is ASAP (floats with predecessor chain). Use Must Start On (MSO) to pin it to a hard contractual date. |
| Status | Not Started / In Progress / Complete / On Hold / Cancelled. |
| Priority | Low / Medium / High / Critical — used for filtering and dashboard display. |
| Assignee | Free-text or chosen from resource list. The person accountable for achieving the milestone. |
| Dependencies | Predecessor tasks or milestones that must finish before this milestone can be reached. |
| Notes | Free-text field. Content appears in the hover tooltip on the Gantt diamond. |
| Progress | Set to 100 % to mark the milestone as achieved. The diamond fills solid and the Dashboard removes it from the upcoming list. |
A milestone is rendered as a rotated square (diamond shape, ◆) positioned on its date. The diamond is colour-coded:
The milestone's name label is printed to the right of the diamond. If a deadline marker is set, a vertical dashed line extends from the diamond downward with a small flag label.
By default a milestone's date shifts when Auto Schedule runs (ASAP constraint — it floats to the earliest date its predecessors allow). To lock a milestone to a contractual or regulatory date, set its constraint to Must Start On (MSO).
With MSO, Auto Schedule will not move the milestone. If the predecessor chain calculates a finish date that is later than the MSO date, the milestone will show negative float — a clear warning that the plan cannot meet the deadline without changes.
A phase gate is a formal review point where stakeholders decide whether the project should proceed to the next phase. Model this in DPlan as follows:
This structure ensures Auto Schedule propagates the phase's latest finish through the gate before starting the next phase. It also makes the gate visible in the Dashboard's upcoming milestones panel, giving stakeholders a clear countdown.
Milestones participate in the dependency network just like tasks:
Dependency arrows from and to the diamond are drawn on the Gantt. The arrow colour follows the same rule as task dependencies: grey for no lag, orange for positive lag, blue for negative lag (lead).
Two methods:
100 and Status to Complete. Press Save.Once complete, the milestone is removed from the Dashboard's Upcoming Milestones list and counted in the Completed segment of the status donut.
The Dashboard panel has a dedicated Upcoming Milestones card that lists all milestones where progress < 100 %, sorted by date ascending. Each entry shows the milestone name, date, assignee, and a colour-coded days-remaining badge:
Use this card in weekly status meetings to focus the conversation on what gates are approaching. See Dashboard for details.
Add a milestone named Project Kickoff at the very start of the project. Set its constraint to MSO with the confirmed kickoff meeting date. Make it a predecessor of all initial tasks so nothing can be scheduled before the kickoff. This makes the kickoff explicit and visible to anyone reading the Gantt.
After a series of design tasks (wireframes, mockups, client review), add a milestone Design Sign-Off. Make all design tasks its predecessors. Add a 2-day lag to allow for email approval turnaround. Make the first development task depend on this milestone. If the client delays sign-off, Auto Schedule automatically pushes all development work forward.
Add a milestone Product Launch with MSO set to the announced launch date (e.g., a trade show date). Make all testing, marketing, and deployment tasks predecessors. Run Auto Schedule — if any predecessor chain extends past the launch date, the milestone will show negative float and the critical path will highlight exactly which tasks are causing the delay. This immediately tells you where to apply crashing or fast-tracking resources.
For compliance projects, add a milestone Regulatory Submission with MSO on the legal deadline. Make all documentation and QA tasks predecessors with appropriate lags for review cycles. The Dashboard countdown badge gives the team a daily reminder of how many days remain.