---
title: "Cloud to Server migration challenges/limitations"
canonical: "https://support.appfire.com/space/JMWE/461702224/Cloud%20to%20Server%20migration%20challenges%2Flimitations"
format: markdown
---
> Macro (aura-html)

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.

<details>
<summary>Cloud to Server equivalents</summary>

| **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<br>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<br>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) |
</details>

- 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](https://appfire.atlassian.net/wiki/spaces/JMWE/pages/461537291). You can test your script result using the [Groovy script tester](https://appfire.atlassian.net/wiki/spaces/JMWE/pages/461897846). Examples: [Uncheck/Unselect an option in Nunjucks](https://appfire.atlassian.net/wiki/pages/viewpage.action?pageId=78482815) and [Uncheck/Unselect an option in Groovy](https://appfire.atlassian.net/wiki/pages/viewpage.action?pageId=78058215) and [Checking the value of a multi-valued field in Nunjucks](https://appfire.atlassian.net/wiki/display/KB/Checking+the+value+of+a+multi-valued+field+in+Nunjucks) and [Checking the value of a multi-valued field in Groovy](https://appfire.atlassian.net/wiki/display/KB/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](https://confluence.atlassian.com/jirakb/configure-a-custom-event-notification-for-a-specific-jira-workflow-transition-or-status-720831525.html) are not sent. Hence this option was helpful. But in Jira Server post-functions are run within the transition and hence [transition notifications](https://confluence.atlassian.com/jirakb/configure-a-custom-event-notification-for-a-specific-jira-workflow-transition-or-status-720831525.html) 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:
- **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