Cross-Provider Workflow

Entra User with Slack Onboarding Channel Create and Invite

Version 1.0.0

Provision an Entra user, create a Slack onboarding channel, then invite them.

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

Providers Orchestrated

microsoft-entra slack

Workflows

provision-user-onboarding-channel
Create an Entra user, create a Slack channel, and invite them.
Provisions a user in Microsoft Entra ID, creates a Slack onboarding channel, and invites the new hire's Slack user into that channel.
3 steps inputs: channelName, displayName, mailNickname, password, slackUserId, userPrincipalName outputs: channelId, inviteOk, userId
1
create-user
$sourceDescriptions.entraApi.createUser
Provision the new hire in Microsoft Entra ID.
2
create-channel
$sourceDescriptions.slackConversationsApi.postConversationsCreate
Create the Slack onboarding channel.
3
invite-user
$sourceDescriptions.slackConversationsApi.postConversationsInvite
Invite the new hire into the onboarding channel.

Source API Descriptions

Arazzo Workflow Specification

id-entra-user-slack-channel-create-invite.yml Raw ↑
arazzo: 1.0.1
info:
  title: Entra User with Slack Onboarding Channel Create and Invite
  summary: Provision an Entra user, create a Slack onboarding channel, then invite them.
  description: >-
    An onboarding workflow that provisions a new user in Microsoft Entra ID,
    creates a dedicated Slack onboarding channel for the hire, and invites them
    into that channel. Chains the created Slack channel id into the invite call
    so the new employee lands in a ready-made space on day one.
  version: 1.0.0
sourceDescriptions:
  - name: entraApi
    url: https://raw.githubusercontent.com/api-evangelist/microsoft-entra/refs/heads/main/openapi/microsoft-entra-graph-identity-openapi.yml
    type: openapi
  - name: slackConversationsApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-conversations-openapi.yml
    type: openapi
workflows:
  - workflowId: provision-user-onboarding-channel
    summary: Create an Entra user, create a Slack channel, and invite them.
    description: >-
      Provisions a user in Microsoft Entra ID, creates a Slack onboarding channel,
      and invites the new hire's Slack user into that channel.
    inputs:
      type: object
      properties:
        displayName:
          type: string
        userPrincipalName:
          type: string
        mailNickname:
          type: string
        password:
          type: string
        channelName:
          type: string
        slackUserId:
          type: string
    steps:
      - stepId: create-user
        description: Provision the new hire in Microsoft Entra ID.
        operationId: $sourceDescriptions.entraApi.createUser
        requestBody:
          contentType: application/json
          payload:
            accountEnabled: true
            displayName: $inputs.displayName
            userPrincipalName: $inputs.userPrincipalName
            mailNickname: $inputs.mailNickname
            passwordProfile:
              forceChangePasswordNextSignIn: true
              password: $inputs.password
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          userId: $response.body#/id
      - stepId: create-channel
        description: Create the Slack onboarding channel.
        operationId: $sourceDescriptions.slackConversationsApi.postConversationsCreate
        requestBody:
          contentType: application/json
          payload:
            name: $inputs.channelName
            is_private: false
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          channelId: $response.body#/channel/id
      - stepId: invite-user
        description: Invite the new hire into the onboarding channel.
        operationId: $sourceDescriptions.slackConversationsApi.postConversationsInvite
        requestBody:
          contentType: application/json
          payload:
            channel: $steps.create-channel.outputs.channelId
            users: $inputs.slackUserId
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          inviteOk: $response.body#/ok
    outputs:
      userId: $steps.create-user.outputs.userId
      channelId: $steps.create-channel.outputs.channelId
      inviteOk: $steps.invite-user.outputs.inviteOk