Blog

Blog

JWT Release Notes 2.6.0

Direct download from Marketplace  

Improvements

  • The Move issues post function now supports parsed text to be used to determine target project, issue type and status selection.
  • The Move issues post function now shows custom error message on the screen when issues can't be moved due to incompatibility.
  • The expression parser and the field injector now support the Resolution Date.
  • The Send an email post function now supports mixed parsing mode when using personalized mode.

New expressions in the parser

Function Returned Value 
setBoolean(string variable_name, boolean value) : boolean

Creates a variable named variable_name for storing a boolean value, and assigns it a value, which is also returned in order to be used within an expression.

Example: setBoolean("myBoolean",true)

getBoolean(string variable_name) : boolean

Returns the value stored in a boolean variable named variable_name, which was previously created using the setBoolean() function.

Example: getBoolean("myBoolean")

setNumber(string variable_name, number value) : number

Creates a variable named variable_name for storing a number, and assigns it a value, which is also returned in order to be used within an expression.

Example: setNumber("myNumber",100)

getNumber(string variable_name) : number

Returns the value stored in a numeric variable named variable_name, which was previously created using the setNumber() function.

Example: getNumber("myNumber")

setString(string variable_name, string value) : string

Creates a variable named variable_name for storing a string, and assigns it a value, which is also returned in order to be used within an expression.

Example: setString("myString","Hello World!")

getString(string variable_name) : string

Returns the value stored in string variable named variable_name, which was previously created using the setString() function.

Example: getString("myString")

setNumberList(string variable_name, number list value) : number list

Creates a variable named variable_name for storing a number list, and assigns it a value, which is also returned in order to be used within an expression.

Example: setNumberList("myNumberList",[1,2,3])

getNumberList(string variable_name) : number list

Returns the value stored in number list variable named variable_name, which was previously created using the setNumberList() function.

Example: getNumberList("myNumberList")

setStringList(string variable_name, string list value) : string list

Creates a variable named variable_name for storing a string list, and assigns it a value, which is also returned in order to be used within an expression.

Example: setStringList("myStringList",["Hello","World"])

getStringList(string variable_name) : string list

Returns the value stored in string list variable named variable_name, which was previously created using the setStringList() function.

Example: getStringList("myStringList")

setIssueList(string variable_name, issue list value) : issue list

Creates a variable named variable_name for storing an issue list, and assigns it a value, which is also returned in order to be used within an expression.

Example: setIssueList("myIssueList",["KEY-1","KEY-2"])

getIssueList(string variable_name) : issue list

Returns the value stored in issue list variable named variable_name, which was previously created using setIssueList() function.

Example: getIssueList("myIssueList")

weekOfTheYear(number t, number firstDayOfTheWeek, number minimalDaysInFirstWeek, timeZone time_zone ) : number

Returns the week of the year of the date-time t in a certain time_zone. The parameter firstDayOfTheWeek represents the first day of the week, e.g.: {SUNDAY} in the U.S., and {MONDAY} in Germany. The parameter minimalDaysInFirstWeek represents the minimal number of days required in the first week of the year, e.g., if the first week is defined as the one that contains the first day of the first month of the year, value 1 should be used. If the minimal number of days required must be a full week (e.g. all days of the week need to be in that year), value 7 should be used.

Example: weekOfTheYear(2023/01/03, {SUNDAY}, 1, LOCAL) returns 1.

Example: weekOfTheYear(2023/01/03, {MONDAY}, 1, LOCAL) returns 2.

Example: weekOfTheYear(2023/01/03, {MONDAY}, 7, LOCAL) returns 1.

dayOfTheYear(number t, timeZone time_zone) : number

Returns the day of the year of date-time t in a certain time_zone, e.g. for January 1st the value returned will be 1.

Example: dayOfTheYear(2019/02/01, LOCAL) returns 32

timeInValue(string field field, boolean expression predicate) : number

Returns the number of milliseconds a string field with code %{nnnnn} of the current issue has had a value satisfying a boolean expression predicate, where the string value of the field with code %{nnnnn} is represented by ^%.

Example: timeInValue(%{00000}, ^% ~~ "ERROR" OR ^% ~~ "WARNING") returns the number of milliseconds the field summary (field code %{00000}) of the current issue has contained any of the words "ERROR" or "WARNING", ignoring the case.

Example: timeInValue(%{00094}, count(toStringList(^%, ",")) > 1) returns the number of milliseconds the field components (field code %{00094}) of the current issue has contained more than one selected component.

Example: timeInValue(%{00017}, ^% in ["Critical", "High"]) returns the number of milliseconds the field priority (field code %{00017}) of the current issue has had a value of Critical or High.

timeInValue(number field field, boolean expression predicate) : number

Returns the number of milliseconds a number or date-time field with code {nnnnn} of the current issue has had a value satisfying a boolean expression predicate, where the numeric value of the field with code {nnnnn} is represented by ^.

Example: timeInValue({00012}, ^ != null) returns the number of milliseconds the field Due date (field code {00012}) of the current issue has had a value.

Example: timeInValue({10001}, ^ >= 5 AND ^ <= 10) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) of the current issue has remained between 5 and 10.

Example: timeInValue({10001}, modulus(^, 2) = 0) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) of the current issue has had an even value (2, 4, 6,...).

timeInValue(string field field, issue list issues, boolean expression predicate) : number

Returns the sum of milliseconds a string field with code %{nnnnn} has had a value satisfying a boolean expression predicate in distinct issues, where the string value of the field with code %{nnnnn} is represented by ^%.

Example: timeInValue(%{00000}, subtasks(), ^% ~~ "ERROR" OR ^% ~~ "WARNING") returns the sum of milliseconds the summary fields (field code %{00000}) of all subtasks of the current issue have contained any of the words "ERROR" or "WARNING", ignoring the case.

Example: timeInValue(%{00094}, epic(), count(toStringList(^%, ",")) > 1) returns the number of milliseconds the components fields (field code %{00094}) in a linked Epic issue have contained more than one selected component.

Example: timeInValue(%{00017}, filterByIssueType(linkedIssues(), "Bug, New Feature"), ^% in ["Critical", "High"]) returns the sum of milliseconds all linked Bugs and New Features of the current issue have had a priority (field code %{00017}) value of Critical or High.

timeInValue(number field field, issue list issues, boolean expression predicate) : number

Returns the sum of milliseconds a number or date-time field with code {nnnnn} has had a value satisfying a boolean expression predicate in distinct issues, where the numeric value of the field with code {nnnnn} is represented by ^.

Example: timeInValue({00012}, subtasks(), ^ != null) returns the number of milliseconds the field due date (field code {00012}) of all subtasks of the current issue have had a value.

Example: timeInValue({10001}, epic(), ^ >= 5 AND ^ <= 10) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) of an Epic issue has had a value between 5 and 10.

Example: timeInValue({10001}, filterByIssueType(linkedIssues(), "Bug, New Feature"), modulus(^, 2) = 0) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) has had an even value in any linked Bug or New Feature.

timeInValue(string field field, boolean expression predicate, string schedule_name, timeZone time_zone) : number

Returns the number of milliseconds a string field with code %{nnnnn} of the current issue has had a value satisfying a boolean expression predicate, where the string value of the field with code %{nnnnn} is represented by ^%. The time being calculated by this function is only counted during a defined schedule with name schedule_name for time_zone timeZone.

Example: timeInValue(%{00000}, ^% ~~ "ERROR" OR ^% ~~ "WARNING", "my_schedule", LOCAL) returns the number of milliseconds the field summary (field code %{00000}) of the current issue has contained any of the words "ERROR" or "WARNING", ignoring the case, within a schedule named "my_schedule" for the server's default timeZone.

Example: timeInValue(%{00094}, count(toStringList(^%, ",")) > 1, "my_schedule", LOCAL) returns the number of milliseconds the field components (field code %{00094}) of the current issue has contained more than one selected component, within a schedule named "my_schedulefor the server's default timeZone.

Example: timeInValue(%{00017}, ^% in ["Critical", "High"], "my_schedule", LOCAL) returns the number of milliseconds the current issue has had a priority value of Critical or High (field code %{00017}), within a schedule named "my_schedule" for the server's default timeZone.

timeInValue(number field field, boolean expression predicate, string schedule_name, timeZone time_zone) : number

Returns the number of milliseconds of a number or date-time field with code {nnnnn} of the current issue has had a values satisfying a boolean expression predicate, where the numeric value of the field with code {nnnnn} is represented by ^. The time being calculated by this function is only counted during a defined schedule with name schedule_name for time_zone timeZone.

Example: timeInValue({00012}, ^ != null, "my_schedule", LOCAL) returns the number of milliseconds the field Due Date (field code {00012}) of the current issue has had a value, ignoring the case, within a schedule named "my_schedule" for the server's default timeZone.

Example: timeInValue({10001}, ^ >= 5 AND ^ <= 10, "my_schedule", LOCAL) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) of the current issue has had a value between 5 and 10, within a schedule named "my_schedule" for the server's default timeZone.

Example: timeInValue({10001}, modulus(^, 2) = 0, "my_schedule", LOCAL) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) in current issue has had an even value, within a schedule named "my_schedule" for the server's default timeZone.

timeInValue(string field field issue list issues, boolean expression predicate, string schedule_name, timeZone time_zone) : number

Returns the sum of milliseconds a string field with code %{nnnnn} has had a value satisfying a boolean expression predicate in distinct issues, where the value of the field with code %{nnnnn} is represented by ^%. The time being calculated by this function is only counted during a defined schedule with name schedule_name for time_zone timeZone.

Example: timeInValue(%{00000}, subtasks(), ^% ~~ "ERROR" OR ^% ~~ "WARNING", "my_schedule", LOCAL) returns the sum of milliseconds the fields summary (field code %{00000}) of all sub-tasks of the current issue have have contained any of the words "ERROR" or "WARNING", ignoring the case, within a schedule named "my_schedulefor the server's default timeZone.

Example: timeInValue(%{00094}, epic(), count(toStringList(^%, ",")) > 1, "my_schedule", LOCAL) returns the number of milliseconds the field components (field code %{00094}) in the linked Epic issue has contained more than one selected component, within a schedule named "my_schedulefor the server's default timeZone.

Example: timeInValue(%{00017}, filterByIssueType(linkedIssues(), "Bug, New Feature"), ^% in ["Critical", "High"], "my_schedule", LOCAL) returns the sum of milliseconds all linked Bugs and New Features of the current issue have had a priority (field code %{00017}) value of Critical or High, within a schedule named "my_schedulefor the server's default timeZone.

timeInValue(number field field, issue list issues, boolean expression predicate, string schedule_name, timeZone time_zone) : number

Returns the sum of milliseconds number or date-time field with code {nnnnn} has had a value satisfying a boolean expression predicate in distinct issues, where the numeric value of the field with code {nnnnn} is represented by ^. The time being calculated by this function is only counted during a defined schedule with name schedule_name for time_zone timeZone.

Example: timeInValue({00012}, subtasks(), ^ != null, "my_schedule", LOCAL) returns the number of milliseconds the field due date (field code {00012}) of all sub-tasks of the current issue have had a value, within a schedule named "my_schedulefor the server's default timeZone.

Example: timeInValue({10001}, epic(), ^ >= 5 AND ^ <= 10, "my_schedule", LOCAL) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) in the linked Epic issue has had a value between 5 and 10, within a schedule named "my_schedulefor the server's default timeZone.

Example: timeInValue({10001}, filterByIssueType(linkedIssues(), "Bug, New Feature"), modulus(^, 2) = 0, "my_schedule", LOCAL) returns the number of milliseconds a hypothetical numeric field called Passengers (field code {10001}) has had an even value in any linked Bug or New Feature, within a schedule named "my_schedulefor the server's default timeZone.

fieldChangeTimes(string field field, boolean expression predicate) : number list

Returns the timestamps of when a string value of field with code %{nnnnn} has changed satisfying a certain predicate that depends on the values of the field before and after the value change. The string value before the change is represented by ^0%, and after the change by ^1%. The timestamps are returned as a number list sorted in ascending order.

Example: fieldChangeTimes(%{00000}, ^0% !~~ "IMPORTANT" AND ^1% ~~ "IMPORTANT") returns the list of timestamps when word "IMPORTANT" has been added to the current issue's summary (field code %{00000}) ignoring the case.

Example: fieldChangeTimes(%{00017}, ^0% = null AND ^1% != null) returns the list of timestamps of when the issue priority (field code %{00017}) of the current issue has been set.

Example: fieldChangeTimes(%{00017}, ^0% not in ["Critical", "High"] AND ^1% in ["Critical", "High"]) returns the list of timestamps when current issue's priority (field code %{00017}) has become Critical or High.

fieldChangeTimes(number field field, boolean expression predicate) : number list

Returns the timestamps of when a numeric / date-time value of field with code {nnnnn} has changed satisfying a certain predicate that depends on the values of the field before and after the value change. The numeric value before the change is represented by ^0, and after the change by ^1. The timestamps are returned as a number list sorted in ascending order.

Example: fieldChangeTimes({00012}, ^0 < ^1) returns the timestamps of when the Due date (field code {00012}) has been edited to a higher value.

Example: fieldChangeTimes({10001}, abs(^0 - ^1) / ^0 >= 0.25) returns the timestamps of when a hypothetical numeric field called Passengers (field code {10001}) has been edited with a variation of at least 25% over its previous value.

fieldChangeTimes(string field field, issue list issues, boolean expression predicate) : number list

Returns the timestamps of when a string value of fields with code %{nnnnn} in distinct parameter issues have changed satisfying certain predicate that depends on the values of the fields before and after the value change. The string value before the change is represented by ^0%, and after the change by ^1%. The timestamps are returned as a number list containing a sequence of sorted numeric values in ascending order for each parameter issue.

Example: fieldChangeTimes(%{00000}, subtasks(), ^0% !~~ "IMPORTANT" AND ^1% ~~ "IMPORTANT") returns the list of timestamps of when the word "IMPORTANT" has been added the the summary (field code %{00000}) of all current issue's subtasks, ignoring the case.

Example: fieldChangeTimes(%{00017}, epic(), ^0% = null AND ^1% != null) returns the list of timestamps of when the issue priority (field code %{00017}) of the current issue's epic has been set.

Example: fieldChangeTimes(%{00017}, linkedIssues("is blocked by"), ^0% not in ["Critical", "High"] AND ^1% in ["Critical", "High"]) returns the list of timestamps of when the priority (field code %{00017}) in all blocking linked issues has become Critical or High.

fieldChangeTimes(number field field, issue list issues, boolean expression predicate) : number list

Returns the timestamps of when a numeric value of fields with code {nnnnn} in distinct parameter issues have changed satisfying a certain predicate that depends on the values of the fields before and after the value change. The numeric value before the change is represented by ^0, and after the change by ^1. The timestamps are returned as a number list containing a sequence of sorted numeric values in ascending order for each parameter issue.

Example: fieldChangeTimes({00012}, subtasks(), ^0 < ^1) returns the timestamps of when the due date (field code {00012}) has been edited to a higher value in any of the current issue's sub-tasks.

Example: fieldChangeTimes({10001}, epic(), abs(^0 - ^1) / ^0 >= 0.25) returns the timestamps when a hypothetical numeric field called Passengers (field code {10001}) in the current issue's epic has been edited with a variation of at least 25% over its previous value

lastFieldChangeTime(string field field) : number

Returns the timestamp of most recent value update of a field with code %{00000}.

Example: lastFieldChangeTime(%{00000}) returns the timestamp of the last update of an issue's summary (field code {00000}).

unreleasedVersionsBySequence() : string listReturns a string list with the unreleased versions in the current project with the default order. Only non-archived versions are returned. The first version in the list is the lowermost version in the version table.
releasedVersionsBySequence() : string listReturns a string list with the released versions in the current project with the default order. Only non-archived versions are returned. The first version in the list is the lowermost version in the version table.

Bug fixes

  • Using the Move issues post function on individual sub-tasks (without moving the parent) resulting resulted in incompatible parent-child relationships. Moving individual sub-tasks is currently not available(warning)
  • Issues were not correctly moved to newly created Epics.
  • Custom fields could be set to values not available/valid in their respective field context using the Move issues post function.
  • Setting the "Sprint ID" to a value equal or greater than 1000 produced an error.
  • Incorrect error messages were logged when detecting deleted custom fields.


Find more release notes in our Version History section.

JWT Release Notes 2.5.4

Direct download from Marketplace  

Bug fixes

  • While performing the Move issues post function all the custom field values of the moved issue were deleted


Find more release notes in our Version History section.


JWT Release Notes 2.5.3

Direct download from Marketplace  

Bug fixes

  • Create issues and subtasks post function bug when the option inherit rest of the fields was selected


Find more release notes in our Version History section.

JWT Release Notes 2.5.2


Direct download from Marketplace  

Improvements

  • Added support to set the Portfolio Parent Link custom field by using an issue key
  • Added Issue Security Scheme name to the Issue Security Level picker

Bug fixes

  • Some Service Desk Organisations could not be set when there were many deleted organizations 
  • Fixed a bug that affected setting multiple group pickers in all post functions
  • Epic name field returned null in the Compare two parsed texts validator

Find more release notes in our Version History section.

JWT Release Notes 2.5.1

Direct download from Marketplace  

Improvements

  • Group picker performance improvement (now using AJAX search instead of preloading all groups)
  • The position of a post function does no longer affect its functionality except delayed issue transitions

Bug fixes

  • Update issue fields post function: Using the standard type threw an error when updating a single group picker custom field
  • Check project property condition did always return false for empty properties
  • 3rd party integration: Power Custom Fields Premium app support stopped working
  • Security Level through Update issue fields post function caused unreadable issues under certain circumstances
  • Compare text validator did not work with multiline text
  • Some functions related to custom fields were broken after updating to version 2.5.0
  • The function previousValue did not always return the correct value for system fields
  • Condition Transition is triggered by Bulk Operation did not work correctly
  • Previous issue status field was not updated during the transition
  • Editing a field's value in several post functions showed null in the configuration view
  • The field Epic name did return the issue key of the epic instead of the name



Find more Release Notes in our Version History section.

JWT Release Notes 2.5.0

Direct download from Marketplace


This major release ships with a new library that comes bundled with Jira Workflow Toolbox. The xApps Library is used to commonly provide expression parser features for JWT and several upcoming apps.

The first new member of the toolbox family using the library is Automation Toolbox for Jira, which unchains the power of the parser from its current workflow scope. 

Check out the rich set of functions and start automating your daily tasks in Jira today!

New features

  • Move issues on a transition using the Move issues post function
  • Use advanced parsing mode for composing meaningful error messages in all validators
  • Added the xApps Library to use the Jira Workflow Toolbox Expression Parser in several upcoming apps

New expressions in the parser

Function

Returned value

allCommentDates() : number list

Available since version 2.5.0

Returns the dates of related comments as a number list.

allCommentDates(string issue_keys) : number list

Available since version 2.5.0

Returns the dates of related comments from the entered issue_keys as a number list.

Example: allCommentDates(["SW-1", "SW-2"]) returns a list with all the comment dates for issues with the key SW-1 and SW-2.

allCommentDates(issue list issue_list) : number list

Available since version 2.5.0

Returns the dates of related comments in the entered issue_list as a number list.

Example: allCommentDates(issuesFromJQL("project = softwareProject")) returns a list with all the comment dates for all issues in project softwareProject.

projectLeader(string projectKey) : string

Available since version 2.5.0

Returns the project lead of the projectKey.

Example: projectLeader("SW") returns the project lead key from the project with the key SW.

status(number id) : string

Available since version 2.5.0

Returns the name of the status with the id id.

Example: status(1) returns the status name with the id 1.

resolution(number id) : string

Available since version 2.5.0

Returns the name of the resolution with the id id.

Example: resolution(10000) returns the resolution name with the id 10000.

issueType(number id) : string

Available since version 2.5.0

Returns the name of the issue type with the id id.

Example: issueType(10000) returns the issue type name with the id 10000.

option(number id) : string

Available since version 2.5.0

Returns the name of the option with the id id.

Example: option(10000) returns the option name with the id 10000.

priority(number id) : string

Available since version 2.5.0

Returns the name of the priority with the id id.

Example: priority(1) returns the priority name with the id 1.

project(number id) : string

Available since version 2.5.0

Returns the key of the project with the id id.

Example: project(10000) returns the project key of the project with the id 10000.

issueSecurityLevel(number id) : string

Available since version 2.5.0

Returns the name of the issue security level with the id id.

Example: issueSecurityLevel(10000) returns the issue security level name with the id 10000.

invertList(number list l) : number list

Available since version 2.5.0

Returns l in inverted order.

Example: invertList([1, 2, 3]) returns number list [3, 2, 1].

invertList(string list l) : string list

Available since version 2.5.0

Returns l in inverted order.

Example: invertList(["first", "second", "third"]) returns string list ["third", "second", "first"].

Improvements

  • Reference standard objects like issue types, statuses or resolutions by ID, e.g. use status(1) instead of "Open"
  • Use IDs for custom field options, e.g. use option(10001) instead of "Option A"
  • Skip validations for issues being created by email
  • Set the assignee to Automatic when updating fields
  • Mark all values in a multi-valued field as required in the A field is/isn't initialized or has/hasn't been modified validator
  • Use Standard option for fields in the Create issues and sub-tasks post function
  • Parse text for selecting transitions and statuses within the Transition issues post function

Bug fixes

  • When using "IN" operator, options containing commas didn't work
  • The field code injector in the Add a comment post function only displayed user fields
  • The Copy parsed text to a field post function added a user twice as request participant in some circumstances
  • Fixed workflow exception in the Create issues and sub-tasks post function when creating a new issue from a SD issue which contains the Satisfaction field
  • Fixed UI behavior when editing large schedules
  • Fixed error when trying to set the Sprint ID in the Set a field as a function of other fields post function
  • Copying multi-select fields when using the Create issues and sub-tasks post function didn't work properly
  • Fixed parser expression check via REST call for large expressions
  • Field code for available target statuses threw a NullPointerException
  • Using function fieldValue() with Insight Objects custom fields didn't work
  • Selecting a standard option caused the post function view to break and made the configuration unavailable in some circumstances
  • Not all math expressions used to work in the Send an email post function
  • Setting the epic link on Create issues and sub-tasks didn't work
  • Fixed wrong popup window when saving a schedule in Firefox and Internet Explorer
  • Fixed field code injector for several custom field codes
  • Copying mutli-select fields in the Create Issue post function didn't work properly
  • Syntax highlighting didn't work when Insight was enabled
  • Fixed parser check error when using the Sprint field in a calculated field
  • Customer request channel couldn't be resolved in Jira 8


Find more Release Notes in our Version History section.

JWT Release Notes 2.4.12

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.11


This is the last version compatible with Jira 6.3 - 7.2.15

Direct download from Marketplace  

Bug fixes

  • Issue creation under an epic, triggered by the epic itself, produced a deadlock because of the epic's change history entry which could not be created.
  • When converting from string to number, the exponent 10 got cut off. Bug resurfaced in version 2.4.10.
  • Daylight Saving Time changes at 00:00 AM negatively impacted several time-related functions.

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.10


Direct download from Marketplace  

Bug fixes

  • Calculated fields had been removed from the index in version 2.4.9 to prevent problems related to functions that require the index while the index is unavailable. Now the calculated fields are only removed from the index if functions are being used that require the index. e.g the function issuesFromJQL()
  • The isJwtTriggeredTransition() function did not respect the issue creation when triggered by Jira Workflow Toolbox itself
  • Fix in Ephemeral fields to prevent a NullPointer exception caused by empty objects generated by the Expression Parser Test page

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.9


ATTENTION

This version has been removed from the Atlassian Marketplace due to major problems with calculated fields

New features

  • Parser function: projectKey(string project_name) Returns a string with the project key from the project with the project_name.

Improvements

  • Show 250 fields in field code injectors (instead of 50)
  • Syntax highlighting works when Insight is installed
  • Add a comment post function, author field is now limited to user picker fields
  • Documentation added to the parser test page and improved formatting of the parser results
  • Documentation improvements for some functions

Bug fixes

  • Fixed NullPointer in function projectCategory()
  • Workaround to prevent Lexorank Deadlock during the creation of several issues in one post function
  • Removed JWT calculated field values during index operations due to major problems while calculating index dependent function while the index is not available, JWT calculated fields are no longer searchable
  • Fixed problem setting Insight object fields
  • Fixed data access problem in the set or update a project property function
  • Fixed bug in Field is initialized validator when has changed  / has not changed options were selected


Find more Release Notes in our Version History section.

JWT Release Notes 2.4.8

Direct download from Marketplace  

New features

  • Target issue selection in Log work post function
  • Parser rendering language can now be changed, the default setting is the Jira indexing language.

New expressions in the parser

Function prototypeReturned value
attachmentUrls() : string list
Available since version 2.4.8
Returns a string list with the URL of attachments of current issue.
attachmentUrls(issue list issue_list) : string list
Available since version 2.4.8
Returns a string list with the URL of attachments of issues in issue_list.
attachmentUrls(string list attachments_regexp) : string list
Available since version 2.4.8
Returns a string list with the URL of attachments of the current issue with names matching a regexp in attachments_regexp.
attachmentUrls(issue list issue_list, string list attachments_regexp) : string list
Available since version 2.4.8
Returns a string list with the URL of attachments of issues in issue_list with names matching a regexp in attachments_regexp.

 Bug fixes

  • Transition issues post function view was broken after renaming the target workflow.
  • Validation error messages now show up correctly at the selected field on the "Create issue" screen.
  • Function projectCategory() now returns the project category instead of null.
  • The transition of linked issues is now working without a selected Issue Link Filter in the Transition issues post function.
  • Clear field value option is now working for the Watchers field.
  • {Date and Time of resolution} now returns the correct date even if the issue history has no entry for issue resolution date.
  • Changing a value for a selected field in the fields to update section did not show up in the configuration of the Create issues and subtasks post function.
  • Setting epic link did not create the change history entry in the epic and threw an error in the log.
  • Converting from string to number bug, the exponent 10 got cut off

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.7

This is the first Atlassian approved data center compatible version of Jira Workflow Toolbox

Direct download from Marketplace


Improvements

  • Reading new Insight custom field objects now returns a combination of the name and the key of insight objects. Examples: Main Server (SFT-243), Test Environment (CRM-21).
  • Writing the new insight custom fields has been improved: the name, the key or a combination of name and key of insight objects are now accepted when setting insight fields. Examples:  "Main Server", "SFT-243" or "Main Server (SFT-243)" are the 3 valid ways of setting an Insight field with a same object.

Bug fixes

  • JWT calculated number and date-time fields returned error instead of null for issues not in the fields context.
  • Option Picker did not return Options with a corrupt database.
  • JWT now prevents creating Issue Links between an issue and itself.
  • Fixed several functions to work on the parser test page.

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.6

Insight Custom Fields introduced in Insight version 5.4 are now supported to be written with JWT post functions

Direct download from Marketplace

Improvements

Bug fixes

  • Numeric field code injectors don't show any the following field types: DateDate-Time and Priority.
  • Field code injectors in calculated fields are showing unwanted field codes associated to transition executions (eg. Transition's comment).
  • We removed one of the examples of custom display format for Numeric Calculated Fields which was wrong.
  • Cascading select comparer throws an error when an empty configuration of it is saved.
  • Format field value post-function was interpreting the replacement string parameter as a regular expression instead of a string literal.
  • Parameter replacement at parser functions replaceFirst(string, regex, replacement) and replaceAll(string, regex, replacement) was being interpreted as a regex instead of a string literal.

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.5

[2018-06-29] Released Jira Workflow Toolbox 2.4.5

Direct download from Marketplace

Bug fixes

  • Certain post functions are either not displaying correctly or are not editable after adding them initially. 

  • Affected post functions:

    • Add or disable option in Cascading Select field

    • Add or disable option in Select List, Radio Button, Multi-Select List or Checkbox field

    • Copy or add custom field value to issue description

    • Log work

    • Parse field for extracting data

    • Set or create a user property

    • Copy Cascading Select field

    • Cascading select comparer

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.4

[2018-06-21] Released Jira Workflow Toolbox 2.4.4

Direct download from Marketplace

New features

  • New Parser function: timeInStatus() - easily identify how much time issues spend in a specific status. The function comes with four distinct configuration options to meet your specific needs. If used in a calculated field you might want to try to format the output as a duration as opposed to a number to improve readability.


timeInStatus(string status_name) : number
Available since version 2.4.4

Returns the number of milliseconds the current issue has remained in a status with name status_name. If an issue has been in that status more than once, then duration will be summed up and the total time spent in the status will be returned.

Example: timeInStatus("Open") returns the number of milliseconds the current issue has stayed in status "Open".

In order to display this value in a more readable way, the milliseconds should be transformed into a more readable unit, like in the following example:

timeInStatus("Open") / {DAY} - for number of days, or timeInStatus("Open") / {HOUR} - for number of hours

timeInStatus(string status_name, string schedule_name, timeZone time_zone) : number
Available since version 2.4.4

Returns the number of milliseconds the current issue has remained in a status with name status_namewithin a schedule named schedule_name for a given time_zone timeZone. If an issue has been in that status more than once, then duration will be summed up and the total time spent in the status will be returned.

Example: timeInStatus("Open", "my_schedule", LOCAL) returns the number of milliseconds the current issue has stayed in status "Open" within the schedule called "my_schedule" matching the server's default timeZone.

timeInStatus(string status_name, issue list issues) : number
Available since version 2.4.4

Returns the sum of milliseconds issues in an issue list issues have remained in a status with namestatus_name. If an issue from that list has been in that status more than once, then duration will be summed up and the total time spent in the status will be returned.

Example: timeInStatus("Open", subtasks()) returns the number of milliseconds the current issue's sub-tasks have stayed in status "Open".

timeInStatus(string status_name, issue list issues, string schedule_name, timeZone time_zone) : number
Available since version 2.4.4

Returns the sum of milliseconds issues in an issue list issues have remained in a status with namestatus_name within a schedule named schedule_name for a given time_zone timeZone. If an issue from that list has been in that status more than once, then duration will be summed up and the total time spent in the status will be returned.

Example: timeInStatus("Open", subtasks(), "my_schedule", LOCAL) returns the number of milliseconds the current issue's sub-tasks have stayed in status "Open" within the schedule called "my_schedule" matching the server's default timeZone.



Check out the official documentation for more details.

Bug fixes

  • Configuration parameter "Evaluate all the setting rules" on "Set a field as a function of other fields" post function is disabled on "Ephemeral string" fields
  • "linkedIssues()" parser function stopped working properly in version 2.4.3
  • "Create issues and sub-tasks" post function is not correctly setting the components in other projects


Find more Release Notes in our Version History section.