Blog
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.
Insight Custom Fields introduced in Insight version 5.4 are now supported to be written with JWT post functions
Direct download from Marketplace
Improvements
- Improved support for new "Insight Object/s" custom field type.
Bug fixes
- Numeric field code injectors don't show any the following field types: Date, Date-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.
[2018-06-29] Released Jira Workflow Toolbox 2.4.5
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.
[2018-06-21] Released Jira Workflow Toolbox 2.4.4
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 | 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: 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(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(string status_name, issue list issues) : number | 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(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: |
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.
[2018-16-13] Released Jira Workflow Toolbox 2.4.3
Bug fix
- The Send an E-Mail post function does not work as expected after upgrading to version 2.4.1/2.4.2
Find more Release Notes in our Version History section.
[2018-06-11] Released Jira Workflow Toolbox 2.4.2
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.
[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.
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 basic, mixed, advanced, date/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
- Parametric issue type selection in post function "Create issues and sub-tasks"
- 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.
[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
- Added optional parameter "Update issue immediately after field writing" to the following post functions:
- Copy parsed text to a field
- Format field value
- Mathematical and date-time expression calculator
- Parse field for extracting data
- Read a project property
- Read field from issues returned by JQL query or issue list
- Read fields from linked issues or sub-tasks
- Read user property
- Regular expression renderer
- Set a field as a function of other fields
- Update issue fields
- Write field on linked issues or sub-tasks
Bug fixes
- Unary minus operator caused NPE when applied on numeric expressions returning
null
. - Optional parameter "Don't overwrite" wasn't working in post functions Read field from issues returned by JQL query or issue list and Read fields from linked issues or sub-tasks.
- Post function Send an email didn't manage correctly attachments using Cyrillic characters in the file name.
- Functions replaceFirst() and replaceAll() caused NPE when applied on
null
arguments.
Find more Release Notes in our Version History section.
[2018-03-20] Released JIRA Workflow Toolbox 2.3.3
New features
- New parser functions
Function | Returned value |
---|---|
dateTime(number year, number month, number dayOfMonth, number hourOfDay, number minute, timeZone time_zone) : number | This 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) : number | Returns 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) : number | Returns 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) : number | Returns 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) : number | Returns 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) : number | Returns 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) : number | Returns 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) : number | Returns 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()
andtimePart()
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.
[2018-02-21] Released Jira Workflow Toolbox 2.3.2
Bug fixes
- Problem when setting field Epic Link on Create issues and sub-tasks post-function.
- Post-function Assign to project role fails when using round-robin assignment on a queue containing only one user.
- Option for inheriting "Rest of field values" on Create issues and sub-tasks post-function is not working.
- Option "Save issue keys..." doesn't remain checked when editing configuration on Create issues and sub-tasks post-function.
Find more Release Notes in our Version History section.
[2018-02-09] Released Jira Workflow Toolbox 2.3.1
Improvements
- Online help links has been updated to new JWT's Documentation Site.
Bug fixes
- Issue #958 - Disabling options using Add or Disable option in Select List, Radio Button, Multi-Select List or Checkbox and Add or Disable option in Cascading Select post-functions where not working correctly.
- Virtual field "Target status" was returning step name instead of status name.
- Null Pointer Exception while evaluating certain boolean expressions.
- Null Pointer Exception when parameter n_days in
null
when invoking functionaddDaysSkippingWeekends(time, n_days, timezone)
. - Bug Fix in Send an email post function when a recipient has no mail address
Find more Release Notes in our Version History section.
[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 status, Issue status (delayed writing), Execute transition and Execute transition (delayed execution).
- New parser functions:
Function | Returned value |
---|---|
epic() : issue list | Returns 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 list | Returns 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 list | Returns 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 list | Returns 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 list | Returns 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 list | Returns 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 list | Returns 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 list | Returns 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 list | Returns 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(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: |
earliestUnreleasedUnarchivedVersion() : string list | Returns string with the name of the earliest unreleased version in current issue's project excluding archived ones. |
earliestUnreleasedUnarchivedVersion(string projects) : string list | Returns 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 list | Returns string with the name of the latest released version in current issue's project excluding archived ones. |
latestReleasedUnarchivedVersion(string projects) : string list | Returns 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 comments, attachments 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.
[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.
[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