Process Step Definitions
See also: For process commands, file structure, termination events, and process configurations, see Process as Configuration.
Most of the process steps are explained in https://www.ibm.com/docs/en/devops-deploy/8.0.1?topic=processes-process-steps-reference
Plugin Step
The most common step and ubiquitously found step type in Devops Deploy processes. It can submit different types of plugin based on the name of the plugin and the command the plugin has in it.
Syntax
json5{ "<Name of the step>": { "type": "plugin", "plugin": "<plugin-name>", "command": "<plugin-command-name>", "postProcessingScript": { "name": "<post-processing-script-name>", "body": "<scriptFile/post-processing-script-name.txt>" }, "properties": { "<plugin-property-1>": "<plugin-property-value-1>", "<plugin-property-2>": "<plugin-property-value-2>", . . . "<plugin-property-n>": "<plugin-property-n>" }, "on": { "success": { "start": [ "<name of the next step>" ] }, "failure": { "start" : [ "<name of the next step-1>", "<name of the next step-2>", ] } } } }yaml"<Name of the step>": type: "plugin" plugin: "<plugin-name>" command: "<plugin-command-name>" postProcessingScript: name: "MyScript" body: "<scriptFile/MyScript.txt>" properties: "<plugin-property-1>": "<plugin-property-value-1>" "<plugin-property-2>": "<plugin-property-value-2>" # ... "<plugin-property-n>": "<plugin-property-n>" on: success: start: - "<name of the next step>" failure: start: - "<name of the next step-1>" - "<name of the next step-2>"Example
json5{ "Download Artifacts for zOS": { "type": "plugin", "plugin": "UrbanCode Deploy Versioned File Storage", "command": "Download Artifacts for zOS", "postProcessingScript": { "name": "MyScript", "body": "scriptFile/MyScript.txt" }, "properties": { "directoryOffset": ".", "versionId": "${p:version.id}", "versionName": "${p:version.name}", "serverUrl": "${p:server.url}", "compId": "${p:component.id}", "repositoryType": "${p?:version\/ucd.repository.type}", "resourceId": "${p:resource.id}", "maxMemory": "1G" }, "on": { "success": { "start": [ "c14c031a12ebca72796dbdca98fec0" ] } } } }yaml"Download Artifacts for zOS": type: "plugin" plugin: "UrbanCode Deploy Versioned File Storage" command: "Download Artifacts for zOS" postProcessingScript: name: "MyScript" body: "scriptFile/MyScript.txt" properties: directoryOffset: "." versionId: "${p:version.id}" versionName: "${p:version.name}" serverUrl: "${p:server.url}" compId: "${p:component.id}" repositoryType: "${p?:version/ucd.repository.type}" resourceId: "${p:resource.id}" maxMemory: "1G" on: success: start: - "c14c031a12ebca72796dbdca98fec0"
Run Generic Process Step
Step is available in all types of processes and is used to trigger another generic process
Structure
Syntax
json5{ "<Name of the step>": { "type": "run-generic-process", "process": "<generic process to execute>", "resource-path": "${p:resource.path}", "ignore-child-warnings": false, "on": { "success": { "start": [ "<name of the next step>" ] }, "failure": { "start" : [ "<name of the next step-1>", "<name of the next step-2>", ] } } }yaml"<Name of the step>": type: "run-generic-process" process: "<generic process to execute>" resource-path: "${p:resource.path}" ignore-child-warnings: false on: success: start: - "<name of the next step>" failure: start: - "<name of the next step-1>" - "<name of the next step-2>"
Example
json5{ "RUN-GENERIC-PROCESS": { "type": "run-generic-process", "process": "REXX", "resource-path": "${p:resource.path}", "ignore-child-warnings": false, "on": { "success": { "finish": "" } } } }yamlRUN-GENERIC-PROCESS: type: "run-generic-process" process: "REXX" resource-path: "${p:resource.path}" ignore-child-warnings: false on: success: finish: ""
Run application component step
- This step is applicable within an application process to trigger another component process.
- The called component process should be already defined to prevent unexpected behaviour.
Syntax
json5{ "<name of the step>": { "type": "application-run-component-process", "component": "<component-name>", "process": "<process name in the component>", "select-resources-by-tag": "<resources tag uuid>", // optional "select-resources-by-changed-component-list": { // optional "components": [ "<list of components separated by comma>" ], "select-resources": ["with-changed-component | ALL"] }, "runOnlyOnFirst":false, // optional "failFast":false, // optional "maxIteration":"-1", // optional "isIgnoreChildWarnings":false, // optional "on": { "success": { "finish": "" } } } }yaml"<name of the step>": type: "application-run-component-process" component: "<component-name>" process: "<process name in the component>" select-resources-by-tag: "<resources tag uuid>" # optional select-resources-by-changed-component-list: # optional components: - "<list of components separated by comma>" select-resources: - "with-changed-component" - "ALL" runOnlyOnFirst: false # optional failFast: false # optional maxIteration: "-1" # optional isIgnoreChildWarnings: false # optional on: success: finish: ""Example-1
json5{ "run-component-PAC-COMP": { "type": "application-run-component-process", "component": "PAC-COMP", "process": "deploy-war-to-server", "runOnlyOnFirst":false, "failFast":false, "maxIteration":"-1", "isIgnoreChildWarnings":false, "on": { "success": { "finish": "" } } } }yamlrun-component-PAC-COMP: type: "application-run-component-process" component: "PAC-COMP" process: "deploy-war-to-server" runOnlyOnFirst: false failFast: false maxIteration: "-1" isIgnoreChildWarnings: false on: success: finish: ""Example-2 : with minimal fields
json5{ "run-component-PAC-COMP": { "type": "application-run-component-process", "component": "PAC-COMP", "process": "deploy-war-to-server", "on": { "success": { "finish": "" } } } }yamlrun-component-PAC-COMP: type: "application-run-component-process" component: "PAC-COMP" process: "deploy-war-to-server" on: success: finish: ""
Component Run Component Process
- This step is applicable within a component process to trigger another component process.
- The callee component process should be already defined to prevent unexpected behaviour.
Syntax
json5{ "<name of the step>": { "type": "component-run-component-process", "process": "<name of the component process>", "on": { "success": { "finish": "" } } } }yaml"<name of the step>": type: "component-run-component-process" process: "<name of the component process>" on: success: finish: ""
Example
json5{ "run-a-component-process": { "type": "component-run-component-process", "process": "DEPLOY-ARTIFACT-COMPONENT-PROCESS", "on": { "success": { "finish": "" } } } }yamlrun-a-component-process: type: "component-run-component-process" process: "DEPLOY-ARTIFACT-COMPONENT-PROCESS" on: success: finish: ""
Acquire Lock Step
- This step acquires a lock on a specified string value. You can use locks to prevent concurrent modification of resources.
- To release the lock, use the Release lock step. Also, locks are released automatically when the process finishes.
- This step applies to application processes, component processes, and generic processes.
Syntax
json5{ "<name of the step>": { "type": "acquire-lock", "lock": "<lock-expression>", "on": { "success": { "start": [ "<next step>" ] } } } }yaml"<name of the step>": type: "acquire-lock" lock: "<lock-expression>" on: success: start: - "<next step>"
Example
json5{ "acquire-lock-on-component-resource": { "type": "acquire-lock", "lock": "${p:component.name}-${p:componentProcess.name}-${p:resource.name}", "on": { "success": { "start": ["RUN-DB-UPGRADE-STEP"] } } } }yamlacquire-lock-on-component-resource: type: "acquire-lock" lock: "${p:component.name}-${p:componentProcess.name}-${p:resource.name}" on: success: start: - "RUN-DB-UPGRADE-STEP"
Release Lock Step
- This step releases a lock on a specified string value.
- This step applies to application processes, component processes, and generic processes.
Syntax
json5{ "<name of the step>": { "type": "release-lock", "lock": "<lock-expression>", "on": { "success": { "start": [ "<next step>" ] } } } }yaml"<name of the step>": type: "release-lock" lock: "<lock-expression>" on: success: start: - "<next step>"Example
json5{ "release-lock-on-component-resource": { "type": "release-lock", "lock": "${p:component.name}-${p:componentProcess.name}-${p:resource.name}", "on": { "success": { "start": [ "DEPLOY-JAR-STEP" ] } } } }yamlrelease-lock-on-component-resource: type: "release-lock" lock: "${p:component.name}-${p:componentProcess.name}-${p:resource.name}" on: success: start: - "DEPLOY-JAR-STEP"
Switch Step
- At least 1 case is required in the switch step
- Evaluate is a mandatory field that should have a property which will resolve to a case
- Applications, components, and generic processes share some process steps.
Syntax
json5{ "<name of the step>" : { "type": "switch", "evaluate": "<property that evaluates to a switch case>", "case": { "<case-1>": { "start": [ "<next-step>", "<another-step>" ] }, "<case-2>": { "start": [ "<some-other-step>" ] }, "DEFAULT": { // optional "start": ["<default-step>" ] } } } }yaml"<name of the step>": type: "switch" evaluate: "<property that evaluates to a switch case>" case: "<case-1>": start: - "<next-step>" - "<another-step>" "<case-2>": start: - "<some-other-step>" DEFAULT: # optional start: - "<default-step>"Example
json5{ "Run Necessary Shell based on Request property" : { "type": "switch", "evaluate": "${p:AppProcessRequestProperty}", "case": { "1": { "start": [ "Shell-launch-server", "Shell-start-app" ] }, "2": { "start": [ "Shell-start-service" ] }, "DEFAULT": { "start": [ "shell-say-goodbye" ] } } } }yaml"Run Necessary Shell based on Request property": type: "switch" evaluate: "${p:AppProcessRequestProperty}" case: "1": start: - "Shell-launch-server" - "Shell-start-app" "2": start: - "Shell-start-service" DEFAULT: start: - "shell-say-goodbye"
Add inventory step
- This step applies only to component processes.
- The component resource that the process is running against will have an inventory entry created for it with the specified status.
- Status is mandatory field
Syntax
json5{ "<name of the step>" : { "type": "add-inventory-status", "status": "<desired-inventory-status>", "on": { "success": { "start": [ "<next-step>" ] } } } }yaml"<name of the step>": type: "add-inventory-status" status: "<desired-inventory-status>" on: success: start: - "<next-step>"Example
json5{ "add-active-status-to-inventory": { "type": "add-inventory-status", "status": "Active", "on": { "success": { "start": [ "shell-step" ] } } } }yamladd-active-status-to-inventory: type: "add-inventory-status" status: "Active" on: success: start: - "shell-step"
Remove Inventory Step
- This step applies only to component processes.
- The component resource that the process is running against will have an inventory entry removed from it.
- status is mandatory
Syntax
json5{ "<name of the step>" : { "type": "remove-inventory-status", "status": "<inventory-status>", "on": { "success": { "start": "<next-step>" } } } }yaml"<name of the step>": type: "remove-inventory-status" status: "<inventory-status>" on: success: start: "<next-step>"Example
json5{ "Remove version status":{ "type": "remove-inventory-status", "status": "active", "on": { "success": { "start": "shell-step" } } } }yamlRemove version status: type: "remove-inventory-status" status: "active" on: success: start: "shell-step"
Add warning Step
- message is mandatory
Syntax
json5{ "<name of the step>" : { "type": "add-process-warning", "message": "Warning message here..", "on": { "success": { "start": [ "<next-step>" ] } } } }yaml"<name of the step>": type: "add-process-warning" message: "Warning message here.." on: success: start: - "<next-step>"
Example
json5{ "warning about some stuff in process": { "type": "add-process-warning", "message": "Step may not have worked", "on": { "success": { "start": [ "install-web-component" ] } } } }yamlwarning about some stuff in process: type: "add-process-warning" message: "Step may not have worked" on: success: start: - "install-web-component"
Join step
The Join step merges a process so that only 1 step runs at a time.
If any of the steps that connect to a Join step fail or do not run, the Join step causes the process to fail.
This step applies to application processes, component processes, and generic processes.
Syntax
json5{ "<name of the step>": { "type": "join", "on": { "finish": "" } } }yaml"<name of the step>": type: "join" on: finish: ""
Example
json5{ "join-step-1": { "type": "join", "on": { "finish": "" } } }yaml"<name of the step>": type: "join" on: finish: ""
Application Manual task step
- This step applies to application processes, component processes, and generic processes.
- When Deploying user or Role Restriction is not defined in JSON, then ANY-USER can approve the task
- When multiple approvals are given deploying-user takes precedence over 'role-restrictions' and 'any-user' takes last precedence
- When deployingUserOnly is set to false or not provided and roleRestrictionData is empty or not provided then 'any-user' can approve the task
Syntax
json5{ "<name of the step>": { "type": "application-manual-task", "deployingUserOnly": "true|false", "roleRestrictionData": { "roleRestrictions": [] }, "notification-template": "<an existing template>", "on": { "success": { "start": [ "<next step>" ] } } } }yaml"<name of the step>": type: "application-manual-task" deployingUserOnly: "true|false" roleRestrictionData: roleRestrictions: [] notification-template: "<an existing template>" on: success: start: - "<next step>"Example
json5{ "AUTOMATION-ENGINEER-APPROVAL": { "type": "application-manual-task", "deployingUserOnly": "false", "roleRestrictionData": { "contextType": "ENVIRONMENT", "roleRestrictions": [ "Automation Engineer" ] }, "notification-template": "TaskCreated", "on": { "success": { "start": [ "INSTALL-WEB-COMPONENT" ] } } } }yamlAUTOMATION-ENGINEER-APPROVAL: type: "application-manual-task" deployingUserOnly: "false" roleRestrictionData: contextType: "ENVIRONMENT" roleRestrictions: - "Automation Engineer" notification-template: "TaskCreated" on: success: start: - "INSTALL-WEB-COMPONENT"
Run operational process for multiple components
- This step applies only to application processes, including application processes that are associated with application templates.
Syntax
json5{ "<name of the step>": { "type": "run-operational-process-for-multiple-components", "name": "<name of the step>", "process": "<name of the component process>", "select-components-by-tag": "<uuid of the component tag>", "select-resources-by-tag": "<uuid of the resource tag>", "fail-fast": false,// boolean "ignore-child-warnings": false,// boolean "run-on-first-online-resource-only": false, // boolean "max-concurrent-processes": "[unlimited | a positive integer]", "max-concurrent-components": "[unlimited | a positive integer]", "precondition-script": "\"TRUE\"", "on": { "success": { "finish": "" } } } }yaml"<name of the step>": type: "run-operational-process-for-multiple-components" name: "<name of the step>" process: "<name of the component process>" select-components-by-tag: "<uuid of the component tag>" select-resources-by-tag: "<uuid of the resource tag>" fail-fast: false ignore-child-warnings: false run-on-first-online-resource-only: false max-concurrent-processes: "[unlimited | a positive integer]" max-concurrent-components: "[unlimited | a positive integer]" precondition-script: "\"TRUE\"" on: success: finish: ""Example-1
json5{ "OPERATIONAL-PROCESS-FOR-COMPONENTS": { "type": "run-operational-process-for-multiple-components", "name": "OPERATIONAL-PROCESS-FOR-COMPONENTS", "process": "DEPLOY", "select-components-by-tag": "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e", // tag id "select-resources-by-tag": "18fbe8da-3fd0-8fa3-1487-baa0fc330049", // tag id "fail-fast": true, "ignore-child-warnings": true, "run-on-first-online-resource-only": false, "max-concurrent-processes": "unlimited", "max-concurrent-components": "100", "precondition-script": "\"TRUE\"", "on": { "success": { "finish": "" } } } }yamlOPERATIONAL-PROCESS-FOR-COMPONENTS: type: "run-operational-process-for-multiple-components" name: "OPERATIONAL-PROCESS-FOR-COMPONENTS" process: "DEPLOY" select-components-by-tag: "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e" # tag id select-resources-by-tag: "18fbe8da-3fd0-8fa3-1487-baa0fc330049" # tag id fail-fast: true ignore-child-warnings: true run-on-first-online-resource-only: false max-concurrent-processes: "unlimited" max-concurrent-components: "100" precondition-script: "\"TRUE\"" on: success: finish: ""Example-2
json5{ "OPERATIONAL-PROCESS-FOR-COMPONENTS": { "type": "run-operational-process-for-multiple-components", "process": "DEPLOY", "fail-fast": true, "ignore-child-warnings": true, "run-on-first-online-resource-only": false, "max-concurrent-processes": "unlimited", "max-concurrent-components": "unlimited", "on": { "success": { "finish": "" } } } }yamlOPERATIONAL-PROCESS-FOR-COMPONENTS: type: "run-operational-process-for-multiple-components" process: "DEPLOY" fail-fast: true ignore-child-warnings: true run-on-first-online-resource-only: false max-concurrent-processes: "unlimited" max-concurrent-components: "unlimited" on: success: finish: ""
Rollback Multiple Components step
- Use this step to roll back multiple component versions to versions in a snapshot or to versions that were deployed when the process began. The multiple components are based on component tags or resource tags.
- This step applies only to application processes, including application processes that are associated with application templates.
Syntax
json5{ "<name of the step>": { "type": "rollback-multiple-components", "process": "<name of the component process>", "rollback-type": "[remove-undesired-incremental-versions | replace-with-last-deployed]", "select-versions-with-inventory-status": "<a valid version inventory status, usually it is set as ACTIVE>", "select-components-by-tag": "<component tag>", "fail-fast": "true | false", "ignore-child-warnings": "true | false", "max-concurrent-processes": "[unlimited | a positive integer]", "max-concurrent-components": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "rollback-multiple-components" process: "<name of the component process>" rollback-type: "[remove-undesired-incremental-versions | replace-with-last-deployed]" select-versions-with-inventory-status: "<a valid version inventory status, usually it is set as ACTIVE>" select-components-by-tag: "<component tag>" fail-fast: "[true | false]" ignore-child-warnings: "[true | false]" max-concurrent-processes: "[unlimited | a positive integer]" max-concurrent-components: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "rollback multiple steps": { "type": "rollback-multiple-components", "process": "ROLLBACK-VERSION", "rollback-type": "remove-undesired-incremental-versions", "select-versions-with-inventory-status": "Active", "select-components-by-tag": "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e", // tag id "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "max-concurrent-components": "100", "on": { "success": { "finish": "" } } } }yamlrollback multiple steps: type: "rollback-multiple-components" process: "ROLLBACK-VERSION" rollback-type: "remove-undesired-incremental-versions" select-versions-with-inventory-status: "Active" select-components-by-tag: "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e" # tag id fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" max-concurrent-components: "100" on: success: finish: ""
Rollback Component
This step applies only to application processes.
Syntax
json5{ "<name of the step>": { "type": "rollback-component", "component": "<component name>", "process": "<component process name>", "rollback-type": "[remove-undesired-incremental-versions | replace-with-last-deployed]", "select-versions-with-inventory-status": "<a valid version inventory status, usually it is set as ACTIVE>", "fail-fast": false, // boolean "ignore-child-warnings": "true | false", "max-concurrent-processes": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "rollback-component" component: "<component name>" process: "<component process name>" rollback-type: "[remove-undesired-incremental-versions | replace-with-last-deployed]" select-versions-with-inventory-status: "<a valid version inventory status, usually it is set as ACTIVE>" fail-fast: false ignore-child-warnings: "<true | false>" max-concurrent-processes: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "Rollback PAC-COMP": { "type": "rollback-component", "component": "PAC-COMP", "process": "DEPLOY-MYCOMP", "rollback-type": "remove-undesired-incremental-versions", "select-versions-with-inventory-status": "Active", "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "properties": { "allowFailure": "false", "isIgnoreChildWarnings": "false", }, "on": { "success": { "finish": "" } } } }yamlRollback PAC-COMP: type: "rollback-component" component: "PAC-COMP" process: "DEPLOY-MYCOMP" rollback-type: "remove-undesired-incremental-versions" select-versions-with-inventory-status: "Active" fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" properties: allowFailure: "false" isIgnoreChildWarnings: "false" on: success: finish: ""
Uninstall Component
- Applications, components, and generic processes share some process steps. This step applies only to application processes.
Syntax
json5{ "<name of the step>": { "type": "uninstall-component", "component": "<component name>", "process": "<uninstall process name>", "select-versions": "[selected-with-process | all-versions]", "select-versions-with-inventory-status": "<version status in inventory usually set to ACTIVE>", "fail-fast": "true | false", "ignore-child-warnings": "true | false", "max-concurrent-processes": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "uninstall-component" component: "<component name>" process: "<uninstall process name>" select-versions: "[selected-with-process | all-versions]" select-versions-with-inventory-status: "<version status in inventory usually set to ACTIVE>" fail-fast: "true | false" ignore-child-warnings: "true | false" max-concurrent-processes: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "Uninstall-PAC-COMP": { "type": "uninstall-component", "component": "PAC-COMP", "process": "ROLLBACK", "select-versions": "selected-with-process", "select-versions-with-inventory-status": "Active", "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "properties": { "allowFailure": "false", "isIgnoreChildWarnings": "false", }, "on": { "success": { "finish": "" } } } }yamlUninstall-PAC-COMP: type: "uninstall-component" component: "PAC-COMP" process: "ROLLBACK" select-versions: "selected-with-process" select-versions-with-inventory-status: "Active" fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" properties: allowFailure: "false" isIgnoreChildWarnings: "false" on: success: finish: ""
Uninstall Multiple Components
- This step applies only to application processes, including application processes that are associated with application templates
Syntax
json5{ "<name of the step>": { "type": "uninstall-multiple-components", "process": "<component process name>", "select-versions": "[selected-with-process | all-versions]", "select-versions-with-inventory-status": "<version status in inventory usually set to ACTIVE>", "select-components-by-tag": "<uuid of the component tag>", "select-resources-by-tag": "<uuid of the resources tag>", "fail-fast": "true | false", "ignore-child-warnings": "true | false", "max-concurrent-processes": "[unlimited | a positive integer]", "max-concurrent-components": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "uninstall-multiple-components" process: "<component process name>" select-versions: "[selected-with-process | all-versions]" select-versions-with-inventory-status: "<version status in inventory usually set to ACTIVE>" select-components-by-tag: "<uuid of the component tag>" select-resources-by-tag: "<uuid of the resources tag>" fail-fast: "true | false" ignore-child-warnings: "true | false" max-concurrent-processes: "[unlimited | a positive integer]" max-concurrent-components: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "uninstall-multiple-components": { "type": "uninstall-multiple-components", "process": "REMOVE-VERSION", "select-versions": "selected-with-process", "select-versions-with-inventory-status": "Active", "select-components-by-tag": "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e", //tag id "select-resources-by-tag": "18fbe8da-3fd0-8fa3-1487-baa0fc330049", // tag id "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "[unlimited | a positive integer]", "max-concurrent-components": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yamluninstall-multiple-components: type: "uninstall-multiple-components" process: "REMOVE-VERSION" select-versions: "selected-with-process" select-versions-with-inventory-status: "Active" select-components-by-tag: "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e" # tag id select-resources-by-tag: "18fbe8da-3fd0-8fa3-1487-baa0fc330049" # tag id fail-fast: false ignore-child-warnings: false max-concurrent-processes: "[unlimited | a positive integer]" max-concurrent-components: "[unlimited | a positive integer]" on: success: finish: ""
Install Component
- This step applies only to application processes.
Syntax
json5{ "<name of the step>" : { "type": "install-component", "component": "<component name>", "process": "<component process name>", "select-versions-without-inventory-status": "<version status in inventory usually set to ACTIVE>", "select-resources-by-tag": "<uuid of the resource tag>", "fail-fast": false, // boolean "ignore-child-warnings": false, // boolean "max-concurrent-processes": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "install-component" component: "<component name>" process: "<component process name>" select-versions-without-inventory-status: "<version status in inventory usually set to ACTIVE>" select-resources-by-tag: "<uuid of the resource tag>" fail-fast: false # boolean ignore-child-warnings: false # boolean max-concurrent-processes: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "Install PAC-COMP": { "type": "install-component", "component": "PAC-COMP", "process": "DEPLOY-MYCOMP", "select-versions-without-inventory-status": "Active", "select-resources-by-tag": "18fbe8da-3fd0-8fa3-1487-baa0fc330049", "fail-fast": false, "ignore-child-warnings": true, "max-concurrent-processes": "unlimited", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "install-component" component: "<component name>" process: "<component process name>" select-versions-without-inventory-status: "<version status in inventory usually set to ACTIVE>" select-resources-by-tag: "<uuid of the resource tag>" fail-fast: false # boolean ignore-child-warnings: false # boolean max-concurrent-processes: "[unlimited | a positive integer]" on: success: finish: ""
Install Multiple Components
- his step applies only to application processes, including application processes that are associated with application templates.
Syntax
json5{ "<name of the step>": { "type": "install-multiple-components", "process": "<component process>", "select-versions-without-inventory-status": "<version status in inventory usually set to ACTIVE>", "select-components-by-tag": "<uuid of the component tag>", // optional "select-resources-by-tag": "<uuid of the resource tag>", // optional "fail-fast": "true | false", "ignore-child-warnings": "true | false", "max-concurrent-processes": "[unlimited | a positive integer]", "max-concurrent-components": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "install-multiple-components" process: "<component process>" select-versions-without-inventory-status: "<version status in inventory usually set to ACTIVE>" select-components-by-tag: "<uuid of the component tag>" # optional select-resources-by-tag: "<uuid of the resource tag>" # optional fail-fast: "<true | false>" ignore-child-warnings: "<true | false>" max-concurrent-processes: "<unlimited | a positive integer>" max-concurrent-components: "<unlimited | a positive integer>" on: success: finish: ""Example
json5{ "install-multiple components": { "type": "install-multiple-components", "process": "install-version", "select-versions-without-inventory-status": "Active", "select-components-by-tag": "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e", // tag id "select-resources-by-tag": "18fbe8da-3fd0-8fa3-1487-baa0fc330049", // tag id "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "max-concurrent-components": "100", "on": { "success": { "finish": "" } } } }yamlinstall-multiple components: type: "install-multiple-components" process: "install-version" select-versions-without-inventory-status: "Active" select-components-by-tag: "18f4db6a-3bd2-49eb-e7fb-54bf51ab515e" # tag id select-resources-by-tag: "18fbe8da-3fd0-8fa3-1487-baa0fc330049" # tag id fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" max-concurrent-components: "100" on: success: finish: ""
Run process for each version
- This step applies only to application processes, including application processes that are associated with application templates.
Syntax
json5{ "<name o the step>": { "type": "run-process-for-each-version", "component": "<component name>", "process": "<process name>", "fail-fast": "true | false", "ignore-child-warnings": "true | false", "run-on-first-online-resource-only": false ,// boolean "max-concurrent-processes": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "run-process-for-each-version" component: "<component name>" process: "<process name>" fail-fast: "true | false" ignore-child-warnings: "true | false" run-on-first-online-resource-only: false # boolean max-concurrent-processes: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "Run process for each version": { "type": "run-process-for-each-version", "component": "PAC-COMP", "process": "DEPLOY-MYCOMP", "fail-fast": false, "ignore-child-warnings": false, "run-on-first-online-resource-only": false, "max-concurrent-processes": "unlimited", "on": { "success": { "finish": "" } } } }yamlRun process for each version: type: "run-process-for-each-version" component: "PAC-COMP" process: "DEPLOY-MYCOMP" fail-fast: false ignore-child-warnings: false run-on-first-online-resource-only: false max-concurrent-processes: "unlimited" on: success: finish: ""
Run process for each agent
- This step applies only to application processes, including application processes that are associated with application templates.
- A whole process is contained within this step which has its own start and finish steps.
Syntax
json5{ "<name of the step>": { "type": "for-each-agent", "child-process": "<process json that has to run on each agent>", "tag": [], // zero or more tag ids within quotes separated by comma "max-concurrent-agents": "[unlimited | a positive integer]", "on": { "success": { "start": [ "step-1" ] } } } }yaml<name of the step>: type: "for-each-agent" child-process: "<process json that has to run on each agent>" tag: [] # zero or more tag ids within quotes separated by comma max-concurrent-agents: "[unlimited | a positive integer]" on: success: start: - "step-1"Example
json5{ "APPLY-CONFIG-TOAGENT": { "type": "for-each-agent", "child-process": { "start": { "type": "start", "start": [ "APPLY CONFIG TO AGENT" ] }, "APPLY CONFIG TO AGENT": { "type": "apply-configuration", "component": "PAC-COMP", "process": "LESS-COMPREHENSIVE-PROCESS", "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "properties": { "allowFailure": "false", "activity.componentProcess.id": "19125c59-269d-43dd-4010-d6d0abc3ebad", "isIgnoreChildWarnings": "false", "activity.component.id": "19125ba9-b2b6-6b45-d6f7-9a97f4adb386" }, "on": { "success": { "finish": "" } } } }, "tag": [], "max-concurrent-agents": "unlimited", "on": { "success": { "start": [ "step-1" ] } } } }yamlAPPLY-CONFIG-TOAGENT: type: "for-each-agent" child-process: start: type: "start" start: - "APPLY CONFIG TO AGENT" APPLY CONFIG TO AGENT: type: "apply-configuration" component: "PAC-COMP" process: "LESS-COMPREHENSIVE-PROCESS" fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" properties: allowFailure: "false" activity.componentProcess.id: "19125c59-269d-43dd-4010-d6d0abc3ebad" isIgnoreChildWarnings: "false" activity.component.id: "19125ba9-b2b6-6b45-d6f7-9a97f4adb386" on: success: finish: "" tag: [] max-concurrent-agents: "unlimited" on: success: start: - "step-1"Run process for each resource
- Syntax
json5{ "RESOURCE-TAG": { "type": "for-each-resource-tag", "child-process": "<process json for child process>", "tag": [ "<tag>" ], "max-concurrent-tags": "1", "on": { "success": { "start": [ "<another step>" ] } } } }yamlRESOURCE-TAG: type: "for-each-resource-tag" child-process: "<process json for child process>" tag: - "<tag>" max-concurrent-tags: "1" on: success: start: - "<another step>"Example
json5{ "RESOURCE-TAG": { "type": "for-each-resource-tag", "child-process": { "start": { "type": "start", "start": [ "APPLY CONFIG TO RESOURCE" ] }, "APPLY CONFIG TO RESOURCE": { "type": "apply-configuration", "component": "PAC-COMP", "process": "LESS-COMPREHENSIVE-PROCESS", "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "on": { "success": { "finish": "" } } } }, "tag": [ "18fbe8da-3fd0-8fa3-1487-baa0fc330049" // tag ids ], "max-concurrent-tags": "1", "on": { "success": { "start": [ "adac686c3f11c4a23984edf190bb0f" ] } } } }yamlRESOURCE-TAG: type: "for-each-resource-tag" child-process: start: type: "start" start: - "APPLY CONFIG TO RESOURCE" APPLY CONFIG TO RESOURCE: type: "apply-configuration" component: "PAC-COMP" process: "LESS-COMPREHENSIVE-PROCESS" fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" on: success: finish: "" tag: - "18fbe8da-3fd0-8fa3-1487-baa0fc330049" # tag ids max-concurrent-tags: "1" on: success: start: - "adac686c3f11c4a23984edf190bb0f"
Apply Configuration step
- This step applies only to application processes.
- This step runs a component process of the type Operational (No Version Needed) or Configuration Deployment.
Syntax
json5{ "<name of the step>": { "type": "apply-configuration", "component": "<component name>", "process": "<component process name>", "fail-fast": false, // boolean value "ignore-child-warnings": false, // boolean value "max-concurrent-processes": "[unlimited | a positive integer]", "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "apply-configuration" component: "<component name>" process: "<component process name>" fail-fast: false # boolean value ignore-child-warnings: false # boolean value max-concurrent-processes: "[unlimited | a positive integer]" on: success: finish: ""Example
json5{ "Apply-config-operation": { "type": "apply-configuration", "component": "PAC-COMP", "process": "LESS-COMPREHENSIVE-PROCESS", "fail-fast": false, "ignore-child-warnings": false, "max-concurrent-processes": "unlimited", "on": { "success": { "finish": "" } } } }yamlApply-config-operation: type: "apply-configuration" component: "PAC-COMP" process: "LESS-COMPREHENSIVE-PROCESS" fail-fast: false ignore-child-warnings: false max-concurrent-processes: "unlimited" on: success: finish: ""
Generic Manual step
Syntax
json{ "<name of the step>": { "type": "generic-manual-task", "restrict-approval-to": { "[ deploying-user | identities ]": { "users": [ "<user-1>", "<user-n>"], "groups": ["<group-1>"] } }, "notification-template": "TaskCreated", "comment-required": false, "on": { "success": { "finish": "" } } } }yaml<name of the step>: type: "generic-manual-task" restrict-approval-to: "[ deploying-user | identities ]": users: - "<user-1>" - "<user-n>" groups: - "<group-1>" notification-template: "TaskCreated" comment-required: false on: success: finish: ""
- When the approval restriction is set to "deploying-user" not value is required for that field
- Apart from setting approval to "deploying-user", one may also choose selected users or groups of a combination of both
Example-1 with approval restricted to 'deploying user'
json5{ "MANUAL-TASKS": { "type": "generic-manual-task", "restrict-approval-to": { "deploying-user": "" }, "notification-template": "TaskCreated", "comment-required": false, "on": { "success": { "finish": "" } } } }yamlMANUAL-TASKS: type: "generic-manual-task" restrict-approval-to: deploying-user: "" notification-template: "TaskCreated" comment-required: false on: success: finish: ""Example-2 with approval restricted to identities
In this example the restriction is set to users 'deploy', 'admin' and group 'Administrators'.
json5{ "MANUAL-TASKS": { "type": "generic-manual-task", "restrict-approval-to": { "identities": { "users": [ "deploy", "admin" ], "groups": [ "Administrators" ] } } } }yamlMANUAL-TASKS: type: "generic-manual-task" restrict-approval-to: identities: users: - "deploy" - "admin" groups: - "Administrators"
Example-3 with property definitions
json5{ "MANUAL-TASKS": { "type": "generic-manual-task", "restrict-approval-to": { "identities": { "users": [ "deploy", "admin" ], "groups": [ "Administrators" ] } }, "notification-template": "TaskCreated", "comment-required": true, "comment-prompt": "HEY,APPROVE THIS", "property-definition": [ { "property-name": "TEXT-PROPERTY", "property-type": "text", "label": "DUMMY-LABEL", "description": "DUMMY-DESCRIPTION", "default": "TEXT-VALUE" }, { "property-name": "TEXT-AREA-PROPERTY", "property-type": "text-area", "label": "TEXT-AREA-LABEL", "description": "TEXT-AREA-DESCRIPTION", "required": true, "default": "HEY-HEY" }, { "property-name": "CHECKBOX-PROPERTY", "property-type": "checkbox", "label": "CHECKBOX-LABEL", "description": "CHECKBOX-DESCRIPTION", "default": true }, { "property-name": "SELECT-PROPERTY", "property-type": "select", "values": [ { "label": "TRUE", "selected": true, "value": "TRUE" }, { "label": "FALSE", "value": "FALSE" } ], "label": "SELECT-LABEL", "description": "SELECT-DESCRIPTION" }, { "property-name": "MULTI-SELECT", "property-type": "multi-select", "values": [ { "label": "START", "selected": true, "value": "START" }, { "label": "FINISH", "value": "FINISH" }, { "label": "COMPLETE", "value": "COMPLETE" } ], "label": "MULTI-SELECT-LABEL", "description": "MULTI-SELECT-DESCRIPTION" }, { "property-name": "SECURE-PROPERTY", // secure properties is unsupported as there is no way to handle encrypt/decrypt secure values "property-type": "secure", "label": "SECURE-LABEL", "description": "SECURE-DESCRIPTION", "default": "****" }, { "property-name": "DATE-TIME-PROPERTY", "property-type": "date-time", "label": "DATE-TIME-PROPERTY-LABEL", "description": "DATE-TIME-PROPERTY-DESCRIPTION", "default": "30/08/2024 19:22" // date time has to be in this format } ], "on": { "success": { "finish": "" } } } }yamlMANUAL-TASKS: type: "generic-manual-task" restrict-approval-to: identities: users: - "deploy" - "admin" groups: - "Administrators" notification-template: "TaskCreated" comment-required: true comment-prompt: "HEY,APPROVE THIS" property-definition: - property-name: "TEXT-PROPERTY" property-type: "text" label: "DUMMY-LABEL" description: "DUMMY-DESCRIPTION" default: "TEXT-VALUE" - property-name: "TEXT-AREA-PROPERTY" property-type: "text-area" label: "TEXT-AREA-LABEL" description: "TEXT-AREA-DESCRIPTION" required: true default: "HEY-HEY" - property-name: "CHECKBOX-PROPERTY" property-type: "checkbox" label: "CHECKBOX-LABEL" description: "CHECKBOX-DESCRIPTION" default: true - property-name: "SELECT-PROPERTY" property-type: "select" values: - label: "TRUE" selected: true value: "TRUE" - label: "FALSE" value: "FALSE" label: "SELECT-LABEL" description: "SELECT-DESCRIPTION" - property-name: "MULTI-SELECT" property-type: "multi-select" values: - label: "START" selected: true value: "START" - label: "FINISH" value: "FINISH" - label: "COMPLETE" value: "COMPLETE" label: "MULTI-SELECT-LABEL" description: "MULTI-SELECT-DESCRIPTION" - property-name: "SECURE-PROPERTY" property-type: "secure" label: "SECURE-LABEL" description: "SECURE-DESCRIPTION" default: "****" - property-name: "DATE-TIME-PROPERTY" property-type: "date-time" label: "DATE-TIME-PROPERTY-LABEL" description: "DATE-TIME-PROPERTY-DESCRIPTION" default: "30/08/2024 19:22" on: success: finish: ""