Modern QA2026Jira Workflow Template: Bug Lifecycle
Log inJoin
9 / 12 · Book 18 · The Art of the Bug Report← prev⊞ allnext →Get the book →

1.9Jira Workflow Template: Bug Lifecycle

Here is a complete, copy-paste-ready Jira workflow configuration for bug tracking.

Statuses

New, Open, In Progress, Code Review, Fixed, In Verification,
Closed, Reopened, Deferred, Won't Fix, Duplicate

Transitions

New         --> Open            (Triage assigns priority and owner)
Open        --> In Progress     (Developer starts work)
Open        --> Deferred        (Team lead defers to future sprint)
Open        --> Won't Fix       (Team lead + PO decision)
Open        --> Duplicate       (Link to original, close)
In Progress --> Code Review     (Developer submits PR)
Code Review --> Fixed           (PR approved and merged)
Fixed       --> In Verification (QA picks up for verification)
In Verification --> Closed      (QA confirms fix works)
In Verification --> Reopened    (QA confirms fix does not work)
Reopened    --> In Progress     (Developer resumes work)
Deferred    --> Open            (Picked up in a future sprint)

Conditions and Validators

Transition: Fixed --> In Verification
  Condition: Fix version must be set
  Validator: At least one attachment or linked PR

Transition: In Verification --> Closed
  Condition: Current user must be in QA group
  Validator: Resolution field must be "Done"

Transition: In Verification --> Reopened
  Condition: Current user must be in QA group
  Validator: Comment is required (explain why fix failed)

Transition: Open --> Won't Fix
  Condition: Current user must be Team Lead or PO
  Validator: Comment is required (justify decision)

Post-Functions

Transition: New --> Open
  Post-function: Set "Triaged" field to "Yes"
  Post-function: Add to sprint if priority >= High

Transition: In Verification --> Closed
  Post-function: Set resolution to "Done"
  Post-function: Fire webhook to Slack #releases channel

Transition: In Verification --> Reopened
  Post-function: Clear resolution field
  Post-function: Assign back to original developer