Migrating from Jira Cloud to Jira Server

This page describes the required steps when migrating from a Jira Cloud instance to a Jira Server instance when you are using some of the default/JSU Workflow Condition/Validator/Post-Functions in your Workflow.

Migration from JIRA Cloud to JIRA Server is directly not possible, you have to be very careful as there are many validators and conditions which are built-in in JIRA cloud native but not in JIRA Server. For that you will need JSU.

JSU Cloud's additional post-functions to JIRA makes it more powerful with its Related Issues, Perform as a different user and many other functionalities in the Post-functions. Using JSU's additional post-functions, you can automate your workflows without any coding.


If you are looking for documentation on Server to Cloud migration, please follow this link.

Background

Years ago beecom donated some of JSU's modules to Jira Cloud. Atlassian integrated most of these JSU Workflow Condition/Validator/Post-Functions (based on JSU Server 1.4) into their native Jira Cloud Environment which were still a very basic modules.  Since then JSU Server has added many other functionalities to make it more powerful. When JSU on Cloud was released, it also had additional advanced form of the Post-functions as of JSU Server. If you perform a migration from Jira Cloud to Jira Server, those default/JSU Workflow Condition/Validator/Post-Functions do not exist in the default Jira Server Version but can be simply replaced with the JSU App.

How to fix the workflows

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

  • Reconfigure the affected workflow modules with the ones from JSU. Afterwards remove the broken ones.
    This is by far the safest way to do it, but can be tedious.
  • Export XML workflows, modify, import again.
  • Modify the workflows directly in the database - if you have the knowledge
    It’s efficient, but very dangerous.

Workflow Condition/Post-Functions(JSU)

JSU Cloud post-functions are more powerful with its Related Issues, Perform as a different user and many other functionalities.

Workflow Name

JSU Cloud Module-Key

JSU Server Module-Key

Conditions



com.atlassian.plugins.atlassian-connect-plugin:com.googlecode.

jira-suite-utilities__userisinanyusers-condition

com.googlecode.jsu.workflow.condition.userisinanyusers-condition

Post-Functions



Clear Field Value

com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__clearFieldValue-function

com.googlecode.jira-suite-utilitiesclearFieldValue-function

Copy Value From Other Field

com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__copyValueFromOtherField-function

com.googlecode.jira-suite-utilitiescopyValueFromOtherField-function

Copy or Move Attachments

com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__copymoveattachments-function

com.googlecode.jira-suite-utilitiescopymoveattachments-function

Create a Linked Issuecom.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__createlinkedissue-functioncom.googlecode.jira-suite-utilitiescreatelinkedissue-function

Follow Up Transition

com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__followuptransition-function

com.googlecode.jira-suite-utilitiesfollowuptransition-function

Linked Transition

com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__linkedtransition-function

com.googlecode.jira-suite-utilitieslinkedtransition-function

Update any Issue Field

com.atlassian.plugins.atlassian-connect-plugincom.googlecode.jira-suite-utilities__updateanyissuefield-function

com.googlecode.jira-suite-utilitiesupdateIssueCustomField-function


Mapping between JSU Cloud TO JSU Server

The following description describes all the attributes which need to be mapped between the JSU Cloud and JSU Server Workflow functionality.

Post-Function Mapping: Clear Field Value (JSU)

Arg Name: JSU CloudArg Name: JSU Server

Example

 <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>

Example

 <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>

Post-Function Mapping: Copy Value From Other Field

Arg Name: JSU CloudArg Name: JSU Server

Example

 <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>

Example

 <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>

Post-Function Mapping: Create a Linked Issue

Arg Name: JSU CloudArg Name: JSU Server

Example

 <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>

Example

<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>

Post-Function Mapping: Linked Transition

Arg Name: JSU CloudArg Name: JSU Server

Example

<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>

Example

 <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>

Post-Function Mapping: Update any Issue Field

Arg Name: JSU CloudArg Name: JSU Server

Example

 <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>

Example

 <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>

Workflow Preconditions(JSU)

Preconditions in JSU Cloud are built-in as a part of the post-function. You can add as many preconditions inside a post-function. But in JSU Server preconditions are implemented as a separate post-function which acts as preconditions. All the preconditions from JSU Cloud are available in JSU Server as well, but it needs different configuration.

Preconditions in JSU Server/Cloud
Date Compare (JSU)
Date Expression Compare (JSU)
Date Window (JSU)
Fields Required (JSU)
JQL (JSU)
Linked Status (JSU)
Regular Expression Check (JSU)
User Is In Any Groups (JSU)
User Is In Any Roles (JSU)
User Is In Custom Field (JSU)
Value Field (JSU)

Precondition Mapping: Value Field

Arg Name: JSU CloudArg Name: JSU Server

Example

<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>

Example

  <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 the similar pattern as above. As preconditions in JSU Cloud are built-in, you have reconfigure all the preconditions manually in JSU Server.

Workflow Condition/Validator/Post-Functions(Jira)

The following List of Workflow Condition/Validator/Post-Functions which are built into the Jira Cloud Environment can be replaces with JSU extensions. See below all attribute mappings between Jira Cloud and Jira Server.

Workflow NameJira Cloud Class-NameJSU Class-Name (Jira Server)
Conditions

User Is In Any Groupcom.atlassian.jira.workflow.condition.UserInAnyGroupConditioncom.googlecode.jsu.workflow.condition.UserIsInAnyGroupsCondition
com.atlassian.jira.workflow.condition.InAnyProjectRoleConditioncom.googlecode.jsu.workflow.condition.UserIsInAnyRolesCondition
User Is In Custom Fieldcom.atlassian.jira.workflow.condition.UserIsInCustomFieldConditioncom.googlecode.jsu.workflow.condition.UserIsInCustomFieldCondition
Value Fieldcom.atlassian.jira.workflow.condition.ValueFieldConditioncom.googlecode.jsu.workflow.condition.ValueFieldCondition
Validators

Date Compare Validatorcom.atlassian.jira.workflow.validator.DateFieldValidatorcom.googlecode.jsu.workflow.validator.DateCompareValidator & com.googlecode.jsu.workflow.validator.DateExpressionCompareValidator
Date Window Validatorcom.atlassian.jira.workflow.validator.WindowsDateValidatorcom.googlecode.jsu.workflow.validator.WindowsDateValidator
Field Required Validatorcom.atlassian.jira.workflow.validator.FieldRequiredValidatorcom.googlecode.jsu.workflow.validator.FieldsRequiredValidator
Regular Expression Checkcom.atlassian.jira.workflow.validator.RegexpFieldValidatorcom.googlecode.jsu.workflow.validator.RegexpFieldValidator
Post-Functions

Clear Field Valuecom.atlassian.jira.workflow.function.issue.ClearFieldValuePostFunctioncom.googlecode.jsu.workflow.function.ClearFieldValuePostFunction
Copy Value From Other Fieldcom.atlassian.jira.workflow.function.issue.CopyValueFromOtherFieldPostFunctioncom.googlecode.jsu.workflow.function.CopyValueFromOtherFieldPostFunction
Update Issue Custom Fieldcom.atlassian.jira.workflow.function.issue.UpdateIssueCustomFieldPostFunctioncom.googlecode.jsu.workflow.function.UpdateIssueCustomFieldPostFunction

Mapping between Jira Cloud Modules TO JSU Server


The following description describes all the attributes which need to be mapped between the Jira Cloud and Jira Server Workflow functionality.

Condition Mapping: User Is In Any Group

Arg Name: Jira CloudArg Name: Jira Server
grouphidGroupsList (each group is separated by @@ and requires a @@ at the end)

Example

<condition type="class">
  <arg name="class.name">com.atlassian.jira.workflow.condition.UserInAnyGroupCondition</arg>
  <arg name="group">administrators@@</arg>
</condition>

Example

<condition type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.condition.UserIsInAnyGroupsCondition</arg>
  <arg name="hidGroupsList">jira-developers@@</arg>
</condition>


Condition Mapping:

Arg Name: Jira CloudArg Name: Jira Server
projectRoleIdshidRolesList (each group is separated by @@ and requires a @@ at the end and groups required to be mapped between id to group name)

Example

<condition type="class">
  <arg name="class.name">com.atlassian.jira.workflow.condition.InAnyProjectRoleCondition</arg>
  <arg name="projectRoleIds">10101@@</arg>
</condition>


Example

<condition type="class">
  <arg name="class.name">com.googlecode.jsu.workflow.condition.UserIsInAnyRolesCondition</arg>
  <arg name="hidRolesList">Developers@@</arg>
</condition>


Condition Mapping: User Is In Custom Field

All argument names are the same between Jira Cloud and Jira Server.

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>


Condition Mapping: Value Field

All argument names are the same between Jira Cloud and Jira Server.

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>

Validator Mapping: Date Compare Validator

The Jira Cloud 'Date Compare Validator' combines 2 JSU Date Compare Validators which are:

  • Date Compare Validator (compareTypeField = true)
  • Date Expression Compare Validator (compareTypeField = false)

which of the 2 Validators to use is defined by the Jira Cloud argument name 'compareTypeField'

Date Compare Validator

All argument names are the same between Jira Cloud and Jira Server. Argument

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>

Date Expression Compare Validator

Arg Name: Jira CloudArg Name: Jira Server
compareTypeField  (must be false to map to the 'Date Expression Compare Validator')not required for Jira Server.
conditionSelectedconditionSelected
includeTimeSelectedincludeTimeSelected
date1Selecteddate1Selected
expressionexpressionSelected

Example

<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>

Example

<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>

Validator Mapping: Date Window Validator

All argument names are the same between Jira Cloud and Jira Server.

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>

Validator Mapping: Field Required Validator

Arg Name: Jira CloudArg Name: Jira Server
hidFieldsListhidFieldsList
contextHandlingcontextHandling
errorMessagecustomErrorMessage-textValue

Example

<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>

Example

<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>

Validator Mapping: Regular Expression Check

All argument names are the same between Jira Cloud and Jira Server.

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>

Post-Function Mapping: Clear Field Value

All argument names are the same between Jira Cloud and Jira Server.

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>

Post-Function Mapping: Copy Value From Other Field

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>

Post-Function Mapping: Update Issue Custom Field

All argument names are the same between Jira Cloud and Jira Server.

Arg Name: Jira CloudArg Name: Jira Server

Example

<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>

Example

<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>