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:

PermissionWhat It's Used For
Read Jira user dataIdentify your account and team members
Read Jira work dataAccess projects, issues, fields, and search results
Write Jira work dataPerform bulk operations (field updates, transitions, archiving)
Offline accessKeep 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:

  1. Select a field — choose from a dropdown of all fields in your Jira instance
  2. Select an operator — equals, not equals, in, not in, contains, greater than, less than, etc.
  3. Enter a value — type or select from allowed values (auto-populated from your Jira config)
  4. Add more rows — combine multiple conditions (AND logic)

Example — Find all high-priority open bugs in project PROJ:

Project = PROJ
Issue Type = Bug
Status Done
Priority = High

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.

OperationWhat It DoesUse For
SetReplaces the current valuePriority, Status, Assignee, Summary, single-value fields
AddAppends to the existing listLabels, Components, Fix Versions (array fields)
RemoveRemoves from the existing listLabels, Components, Fix Versions (array fields)
IncreaseAdds to the current numeric valueStory Points, custom number fields
DecreaseSubtracts from the current numeric valueStory 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
Note: Status transitions depend on each issue's workflow. If a transition path doesn't exist for an issue, that issue's transition will fail while other field updates still succeed. Move operations always run last, after all other field updates are applied.

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.

TypeExamplesAvailable Operations
TextSummary, Description, EnvironmentSet value; search with contains/not contains
Single SelectStatus, Priority, Resolution, Issue TypeSet to a value; filter by equals/not equals/in
Multi-Select / ArrayLabels, Components, Fix VersionsAdd, remove, or set entire list
UserAssignee, Reporter, custom user pickersSet to a specific user; filter by user or currentUser()
DateDue Date, Created, UpdatedSet to a date; filter by before/after/range
NumberStory Points, Original EstimateSet, increase, or decrease
SprintAgile Sprint fieldAssign issues to a sprint
Custom FieldsAny custom field in your JiraDepends 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

OperatorDescriptionExample
=EqualsStatus = Done
!=Not equalsPriority != Low
inOne of multiple valuesStatus in (Open, "In Progress")
not inNot one of multiple valuesPriority not in (Low, Lowest)
~Contains textSummary ~ "login bug"
> >= < <=ComparisonCreated >= -7d
is EMPTYField has no valueAssignee is EMPTY
is not EMPTYField has a valueLabels is not EMPTY

Date Shortcuts

When filtering by date fields, you can use Jira's relative date functions:

ShortcutMeaning
-7d7 days ago
-30d30 days ago
+1d1 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:

FrequencyRuns Every
Daily24 hours
Weekly7 days
Bi-weekly14 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.

PlanActive Schedules
Standard5
Premium15
Enterprise50

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:

  1. Resolves your JQL query to find all matching issues
  2. Validates the update payload against your Jira field configuration
  3. Queues the job for parallel execution
  4. Applies field changes concurrently, respecting your plan's rate limits
  5. Reports results in real time as issues are processed

Issue Limits per Job

PlanMax Issues per Job
Standard1,500
Premium5,000
Enterprise50,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.

Tip: Always use a dry run first when testing new JQL queries or working on a large update. It's free — dry runs don't count against your execution quota.

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

PhaseDescription
Fetching credentialsRetrieving your Jira OAuth tokens
Executing JQLRunning your query to find matching issues
Processing issuesApplying field updates to issues in parallel
FinalizingWriting 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.

Note: Status transitions cannot be reliably reversed because Jira workflows may be one-directional. All other field changes (assignments, priorities, labels, etc.) are restored to their pre-job 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:

ProfileWhat's IncludedSpeedBest For
MinimalKey, summary, status, assignee, reporter, datesFastestQuick analysis, bulk operations
StandardEssential fields + change historyBalancedMost common use case
ComprehensiveAll fields including custom fields and full schemasThoroughComplete data export and analysis

Rate Limiting

OdinFlow automatically configures API rate limits based on your Jira plan:

Jira PlanRequests / MinuteParallel Operations
Standard10010 field updates, 5 archive, 10 transitions
Premium30020 field updates, 10 archive, 20 transitions
Enterprise60040 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 TypeColorUsed For
InfoBlueFeature announcements, tips
WarningOrangeUpcoming maintenance, known issues
ErrorRedService disruptions, critical alerts
SuccessGreenResolved 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.

PlanPriceExecutions / MonthActive SchedulesMax Issues / Job
Standard$19.99/mo1,50051,500
Premium$39.99/mo5,000155,000
Enterprise$99.99/mo50,0005050,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

QuestionAnswer
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

EventWhat Happens
InstallJira plan detected, performance settings configured, OAuth link provided
UninstallYour data is soft-deleted with a 30-day grace period
DisableApp paused, all data preserved for when you re-enable
Re-enable / UpgradeApp reactivated, Jira plan re-detected (limits update if plan changed), existing data preserved

Troubleshooting

IssueSolution
"Not connected" in OdinFlowClick "Connect to Jira" to re-authenticate via OAuth
Metadata seems staleOdinFlow auto-refreshes based on your activity. Use the app interface to trigger an immediate refresh if needed
Operations running slowlyOdinFlow respects Jira rate limits. Higher Jira plans (Premium, Enterprise) get faster parallel execution
App disabled after upgradeNormal — Atlassian disables and re-enables apps during upgrades. Data and connection are preserved automatically
Status transition failedThe target status may not be reachable from the issue's current state due to workflow restrictions
Job partially succeededSome issues may have different field configurations or workflow restrictions. Check the job detail for per-issue error breakdowns

Support & Contact

Support Response Times

PlanTarget Response Time
Standard5–7 business days
Premium3–5 business days
Enterprise1–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