Cross-Provider Workflow

ServiceNow Change Request to Slack Approval

Version 1.0.0

Raise a ServiceNow normal change, then request approval in Slack.

1 workflow 2 source APIs 2 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

servicenow slack

Workflows

change-to-approval
Create a ServiceNow normal change, then ask for Slack approval.
Creates a ServiceNow normal change request and posts an approval request with the change number to the change advisory board Slack channel.
2 steps inputs: description, shortDescription, slackChannel outputs: changeNumber, messageTs
1
create-change
$sourceDescriptions.servicenowChange.createNormalChange
Create a ServiceNow normal change request.
2
request-approval
$sourceDescriptions.slackChat.postChatPostmessage
Post an approval request for the change to Slack.

Source API Descriptions

Arazzo Workflow Specification

itsm-servicenow-change-to-slack-approval.yml Raw ↑
arazzo: 1.0.1
info:
  title: ServiceNow Change Request to Slack Approval
  summary: Raise a ServiceNow normal change, then request approval in Slack.
  description: >-
    A cross-provider ITSM workflow that opens a ServiceNow normal change request
    and posts an approval prompt to the change advisory board's Slack channel.
    Demonstrates orchestrating an enterprise change-management platform with a
    team messaging provider in a single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: servicenowChange
    url: https://raw.githubusercontent.com/api-evangelist/servicenow/refs/heads/main/openapi/servicenow-change-management-api-openapi.yml
    type: openapi
  - name: slackChat
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: change-to-approval
    summary: Create a ServiceNow normal change, then ask for Slack approval.
    description: >-
      Creates a ServiceNow normal change request and posts an approval request
      with the change number to the change advisory board Slack channel.
    inputs:
      type: object
      properties:
        shortDescription:
          type: string
        description:
          type: string
        slackChannel:
          type: string
    steps:
      - stepId: create-change
        description: Create a ServiceNow normal change request.
        operationId: $sourceDescriptions.servicenowChange.createNormalChange
        requestBody:
          contentType: application/json
          payload:
            short_description: $inputs.shortDescription
            description: $inputs.description
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          changeSysId: $response.body#/result/sys_id
          changeNumber: $response.body#/result/number
      - stepId: request-approval
        description: Post an approval request for the change to Slack.
        operationId: $sourceDescriptions.slackChat.postChatPostmessage
        requestBody:
          contentType: application/x-www-form-urlencoded
          payload:
            channel: $inputs.slackChannel
            text: A normal change request is awaiting CAB approval.
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageTs: $response.body#/ts
    outputs:
      changeNumber: $steps.create-change.outputs.changeNumber
      messageTs: $steps.request-approval.outputs.messageTs