🚀 Effective since April 2020 and JWT version 2.9.0 Automation Toolbox for Jira is fully integrated into our top rated app Jira Workflow Toolbox (JWT)🚀

Text Composition and Format


ExpressionExample of returned value
"Current issue was reported on " + %{...created} + " by " + %{...reporterUserFullName} + "."Current issue was reported on 2014-09-03 19:28 by John Nash.
"Today is " + dayOfTheWeekToString({...currentDateTime}, USER_LOCAL, USER_LANG) + "."Today is Monday.
"Number of hours since issue creation: " + round(({...currentDateTime} - {...created}) / {HOUR}) + " hours."Number of hours since issue creation: 75 hours.
"Number of days to due date: " + floor(({...duedate} - {...currentDateTime}) / {DAY}) + " days."Number of days to due date: 2 days.

Issue Selection


ExpressionExample of returned value
filterByFieldValue(subtasks(), %{...components}, ~ , "Component A")

or alternatively

filterByPredicate(subtasks(), %{...components} ~ "Component A")
Returns an issue list with sub-tasks having "Component A" among its components.
except(subtasks(%{...parentIssueKey}), issueKeysToIssueList(%{...issuekey}))

or alternatively

filterByPredicate(subtasks(%{...parentIssueKey}), ^%{...issuekey} != %{...issuekey})
Returns an issue list with sibling sub-tasks, i.e., parent's sub-tasks except current issue.
filterByFieldValue(filterByIssueType(getIssuesFromProjects(%{...project}), %{...issuetype}), %{...summary}, =, %{...summary})

or alternatively

filterByPredicate(getIssuesFromProjects(%{...project}), ^%{...issuetype} = %{...issuetype} AND ^%{...summary} = %{...summary})

Returns an issue list with all issues in the same project as current issue, with same issue type and same summary.

Might be used in combination with function count() for creating a validation to avoid issue creation when an issue with same summary already exists in the project and issue type.

Working with Fields in Linked Issues and Sub-tasks



ExpressionExample of returned value
filterByCardinality(fieldValue(%{...components}, subtasks()), =, count(subtasks()))["Component A", "Component B", "Component C"]
Returns a string list with the Components present in all sub-tasks of current issue, i.e., those components common to all sub-tasks.
{...duedate} > max(fieldValue({...duedate}, union(linkedIssues("is blocked by"), subtasks())))Validation to check that: Due Date is greater than latest Due Date among blocking issues and sub-tasks.
count(filterByFieldValue(subtasks(), %{...environment}, =, "") UNION filterByFieldValue(subtasks(), %{...duedate}, =, "")) = 0

or alternatively

count(filterByPredicate(subtasks(), ^%{...environment} = null OR ^%{...duedate} = null)) = 0
Expression for checking whether all sub-tasks of current issue have fields Due date and Environment set.
count(filterByPredicate(linkedIssues("is Epic of"), ^%{...resolution} != null OR ^{...duedate} = null)) = 0This validation allows certain transition in Epic's workflow to be executed, only if all the tasks are unresolved and have Due Date set.

Logical Constructions


ExpressionExample of returned value
!(%{...priority} = "Blocker" OR %{...priority} = "Critical") OR {...duedate} != nullValidation for checking that: If Priority is "Blocker" or "Critical" then Due Date must be initialized.
It is based on equivalent logical constructions: A implies B = !A OR B
%{...priority} = "Blocker" OR %{...priority} = "Critical" IMPLIES {...duedate} != nullValidation for checking that: If Priority is "Blocker" or "Critical" then Due Date must be initialized.
Same as former example but using logical connective IMPLIES.
{...duedate} = null OR {...duedate} >= ({...created} + 2 * {DAY})Validation for checking: If Due Date is set then it must be equal or grater than Day and Time of Creation plus 2 days.


On this page