jira-bulk-operations
jira-bulk
Bulk operations for JIRA issue management at scale - transitions, assignments, priorities, cloning, and deletion.
Risk Levels
| Operation | Risk | Notes |
|---|---|---|
| Dry-run any operation | - |
Preview only, no changes |
| Bulk transition | !! |
Affects many issues; use --dry-run first |
| Bulk assign | !! |
Affects many issues; use --dry-run first |
| Bulk set-priority | !! |
Affects many issues; use --dry-run first |
| Bulk clone | ! |
Creates many issues; can delete |
| Bulk delete | !!! |
IRREVERSIBLE - issues permanently lost |
Risk Legend: - Safe, read-only | ! Caution, modifiable | !! Warning, destructive but recoverable | !!! Danger, irreversible
CRITICAL: Always use --dry-run before executing bulk operations. Bulk delete is permanent and cannot be undone.
When to use this skill
IMPORTANT: Always use the jira-as CLI. Never run Python scripts directly.
Use this skill when you need to:
- Transition multiple issues through workflow states simultaneously
- Assign multiple issues to a user (or unassign)
- Set priority on multiple issues at once
- Clone issues with their subtasks and links
- Delete multiple issues permanently (with dry-run preview)
- Execute operations with dry-run preview before making changes
- Handle partial failures gracefully with progress tracking
Scale guidance:
- 5-10 issues: Run directly, no special options needed
- 50-100 issues: Use
--dry-runfirst, then execute - 500+ issues: Use
--dry-run, then execute in smaller batches if needed
Quick Start
# Preview before making changes
jira-as bulk transition --jql "project=PROJ AND status=\"In Progress\"" --to Done --dry-run
# Execute the transition
jira-as bulk transition --jql "project=PROJ AND status=\"In Progress\"" --to Done
For more patterns, see Quick Start Guide.
Available Commands
| Command | Purpose | Example |
|---|---|---|
jira-as bulk transition |
Move issues to new status | --jql "..." --to "Done" |
jira-as bulk assign |
Assign issues to user | --jql "..." --assignee john |
jira-as bulk set-priority |
Set issue priority | --jql "..." --priority High |
jira-as bulk clone |
Clone issues | --jql "..." --include-subtasks |
jira-as bulk delete |
Delete issues permanently | --jql "..." --dry-run |
All commands support --help for full documentation.
Common Options
All commands support these options:
| Option | Purpose | When to Use |
|---|---|---|
-n/--dry-run |
Preview changes | Always use for >10 issues |
-y/--yes |
Skip confirmation | Scripted automation |
-m/--max-issues N |
Limit scope (default: 100) | Testing, large operations |
-o/--output FORMAT |
Output format: text (default), json | JSON for scripting |
Transition-Only Options
These options are only available for jira-as bulk transition:
| Option | Purpose | When to Use |
|---|---|---|
--comment / -c |
Add comment with transition | Documenting bulk changes |
--resolution / -r |
Set resolution (e.g., Fixed) | Closing issues |
Examples
Bulk Transition
# By issue keys
jira-as bulk transition --issues PROJ-1,PROJ-2,PROJ-3 --to Done
# By JQL query
jira-as bulk transition --jql "project=PROJ AND status=\"In Progress\"" --to Done
# With resolution
jira-as bulk transition --jql "type=Bug AND status=Verified" --to Closed --resolution Fixed
Bulk Assign
# Assign to user
jira-as bulk assign --jql "project=PROJ AND status=Open" --assignee "john.doe"
# Assign to self
jira-as bulk assign --jql "project=PROJ AND assignee IS EMPTY" --assignee self
# Unassign
jira-as bulk assign --jql "assignee=john.leaving" --unassign
Bulk Set Priority
jira-as bulk set-priority --jql "type=Bug AND labels=critical" --priority Highest
# Output as JSON
jira-as bulk set-priority --jql "type=Bug" --priority High --dry-run -o json
Bulk Clone
# ALWAYS preview first with dry-run (cloning creates many issues)
jira-as bulk clone --jql "sprint=\"Sprint 42\"" --include-subtasks --dry-run
# After reviewing the preview, execute without --dry-run
jira-as bulk clone --jql "sprint=\"Sprint 42\"" --include-subtasks --include-links
# Clone to different project
jira-as bulk clone --issues PROJ-1,PROJ-2 --target-project NEWPROJ --prefix "[Clone]"
Bulk Delete (DESTRUCTIVE)
# ALWAYS preview first with dry-run
jira-as bulk delete --jql "project=CLEANUP" --dry-run
# Delete by issue keys (preview first)
jira-as bulk delete --issues DEMO-1,DEMO-2,DEMO-3 --dry-run
# Execute deletion (after confirming dry-run output)
jira-as bulk delete --jql "project=CLEANUP" --yes
# Keep subtasks when deleting parent issues (subtasks deleted by default)
jira-as bulk delete --jql "project=CLEANUP" --no-subtasks --dry-run
Safety features:
--dry-runshows exactly what will be deleted before making changes- Confirmation required for >10 issues (lower than other operations)
- Default
--max-issues 100prevents accidental mass deletion - Per-issue error tracking with summary of failures
Scale Recommendations
| Issue Count | Recommended Approach |
|---|---|
| <50 | Defaults are fine |
| 50-500 | --dry-run first, then execute |
| 500+ | --dry-run, then execute in smaller batches if needed |
Getting rate limit (429) errors?
- Use
--max-issuesto process in smaller batches - Consider running during off-peak hours
Exit Codes
| Code | Meaning |
|---|---|
| 0 | All operations successful |
| 1 | Some failures or validation error |
| 130 | Cancelled by user (Ctrl+C) |
Troubleshooting
| Error | Solution |
|---|---|
Transition not available |
Check issue status with jira-as issue get ISSUE-KEY --show-transitions |
Permission denied |
Verify JIRA project permissions (DELETE_ISSUES required for bulk delete) |
Rate limit (429) |
Use --max-issues to process in smaller batches or run during off-peak hours |
Invalid JQL |
Test JQL in JIRA search first |
Cannot delete issue with subtasks |
Subtasks are deleted by default; use --no-subtasks to keep them |
For detailed error recovery, see Error Recovery Playbook.
Documentation
| Guide | When to Use |
|---|---|
| Quick Start | Get started in 5 minutes |
| Operations Guide | Choose the right command |
| Error Recovery | Handle failures |
| Safety Checklist | Pre-flight verification |
| Best Practices | Comprehensive guidance |
Related Skills
- jira-lifecycle: Single-issue transitions and workflow
- jira-search: Find issues with JQL queries
- jira-issue: Create and update single issues
More from grandcamel/jira-assistant-skills
jira-agile-management
Epic creation and sprint management - create epics, manage sprints, view backlog, estimate with story points. TRIGGERS: 'create an epic', 'create epic', 'new epic', 'show the backlog', 'view backlog', 'add to sprint', 'move to sprint', 'set story points', 'sprint planning', 'epic for', 'link to epic', 'sprint list', 'active sprint', 'velocity', 'create subtask'. NOT FOR: bugs/tasks/stories without epic context (use jira-issue), field ID discovery (use jira-fields), searching issues by JQL (use jira-search), transitioning issues through workflow (use jira-lifecycle).
10jira-search-jql
Find issues by criteria (status, assignee, priority, etc.) using JQL. Create filters, export results to CSV/JSON, bulk update. Ideal for reporting and automation.
7jira-administration
>
5jira-service-management
Complete ITSM/ITIL workflow support for JSM - service desks, requests, SLAs, customers, approvals, knowledge base. Use when managing service desk requests, tracking SLAs, or handling customer operations.
4jira-developer-integration
Git and developer workflow integration. TRIGGERS: 'generate branch name', 'create branch name', 'branch name for', 'write PR description', 'PR description for', 'link PR', 'link pull request', 'parse commit', 'extract issue from commit', 'smart commit', 'development panel'. Use for Git, GitHub, GitLab, Bitbucket integration with JIRA. NOT FOR: issue field updates (use jira-issue), searching issues (use jira-search), status transitions (use jira-lifecycle).
4jira-assistant
JIRA automation hub routing to 13 specialized skills for any JIRA task: issues, workflows, agile, search, time tracking, service management, and more.
3