Milestones that recolour themselves — conditional, data-driven symbology
Every month the same chore: open the schedule, look at each status milestone, and hand-recolour the diamonds that slipped. Green to amber. Amber to red. One by one. It's error-prone, it's tedious, and it's exactly the kind of thing a chart should do for you. In Sketchedule it does — a milestone's shape, colour and fill are driven by a column value or a date, computed live in your browser as you type.
You know the ritual. The board pack is due, the P6 update has landed, and now you're going symbol by symbol down the milestone view deciding which diamonds are still on track and which have quietly gone late. You change a fill. You change another. You miss one, because there are forty of them and you're doing it by eye at 6pm. Next month you do it all again, from scratch, because the colours you set last time are frozen paint — they don't know the dates moved.
That's the wrong division of labour. A status symbol's colour is not a design choice you make forty times a month; it's a fact about the data. If the forecast has slipped past the target, the diamond is red — full stop. So let the rule say that once, and let the chart apply it everywhere, forever. That's conditional symbology.
Status reads "On track"; the moment that column reads "Late", the same milestone flips to a red diamond. You edited the data, not the symbol — the rule did the rest.The symbol is bound to the data, not painted on top
In a conventional Gantt, a milestone's appearance is a static property: you pick a shape, pick a colour, and it stays that way until you change it by hand. Sketchedule lets you go one level up and bind those properties instead. A milestone's shape, its outline colour, and its fill can each be driven by:
- a column value — a Status field reading "Late", a RAG code, a risk score, a %-complete number, an owner, anything in the row;
- a date — how the forecast finish compares to a target or baseline date, so slip is detected without any manual status typing at all.
You express the mapping once as a set of rules: if the condition holds, use this shape / this colour / this fill. Threshold rules compare a number or a date against a boundary; value rules match text. The rules live with the view, and — this is the part that matters on a laptop in a site cabin — they're evaluated locally, as you type. Change a target date and the diamonds recolour on the same keystroke. Nothing is uploaded, nothing round-trips to a server, and there isn't a macro in sight.
A worked example: the slip detector
Take a milestone view with two date columns — Target (the contractual date you're committed to) and Forecast (where the P6 update currently puts it) — plus a text Status column for the odd manual override like "Hold". You want every diamond to answer one question at a glance: are we going to make this date? Here's how you set it once and never hand-paint again.
- Add or map the driving column. Import the P6 file and make sure
Target,ForecastandStatusare present — either mapped from the imported fields or added as a calculated column (e.g. days-late =Forecast − Target). This is the value the symbols will read. - Open the symbology rules for the milestone type. Pick the milestone symbol, choose "drive by column / date", and start a rule set. Rules are ordered — the first one that matches wins — so you go from best case at the top to worst case at the bottom.
- Map each condition to a shape, colour and fill. Forecast ≤ Target → green circle. Up to 10 days late → amber diamond. More than 10 days late → red diamond. Status = "Hold" → grey square. Threshold rules handle the dates; the value rule handles the manual override.
- Watch it apply across the whole chart. The moment you save the rule, every milestone in the view recolours itself against its own data — computed locally, instantly. No macro run, no recalculation wait, no page reload.
- Edit the data, not the symbols — forever after. Next month, refresh from the updated P6. As the forecast dates move, the diamonds flip green→amber→red on their own. You never touch a fill again.
| Condition (top match wins) | Shape | Colour / fill |
|---|---|---|
| Forecast ≤ Target | Circle | Green, solid |
| Forecast 1–10 days late | Diamond | Amber, solid |
| Forecast > 10 days late | Diamond | Red, solid |
| Status = "Hold" | Square | Grey, hollow |
| Milestone complete (100%) | Diamond | Filled + tick |
Start, Finish, a %-complete pie column and a Status stoplight; the Gantt on the right renders the task bars and milestone diamonds on a month axis. Each diamond is coloured by its own status — green on track, amber slipping, red late — and the dashed red data-date line marks where the update lands. Nothing was hand-painted: every colour is a consequence of the data."Can't the desktop tools already do this?" — not without pain
If you've lived in project-controls software, you'll know two half-answers to this, and why neither is the same thing.
- Desktop schedulers and their add-ins can conditionally format — but the moment you want anything beyond a canned rule, you're writing VBA or a macro, wiring up a bespoke routine, and maintaining it. It works, but it's a scripting project, not a checkbox, and it breaks quietly when the file structure changes.
- Cloud work-OS tools — the boards-and-tables platforms — do coloured status pills beautifully, but they can't drive schedule symbology at all. They have no milestone diamonds, no Gantt-native symbol language, no notion of a forecast-versus-target date on a bar. The status dot lives in a table cell, not on a timeline.
The gap in the middle is exactly what Sketchedule fills: proper Gantt-native milestone symbology — shape, colour and fill — driven by data-bound rules, live and local, with no scripting to write and nothing uploaded. You get the desktop tool's timeline fluency and the work-OS tool's effortless conditional colour, without either one's tax.
Key takeaways
- A status symbol's colour is a fact about the data, not a monthly design chore — bind it once with a rule.
- Milestone shape, colour and fill can be driven by any column value or by a date, via ordered threshold and value rules.
- Rules are computed locally, as you type — instant, private, no macros, no server round-trip.
- Worked slip detector: green ≤ target, amber ≤ 10 days late, red beyond — set once, self-recolours every refresh.
- Desktop tools need VBA; cloud work-OS tools can't do schedule symbology at all — this is the live, local middle ground.
Let your milestones recolour themselves
Open Sketchedule in a browser — free, no install, nothing uploaded. Drop in a schedule, write one rule, and watch the diamonds follow the data.
Primavera and P6 are trademarks of Oracle Corporation; Microsoft Project is a trademark of Microsoft Corporation. Sketchedule is an independent product and is not affiliated with, endorsed by or sponsored by Oracle or Microsoft. Figures are illustrative, drawn in Sketchedule.