SAP Integration Suite · Arazzo Workflow

SAP Integration Suite Deploy Flow From Package

Version 1.0.0

Discover an integration flow inside a package, deploy it, and poll the runtime until it starts.

1 workflow 1 source API 1 provider
View Spec View on GitHub API ManagementCloud IntegrationEnterprise IntegrationEvent MeshiPaaSSAPSAP BTPArazzoWorkflows

Provider

sap-integration-suite

Workflows

deploy-flow-from-package
Locate an integration flow in a package, deploy it, and wait for it to start.
Resolves a package, finds the named design-time integration flow artifact within it, deploys that artifact, and polls the runtime artifact until it reaches a STARTED status.
6 steps inputs: artifactId, artifactVersion, csrfToken, packageId outputs: failureInformation, runtimeStatus, taskId
1
getPackage
getIntegrationPackage
Confirm the target integration package exists before inspecting its contents.
2
listArtifacts
listIntegrationDesigntimeArtifacts
List the design-time artifacts in the package to verify the flow is present.
3
getArtifact
getIntegrationDesigntimeArtifact
Read the specific design-time artifact to confirm its version before deploying.
4
deployArtifact
deployIntegrationDesigntimeArtifact
Trigger deployment of the design-time artifact to the runtime. The OData write requires the X-CSRF-Token header supplied as an input.
5
pollRuntime
getRuntimeArtifact
Poll the runtime artifact until it reports STARTED. A status of ERROR ends the poll and routes to the failure branch.
6
reportError
getRuntimeArtifact
Re-read the runtime artifact to capture the final error details when the deployment lands in an ERROR state.

Source API Descriptions

Arazzo Workflow Specification

sap-integration-suite-deploy-flow-from-package-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: SAP Integration Suite Deploy Flow From Package
  summary: Discover an integration flow inside a package, deploy it, and poll the runtime until it starts.
  description: >-
    The core Cloud Integration deployment loop. The workflow resolves a target
    integration package, lists the design-time artifacts it contains, reads the
    specific integration flow artifact to confirm its version, triggers a
    deployment of that artifact to the runtime, and then polls the runtime
    artifact until it reports a STARTED status (or surfaces an ERROR). Because
    Cloud Integration exposes an OData V2 surface, the deploy POST carries an
    X-CSRF-Token header that must be obtained from a prior token-fetch call;
    that token is supplied as a workflow input. Every step spells out its
    request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: cloudIntegrationApi
  url: ../openapi/sap-integration-suite-cloud-integration-openapi.yml
  type: openapi
workflows:
- workflowId: deploy-flow-from-package
  summary: Locate an integration flow in a package, deploy it, and wait for it to start.
  description: >-
    Resolves a package, finds the named design-time integration flow artifact
    within it, deploys that artifact, and polls the runtime artifact until it
    reaches a STARTED status.
  inputs:
    type: object
    required:
    - packageId
    - artifactId
    - artifactVersion
    - csrfToken
    properties:
      packageId:
        type: string
        description: Identifier of the integration package that holds the flow.
      artifactId:
        type: string
        description: Identifier of the design-time integration flow artifact to deploy.
      artifactVersion:
        type: string
        description: Version of the artifact to deploy (e.g. "active" or a semantic version).
      csrfToken:
        type: string
        description: X-CSRF-Token value fetched ahead of time for the OData write call.
  steps:
  - stepId: getPackage
    description: Confirm the target integration package exists before inspecting its contents.
    operationId: getIntegrationPackage
    parameters:
    - name: Id
      in: path
      value: $inputs.packageId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      packageName: $response.body#/d/Name
  - stepId: listArtifacts
    description: List the design-time artifacts in the package to verify the flow is present.
    operationId: listIntegrationDesigntimeArtifacts
    parameters:
    - name: Id
      in: path
      value: $inputs.packageId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      artifacts: $response.body#/d/results
  - stepId: getArtifact
    description: Read the specific design-time artifact to confirm its version before deploying.
    operationId: getIntegrationDesigntimeArtifact
    parameters:
    - name: Id
      in: path
      value: $inputs.artifactId
    - name: Version
      in: path
      value: $inputs.artifactVersion
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      artifactName: $response.body#/d/Name
      resolvedVersion: $response.body#/d/Version
  - stepId: deployArtifact
    description: >-
      Trigger deployment of the design-time artifact to the runtime. The OData
      write requires the X-CSRF-Token header supplied as an input.
    operationId: deployIntegrationDesigntimeArtifact
    parameters:
    - name: Id
      in: query
      value: $inputs.artifactId
    - name: Version
      in: query
      value: $inputs.artifactVersion
    - name: X-CSRF-Token
      in: header
      value: $inputs.csrfToken
    successCriteria:
    - condition: $statusCode == 202
    outputs:
      taskId: $response.body#/d/TaskId
  - stepId: pollRuntime
    description: >-
      Poll the runtime artifact until it reports STARTED. A status of ERROR ends
      the poll and routes to the failure branch.
    operationId: getRuntimeArtifact
    parameters:
    - name: Id
      in: path
      value: $inputs.artifactId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      runtimeStatus: $response.body#/d/Status
      errorInformation: $response.body#/d/ErrorInformation
    onSuccess:
    - name: started
      type: end
      criteria:
      - context: $response.body
        condition: $.d.Status == "STARTED"
        type: jsonpath
    - name: deployFailed
      type: goto
      stepId: reportError
      criteria:
      - context: $response.body
        condition: $.d.Status == "ERROR"
        type: jsonpath
    - name: keepPolling
      type: retry
      stepId: pollRuntime
      retryAfter: 10
      retryLimit: 30
      criteria:
      - context: $response.body
        condition: $.d.Status == "STARTING"
        type: jsonpath
  - stepId: reportError
    description: >-
      Re-read the runtime artifact to capture the final error details when the
      deployment lands in an ERROR state.
    operationId: getRuntimeArtifact
    parameters:
    - name: Id
      in: path
      value: $inputs.artifactId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      failureStatus: $response.body#/d/Status
      failureInformation: $response.body#/d/ErrorInformation
  outputs:
    taskId: $steps.deployArtifact.outputs.taskId
    runtimeStatus: $steps.pollRuntime.outputs.runtimeStatus
    failureInformation: $steps.reportError.outputs.failureInformation