Conditional execution

To add a condition to control the execution of the post-function : 

  1. Select the check box Run this post-function only if a condition is verified.

  2. Type a Nunjucks template that returns either true or false.

Expected value in the Nunjucks template

The value should be either a boolean value (true or false) or more generally any text that will be interpreted as either "truthy" or "falsy".

Text: Any text will be interpreted as "truthy" (the equivalent of trueexcept false, an empty string, a string consisting only of whitespaces. For example, the following text will be considered as "truthy":

  • true

  • 1

  • A string

  • [Object object]

  • []

Boolean logic operators: You can use traditional boolean logic operators, such as orand and not, to combine conditions. You can also use parentheses to group expressions. For example:

  • {{ 1 == 1 or 1==2 }}

  • {{ issue.key == 'TEST-1' and issue.fields.subject == 'Do it' }}

  • {{ true and (false or true) }}

  • {{ not 1==1 }}

  • {{ issue.fields.description is null }} returns true if the issue has no description

  • {{ issue.fields.assignee is not null }} returns true if the issue has an Assignee

Examples of Nunjucks expressions returning a "truthy" value:

  • {{issue.fields.assignee}} if the issue is assigned

  • {{issue.fields.assignee.accountId == "accountId:557058:8952dfd1-85c4-493f-87d8-d383b987e05c"}} if the issue is assigned to the user whose accountId is "557058:8952dfd1-85c4-493f-87d8-d383b987e05c"

  • {{issue.fields.description is not null}} if the issue's description is not empty

  • {{issue.fields.assignee and issue.fields.status.name == "In Progress"}} if the issue is assigned and in the “In Progress” status

Sample use cases for Conditional execution

 A tester creates an issue. The created issue should be automatically assigned to the Product Owner, only if the issue is a BUG.

  • Create a Product Owner project role, with the product owner as the only member.

  • Add the Assign to role member post-function to the Create transition of the issue workflow.

  • Select Product Owner as the project role.

  • Select the check box Run this post-function only if a condition is verified.

  • Type the following code in Condition.

    1 {{ issue.fields.issuetype.name == "Bug" }}

 Automatically escalate an issue if it is being raised with a "Blocker" priority.

  • Add the Transition issue post-function to the Create transition of the issue's workflow.

  • Input the transition name or ID of the transition that escalates the issue.

  • Select the check box Run this post-function only if a condition is verified.

  • Write the following content in the Condition section.

    1 {{ issue.fields.priority == "Blocker" }}

     

  • Place this post-function at the end in the list of post-functions.

 Automatically transition the Epic when all Stories are resolved.

  • Add the Transition current issue post-function to the Resolve transition of the Story workflow.

  • Input the transition name or ID of the Resolve transition.

  • Select the check box Run this post-function only if a condition is verified.

  • Write the following content in the Condition section.

    1 2 3 4 5 6 7 8 {% set stories = issue | epic | stories %} {% set trigger = true %} {% for story in stories %} {% if story.fields.status.name != "Resolved" %} {% set trigger = false %} {% endif %} {% endfor %} {{ trigger }}

     

  • Place this post-function at the end in the list of post-functions.

 Copy value from a Single Version Picker select list to the Fix Version(s) field if the resolution provided while closing the issue is "Fixed".

  • Add the Copy value from field to field post-function to the Close transition of the issue's workflow.

  • Select the Single version picker in the From field.

  • Select the Fix Version/s in the To field.

  • Select the check box Run this post-function only if a condition is verified.

  • Write the following content in the Condition section.

    1 {{ issue.fields.resolution.name == "Fixed" }}

 Assign a Bug to a Product Manager only when its priority is Critical

  • Add the Assign to role member post-function to the transition of the issue's workflow.

  • Select Product Managers as the Project Role.

  • Select Conditional execution and write the following condition:

    1 {{ issue.fields.issuetype.name == "Bug" and issue.fields.priority.name == "Critical" }}

 Transition an issue to In Progress status when the issue is either of High priority or the reporter of the issue belongs to Service Desk Customers Project role

  • Add the Transition issue post-function to the Create transition of the issue's workflow.

  • Select Start Progress as the transition to be triggered.

  • Select Conditional execution and write the following condition:

    1 {{ issue.fields.priority.name == "High" or issue.fields.priority.name == "Highest" or issue.fields.reporter | isInRole("Service Desk Customers")}}
  • Add the Link issues to current issue post-function to the transition of the issue's workflow.

  • Input the JQL expression as:

    1 project = "BACKEND"
  • Select the “Filter Expression” and input the following condition

    1 {{ now | date("diff", targetIssue.fields.created, "days") <=5 }}