Skip to main content

Tasks, milestones & dependencies

This page covers the structure and scheduling elements of the chart: the task hierarchy and how it's ordered, milestone markers, and dependency arrows between tasks.

The task hierarchy​

The hierarchy comes from the Project hierarchy field — each column is one level of nesting (see Fields → Project hierarchy). This section covers how it's displayed and controlled.

Expand & collapse​

Every parent row has a toggle to expand or collapse its children. The state is remembered — if you collapse a project in editing and save, viewers see it collapsed. Collapse and expand state is also captured by Power BI bookmarks, so you can build guided views.

The task list with one project collapsed and another expanded, showing the expand/collapse arrows

Row numbers (WBS)​

Format → Project hierarchy → Row numbers

Turns on a Work Breakdown Structure number column to the left of the task list (e.g. 1, 1.1, 1.2, 2). Off by default.

The task list with WBS row numbers shown in a column to the left of the task names

Color swatches​

Format → Project hierarchy → Show color swatches

Shows a small color chip next to each project/parent name in the task list, matching its bar color. On by default.

Completion checkmarks​

Format → Project hierarchy → Show completion checkmarks

Shows a green checkmark next to tasks that are 100% complete (requires a Progress (%) field). On by default.

The task list with WBS row numbers on, color swatches visible, and a green checkmark next to a completed task

Milestones​

Milestones are key dates plotted as markers on a task's row. Add one to five date columns to the Milestones field (see Fields → Milestones).

A few task rows showing milestone markers of different shapes on the timeline

Choose a symbol per milestone​

Format → Milestones → Symbols

Each milestone column gets its own symbol picker. Available symbols: Circle · Diamond · Square · Triangle · Star. This lets you distinguish, say, a "Review" milestone (diamond) from a "Go-live" milestone (star).

The Milestones card expanded to the Symbols group, with a symbol dropdown open showing the five shapes

Zero-duration tasks​

A task whose start and end dates are the same has nothing to draw as a bar. By default the visual draws it as a milestone marker instead, so single-day events in your task table appear as milestones without needing a separate Milestones column.

Format → Milestones → Options

SettingWhat it doesDefault
Zero-duration tasks as milestonesDraws same-day tasks as a marker rather than a bar.On
Task milestone symbolThe shape used for those tasks.Diamond

Turn the toggle off if you'd rather these tasks stay as (very short) bars.

Marker options​

Format → Milestones → Options

SettingWhat it doesDefault
Hide markers outside barsHides milestone markers that fall outside their task's start–end range.Off
Marker size (%)Size of markers as a percentage of task bar height (10–80%).30%

Dependencies​

Dependency arrows show that one task can't start until another finishes. They require two fields: Task ID and Predecessor ID.

Set it up​

  1. Add a unique identifier column to Task ID (e.g. 1, 2, 3).
  2. Add the predecessor column to Predecessor ID. Each value lists the IDs this task depends on, separated by commas or semicolons.
Task IDTaskPredecessor ID
1Discovery
2Design1
3Build2
4Launch2;3

Here "Launch" depends on both "Design" (2) and "Build" (3), so it receives an arrow from each.

note

Predecessor values exported from Microsoft Project, such as 3FS+2d, work as-is. The link type (FS, SS, FF, SF) and lag are ignored — every arrow is drawn from the end of the predecessor to the start of the task.

Style the arrows​

Format → Dependency lines

SettingWhat it doesDefault
ShowTurns dependency arrows on or off.On
ColorArrow color.#323338 (dark gray)
StyleSolid, Dashed, or Dotted.Solid
WidthArrow line thickness, 1–5 px.1 px
caution

Arrows only appear when both Task ID and Predecessor ID are populated and the IDs match. If an arrow is missing, check that the predecessor value exactly matches an existing Task ID and that IDs are unique.