Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.

Info

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.

...

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

...

Post-Function Mapping: Clear Field Value (JSU)

Arg Name: JSU CloudArg Name: JSU Server

Example

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

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

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

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

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

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

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

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

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

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

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

Code Block
  <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.

...

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

...