Skip to content

Bulk Operations

Perform batch operations on multiple issues.

  • Authenticated profile (atlcli auth login)
  • Jira permission: Edit Issues for all matched issues

Update multiple issues at once using --set field=value syntax:

Terminal window
atlcli jira bulk edit --jql "project = PROJ AND labels = cleanup" --set "labels=backend,tech-debt"

Options:

FlagDescription
--jqlJQL query to select issues
--issuesComma-separated issue keys
--setSet field value: field=value (repeatable)
--dry-runPreview changes without applying
--limitMaximum issues to update
--confirmSkip confirmation prompt
Terminal window
# Set priority
atlcli jira bulk edit --jql "project = PROJ AND type = Bug" --set "priority=High"
# Set assignee
atlcli jira bulk edit --jql "status = 'To Do' AND sprint in openSprints()" \
--set "assignee=alice@company.com"
# Set multiple fields
atlcli jira bulk edit --jql "labels = needs-review" \
--set "priority=Medium" \
--set "labels=reviewed"
# Set custom field
atlcli jira bulk edit --jql "project = PROJ" \
--set "customfield_10001=value"
# By issue keys
atlcli jira bulk edit --issues PROJ-1,PROJ-2,PROJ-3 --set "priority=Low"

For labels, use the dedicated bulk label commands:

Terminal window
# Add a label to matching issues
atlcli jira bulk label add release-2.0 --jql "sprint in openSprints()"
# Remove a label from matching issues
atlcli jira bulk label remove deprecated --jql "project = PROJ"
# Preview with dry-run
atlcli jira bulk label add reviewed --jql "..." --dry-run

Move multiple issues to a new status:

Terminal window
atlcli jira bulk transition --jql "project = PROJ AND status = 'To Do'" --to "In Progress"

Options:

FlagDescription
--jqlJQL query to select issues
--toTarget status name (required)
--dry-runPreview changes
--limitMaximum issues to process
Terminal window
# Close all bugs in old sprint
atlcli jira bulk transition \
--jql "type = Bug AND sprint = 'Sprint 10' AND status != Done" \
--to Done
# Start work on all assigned issues
atlcli jira bulk transition \
--jql "assignee = currentUser() AND status = 'To Do'" \
--to "In Progress"

Move issues between sprints or projects:

Terminal window
# Move to sprint
atlcli jira bulk move --jql "labels = release-2.0" --sprint 456
# Move to backlog
atlcli jira bulk move --jql "sprint = 123 AND status = 'To Do'" --backlog

Options:

FlagDescription
--jqlJQL query
--issuesComma-separated keys
--sprintTarget sprint ID
--backlogMove to backlog
--dry-runPreview changes
--confirmSkip confirmation

Delete multiple issues:

Terminal window
atlcli jira bulk delete --jql "project = PROJ AND labels = test" --confirm

Options:

FlagDescription
--jqlJQL query
--issuesComma-separated keys
--confirmRequired for destructive operation
--dry-runPreview what would be deleted
Terminal window
# Preview first
atlcli jira bulk delete --jql "project = TEST AND created < -90d" --dry-run
# Then execute
atlcli jira bulk delete --jql "project = TEST AND created < -90d" --confirm

All bulk operations support --dry-run to preview changes:

Terminal window
atlcli jira bulk edit --jql "..." --set "priority=High" --dry-run

Output:

Dry run - no changes will be made
Issues to update (15 total):
PROJ-101 Fix login bug
PROJ-102 Update documentation
PROJ-103 Refactor auth module
... and 12 more
Changes:
priority: Current → High
Run without --dry-run to apply changes.

For large batches, progress is shown:

Updating issues: 45/100 [████████░░░░░░░░░░░░] 45%

Failed updates are reported:

Completed: 98/100
Failed: 2
PROJ-150: Permission denied
PROJ-175: Invalid transition

Bulk operations automatically handle rate limiting:

  • Requests are batched
  • Automatic retry with backoff on 429 errors
  • Progress continues after transient failures
Terminal window
atlcli jira bulk edit --jql "..." --set "priority=High" --json
{
"schemaVersion": "1",
"operation": "edit",
"total": 15,
"successful": 15,
"failed": 0,
"issues": [
{"key": "PROJ-101", "status": "updated"},
{"key": "PROJ-102", "status": "updated"}
]
}
  1. Always dry-run first - Preview before making changes
  2. Use specific JQL - Narrow your query to avoid unintended updates
  3. Batch appropriately - Use --limit for very large result sets
  4. Check permissions - Ensure you have edit rights for all matched issues
  • Search - JQL query syntax
  • Issues - Single issue operations
  • Filters - Save and reuse JQL queries
Jira and Confluence are trademarks of Atlassian Corporation Plc. atlcli is not affiliated with, endorsed by, or sponsored by Atlassian.