Cloud to Server migration challenges/limitations

This document lists the things to look out for when migrating JMWE configuration from Cloud to Server

Challenges

Workflows using JMWE post-functions/conditions/validators in the Cloud will break on the Server/Data Center because post-function configurations are incompatible with their Cloud equivalents

  • Some workflow extensions need to be completely recreated looking at their equivalents in the Cloud, followed by deleting the existing one in the Server/Data Center. Here is a table that lists the workflow extensions of Cloud and their equivalents in Server.

Workflow extension in Cloud

Workflow extension in Server

Workflow extension in Cloud

Workflow extension in Server

Current Status Condition (JMWE app)

Current Status Condition (JMWE app)

Hide From User Condition

Hide transition (JMWE app)

Previous Status Condition

Previous Status Condition (JMWE app)

Linked Issues Condition (JMWE app)

Related Issues Condition (JMWE app)

Linked Issues Status Condition (JMWE app)

Related Issues Status Condition (JMWE app)

Build-your-own (scripted) Condition (JMWE app)

Scripted Groovy Condition (JMWE app)

Separation of Duties Condition

Separation of Duties Condition (JMWE app)

 

 

Build-your-own (scripted) validator

Scripted Groovy validator (JMWE app)

Field Required Validator

Field Required Validator (JMWE app)

Field Required Validator (JMWE app)

Field has been modified Validator

Field has been modified Validator (JMWE app)

Field has single value Validator

Field has single value Validator (JMWE app)

Linked Issues Status Validator (JMWE app)

Related Issues Status Validator (JMWE app)

Linked Issues Validator (JMWE app)

Related Issues Validator (JMWE app)

Parent Status Validator

Parent Status Validator (JMWE app)

Previous State Validator

Previous Status Validator (JMWE app)

 

 

Assign to last role member (JMWE app)

Assign to last role member (JMWE app)

Assign to role member (JMWE app)

Assign to role member (JMWE app)

Clear Field Value

Clear field(s) (JMWE app)

Clear field(s) (JMWE app)

Clear field(s) of linked issues (JMWE app)

Clear field(s) of related issues (JMWE app)

Comment issue (JMWE app)

Comment issue (JMWE app)

Comment linked issues (JMWE app)

Comment related issues (JMWE app)

Copy comments to linked issues (JMWE app)

None

Copy field value from linked issues (JMWE app)

Copy field value from related issues (JMWE app)

Copy field value from parent issue (JMWE app)

Copy field value from parent issue (JMWE app)

Copy field value to linked issues (JMWE app)

Copy field value to related issues (JMWE app)

Copy field value to parent issue (JMWE app)

Copy field value to parent issue (JMWE app)

Copy value from field to field (JMWE app)

Copy value from field to field (JMWE app)

Create issue(s) (JMWE app)

Create / Clone issue(s) (JMWE app)

Delete Issue (JMWE app)

None

Display message to user (JMWE app)

Display message to user (JMWE app)

Email issue (JMWE app)

Email issue (JMWE app)

Increase value of field (JMWE app)

Increase value of field (JMWE app)

Link issues to the current issue (JMWE app)

Link issues to the current issue (JMWE app)

Sequence of Post-functions (JMWE app)

None

Set Entity Property value (JMWE app)

Set issue, user or project Entity Property value (JMWE app)

Set field value (JMWE app)

Set field value (JMWE app)

Set field value from User Entity Property value (JMWE app)

Set field value from User Property value (JMWE app)

Set field value of linked issues (JMWE app)

Set field value of related issues (JMWE app)

Set issue security level based on user's project role

Set issue security level based on current user's project role (JMWE app)

Shared Action (JMWE app)

None

Transition current issue (JMWE app)

Transition current issue (JMWE app)

Transition linked issues (JMWE app)

Transition related issues (JMWE app)

Transition parent issue (JMWE app)

Transition parent issue (JMWE app)

Unlink issues from the current issue (JMWE app)

Unlink issues from the current issue (JMWE app)

  • Some post-functions might use Nunjucks templates either to execute the post-function conditionally or set a field value or comment an issue. Wherever you use Nunjucks templates, write its equivalent Groovy script. See Customizing further with Groovy scripts. You can test your script result using the Groovy script tester. Examples: Uncheck/Unselect an option in Nunjucks and Uncheck/Unselect an option in Groovy and Checking the value of a multi-valued field in Nunjucks and Checking the value of a multi-valued field in Groovy. Wherever you use Nunjucks templates on the configuration screen select:

    • Groovy expression/Groovy template as Value type in the post-functions that set a field value

    • Groovy expression/Groovy template as Comment type in the post-functions that comment an issue

  • Some conditions/validators might use Jira expressions to write a condition or to build your own condition/validators. Wherever you use Jira expressions write its equivalent Groovy script.

  • On Jira Cloud, you can execute post-functions as the add-on user, the current user, or any specific user. On Jira Server/Data Center you can either execute it as the current user or any specific user. If your post-functions has option Run as add-on user or Run as current user, Leave it blank to execute it as the current user. If it is Run as a user select the same user in Jira Server/Data Center.

Missing features:

Some features of workflow extensions mentioned below are unavailable in the Server/Data Center. 

  • Send notifications: In Jira Cloud, post-functions are run after the transition, and transition notifications are not sent. Hence this option was helpful. But in Jira Server post-functions are run within the transition and hence transition notifications are sent. So this option is irrelevant here.

  • Delayed execution: This option is irrelevant in Jira Server/Data Center because post-functions in Jira Server/Data Center are run synchronously during/as a part of the transition. 

  • Groups exempt feature of “Field has been modified validator: This option is not explicitly present in Server but can be easily recreated using the conditional validation section with a simple Groovy script. For example:

    currentUser.isInGroup("jira-administrators")
  • Copy Comments to linked issue post-function: This post-function is not available in JMWE Server but can be recreated using the “Copy field value to related issues (JMWE app)” to copy the “Comments” field to the related issues

  • Delete issue, Sequence of Post-functions, Shared Action: These post-functions do not exist in JMWE Server