Subtickets support for Trac tickets


This plugin offers a sub-ticket feature for managing tickets. Subtickets are useful for when several tickets are developed and released under one master ticket. The master ticket in the example below called the Root ticket, has multiple subtickets defined under it.

The following screenshot demonstrates how the subtickets are displayed below the Description section of a ticket:

Relations between tickets are stored in a table called Subtickets with just two columns: parent, child and that eases reporting considerably when compared to ChildTicketsPlugin. For further information on reporting, see SubticketsPlugin/Reporting.

Since tickets can have multiple parents, the expressive power of SubticketsPlugin corresponds to that of MasterTicketsPlugin (ie. both allow tickets to be organised in an acyclic directed graph). The UI of MasterTicketsPlugin is mostly oriented towards linking up already-existing tickets while SubticketsPlugin's UI is mostly oriented towards top-down creation and inspection of a ticket hierarchy.

Bugs/Feature Requests

Existing bugs and feature requests for SubticketsPlugin are here.

If you have any issues, create a new issue.


You can download zipped source from here.


You can check out the source for SubticketsPlugin from here using Git, or browse the source with GitHub.


  1. Download the zip file, unpack it and run:
    python bdist_egg
  2. Install it in one of the following ways:
    cp dist/*.egg path/to/trac/env/plugins
    easy_install dist/*.egg
    python install
  3. Enable the plugin in your trac.ini file as follows:
    tracsubtickets.api.* = enabled
    tracsubtickets.web_ui.* = enabled
  4. Upgrade your Trac environment:
    trac-admin <env> upgrade

For Trac 1.4, include Genshi in the requirements.


This plugin shares some of the configurations with ChildTicketsPlugin. Most settings are ticket type dependent, such as defect and task in the example below:

# Select column headings in child listing
# Id and summary are always displayed
type.defect.table_columns = priority,keywords,owner
type.task.table_columns   = # display id and summary only

# Control which fields are inherited from parent to child when creating child
type.defect.child_inherits = keywords,milestone
type.task.child_inherits   = version,cc

# Control the visual appearance of the create subticket link. Config value shall be one of "button" and "link"
add_style = button

# Enable ticket modification (except comments) when a parent is closed (default=true)
no_modif_when_parent_closed = false

# Normally SubticketsPlugin will refuse closing parents when a child is non-closed and similarly
# reopening a child whose parent is closed. These behaviours can be suppressed by adding 
# either of the action names tho this setting:
skip_closure_validation = resolve,reopen

# The number of child levels is controlled by the following setting, where 
# -1 (default) means infinity and zero means one level of children.
recursion_depth = 2    # - three levels of children

If IniAdminPlugin is installed, the configuration can be edited through the administration panel subtickets. The plugin detects which ticket types are defined and creates config values accordingly. Config values are not deleted when ticket types are deleted and they will disappear from the admin panel only when trac is restarted. Also note that as long as a config value is not changed wrt. its hardcoded default value, it is not added to trac.ini.

Incompatibilities with earlier versions

With <= 0.4.1: In order to obtain a not-too-unreasonable sorting of config values in the admin panel, all ticket type-specific config values now have the prefix type.

Interaction with ticket workflows

If the ticket workflow includes actions resolve and reopen, they will block and show an error message when:

  • trying to resolve a ticket with one or more non-closed children
  • trying to reopen or modify fields of a closed ticket with one or more closed parents.

This behaviour can be inhibited; see above.

Interaction with XmlRpcPlugin

Parent/child relationships can be managed through XmlRpcPlugin: Simply update the parents attribute with a comma-separated list of parent ticket ids.

About i18n/l10n support

This plugin is prepared for localization. The patched version is available at the Git repo now.

The English message texts are still the (POSIX) default. If this isn't your preferred language, you can:

  1. check if it is already available from the Trac plugin l10n project at Transifex or
  2. do it yourself, see the l10n cookbook page for Trac plugins for more details.

Contributing your translation is highly appreciated! You could send it to the plugin's maintainer or contribute to Trac plugin l10n project via Transifex:

Top translations: Trac_Plugin-L10N » tracsubtickets


Author: itota
Maintainer: thenor
Contributors: hasienda, ChrisNelson, Andrei Rodionov (Russian x-lation)

Last modified 3 years ago Last modified on Jan 10, 2022, 9:09:49 AM

Attachments (1)

Download all attachments as: .zip