You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

The  Logical condition of JWT DC is not available in JWT Cloud  but can  be implemented easily using a  Jira expression condition .

Since JWT  field codes  are not available in conditions or validators in JWT Cloud, they have to be replaced by their Jira expression equivalent.

Migration steps

Build a matching   Jira expression  depending on the individual configuration. Since the basic concept of JWT parser expressions is strictly different from Jira expressions, it is not possible to migrate them directly.

The following list provides the necessary basics.

Migration details

Fields

Jira expression Field codes differ from the JWT ones, a list of corresponding field codes can be found in Field codes. They are offered in the field code injector of the parser expression editor of the Jira expression condition. For further details of Jira expression field codes please refer to Atlassian's documentation.

Operators

 JWT DC 

 Jira expression

Notes
===
!=!=
<<
<=<=
>>
>=>=
~.includes()

Example:

issue.summary.includes("issue")
!~!...includes()

Example:

issue.summary.includes("issue")
IN

.every....includes()

Example:

issue?.subtasks?.every(s=>issue?.links?.map(link => link.linkedIssue.key).includes(s.key))
NOT IN ! every....includes()

Example:

!issue?.subtasks?.every(s=>issue?.links?.map(link => link.linkedIssue.key).includes(s.key))
ANY IN.some()....includes()

Example:

issue?.subtasks?.some(s=>issue?.links?.map(link => link.linkedIssue.key).includes(s.key))
NONE IN!....some()....includes()

Example:

!issue?.subtasks?.some(s=>issue?.links?.map(link => link.linkedIssue.key).includes(s.key))

Functions

Jira expression functions are based on the respective data type and are related to JavaScript notion. Details of the available functions can be found in Atlassian's documentation.

Examples

 JWT DC use case

JWT DC parser expression

 Jira expression

Make "Time spent" field required
{issue.timeSpent} > 0
issue?.timeSpent > 0
Block an Epic's transition until all the issues under that Epic are resolved
%{issue.issueType} = "Epic" IMPLIES count(filterByResolution(issuesUnderEpic(), "")) = 0
issue?.issueType?.name == "Epic" ? issue?.stories?.every(s=>s.resolution != null) : true
issue?.isEpic ? issue?.stories?.every(s=>s.resolution!= null) : true
Block a transition until all sub-tasks have certain fields populated
count(filterByPredicate(subtasks(), {function.issue.dueDate} != null)) = count(subtasks())
issue?.subtasks?.every(i=>i.dueDate != null)

Due to the different architecture, it may happen that the condition gets too complex. This is the case when many fields are checked. The condition cannot be saved, and a corresponding error message will be displayed. If that's the case, the condition has to be split up into two or more. 


If you still have questions, feel free to refer to our support team.