We’ve been working on a more flexible way to build conditions using Jira Expressions, and that led to Ultimate Validator. It lets you use most of the power of Jira Expressions—but without writing code. Instead, you build conditions through a simple UI.
Key Benefits
For most workflow scenarios, we recommend using the Ultimate Validator, which lets you build highly advanced workflow conditions without writing a single line of code. Its visual, no-code interface simplifies the creation of complex rules, while still providing full flexibility to define custom logic. With the Ultimate Validator, you can construct conditions quickly and safely, making it ideal for admins who want powerful workflows without learning Jira expression syntax.
Key Features of the Ultimate Validator Visual Builder:
Join conditions with AND / OR logic – Combine multiple rules into a single condition
Conditional expressions with WHEN / THEN logic – Build rules that are validated only under specific circumstances
Access any issue field and inner properties – Use all Jira data available for precise conditions
Operate on lists – Apply logic to multi-valued fields efficiently
Compare values – Compare against static values or other fields
ADF text support – Work directly with rich text fields in Jira’s ADF format
How Ultimate Validator Works
After selecting a source—such as a field or the current user—a list of operations appears. Each operator leads to the next until you reach a terminal operator that requires a value. The Jira expression preview is generated in real time, so you always know exactly how your condition works—no more guesswork.
Here’s what it looks like:
Validate that all attachments have a .pdf file extension using string operators in Ultimate Validator.
Common Use Cases
Here are some common scenarios where the Ultimate Validator simplifies complex conditions.
Conditionally require mandatory fields based on other field values
Jira’s built-in Field Required validator doesn’t allow conditions—you either require a field for every transition or not at all. But often, you need a field to be required only when certain conditions are met.
With Jira Expressions, this is possible. For example, if you want the Root Cause field to be required only when Resolution is set to Fixed, you could write:
Alternatively, you can achieve the same result using the || (OR) operator. In this case, you'd need to invert the condition: allow the transition when the resolution is not 'Fixed', or require the "Root Cause" field otherwise:
Ultimate Validator lets you set this up easily through the UI, with no need to write code.
Use OR logic in Ultimate Validator to conditionally require mandatory fields based on other field values.
Handling Rich Text Fields in Jira Expressions
If you're concerned about the recent changes in the multi-text field format during Issue Transition, don't worry—the plainTextValue helper automatically handles the different formats for you.
There are a few key points to keep in mind when writing Jira Expressions manually. First, almost every field can be null, so you typically need to check for null before performing operations—otherwise, you may encounter a Syntax Error during execution.
Counting characters in Short Text fields is straightforward, but Rich Text (Paragraphs) can be tricky. Most rich text fields are stored as ADF (Atlassian Document Format) objects, meaning they need to be converted using new RichText(value) to access the .plainText property. However, some fields—like Description or Environment—are exceptions, as they are already converted when used in expressions.
Ultimate Validator takes care of these complexities, ensuring that your validation works correctly without requiring manual adjustments.
Limit the maximum paragraph length in Rich Text fields using the length and less than operators in Ultimate Validator.
Counting Items in Multi-Select Fields
With the Count operator, you can validate how many items have been added or selected in multi-value fields, such as:
The number of attachments on an issue.
Whether only one option is selected in a multi-select field.
Ensuring a required number of checkboxes are selected.
Requiring a minimum number of Versions, Components, or Labels.
Enforce a required number of attachments or selected checkboxes using the count operator in Ultimate Validator.
Validating Child and Linked Issues
Jira Expressions allow you to check relationships between issues. The key properties are:
subtasks → Returns an issue’s sub-tasks.
stories → Returns an Epic’s child issues (excluding sub-tasks).
childIssues → Returns both child issues and sub-tasks.
You can also test issue links (e.g., “blocked by”) and parent issues. However, for linked issues validation, we recommend using the dedicated Linked Issues Condition & Validator.
Ensure Time Is Logged on an Issue or Its Sub-Tasks
To prevent issues from progressing without logged work, you may want to require that time is recorded either on the issue itself or one of its sub-tasks.
Validate that time is logged on the issue or any sub-task using a simple OR rule in Ultimate Validator.
Ensure Child Issues Are Closed Before Transitioning the Parent
When requiring all child issues to be closed before the parent moves to a completed status, it's best to use status categories rather than individual status names. Jira has three status categories:
Category name
Category key
Category id
To Do
new
2
In Progress
indeterminate
4
Done
done
3
With Ultimate Validator, you don’t need to deal with categories IDs or keys—just pick the right option from the dropdown.
Ensure all child issues are completed before transitioning the parent by checking status category in Ultimate Validator.
Properly Validating Cascading Select Fields
The built-in Field Required validator only checks if the parent option is selected—it doesn’t check the child option. This means a transition can still go through even if the child selection is missing, which isn’t always the expected behavior.
This is a known issue (JSDCLOUD-6199), but Ultimate Validator provides a child option operator, allowing you to ensure that the child option is always selected.
Ensure both parent and child options are selected in a cascading select field using Ultimate Validator.
Checking if an Issue is in an Active Sprint
You can check various sprint properties in Jira Expressions, such as start date, end date, completion date, and state.
To check if an issue is in the current sprint, validate the sprint state:
"active" → Sprint is in progress.
"future" → Sprint is planned but not started.
"closed" → Sprint has ended.
With Ultimate Validator, you can easily enforce sprint-based conditions without needing custom expressions.
Ensure both parent and child options are selected in a cascading select field using Ultimate Validator.
Ensuring an Issue Is Not Associated with Released Versions
With Ultimate Validator, you can test system fields like Affects Versions, Fix Versions, or custom version pickers—not just by version name, but also by version properties such as description, start and release dates, and states like archived or released.
Prevent issue transitions if any selected fix version is already released using Ultimate Validator.
Tip: If the version field can be empty, include a clause to allow empty values; otherwise, start directly with the check for released versions.