OdinFlow Documentation
OdinFlow is a Jira Cloud automation app that lets you build JQL queries, construct bulk update payloads, and schedule recurring automations — all through a visual form editor. No JQL syntax required.
Visual Query Builder
Build complex JQL from dropdowns populated with your real Jira data
Bulk Operations
Update fields, transition statuses, and archive issues at scale
Scheduled Automation
Run jobs on a one-time or recurring schedule with timezone support
Secure by Default
OAuth 2.0, TLS encryption, adaptive rate limiting, and automatic token management
Installation & Setup
Step 1: Install from the Atlassian Marketplace
Install OdinFlow like any other Jira app. Your Jira plan (Standard, Premium, or Enterprise) is automatically detected and used to configure optimal performance settings.
Step 2: Connect Your Account
When you install OdinFlow, authentication happens automatically — you're connected to your Jira instance and brought straight into the app. No manual setup required.
If authentication fails for any reason, an overlay will prompt you to reconnect. You can also re-authenticate at any time from the Support page within the app.
OdinFlow automatically keeps your connection active by refreshing tokens in the background — no re-authentication required.
Permissions
OdinFlow requests the minimum permissions needed to operate:
| Permission | What It's Used For |
|---|---|
| Read Jira user data | Identify your account and team members |
| Read Jira work data | Access projects, issues, fields, and search results |
| Write Jira work data | Perform bulk operations (field updates, transitions, archiving) |
| Offline access | Keep your connection alive without re-authentication |
Visual Query Builder
The main interface. Build JQL searches and bulk updates using a form with dropdowns — no JQL syntax required.
Building a Search (JQL Filters)
Add filter rows to define which issues to target:
- Select a field — choose from a dropdown of all fields in your Jira instance
- Select an operator — equals, not equals, in, not in, contains, greater than, less than, etc.
- Enter a value — type or select from allowed values (auto-populated from your Jira config)
- Add more rows — combine multiple conditions (AND logic)
Example — Find all high-priority open bugs in project PROJ:
Generates: project = PROJ AND issuetype = Bug AND status != Done AND priority = High
Context-Aware Fields
When you select a project and issue type, OdinFlow loads the exact fields that Jira allows for that combination. You only see fields that are actually applicable — no guessing.
Validation
The editor validates your entries before execution: warns if a value doesn't match your Jira configuration, flags fields that require specific formats (dates, numbers), and blocks admin-disabled fields.
Limits
- Up to 30 JQL filter rows per request
- Up to 50 update rows per request
Bulk Updates
Add update rows to define what to change on the matched issues. Select a field, choose an operation, and enter the new value.
| Operation | What It Does | Use For |
|---|---|---|
| Set | Replaces the current value | Priority, Status, Assignee, Summary, single-value fields |
| Add | Appends to the existing list | Labels, Components, Fix Versions (array fields) |
| Remove | Removes from the existing list | Labels, Components, Fix Versions (array fields) |
| Increase | Adds to the current numeric value | Story Points, custom number fields |
| Decrease | Subtracts from the current numeric value | Story Points, custom number fields |
Additional Bulk Actions
- Status transitions — move issues through workflow states in bulk
- Comments — add a comment to every matched issue
- Watchers — add or remove watchers from matched issues
- Issue links — create links between matched issues and a target issue
- Worklog — log time against each matched issue
- Move / retype — move issues to a different project or change their issue type
- Archive / unarchive — mass archive old issues or restore archived ones
Notification Control
By default, Jira sends email notifications for each change. For large bulk operations you can suppress notifications, so watchers and assignees aren't flooded with emails.
Supported Fields
OdinFlow supports all standard and custom Jira field types. The editor dropdowns are populated from your actual Jira instance.
| Type | Examples | Available Operations |
|---|---|---|
| Text | Summary, Description, Environment | Set value; search with contains/not contains |
| Single Select | Status, Priority, Resolution, Issue Type | Set to a value; filter by equals/not equals/in |
| Multi-Select / Array | Labels, Components, Fix Versions | Add, remove, or set entire list |
| User | Assignee, Reporter, custom user pickers | Set to a specific user; filter by user or currentUser() |
| Date | Due Date, Created, Updated | Set to a date; filter by before/after/range |
| Number | Story Points, Original Estimate | Set, increase, or decrease |
| Sprint | Agile Sprint field | Assign issues to a sprint |
| Custom Fields | Any custom field in your Jira | Depends on the underlying type |
Field Exclusions
Your Jira site admin can disable specific fields in OdinFlow. Disabled fields won't appear in the editor dropdowns. Fields can be blocked from JQL search, updates, or both — globally or per-project.
JQL Operators
| Operator | Description | Example |
|---|---|---|
= | Equals | Status = Done |
!= | Not equals | Priority != Low |
in | One of multiple values | Status in (Open, "In Progress") |
not in | Not one of multiple values | Priority not in (Low, Lowest) |
~ | Contains text | Summary ~ "login bug" |
> >= < <= | Comparison | Created >= -7d |
is EMPTY | Field has no value | Assignee is EMPTY |
is not EMPTY | Field has a value | Labels is not EMPTY |
Date Shortcuts
When filtering by date fields, you can use Jira's relative date functions:
| Shortcut | Meaning |
|---|---|
-7d | 7 days ago |
-30d | 30 days ago |
+1d | 1 day from now |
startOfDay() | Midnight today |
endOfDay() | End of today |
startOfWeek() | Start of current week |
startOfMonth() | Start of current month |
Scheduling
Schedule your jobs to run automatically at a specific time or on a recurring basis.
One-Time Schedules
Set a date and time — the job runs once and completes.
Recurring Schedules
Set a frequency — the job runs repeatedly on the defined cycle:
| Frequency | Runs Every |
|---|---|
| Daily | 24 hours |
| Weekly | 7 days |
| Bi-weekly | 14 days |
| Monthly | ~30 days |
Schedule Management
- View all your active, paused, and completed schedules
- Pause a recurring schedule — stops running but keeps its configuration
- Resume a paused schedule — picks up from where it left off
- Cancel — permanently stop a schedule
- Edit — change the timing or payload of a pending/recurring schedule
- Set max runs — auto-stop after a set number of executions
Timezone Support
All schedules use your configured timezone. Times are displayed and executed in your local time.
| Plan | Active Schedules |
|---|---|
| Standard | 5 |
| Premium | 15 |
| Enterprise | 50 |
Drafts
Your editor form state is saved automatically so you can come back to it later.
- Auto-save — the form saves as you work
- Draft list — view all your saved drafts with a preview (number of filters, update fields, and project)
- Resume editing — click a draft to load it back into the editor
- Persistent — drafts survive browser refreshes and are stored server-side
- Per-session — each editing session creates its own draft
Running Jobs
When you execute a request, OdinFlow:
- Resolves your JQL query to find all matching issues
- Validates the update payload against your Jira field configuration
- Queues the job for parallel execution
- Applies field changes concurrently, respecting your plan's rate limits
- Reports results in real time as issues are processed
Issue Limits per Job
| Plan | Max Issues per Job |
|---|---|
| Standard | 1,500 |
| Premium | 5,000 |
| Enterprise | 50,000 |
Dry Runs
Run a dry run to preview which issues would be affected — without making any changes. OdinFlow resolves the JQL query and returns the list of matching issue keys, so you can verify your filters before committing.
Job Tracking
Monitor your jobs in real time. Each job shows:
- Status — queued, processing, completed, partial success, failed, or cancelled
- Progress — total issues, processed count, success/failure breakdown, percentage complete
- ETA — estimated time remaining
- Processing phase — what step the job is currently on
- Results — detailed summary of what changed, with per-field success/failure counts
Processing Phases
| Phase | Description |
|---|---|
| Fetching credentials | Retrieving your Jira OAuth tokens |
| Executing JQL | Running your query to find matching issues |
| Processing issues | Applying field updates to issues in parallel |
| Finalizing | Writing results and cleanup |
Job History
View a full history of all your past jobs, including the JQL used, update payload, results, and timing.
Cancellation & Rollback
Cancel a Running Job
Cancel a running or queued job at any time. In-flight requests will complete, but no new issues will be processed.
Rollback a Completed Job
Reverse the changes made by a completed job. OdinFlow creates a new rollback job that restores previous field values.
Metadata Sync
OdinFlow continuously keeps your Jira metadata up to date so the editor always works with current information — projects, fields, statuses, priorities, users, and custom fields.
Sync Frequency
Your Jira metadata (projects, fields, users, schemas) is automatically refreshed in the background. Under normal conditions, data is refreshed approximately every 45 minutes. When many users need refreshes, the system scales up automatically to process the backlog faster.
If webhooks are enabled for your instance, metadata updates happen in near real-time whenever something changes in Jira.
What Gets Synced
- Projects — names, keys, issue types, components, versions
- Fields — all system and custom fields with their allowed values
- Users — assignable users per project, roles, and permissions
- Schemas — issue type workflows and create metadata
Data Collection Profiles
When collecting Jira data, choose the profile that fits your needs:
| Profile | What's Included | Speed | Best For |
|---|---|---|---|
| Minimal | Key, summary, status, assignee, reporter, dates | Fastest | Quick analysis, bulk operations |
| Standard | Essential fields + change history | Balanced | Most common use case |
| Comprehensive | All fields including custom fields and full schemas | Thorough | Complete data export and analysis |
Rate Limiting
OdinFlow automatically configures API rate limits based on your Jira plan:
| Jira Plan | Requests / Minute | Parallel Operations |
|---|---|---|
| Standard | 100 | 10 field updates, 5 archive, 10 transitions |
| Premium | 300 | 20 field updates, 10 archive, 20 transitions |
| Enterprise | 600 | 40 field updates, 20 archive, 40 transitions |
If Jira signals that you're approaching rate limits, OdinFlow automatically steps down to a safer level. Once things stabilize, limits gradually recover. You never need to manage this manually.
Notifications
Admins can broadcast messages to all OdinFlow users — maintenance windows, feature announcements, or important alerts.
- A banner appears at the top of the app when an admin message is active
- Dismiss the banner to acknowledge — it won't reappear for that message
- Only one message is active at a time
| Banner Type | Color | Used For |
|---|---|---|
| Info | Blue | Feature announcements, tips |
| Warning | Orange | Upcoming maintenance, known issues |
| Error | Red | Service disruptions, critical alerts |
| Success | Green | Resolved issues, new releases |
Plans & Quotas
Execution Quotas
Each plan includes a monthly execution quota — the number of Jira issue updates OdinFlow can perform per billing cycle. Quota resets every 30 days from your signup date.
| Plan | Price | Executions / Month | Active Schedules | Max Issues / Job |
|---|---|---|---|---|
| Standard | $19.99/mo | 1,500 | 5 | 1,500 |
| Premium | $39.99/mo | 5,000 | 15 | 5,000 |
| Enterprise | $99.99/mo | 50,000 | 50 | 50,000 |
What Counts as an Execution
Each individual Jira issue updated by a job counts as one execution. For example:
- A job that matches 10 issues and updates them all = 10 executions
- A job that matches 1 issue = 1 execution
- Building a payload, loading fields, viewing history = 0 executions
When You Hit the Limit
If your quota is exhausted, new jobs will be rejected until the quota resets. A clear message will show your remaining quota and when it resets.
Billing
OdinFlow is billed through the Atlassian Marketplace. Optional add-on features (such as increased quotas or additional scheduled event slots) may be introduced in the future and billed separately.
Data & Privacy
| Question | Answer |
|---|---|
| Where is my data stored? | Fly.io infrastructure in the United States (Virginia) |
| What data is collected? | Jira metadata (projects, fields, users) needed to perform operations, plus server access logs for security |
| Do you use analytics? | No third-party analytics. Usage data is collected only for service improvement |
| How long is data retained? | Metadata is kept during your active subscription. Execution logs retained during subscription + 30 days. On uninstall, data enters a 30-day grace period before deletion |
| Can I delete my data? | Contact privacy@deadvikingsoftware.com to request data deletion at any time |
For full details, see our Privacy Policy and Terms of Service.
App Lifecycle
| Event | What Happens |
|---|---|
| Install | Jira plan detected, performance settings configured, OAuth link provided |
| Uninstall | Your data is soft-deleted with a 30-day grace period |
| Disable | App paused, all data preserved for when you re-enable |
| Re-enable / Upgrade | App reactivated, Jira plan re-detected (limits update if plan changed), existing data preserved |
Troubleshooting
| Issue | Solution |
|---|---|
| "Not connected" in OdinFlow | Click "Connect to Jira" to re-authenticate via OAuth |
| Metadata seems stale | OdinFlow auto-refreshes based on your activity. Use the app interface to trigger an immediate refresh if needed |
| Operations running slowly | OdinFlow respects Jira rate limits. Higher Jira plans (Premium, Enterprise) get faster parallel execution |
| App disabled after upgrade | Normal — Atlassian disables and re-enables apps during upgrades. Data and connection are preserved automatically |
| Status transition failed | The target status may not be reachable from the issue's current state due to workflow restrictions |
| Job partially succeeded | Some issues may have different field configurations or workflow restrictions. Check the job detail for per-issue error breakdowns |
Support & Contact
Support Response Times
| Plan | Target Response Time |
|---|---|
| Standard | 5–7 business days |
| Premium | 3–5 business days |
| Enterprise | 1–3 business days |
Response times are targets, not guarantees. Support covers technical issues and billing questions during U.S. business hours (Central Time).
Report a Bug
Submit a bug report directly from the app. Include your name, email, a subject line, a detailed description, and a severity level (low, medium, high, or critical).
Contact Us
- Email: support@deadvikingsoftware.com
- Privacy: privacy@deadvikingsoftware.com
- Security: security@deadvikingsoftware.com
- Website: deadvikingsoftware.com