Blog

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.


JWT Release Notes 2.4.3

[2018-16-13] Released Jira Workflow Toolbox 2.4.3

Direct download from Marketplace

Bug fix

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.2

[2018-06-11] Released Jira Workflow Toolbox 2.4.2

Direct download from Marketplace

This major release replaces version 2.4.1 which introduced a bug in the Send an email post function.

New Features

  • The email's priority and BCC recipients can now be configured in the "Send an email" post function.
  • Specify the location of the "Message to show when validation fails". The message can be shown next to any field or at the top of the transition screen.
  • Insight custom fields are now supported up to version 5.4. New custom fields will be supported in upcoming releases.
  • The "Update issue fields" post function now supports the Portfolio Team field.
  • You can now update Service Desk specific fields through JWT post functions:
    • Customer Request Type
    • Organizations
    • Customer Request Channel

Improvements

  • Major Javascript performance improvements

Bug fixes

  • Calculated fields occasionally prevent the execution of built-in issue actions (e.g. move/delete issues).
  • Parent's Virtual fields cannot be set using "Update issue fields" post function in standard mode.

Find more Release Notes in our Version History section.


JWT Release Notes 2.4.1

[2018-06-07] Released Jira Workflow Toolbox 2.4.1

This version has been replaced with version 2.4.2, because it introduced a bug in the Send an email post function.

New Features

  • Both an email's priority and the BCC recipients can now be configured in the Send an email post function.
  • Specify the location of the "Message to show when validation fails". The message can be shown next to any field or at the top of the transition screen.
  • Insight custom fields are now supported up to version 5.4. New Insight custom fields will be supported in the upcoming release.
  • The "Update issue fields" post function now supports the Portfolio Team field.
  • You can now update Service Desk specific fields through JWT post functions:
    • Customer Request Type
    • Organizations
    • Customer Request Channel

Improvements

  • Javascript performance has been improved for all JWT functions.

Bug fixes

  • Exceptions thrown by calculated fields occasionally prevent the execution of built-in issue actions (e.g. move issue, delete issue).
  • Parent's Virtual fields couldn't be set using Update issue fields post function in standard mode.

Find more Release Notes in our Version History section.

JWT Release Notes 2.4.0

Direct download from Marketplace

New features

  • New post function: "Update issue fields" (formerly known as Write fields on issues returned by JQL query or issue list)
    • New target issue selection options: Current Issue, Parent Issue, Linked Epic, and many more)
    • Simple selection of target field values: (Single Select, Multi Select, Priorities, Resolutions, Components, ...)
    • Easily purge field values with the new built-in "Clear field value" option
  • Expression Parser Test page
    • A completely new page in the administration interface to evaluate parser expressions - test against existing issues in real time without any risk
    • Supports basicmixedadvanceddate/time/number und logical mode
    • Write and test your expressions including syntax highlighting and syntax check
  • New Parser Functions:
    • dateTimeToString(number t, string date_time_pattern , timeZone time_zone, language) : string
    • htmlToTxt(string s) : string
    • projectKeys() : string list
    • projectKeys(string category) : string list
    • projectName(string project_key) : string
    • projectCategory(string project_key) : string

Details can be found here: Expression Parser's documentation page.

Improvements

    • Create multiple issues with various issue types in a single post function
    • Dynamically inherit the issue type from the issue firing the transition 
    • Create both standard and sub-task issue types
  • New parameter "timezone" added to Display Format configuration of Calculated Date-Time fields.

Bug fixes

  • Functions addTimeSkippingWeekends(), addTimeSkippingWeekends(), addDaysSkippingWeekends(), addDaysSkippingWeekends(), subtractDatesSkippingWeekends() and subtractDatesSkippingWeekends() return inaccurate results under certain circumstances. All functions were completely rewritten using "SDG".
  • Functions dateToString() and dateTimeToString() ignore input parameter timezone.
  • TransitionOptions did not work in delayed transitions

Find more Release Notes in our Version History section.

JWT Release Notes 2.3.4

[2018-04-05] Released Jira Workflow Toolbox 2.3.4

In version 2.3.3 issues stopped to be immediately updated after each field writing. This modification of the historical behavior of JWT has caused not few problems in some workflows configured with previous versions of JWT. In this new version of JWT (2.3.4) we are adding a checkbox parameter for optionally updating the issue after a field writing. This parameter is by default checked in old post function configurations, thus we keep the historical behavior of JWT and avoid back-compatibility issues.

Improvements

Bug fixes

Find more Release Notes in our Version History section.

JWT Release Notes 2.3.3

[2018-03-20] Released JIRA Workflow Toolbox 2.3.3

New features

  • New parser functions
FunctionReturned value
dateTime(number year, number month, number dayOfMonth, number hourOfDay, number minute, timeZone time_zone) : numberThis function is used for obtaining a date-time literal value from a set of numeric values representing a date-time timestamp.
Example: dateTime(2018, 03, 25, 23, 15, LOCAL) returns 2018/03/25 23:15.
daysInTheMonth(number t, timeZone time_zone) : numberReturns the number of days in the month of timestamp t in timezone time_zone.
Example: daysInTheMonth(2016/02/28 00:00, LOCAL) returns 29, taking into account that 2016 is a leap year.
lastDayOfTheMonth(number t, timeZonetime_zone) : numberReturns the timestamp for the last day of the month of timestamp t in timezone time_zone. The timestamp returned is at 00:00, i.e., just the beginning of the day.
Example: lastDayOfTheMonth(2017/02/05 11:31, LOCAL) returns 2017/02/28 00:00.
nextDayOfTheWeek(number t, number dayOfWeek, timeZone time_zone) : numberReturns the timestamp for the next day of the week represented by dayOfWeek since timestamp t in timezone time_zone. The timestamp returned is at 00:00, i.e., just the beginning of the day.
Example: nextDayOfTheWeek(2018/03/01 12:31, {SUNDAY}, LOCAL) returns 2018/03/04 00:00, taking into account that 2018/03/01 is Thursday.
Example: nextDayOfTheWeek(2018/03/01 12:31, {THURSDAY}, LOCAL) returns 2018/03/08 00:00.
timeLogged(issue list issues) : numberReturns the sum of all the time logged in issues in milliseconds.
Example: timeLogged(subtasks()) returns the sum of time logged in current issue's sub-tasks in milliseconds.
timeLogged(issue list issues, number datetime_ini, number datetime_end) : numberReturns the sum of all the time logged in issues in time interval defined by timestamps datetime_ini and datetime_end. If one or both parameters datetime_ini and datetime_end are null, then it's assumed that the time period hasn't low or high time limit respectively. Logged time is returned in milliseconds.
Example: timeLogged(issuesUnderEpic(), datePart({00057}, LOCAL), addDays(datePart({00057}, LOCAL), 1, LOCAL)) returns the sum of time logged today in issues under current issue's Epic. Note that {00057} is field code for Current date and time.
timeLogged(issue list issues, string user) : numberReturns all the time logged in issues by user with username user. Logged time is returned in milliseconds. Argument user can contain a single user name (not be confused with user's full name), or a comma separated list of usernames, group names or project role names.
Example: timeLogged(linkedIssues(), %{00003}) returns the sum of time logged by the assignee on linked issues. Note that %{00003} is field code for Assignee.
timeLogged(issue list issues, number datetime_ini, number datetime_end, string user) : numberReturns the sum of all the time logged in issues by user in time interval defined by timestamps datetime_ini and datetime_end. If one or both parameters datetime_ini and datetime_end are null, then it's assumed that the time interval hasn't low or high time limit respectively. Logged time is returned in milliseconds. Argument user can contain a single username (not be confused with user's full name), or a comma separated list of usernames, group names or project role names.
Example: timeLogged(subtasks(), 2018/01/01, 2019/01/01, %{00003}) returns the sum of time logged by the assignee on subtasks during 2018. Note that %{00003} is field code for Assignee.

Improvements

  • Maximum delay for delayed transition execution now is 60 s, instead of 30 s.

Bug fixes

  • Each field update done by JWT post-functions appeared in issue history separately. Since 2.3.3 all the updates are shown in one unique register per issue transition, showing all field updates done by all the post-functions executed in the transition.
  • Issue #264 - Fixed bug with on functions datePart() and timePart() when used on the days where DST transition happens.
  • Changed behavior of function addMonths() so that when adding 1 month to 30th April we will obtain 30th May instead of 31st May (which was the behavior up to version 2.3.2).
  • Error in the way setting rules were rendered by "Syntax Check" button mainly on post-function Set a field as a function of other fields and also on some other features.
  • Parser functions that admits a comma separated list of usernames didn't filter duplicated values. In this version we implement a filter to avoid duplications.
  • When using JWT post-functions for setting fields in "Create Issue" transition in JSD, emails were not being sent to approvers.

Find more Release Notes in our Version History section.

JWT Release Notes 2.3.2

[2018-02-21] Released Jira Workflow Toolbox 2.3.2

Bug fixes

Find more Release Notes in our Version History section.

JWT Release Notes 2.3.1

[2018-02-09] Released Jira Workflow Toolbox 2.3.1

Improvements

Bug fixes

Find more Release Notes in our Version History section.

JWT Release Notes 2.3.0

[2017-01-31] Released Jira Workflow Toolbox 2.3.0

New features

  • Added new post-function Transition issues, which can be used as an alternative to classic issue transitioning method based on writing on virtual fields Issue statusIssue status (delayed writing)Execute transition and Execute transition (delayed execution).
  • New parser functions:
FunctionReturned value
epic() : issue listReturns an issue list containing current issue's epic, in case current issue is directly under an epic (e.g., a Story). If current issue is a sub-task, then the epic of its parent issue is returned. If current issue is an epic itself, then current issue is returned.
epic(issue list issues) : issue listReturns the list of epic issues under which those issues in argument issues are. If some of those issues are sub-tasks, then the epic of their parent is returned. Duplicated issues in argument issues are discarded. Output can contain duplicated issues.
Example: epic(linkedIssues("is blocked by")) returns the list of epics of those issues which are blocking current issue.
epic(string issue_keys) : issue listReturns the list of epic issues under which those issues with keys in issue_keys are. If some of those issues are sub-tasks, the epic of their parent is returned. Argument issue_keys is a comma separated list of issue keys. Duplicated issue keys in argument issue_keys are discarded. Output can contain duplicated issues.
Example: epic("CRM-15, HD-21") returns the list of epics under which issues with keys CRM-15 and HD-21 are.
issuesUnderEpic() : issue listReturns an issue list containing issues which are directly under current issue's epic (i.e., stories are included in the output, but their sub-tasks are not). Current issue's epic is obtained using the logic of function epic(). Current issue is included in the output, except if current issue is an epic itself.
issuesUnderEpic(issue list issues) : issue listReturns an issue list containing issues which are directly under the epic of issues in argument issues. Duplicated issues are filtered from output.
Example: issuesUnderEpic(linkedIssues("is blocked by")) returns the list of issues directly under epics of issues blocking current issue.
issuesUnderEpic(string issue_keys) : issue listReturns an issue list containing issues which are directly under the epic of issues with keys in argument issue_keys. Argument issue_keys is a comma separated list of issue keys. Duplicated issues are filtered from output.
Example: issuesUnderEpic("CRM-15, HD-21") returns the list of issues directly under epic of issues with keys CRM-15 and HD-21.
siblingIssuesUnderEpic() : issue listReturns an issue list containing issues which are directly under epic of current issue (i.e., Stories are included in the output, but their sub-tasks are not), excluding current issue. Current issue should be an issue directly under an epic, (i.e., it can't be a sub-task or an epic).
siblingIssuesUnderEpic(issue list issues) : issue listReturns an issue list containing issues which are directly under the epic of issues in argument issues, excluding issues in argument issues from the output. Duplicated issues are filtered from output.
Example: siblingIssuesUnderEpic(linkedIssues("is blocked by")) returns the list of issues directly under epics of issues blocking current issue, excluding from the output issues blocking current issue.
siblingIssuesUnderEpic(string issue_keys) : issue listReturns an issue list containing issues which are directly under the epic of issues with keys in argument issue_keys, excluding from the output issues with keys in argument issue_keys. Argument issue_keys is a comma separated list of issue keys. Duplicated issues are filtered from output.
Example: siblingIssuesUnderEpic("CRM-15, HD-21") returns the list of issues directly under epic of issues with keys CRM-15 and HD-21, excluding from the output issues with keys CRM-15 and HD-21.
startDates(string versions) : number list

Returns a number list with the start dates for versions in string versions for current issues project. Parameter versions is a comma separated list of version names.

Example: startDates(%{00074}) returns the list of start dates for fixed versions. Note that %{00074} is field code for Fix version/s.

startDates(string versions, string projects) : number list

Returns a number list with the start dates for versions in string versions for projects in parameter projects. Parameter versions is a comma separated list of version names. Parameter projects is a comma separated list of project keys or project names.

Example: startDates(%{00077}, "CRM") returns the list of start dates for affected versions for project with key "CRM". Note that %{00077} is field code for Affects version/s.

earliestUnreleasedUnarchivedVersion() : string listReturns string with the name of the earliest unreleased version in current issue's project excluding archived ones.
earliestUnreleasedUnarchivedVersion(string projects) : string listReturns string with the name of the earliest unreleased version excluding archived ones for projects in argument projects. Returned versions may either released or unreleased. Arguments projects is a comma separated list of project keys or project names.
latestReleasedUnarchivedVersion() : string listReturns string with the name of the latest released version in current issue's project excluding archived ones.
latestReleasedUnarchivedVersion(string projects) : string listReturns string with the name of the latest released version excluding archived ones for projects in argument projects. Returned versions may either released or unreleased. Arguments projects is a comma separated list of project keys or project names.

Improvements

  • Added new parameters to post-function Create issues and sub-tasks for optionally inheriting commentsattachments and issue links.
  • Added new parameter Starting Date-Time to post-function Log work.

Bug fixes

  • Issue #955 - Post-function Format field value was failing when formatting a version picker field in Jira 7.x
  • Fixed problem with UI in post-function Create issues and sub-tasks related with JQL queries and Issue List expressions displaying.
  • Issue #965 - Bug on function timeDifference(d1, d2, "schedule_name", timezone) under certain scenarios.
  • Fixed problem with license management.

Find more Release Notes in our Version History section.

JWT Release Notes 2.2.47

[2018-01-02] Released Jira Workflow Toolbox 2.2.47

Bug fixes

  • Issue #946 - Null Pointer Exception when setting fields using JWT post-functions in "Create Issue" when issues are created through email.

This problem was introduced in version 2.2.46 and can affect only when issues are being created through email listeners.

Find more Release Notes in our Version History section.

JWT joins DECADIS

[2017-10-04] Jira Workflow Toolbox joins DECADIS

Dear JWT Users,

I'm happy to announce that DECADIS AG, one of Europe's quickly growing Atlassian Platinum Solution Partners, has acquired JIRA Workflow Toolbox. This company currently has 10 home-brew apps in the Atlassian Marketplace, and is using JWT as almost unique solution for implementing workflow solutions to their customers for more than 7 years. Thanks to this long experience, DECADIS has often collaborated with me in the evolution of JWT proposing new features, improvements and reporting bugs.

I'm not leaving the boat. I stay in the project as chief architect, lead developer and mentor of the JWT Team at DECADIS. Now, JWT, not being a one-man-project anymore, will fully guarantee reliability and support for all their users (currently 3,000), thanks to a highly trained team of developers and JIRA consultants, maintaining the same high quality level of support JWT is historically renowned for. Even more, now we will be able to engage exciting and ambitious new plans for improving JWT, and for adapting it to a fast evolving Atlassian ecosystem.

Here you have a link to DECADIS welcome to JWT.

Thanks you for trusting JWT,

Fidel Castro Armario