---
title: "Migrating from Jira Cloud to Jira Data Center"
canonical: "https://support.appfire.com/space/JSUCLOUD/12519542/Migrating%20from%20Jira%20Cloud%20to%20Jira%20Data%20Center"
format: markdown
---
> Macro (aura-html)

<span style="color: #000000">This page describes the required steps when migrating from a Jira Cloud instance to a Jira Data Center instance when you are using some of the default/JSU Workflow Condition/Validator/Post Functions in your workflows.</span>

<span style="color: #000000">Migration from Jira Cloud to Jira Server is not directly possible. You have to be careful as there are many validators and conditions which are built into Jira Cloud, but not in Jira Server. For that, you will need JSU. JSU Cloud's additional post functions make it more powerful with its Related Issues, Perform as Add-on User, and many other post functions that you can use to automate your workflows without any coding.</span>

> ℹ️ Looking for documentation on a **Data Center to Cloud** migration? See our [Migrating from Jira Data Center to Jira Cloud ](https://appfire.atlassian.net/wiki/spaces/JSUCLOUD/pages/12519557)page.

## <span style="color: #000000">Background</span>

<span style="color: #000000">Years ago, the founders of JSU donated several of JSU's modules to Atlassian. Atlassian integrated most of these workflow conditions/validators/post functions (based on JSU Server 1.4) into their native Jira Cloud environment.  Since then, JSU Server/Data Center has added more functionality to make it more powerful. When JSU for Jira Cloud was released, it also added advanced forms of the post functions that were in JSU Server. If you migrate from Jira Cloud to Jira Server/Data Center, the default JSU workflow conditions/validators/post functions do not exist in the default Jira Server/Data Center version but they can simply be replaced with the JSU app.</span>

## <span style="color: #000000">How to fix the workflows</span>

You can do one of the following to fix your migrated workflows:

- Reconfigure the affected workflow modules with the ones from JSU, then remove the broken ones.  
*This is the safest way to do it, but it can be tedious.*
- Export XML workflows, modify, and import again.
- Modify the workflows directly in the database - if you have the required knowledge.   
*It's efficient but with more risk.*

## <span style="color: #000000">Workflow condition/post functions(JSU)</span>

| <span style="color: #000000">Workflow Name</span> | <span style="color: #000000">JSU Cloud Module-Key</span> | <span style="color: #000000">JSU Server/Data Center Module-Key</span> |
| --- | --- | --- |
| <span style="color: #000000">**Conditions**</span> |  |  |
| <span style="color: #000000">User Is In Any Users (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugin:com.googlecode.</span><br><span style="color: #000000">jira-suite-utilities__userisinanyusers-condition</span> | <span style="color: #000000">com.googlecode.jsu.workflow.condition.userisinanyusers-condition</span> |
| <span style="color: #000000">**Post Functions**</span> |  |  |
| <span style="color: #000000">Clear Field Value (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__clearFieldValue-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitiesclearFieldValue-function</span> |
| <span style="color: #000000">Copy Value From Other Field (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__copyValueFromOtherField-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitiescopyValueFromOtherField-function</span> |
| <span style="color: #000000">Copy or Move Attachments (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__copymoveattachments-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitiescopymoveattachments-function</span> |
| <span style="color: #000000">Create a Linked Issue (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__createlinkedissue-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitiescreatelinkedissue-function</span> |
| <span style="color: #000000">Follow Up Transition (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__followuptransition-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitiesfollowuptransition-function</span> |
| <span style="color: #000000">Linked Transition (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__linkedtransition-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitieslinkedtransition-function</span> |
| <span style="color: #000000">Update any Issue Field (JSU)</span> | <span style="color: #000000">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__updateanyissuefield-function</span> | <span style="color: #000000">com.googlecode.jira-suite-utilitiesupdateIssueCustomField-function</span> |

## <span style="color: #000000">Mapping between JSU Cloud and JSU Server/Data Center</span>

<span style="color: #000000">The following table contains all the attributes that need to be mapped between the JSU Cloud and JSU Server workflow functionality.</span>

### <span style="color: #000000">Post function mapping: Clear Field Value (JSU)</span>

| <span style="color: #000000">Arg Name: JSU Cloud</span> | <span style="color: #000000">Arg Name: JSU Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
 <function type="class">
 <arg name="class.name">com.atlassian.plugin.connect.jira.workflow.RemoteWorkflowPostFunctionProvider</arg>
 <arg name="full.module.key">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__clearFieldValue-function</arg>
 <arg name="remoteWorkflowPostFunctionConfiguration">
{"preconditions":[],
"preconditionAwareFunctionMode-textValue":"TRUE",
"field":"assignee",
"jsuCloudWorkflowParamsVersion-textValue":"2.8.0",
"scopeType":"SAME",
"source-scopeTarget":"ISSUE_IN_TRANSITION",
"destination-scopeTarget":"ISSUE_IN_TRANSITION",
"runAsUser-user":"qm:c14a3779-f1ba-496f-a5ef-dbb4ab1928f4:e5e9400a-0c77-440a-aa18-fbb585fbd6e8"}</arg>
<arg name="remoteWorkflowPostFunctionUUID">9dfcbdb2-7738-429c-9af4-e0a4b9490f9a</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
 <function type="class">
    <arg name="scopeSource-linkEnd"></arg>
    <arg name="maxAllowed-integerValue"></arg>
    <arg name="runAsUser-user">admin</arg>
    <arg name="field">assignee</arg>
    <arg name="scopeType">SAME</arg>
    <arg name="destination-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="full.module.key">com.googlecode.jira-suite-utilitiesclearFieldValue-function</arg>
    <arg name="scopeDestination-linkEnd"></arg>
    <arg name="preconditionAwareFunctionMode-textValue">ALWAYS</arg>
    <arg name="jsuWorkflowParamsVersion-textValue">2.23.3-SNAPSHOT</arg>
    <arg name="source-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="scopeDestination-jql"></arg>
    <arg name="class.name">com.googlecode.jsu.workflow.function.ClearFieldValuePostFunction</arg>
    <arg name="scopeSource-jql"></arg>
 </function>
``` |

### <span style="color: #000000">Post function mapping: Copy Value From Other Field (JSU)</span>

| <span style="color: #000000">Arg Name: JSU Cloud</span> | <span style="color: #000000">Arg Name: JSU Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
 <function type="class">
 <arg
name="class.name">com.atlassian.plugin.connect.jira.workflow.RemoteWorkflowPostFunctionProvider</arg>
 <arg name="full.module.key">com.atlassian.plugins.atlassian-connect-
plugincom.googlecode.jira-suite-utilities__copyValueFromOtherField-function</arg>
 <arg name="remoteWorkflowPostFunctionConfiguration">
{"preconditions": [],
"preconditionAwareFunctionMode-textValue":"TRUE",
"field.copyFieldSource1":"assignee",
"field.copyFieldDestination1":"customfield_10003",
"field.copyFieldMode1":"OVERWRITE",
"field.copyFieldSeparator1":"",
"field.createTargetValue1":false,
"jsuCloudWorkflowParamsVersion-textValue":"2.8.0",
"scopeType":"SAME",
"source-scopeTarget":"ISSUE_IN_TRANSITION",
"destination-scopeTarget":"ISSUE_IN_TRANSITION",
"runAsUser-user":""}
</arg>
<arg name="remoteWorkflowPostFunctionUUID">0e286a2f-b587-4432-8806-be35175e92a1</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
 <function type="class">
    <arg name="field.copyFieldSource2"></arg>
    <arg name="field.copyFieldSource1">assignee</arg>
    <arg name="scopeSource-linkEnd"></arg>
    <arg name="maxAllowed-integerValue"></arg>
    <arg name="field.createTargetValue1"></arg>
    <arg name="runAsUser-user"></arg>
    <arg name="field.copyFieldMode1">OVERWRITE</arg>
    <arg name="field.copyFieldDestination1">customfield_11100</arg>
    <arg name="field.copyFieldSeparator1"></arg>
    <arg name="scopeType">SAME</arg>
    <arg name="destination-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="full.module.key">com.googlecode.jira-suite-utilitiescopyValueFromOtherField-function</arg>
    <arg name="scopeDestination-linkEnd"></arg>
    <arg name="jsuWorkflowParamsVersion-textValue">2.23.3-SNAPSHOT</arg>
    <arg name="preconditionAwareFunctionMode-textValue">ALWAYS</arg>
    <arg name="source-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="scopeDestination-jql"></arg>
    <arg name="class.name">com.googlecode.jsu.workflow.function.CopyValueFromOtherFieldPostFunction</arg>
    <arg name="scopeSource-jql"></arg>
  </function>
``` |

### <span style="color: #000000">Post function mapping: Create a Linked Issue (JSU)</span>

| <span style="color: #000000">Arg Name: JSU Cloud</span> | <span style="color: #000000">Arg Name: JSU Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
 <function type="class">
 <arg  name="class.name">com.atlassian.plugin.connect.jira.workflow.RemoteWorkflowPostFunctionProvider</arg>
 <arg
 name="full.module.key">com.atlassian.plugins.atlassian-connect-
plugincom.googlecode.jira-suite-utilities__createlinkedissue-function</arg>
 <arg name="remoteWorkflowPostFunctionConfiguration">
{"preconditions":[],
"preconditionAwareFunctionMode-textValue":"TRUE",
"currentProjectType":"SAME",
"currentProjectId":"-2",
"currentIssueTypeId":"10006",
"runAsUser-user":"",
"jsuCloudWorkflowParamsVersion-textValue":"2.8.0",
"subFunctions":[],
"scopeType":"NONE",
"source-scopeTarget":"ISSUE_IN_TRANSITION",
"destination-scopeTarget":"ISSUE_IN_TRANSITION",
"field.attachmentEnablingCustomFieldId":"ALWAYS",
"field.existingAttachmentEnablingCustomFieldId":"ALWAYS",
"transitionAttachmentsOperation":"copy"}
</arg>
<arg name="remoteWorkflowPostFunctionUUID">a27f8e4f-f1a0-4e01-9199-057d34df07ee</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
<function type="class">
   <arg name="field.existingAttachmentEnablingCustomFieldId"></arg>
   <arg name="scopeSource-linkEnd"></arg>
   <arg name="targetIssueTypeDefinedByCfSelection"></arg>
   <arg name="issueTypeId">1</arg>
   <arg name="scopeType">NONE</arg>
   <arg name="jsuWorkflowParamsVersion-textValue">2.23.3-SNAPSHOT</arg>
   <arg name="source-scopeTarget">ISSUE_IN_TRANSITION</arg>
   <arg name="field.attachmentEnablingCustomFieldId"></arg>
   <arg name="targetIssueType">SELECTED_ISSUE_TYPE</arg>
   <arg name="scopeSource-jql"></arg>
   <arg name="createIssueAsUser-user"></arg>
   <arg name="field.copyTransitionComment">false</arg>
   <arg name="targetProjectType">SAME</arg>
   <arg name="maxAllowed-integerValue"></arg>
   <arg name="transitionAttachmentsOperation">copy</arg>
   <arg name="field.issueAssignTo">ASSIGN_TO_ASSIGNEE</arg>
   <arg name="targetProjectSelectedCustomField"></arg>
   <arg name="destination-scopeTarget">ISSUE_IN_TRANSITION</arg>
   <arg name="full.module.key">com.googlecode.jira-suite-utilitiescreatelinkedissue-function</arg>
   <arg name="scopeDestination-linkEnd"></arg>
   <arg name="field.enablingCustomFieldId"></arg>
   <arg name="preconditionAwareFunctionMode-textValue">ALWAYS</arg>
   <arg name="scopeDestination-jql"></arg>
   <arg name="subFunctions">[]</arg>
   <arg name="class.name">ch.beecom.jira.jsu.workflow.function.createlinkedissue.CreateLinkedIssueFunction</arg>
   <arg name="projectId">10500</arg>
</function>
``` |

### <span style="color: #000000">Post function mapping: Linked Transition (JSU)</span>

| <span style="color: #000000">Arg Name: JSU Cloud</span> | <span style="color: #000000">Arg Name: JSU Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<function type="class">
<arg name="class.name">com.atlassian.plugin.connect.jira.workflow.RemoteWorkflowPostFunctionProvider</arg>
<arg name="full.module.key">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__linkedtransition-function</arg>
<arg name="remoteWorkflowPostFunctionConfiguration">
{"preconditions":[],
"preconditionAwareFunctionMode-textValue":"TRUE",
"runAsUser-user":"",
"status":"",
"statusName":"",
"workflowName-textValue":"classic default workflow",
"integerValue":"2",
"textValue":"-1",
"jsuCloudWorkflowParamsVersion-textValue":"2.8.0",
"scopeType":"ISSUE_LINKING",
"source-scopeTarget":"ISSUE_IN_TRANSITION",
"destination-scopeTarget":"LINK_END",
"scopeSource-linkEnd":"",
"scopeDestination-linkEnd":""}
</arg>
<arg name="remoteWorkflowPostFunctionUUID">45bd3003-b5e2-42b8-ada2-032d3b2b8f83</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
 <function type="class">
    <arg name="field.copyFieldSource1"></arg>
    <arg name="textValue">-1</arg>
    <arg name="scopeSource-linkEnd"></arg>
    <arg name="maxAllowed-integerValue"></arg>
    <arg name="workflowName-textValue">AP: Task Management Workflow</arg>
    <arg name="performTransitionAsUser-user"></arg>
    <arg name="scopeType">ISSUE_LINKING</arg>
    <arg name="destination-scopeTarget">LINK_END</arg>
    <arg name="full.module.key">com.googlecode.jira-suite-utilitieslinkedtransition-function</arg>
    <arg name="scopeDestination-linkEnd">ANY:ANY</arg>
    <arg name="jsuWorkflowParamsVersion-textValue">2.23.3-SNAPSHOT</arg>
    <arg name="preconditionAwareFunctionMode-textValue">ALWAYS</arg>
    <arg name="source-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="integerValue">21</arg>
    <arg name="scopeDestination-jql"></arg>
    <arg name="class.name">ch.beecom.jira.jsu.workflow.function.linkedtransition.LinkedTransitionFunction</arg>
    <arg name="scopeSource-jql"></arg>
    <arg name="status"></arg>
 </function>
``` |

### <span style="color: #000000">Post function mapping: Update any Issue Field (JSU)</span>

| <span style="color: #000000">Arg Name: JSU Cloud</span> | <span style="color: #000000">Arg Name: JSU Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
 <function type="class">
 <arg name="class.name">com.atlassian.plugin.connect.jira.workflow.RemoteWorkflowPostFunctionProvider</arg>
 <arg name="full.module.key">com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__updateanyissuefield-function</arg>
 <arg name="remoteWorkflowPostFunctionConfiguration">
{"preconditions":[],
"preconditionAwareFunctionMode-textValue":"TRUE",
"runAsUser-user":"",
"field.name":"summary",
"field.value":"test summary",
"append.value":false,
"jsuCloudWorkflowParamsVersion-textValue":"2.8.0",
"scopeType":"SAME",
"source-scopeTarget":"ISSUE_IN_TRANSITION",
"destination-scopeTarget":"ISSUE_IN_TRANSITION"}
</arg>
<arg name="remoteWorkflowPostFunctionUUID">e6518c27-cd5e-40b4-a190-14b1c32c1e8e</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
 <function type="class">
    <arg name="scopeSource-linkEnd"></arg>
    <arg name="append.value"></arg>
    <arg name="maxAllowed-integerValue"></arg>
    <arg name="runAsUser-user"></arg>
    <arg name="field.value">test summary</arg>
    <arg name="field.name">summary</arg>
    <arg name="scopeType">SAME</arg>
    <arg name="destination-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="full.module.key">com.googlecode.jira-suite-utilitiesupdateIssueCustomField-function</arg>
    <arg name="scopeDestination-linkEnd"></arg>
    <arg name="preconditionAwareFunctionMode-textValue">ALWAYS</arg>
    <arg name="jsuWorkflowParamsVersion-textValue">2.23.3-SNAPSHOT</arg>
    <arg name="source-scopeTarget">ISSUE_IN_TRANSITION</arg>
    <arg name="scopeDestination-jql"></arg>
    <arg name="class.name">com.googlecode.jsu.workflow.function.UpdateIssueCustomFieldPostFunction</arg>
    <arg name="scopeSource-jql"></arg>
</function>
``` |

###   
<span style="color: #000000">Workflow preconditions(JSU)</span>

<span style="color: #000000">Preconditions in JSU Cloud are built-in as a part of the post function. You can add as many preconditions as you want inside a post function. In JSU Server/Data Center, preconditions are implemented as a separate post function that acts as preconditions. All the preconditions from JSU Cloud are available in the JSU Server/Data Center as well but require a different configuration.</span>

|  |
| --- |
| <span style="color: #000000">**Preconditions in JSU Server/Data Center and Cloud**</span> |
| <span style="color: #000000">Date Compare (JSU)</span> |
| <span style="color: #000000">Date Expression Compare (JSU)</span> |
| <span style="color: #000000">Date Window (JSU)</span> |
| <span style="color: #000000">Fields Required (JSU)</span> |
| <span style="color: #000000">JQL (JSU)</span> |
| Linked Status<span style="color: #000000"> (JSU)</span> |
| <span style="color: #000000">Regular Expression Check (JSU)</span> |
| <span style="color: #000000">User Is In Any Groups (JSU)</span> |
| <span style="color: #000000">User Is In Any Roles (JSU)</span> |
| <span style="color: #000000">User Is In Custom Field (JSU)</span> |
| <span style="color: #000000">Value Field (JSU)</span> |

### <span style="color: #000000">Precondition mapping: Value Field (JSU)</span>

| <span style="color: #000000">Arg Name: JSU Cloud</span> | <span style="color: #000000">Arg Name: JSU Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<arg name="remoteWorkflowPostFunctionConfiguration">
{"preconditions":
[{"type":"valueField-precondition-function",
"enabled":true,
"config":{
"preconditionMode-textValue":"AND",
"preconditionNegateResult-booleanValue":false,
"conditionList":1,
"fieldValue":"2.0",
"fieldsList":"fixVersions"}}],
"preconditionAwareFunctionMode-textValue":"TRUE",
"runAsUser-user":"",
"field.name":"summary",
"field.value":"test summary",
"append.value":false,
"jsuCloudWorkflowParamsVersion-textValue":"2.8.0",
"scopeType":"SAME",
"source-scopeTarget":"ISSUE_IN_TRANSITION",
"destination-scopeTarget":"ISSUE_IN_TRANSITION"}
</arg>
``` | <span style="color: #000000">Example</span><br>```
  <function type="class">
     <arg name="conditionList">1</arg>
     <arg name="full.module.key">com.googlecode.jira-suite-utilitiesvalueField-precondition-function</arg>
     <arg name="jsuWorkflowParamsVersion-textValue">2.23.3-SNAPSHOT</arg>
     <arg name="comparisonType">1</arg>
     <arg name="precondition">true</arg>
     <arg name="class.name">ch.beecom.jira.jsu.workflow.function.valuefield.ValueFieldPreconditionFunction</arg>
     <arg name="preconditionNegateResult-booleanValue"></arg>
     <arg name="fieldValue">2.0</arg>
     <arg name="preconditionMode-textValue">DISCARD</arg>
     <arg name="fieldsList">fixVersions</arg>
   </function>
``` |

All other preconditions follow a similar pattern as above.

> ℹ️ As preconditions in JSU Cloud are built-in, you have to reconfigure all the preconditions manually in JSU Server/Data Center.

## <span style="color: #000000">Workflow condition/validator/post functions(Jira)</span>

<span style="color: #000000">The following list of workflow conditions/validators/post functions built into the Jira Cloud environment can be replaced with JSU extensions. See below, all the attribute mappings between Jira Cloud and Jira Server/Data Center.</span>

| <span style="color: #000000">Workflow Name</span> | <span style="color: #000000">Jira Cloud Class-Name</span> | <span style="color: #000000">JSU Class-Name (Jira Server/Data Center)</span> |
| --- | --- | --- |
| <span style="color: #000000">**Conditions**</span> |  |  |
| <span style="color: #000000">User Is In Any Group</span> | <span style="color: #000000">com.atlassian.jira.workflow.condition.UserInAnyGroupCondition</span> | <span style="color: #000000">com.googlecode.jsu.workflow.condition.UserIsInAnyGroupsCondition</span> |
| <span style="color: #000000">User Is In Any Project Role</span> | <span style="color: #000000">com.atlassian.jira.workflow.condition.InAnyProjectRoleCondition</span> | <span style="color: #000000">com.googlecode.jsu.workflow.condition.UserIsInAnyRolesCondition</span> |
| <span style="color: #000000">User Is In Custom Field</span> | <span style="color: #000000">com.atlassian.jira.workflow.condition.UserIsInCustomFieldCondition</span> | <span style="color: #000000">com.googlecode.jsu.workflow.condition.UserIsInCustomFieldCondition</span> |
| <span style="color: #000000">Value Field</span> | <span style="color: #000000">com.atlassian.jira.workflow.condition.ValueFieldCondition</span> | <span style="color: #000000">com.googlecode.jsu.workflow.condition.ValueFieldCondition</span> |
| <span style="color: #000000">**Validators**</span> |  |  |
| <span style="color: #000000">Date Compare Validator</span> | <span style="color: #000000">com.atlassian.jira.workflow.validator.DateFieldValidator</span> | <span style="color: #000000">com.googlecode.jsu.workflow.validator.DateCompareValidator & com.googlecode.jsu.workflow.validator.DateExpressionCompareValidator</span> |
| <span style="color: #000000">Date Window Validator</span> | <span style="color: #000000">com.atlassian.jira.workflow.validator.WindowsDateValidator</span> | <span style="color: #000000">com.googlecode.jsu.workflow.validator.WindowsDateValidator</span> |
| <span style="color: #000000">Field Required Validator</span> | <span style="color: #000000">com.atlassian.jira.workflow.validator.FieldRequiredValidator</span> | <span style="color: #000000">com.googlecode.jsu.workflow.validator.FieldsRequiredValidator</span> |
| <span style="color: #000000">Regular Expression Check</span> | <span style="color: #000000">com.atlassian.jira.workflow.validator.RegexpFieldValidator</span> | <span style="color: #000000">com.googlecode.jsu.workflow.validator.RegexpFieldValidator</span> |
| <span style="color: #000000">**Post Functions**</span> |  |  |
| <span style="color: #000000">Clear Field Value</span> | <span style="color: #000000">com.atlassian.jira.workflow.function.issue.ClearFieldValuePostFunction</span> | <span style="color: #000000">com.googlecode.jsu.workflow.function.ClearFieldValuePostFunction</span> |
| <span style="color: #000000">Copy Value From Other Field</span> | <span style="color: #000000">com.atlassian.jira.workflow.function.issue.CopyValueFromOtherFieldPostFunction</span> | <span style="color: #000000">com.googlecode.jsu.workflow.function.CopyValueFromOtherFieldPostFunction</span> |
| <span style="color: #000000">Update Issue Custom Field</span> | <span style="color: #000000">com.atlassian.jira.workflow.function.issue.UpdateIssueCustomFieldPostFunction</span> | <span style="color: #000000">com.googlecode.jsu.workflow.function.UpdateIssueCustomFieldPostFunction</span> |

## <span style="color: #000000">Mapping between Jira Cloud modules and JSU Server/Data Center</span>

<span style="color: #000000">The following describes all the attributes which need to be mapped between the Jira Cloud and Jira Server/Data Center workflow functionality.</span>

### <span style="color: #000000">Condition mapping: User Is In Any Group</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">group</span> | <span style="color: #000000">hidGroupsList (each group is separated by @@ and requires a @@ at the end)</span> |
| <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.atlassian.jira.workflow.condition.UserInAnyGroupCondition</arg>
  <arg name="group">administrators@@</arg>
</condition>
``` | <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.condition.UserIsInAnyGroupsCondition</arg>
  <arg name="hidGroupsList">jira-developers@@</arg>
</condition>
``` |

### <span style="color: #000000">Condition mapping: User Is In Any Project Role</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">projectRoleIds</span> | <span style="color: #000000">hidRolesList (each group is separated by @@ and requires a @@ at the end and groups are required to be mapped between id to group name)</span> |
| <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.atlassian.jira.workflow.condition.InAnyProjectRoleCondition</arg>
  <arg name="projectRoleIds">10101@@</arg>
</condition>



``` | <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.condition.UserIsInAnyRolesCondition</arg>
  <arg name="hidRolesList">Developers@@</arg>
</condition>



``` |

### <span style="color: #000000">Condition mapping: User Is In Custom Field</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/Data Center.</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.atlassian.jira.workflow.condition.UserIsInCustomFieldCondition</arg>
  <arg name="fieldsList">customfield_10018</arg>
  <arg name="allowUserInField">true</arg>
</condition>
``` | <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.condition.UserIsInCustomFieldCondition</arg>
  <arg name="fieldsList">customfield_10609</arg>
  <arg name="allowUserInField">true</arg>
</condition>
``` |

### <span style="color: #000000">Condition mapping: Value Field</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/Data Center.</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/Data Center</span> |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.atlassian.jira.workflow.condition.ValueFieldCondition</arg>
  <arg name="comparisonType">1</arg>
  <arg name="conditionList">3</arg>
  <arg name="fieldsList">assignee</arg>
  <arg name="fieldValue">John</arg>
</condition>
``` | <span style="color: #000000">Example</span><br>```
<condition type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.condition.ValueFieldCondition</arg>
  <arg name="comparisonType">1</arg>
  <arg name="conditionList">3</arg>
  <arg name="fieldsList">assignee</arg>
  <arg name="fieldValue">John</arg>
</condition>
``` |

### <span style="color: #000000">Validator mapping: Date Compare validator</span>

<span style="color: #000000">The Jira Cloud 'Date Compare Validator' combines two JSU Date Compare Validators:</span>

- <span style="color: #000000">Date Compare Validator (compareTypeField = true)</span>
- <span style="color: #000000">Date Expression Compare Validator (compareTypeField = false)</span>

<span style="color: #000000">Which of the two validators to use is defined by the Jira Cloud argument name 'compareTypeField'</span>

<span style="color: #000000">**Date Compare validator**</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/</span>Data Center<span style="color: #000000">. </span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.atlassian.jira.workflow.validator.DateFieldValidator</arg>
  <arg name="compareTypeField">true</arg>
  <arg name="conditionSelected">3</arg>
  <arg name="includeTimeSelected">true</arg>
  <arg name="date1Selected">customfield_10017</arg>
  <arg name="date2Selected">customfield_10022</arg>
</validator>
``` | <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.validator.DateCompareValidator</arg>
  <arg name="conditionSelected">1</arg>
  <arg name="includeTimeSelected">2</arg>
  <arg name="date1Selected">created</arg>
  <arg name="date2Selected">created</arg>
</validator>
``` |

<span style="color: #000000">**Date Expression Compare validator**</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">compareTypeField  (must be false to map to the 'Date Expression Compare Validator')</span> | <span style="color: #000000">not required for Jira Server/</span>Data Center<span style="color: #000000">.</span> |
| <span style="color: #000000">conditionSelected</span> | <span style="color: #000000">conditionSelected</span> |
| <span style="color: #000000">includeTimeSelected</span> | <span style="color: #000000">includeTimeSelected</span> |
| <span style="color: #000000">date1Selected</span> | <span style="color: #000000">date1Selected</span> |
| <span style="color: #000000">expression</span> | <span style="color: #000000">expressionSelected</span> |
| <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.atlassian.jira.workflow.validator.DateFieldValidator</arg>
  <arg name="compareTypeField">false</arg>
  <arg name="conditionSelected">1</arg>
  <arg name="includeTimeSelected">false</arg>
  <arg name="date1Selected">customfield_10017</arg>
  <arg name="expression">\d</arg>
</validator>
``` | <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.validator.DateExpressionCompareValidator</arg>
  <arg name="conditionSelected">1</arg>
  <arg name="includeTimeSelected">2</arg>
  <arg name="dateFieldSelected">created</arg>
  <arg name="expressionSelected">\d</arg>
</validator>
``` |

### <span style="color: #000000">Validator mapping: Date Window validator</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/</span>Data Center<span style="color: #000000">.</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.atlassian.jira.workflow.validator.WindowsDateValidator</arg>
  <arg name="date1Selected">customfield_10017</arg>
  <arg name="date2Selected">customfield_10017</arg>
  <arg name="windowsDays">5</arg>
</validator>
``` | <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.validator.WindowsDateValidator</arg>
  <arg name="date1Selected">customfield_10017</arg>
  <arg name="date2Selected">customfield_10017</arg>
  <arg name="windowsDays">5</arg>
</validator>
``` |

### <span style="color: #000000">Validator mapping: Field Required validator</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">hidFieldsList</span> | <span style="color: #000000">hidFieldsList</span> |
| <span style="color: #000000">contextHandling</span> | <span style="color: #000000">contextHandling</span> |
| <span style="color: #000000">errorMessage</span> | <span style="color: #000000">customErrorMessage-textValue</span> |
| <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.atlassian.jira.workflow.validator.FieldRequiredValidator</arg>
  <arg name="hidFieldsList">assignee@@</arg>
  <arg name="contextHandling">ignore</arg>
  <arg name="errorMessage">Custom Error Message<arg>
</validator>
``` | <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.validator.FieldsRequiredValidator</arg>
  <arg name="hidFieldsList">assignee@@</arg>
  <arg name="contextHandling">ignore</arg>
  <arg name="customErrorMessage-textValue">Custom Error Message</arg>
</validator>
``` |

### <span style="color: #000000">Validator mapping: Regular Expression Check</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/</span>Data Center<span style="color: #000000">.</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.atlassian.jira.workflow.validator.RegexpFieldValidator</arg>
  <arg name="fieldSelected">description</arg>
  <arg name="expressionSelected">\d</arg>
</validator>
``` | <span style="color: #000000">Example</span><br>```
<validator name="" type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.validator.RegexpFieldValidator</arg>
  <arg name="fieldSelected">versions</arg>
  <arg name="expressionSelected">\d</arg>
</validator>
``` |

### <span style="color: #000000">Post function mapping: Clear Field Value</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/</span>Data Center<span style="color: #000000">.</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<function type="class">
  <arg name="class.name">com.atlassian.jira.workflow.function.issue.ClearFieldValuePostFunction</arg>
  <arg name="full.module.key">com.atlassian.jira.plugin.system.workflowclearFieldValue-function</arg>
  <arg name="field">assignee</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
<function type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.function.ClearFieldValuePostFunction</arg>
  <arg name="full.module.key">com.googlecode.jira-suite-utilitiesclearFieldValue-function</arg>
  <arg name="field">comment</arg>
</function>
``` |

### <span style="color: #000000">Post function mapping: Copy Value From Other Field</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<function type="class">
  <arg name="class.name">com.atlassian.jira.workflow.function.issue.CopyValueFromOtherFieldPostFunction</arg>
  <arg name="sourceField">assignee</arg>
  <arg name="destinationField">assignee</arg>
  <arg name="copyType">same</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
<function type="class">
  <arg name="sourceField">assignee</arg>
  <arg name="class.name">com.googlecode.jsu.workflow.function.CopyValueFromOtherFieldPostFunction</arg>
  <arg name="destinationField">customfield_10101</arg>
</function>
``` |

### <span style="color: #000000">Post function mapping: Update Issue Custom Field</span>

<span style="color: #000000">All argument names are the same between Jira Cloud and Jira Server/</span>Data Center<span style="color: #000000">.</span>

| <span style="color: #000000">Arg Name: Jira Cloud</span> | <span style="color: #000000">Arg Name: Jira Server/</span>Data Center |
| --- | --- |
| <span style="color: #000000">Example</span><br>```
<function type="class">
  <arg name="class.name">com.atlassian.jira.workflow.function.issue.UpdateIssueCustomFieldPostFunction</arg>
  <arg name="field.name">customfield_10000</arg>
  <arg name="field.value">%%CURRENT_USER%%</arg>
  <arg name="append.value">true</arg>
</function>
``` | <span style="color: #000000">Example</span><br>```
<function type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.function.UpdateIssueCustomFieldPostFunction</arg>
  <arg name="field.name">versions</arg>
  <arg name="field.value">%%CURRENT_USER%%</arg>
  <arg name="append.value">true</arg>
</function>
``` |