Creating DevOps subflows
Summarize
Summary of Creating DevOps subflows
ServiceNow customers can create DevOps Workflow Studio subflows within the Flow Designer to automate integrations by collecting and transforming data from various DevOps tools. These subflows use trigger conditions and variables to manage process automation and data passage between actions.
Show less
Key Features
- Notification Capability Subflows: Transform input payloads from different DevOps tools (Planning, Coding, Orchestration, Test, Artifact) into a standardized JSON format for consistent processing. The payloads include key data such as IDs, URLs, descriptions, timestamps, and user details. The version attribute in Planning tool payloads is optional.
- Connect Capability Subflow: Enables connection testing to DevOps tools, returning success flags and error messages. Common errors include connection failures and update issues, which are surfaced on the DevOps tool form for troubleshooting.
- Discover Capability Subflow: Supports retrieving metadata from DevOps tools, outputting JSON payloads representing tools’ artifacts, repositories, pipelines, tasks, or releases. It supports both paginated and non-paginated responses, with pagination details included in the payload when applicable.
- Update Import Request Action: Allows modification of Import Request records’ states within Discover subflows to reflect processing status such as requested, processing, completed, error, paused, canceled, or unmatched. Setting state to processing pauses flow execution until completion.
Practical Use and Benefits
By leveraging these subflows, ServiceNow customers can effectively integrate with various DevOps tools, ensuring consistent data transformation and synchronization across planning, coding, testing, orchestration, and artifact management activities. The standard JSON payload formats facilitate smooth interoperability and easier monitoring of integration statuses. Connect and Discover capabilities provide robust mechanisms to verify tool connectivity and retrieve up-to-date tool data, improving reliability and automation in DevOps workflows.
Overall, these subflows empower integration developers to create reusable, modular flows that streamline DevOps tool integration within ServiceNow, enhancing process automation and data consistency.
For user-created integrations, create a DevOps Workflow Studio subflow to collect and transform data from the tool you are integrating.
ServiceNow Flow Designer is a ServiceNow AI Platform feature your integration developer can use to automate processes using a sequence of actions. Trigger conditions start the flow, and variables pass information between actions.
See Flow Designer Subflows for information on how to create a subflow.
Notification capability subflow
| Item | Expected value |
|---|---|
| Inputs | Label: current Type: Reference.Inbound Event |
Outputs |
N/A |
Transform the original payload, and save the final payload in the transformed_payload field.
- Expected standard JSON Notification capability payload - Planning tool
- Note:The version attribute in the JSON payload is optional. Even if you do not provide the version attribute, the payload is processed successfully.
{ "id": "STR1234", "type": "Story", "shortDescription": "Planning API Spec", "state": "In-progress", "createdDateTime": "1970-01-01T08:15:30-05:00", "assignedTo": { "name": "Leo Neo", "userName": "lenn", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "email": "lenn@smithworksinc.com" }, // The Version attribute is optional "version": { "id": "REL1234", "shortDescription": "APIs Release", "createdDateTime": "1970-01-01T08:15:30-05:00", "app": { "id": "PRODUCT1234", "shortDescription": "Mobile UI", "createdDateTime": "1970-01-01T08:15:30-05:00", "url": "https://jira.com/mycompany/browse/PRODUCT-125" }, "url": "https://jira.com/mycompany/browse/REL-125" }, "app": { "id": "PRODUCT1234", "shortDescription": "Mobile UI", "createdDateTime": "1970-01-01T08:15:30-05:00", "url": "https://jira.com/mycompany/browse/PRODUCT-125" }, "url": "https://jira.com/mycompany/browse/HALOKEY-25" } - Expected standard JSON Notification capability payload - Coding tool
{ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "url": "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6", "committedDate": "1970-01-01T08:15:30-05:00", "repository": { "name": "Platform-Mobile", "url": "https://github.com/mycompany/mobileplatform" }, "branch": { "name": "master", "path": "refs/heads/master" }, "committer": { "email": "lenn@smithworksinc.com" }, "details": [ { "additions": 0, "deletions": 0, "totalChanges": 0, "file": "src/test/java/com/mycompany/app/App.java", "action": "modified", "changes": "%40%40%20-30%2C6%20%2B30%2C18%20%40%40%20public%20void%20testAppConstructor%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%0A%20%0A%2B%20%20%20%20%40Test%0A%2B%20%20%20%20public%20void%20testDatabase%28%29%0A%2B%20%20%20%20%7B%0A%2B%09%2F%2FThis%20is%20a%20test%20function%0A%2B%20%20%20%20%20%20%20%20App.main%28null%29%3B%0A%2B%20%20%20%20%20%20%20%20try%20%7B%0A%2B%20%20%20%20%20%20%20%20%20%20%20%20assertEquals%28%22Hello%20World%21%22%20%2B%20System.getProperty%28%22line.separator%22%29%2C%20outContent.toString%28%29%29%3B%0A%2B%20%20%20%20%20%20%20%20%7D%20catch%20%28AssertionError%20e%29%20%7B%0A%2B%20%20%20%20%20%20%20%20%20%20%20%20fail%28%22%22message%22%20is%20not%20%22Hello%20World%21%22%22%29%3B%0A%2B%20%20%20%20%20%20%20%20%7D%0A%2B%20%20%20%20%7D%0A%2B%0A%20%20%20%20%20%40Test%0A%20%20%20%20%20public%20void%20testAppMain%28%29%0A%20%20%20%20%20%7B" } ] }- Expected standard JSON Notification capability payload - Orchestration tool
{ "toolId": "bc1d9454dbdb0810ae77f3c61d9619d1", "buildNumber": "100", "nativeId": "HILR/Prod #100", "name": "HILR/Prod", "id": "HILR/Prod #100", "url": "https://dev.azure.com/lenn/CorpSite-ADO/_build/results?buildId=100#Prod/", "isMultiBranch": "false", "orchestrationTaskUrl": "https://dev.azure.com/lenn/CorpSite-ADO/_build?name=HILR#Prod", "orchestrationTaskName": "CorpSite-ADO/HILR#Prod", "upstreamTaskUrl": "https://dev.azure.com/lenn/CorpSite-ADO/_build/results?buildId=100#UAT/", "upstreamId": "CorpSite-ADO/HILR#UAT", "result": "building", "startDateTime": "2020-03-20 22:59:27" }- Expected standard JSON Notification capability payload - Test tool
- Functional:
{ "name": "CorpSite-selenium#55", "duration": 78.802, "passedTests": 4, "failedTests": 0, "skippedTests": 0, "blockedTests": 0, "totalTests": 4, "startTime": "2020-06-30T18:12:31Z", "finishTime": "2020-06-30T18:12:31Z", "passingPercent": 100, // Use Artifact OR Package OR Build + Stage + PipelineName Attributes "packages": [{"name": "CorpSite-pkg1"}], "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], "buildNumber": "55", "stageName": "test", "pipelineName": "CorpSite-selenium", }Performance:{ "name": "Performance Tests", "url": "http://abc.com", "startTime": "2020-06-30T18:12:31Z", "finishTime": "2020-06-30T18:12:31Z", "duration": 78.802, "maximumVirtualUsers": "", "throughput": "", "maximumTime": "", "minimumTime": "", "averageTime": "", "ninetyPercent": "", "standardDeviation": "", // Use Artifact OR Package OR Build + Stage + PipelineName Attributes "packages": [{"name": "CorpSite-pkg1"}], "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], "buildNumber": "55", "stageName": "test", "pipelineName": "CorpSite-Performance", } - Expected standard JSON Notification capability payload - Artifact tool
- Pipelines:
{ "artifacts": [ { "name": "acm.jar", "version": "1.82", "semanticVersion": "1.82.0", "repositoryName": "acm-repo" } ], "pipelineName": "testMultiBranch/master", "taskExecutionNumber": "82", "stageName": "buildmbmaster", "branchName": "master" }Jenkins Freestyle/Maven Project:{ "artifacts": [ { "name": "mav1.jar", "version": "1.11", "semanticVersion": "1.11.0", "repositoryName": "mav-repo" } ], "projectName": "maven-test-proj", "taskExecutionNumber": "11" }
Connect capability subflow
The Connect capability is supported.
| Item | Expected value |
|---|---|
| Inputs | Label: current Type: Reference.DevOps Tool Tool record for which the Connect button action is clicked. |
Outputs See subflow outputs. |
|
- Connection failed
- Subflow was executed successfully but the connection could not be made.
- Error: Failed to get failure details from the tool specific connect flow
- Subflow execution failed for an unknown reason.
- Error updating the tool connect status
- The connection_state attribute could not be updated for an unknown reason.
Discover capability subflow
The Discover capability is supported.
| Item | Expected value |
|---|---|
| Inputs | Label: current Type: Reference.DevOps Tool |
Outputs See subflow outputs. |
Without pagination: Label: discoverpayload Type: Array of objects as JSON string. (JSON.stringify([{},{}])) Planning tool without pagination: Coding tool without pagination:
Orchestration tool without pagination:
With pagination: Label: discoverpayload Type: Array of objects as JSON string. (JSON.stringify([{},{}])) Sample JSON format:
Planning tool with pagination:
Coding tool with pagination:
Orchestration tool with pagination: |
| State | Message |
|---|---|
| Requested | -- |
| Processing | -- |
| Completed | Updated <number> object(s) Found <number> objects with invalid toolId Found <number> objects failed validation |
| Error |
|
| Paused | -- |
| Canceled | -- |
| Unmatched | -- |
Update Import Request Workflow Studio action
You can use the Update Import Request action in your Discover subflow to modify the Import Request record state, if desired.
| Input label | Type |
|---|---|
| current | Reference.Import Request |
| state | (String)
|
| details | (String) |