Bulk Documentation
Product referenceWork managementTasks

Break work into subtasks

Create child tasks, understand always-nested task lists, track parent progress, and convert a checklist into subtasks.

A subtask is a task with another task as its parent. Use subtasks when a piece of work needs its own status, assignees, dates, comments, or attachments but still belongs under a larger task.

For example, a Service extraction unit parent might contain Lock out the unit, Replace filters, and Test airflow as subtasks. A checklist is better for simple steps that do not need their own task details.

Permissions

  • Viewing the hierarchy and Subtasks panel needs tasks.view.
  • Changing a subtask's status or parent needs tasks.update.
  • Quick-adding a subtask needs tasks.create.
  • Converting a checklist needs both tasks.update and tasks.create.

Bulk checks these permissions on the backend. A person with view access can still open subtasks, but the status dot is read-only and Add subtask is not available without create access.

Understand subtasks in task lists

The normal task list is grouped by Status, Assignee, or Priority. Within each group, children always appear directly under a parent that is present in the same group. Child rows are indented. There is no Nested toggle and no flat mode for the grouped list.

The parent row shows a compact done/total chip, such as 2/3. The chip counts direct, non-deleted children. Cancelled children are excluded from both numbers.

A child may appear at the group root

Always-nested means “nest when the parent is present in the same group.” If a filter removes the parent, the parent has not loaded yet, or grouping places the parent and child in different groups, the child appears at root level in its own group. Free-text search also uses a separate flat search-results table.

The Gantt view also shows the hierarchy without a Nested toggle. See Use the project Gantt timeline.

Use the Subtasks panel

Open a task and stay on General. The Subtasks card appears between Description and Checklist when the task has children or you can add one.

The card shows:

  • a progress ring and done/total done in the header;
  • one row per direct child, ordered by the task hierarchy order;
  • a coloured status dot, the task name, up to three assignee avatars, and a due label when one exists;
  • overdue dates in the warning colour; and
  • completed or cancelled child names with a line through them.

Select the status dot to change a child status when you have tasks.update. Select the child name to open the complete child task:

  • From the task dialog, Bulk replaces the dialog content with the child and adds Back to parent name so you can drill back up.
  • From the full task-detail page, Bulk opens the child's /tasks/:id page.

On the full task-detail page, an error in the Subtasks section is contained by that section. The full page shows a spinner while a task loads and Task not found if it was deleted or you cannot access it. The task dialog uses its own loading skeleton and not-found state.

Add a subtask quickly

  1. Open the parent task on General.
  2. In Subtasks, select Add subtask.
  3. Enter a name and submit it.

The quick-add stays open and returns focus to the name field so you can add the next child. Press Esc to close it.

Quick-add creates a To Do task with Normal priority. The backend copies the parent's project and section and puts the new task under that parent. Open the child afterward to set assignees, dates, description, or other details.

Add subtask is unavailable when:

  • you do not have tasks.create;
  • the project is archived; or
  • the parent already sits at the maximum nesting depth.

If there are no children but you can add one, the card says No subtasks yet — break this task into smaller pieces. If there are no children and you cannot add one, Bulk hides the whole card. While the panel subscription is loading, it does not render a temporary empty card. Creation and status errors appear as a toast and the existing rows stay in place.

Choose a parent in the task form

You can also create or edit a task and use Parent task after selecting a project. Choose No parent to keep the task at the root.

The picker only offers valid parents from the same project. When editing, it excludes:

  • the task itself;
  • every descendant, which prevents a parent cycle; and
  • candidates that would push the task's whole existing subtree beyond the depth limit.

Changing the selected project clears the parent choice. Moving an existing task to another project also detaches its parent relationship because parents and children cannot cross projects.

Convert a checklist into subtasks

Use conversion when every current checklist item now needs full task fields. The action converts the whole checklist; it is not a per-item selection.

  1. Open a task with one or more checklist items on General.
  2. In the Checklist header, select the tree icon labelled Convert checklist to subtasks.
  3. Review Convert checklist to subtasks? and select Convert.

Bulk turns each active checklist item into a direct child of the task:

  • completed items become Done subtasks with 100% progress;
  • incomplete items become To Do subtasks with 0% progress;
  • every new task inherits the parent's project and section; and
  • the original checklist items leave the visible checklist.

The parent's progress percentage is kept equivalent. For example, converting a checklist with two of four items complete creates two Done and two To Do subtasks and leaves the parent at 50%.

Conversion replaces the visible checklist

Conversion applies to every active checklist item at once. Bulk keeps the old items in its audit history, but they no longer appear in the checklist.

Conversion is unavailable in an archived project or at the maximum subtask depth. It can also fail when task creation would exceed the plan limit. One conversion is limited to 200 checklist items.

Complete parent work

Bulk does not automatically complete a parent and does not block you from changing its status merely because child work is open.

When every non-cancelled direct child is Done and the parent is still open, the Subtasks card shows All subtasks done — mark this task done? People with tasks.update can choose Mark done or dismiss the prompt. Cancelled children do not count and do not block this prompt.

Nesting and deletion limits

Subtask depth is capped at 3: a root task at depth 0 can have children at depths 1, 2, and 3. In other words, the hierarchy can contain four task levels including the root. Bulk prevents quick-add, checklist conversion, and parent changes that would create depth 4.

Deleting a parent does not delete its child tasks. Bulk soft-deletes the parent and detaches its children, which then become root tasks in the project. Deleting an individual child follows the normal task-deletion behaviour: it disappears from task lists and search, the deletion remains in the audit log, and Bulk does not offer a restore action in the app.