Our user stories stay in ‘In Testing’ status even when all linked defects are closed. QA marks stories as ‘In Testing’ when they find bugs, then logs defects and links them to the story. But once the defects are fixed and closed, nobody remembers to move the story forward-it just sits there.
This causes confusion on our sprint board because stories appear to be actively testing when they’re actually ready for sign-off. We’ve discussed automation rules to transition stories when linked defects close, but we’re not sure how to handle the link type standardization. Some teams use ‘blocks’, others use ‘relates to’, and a few use ‘is caused by’. Do we need to clean up existing links first?
Here’s an example of our current state:
Story ABC-123: "User login feature"
Status: In Testing
Linked Issues:
- Blocks: DEF-456 (Closed)
- Relates to: DEF-789 (Closed)
- Is caused by: DEF-101 (Closed)
How do other teams handle this? Is there a standard automation pattern for moving stories based on defect closure?
We cleaned up link types by running a bulk operation: exported all issues with links to CSV, used a script to standardize link types to ‘blocks’, then re-imported. It was tedious but necessary. Now our automation rule is simple-when a defect closes, check if the blocked story has any other open defects. If not, add a ‘ReadyForReview’ label and post a comment. The label triggers a board filter so QA can see which stories need final sign-off.
Also consider adding a ‘Blocked’ label to stories when defects are opened against them. This gives visual feedback on the board without relying on status transitions. When all defects close, the automation rule removes the ‘Blocked’ label. It’s a lightweight way to track defect impact without cluttering your workflow with extra statuses.
We had the exact same issue. The root cause was inconsistent link types. We standardized on ‘is blocked by’ for all defect-to-story links. Then we built an automation rule that triggers when a defect is closed and checks if all blocking defects for the parent story are resolved. If yes, it transitions the story to ‘Ready for Review’. Took about a week to clean up existing links, but now it’s hands-off.
One gotcha: if a story has defects from multiple sprints, you might close older defects but still have open ones. Make sure your automation checks all linked defects, not just the most recent. We use a JQL query in the automation rule: issueFunction in linkedIssuesOf("key=ABC-123", "is blocked by") AND status != Closed. If that returns zero results, the story is clear to move forward.