Salesforce Experience Cloud · Arazzo Workflow

Salesforce Experience Cloud Contact and Case Intake

Version 1.0.0

Create a Contact, then open a support Case linked to that Contact.

1 workflow 1 source API 1 provider
View Spec View on GitHub CMSCommunitiesCRMCustomer PortalDigital ExperienceExperience CloudPartner PortalArazzoWorkflows

Provider

salesforce-experience-cloud

Workflows

contact-case-intake
Create a Contact and open a linked Case in one flow.
Creates a Contact, opens a Case referencing that Contact via ContactId, and reads the Case back to confirm it persisted.
3 steps inputs: accessToken, contactFields, description, origin, subject outputs: caseId, caseNumber, contactId
1
createContact
createSObjectRecord
Create the Contact record that the Case will be linked to.
2
createCase
createSObjectRecord
Open a Case referencing the new Contact through the ContactId field.
3
getCase
getSObjectRecord
Read the Case back to confirm its status and case number.

Source API Descriptions

Arazzo Workflow Specification

salesforce-experience-cloud-contact-case-intake-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Salesforce Experience Cloud Contact and Case Intake
  summary: Create a Contact, then open a support Case linked to that Contact.
  description: >-
    A standard community support intake pattern. The workflow creates a Contact
    record, then creates a Case whose ContactId points at the new Contact, and
    finally reads the Case back to confirm its status and case number. Each 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: restApi
  url: ../openapi/salesforce-experience-cloud-rest-api-openapi.yml
  type: openapi
workflows:
- workflowId: contact-case-intake
  summary: Create a Contact and open a linked Case in one flow.
  description: >-
    Creates a Contact, opens a Case referencing that Contact via ContactId, and
    reads the Case back to confirm it persisted.
  inputs:
    type: object
    required:
    - accessToken
    - contactFields
    - subject
    properties:
      accessToken:
        type: string
        description: OAuth 2.0 bearer token for the Salesforce instance.
      contactFields:
        type: object
        description: Field name/value pairs for the new Contact (e.g. LastName, Email).
      subject:
        type: string
        description: Subject line for the new Case.
      description:
        type: string
        description: Detailed description of the support issue.
      origin:
        type: string
        description: Case origin channel (e.g. Web, Email, Community).
  steps:
  - stepId: createContact
    description: Create the Contact record that the Case will be linked to.
    operationId: createSObjectRecord
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    - name: sObjectName
      in: path
      value: Contact
    requestBody:
      contentType: application/json
      payload: $inputs.contactFields
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      contactId: $response.body#/id
  - stepId: createCase
    description: Open a Case referencing the new Contact through the ContactId field.
    operationId: createSObjectRecord
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    - name: sObjectName
      in: path
      value: Case
    requestBody:
      contentType: application/json
      payload:
        ContactId: $steps.createContact.outputs.contactId
        Subject: $inputs.subject
        Description: $inputs.description
        Origin: $inputs.origin
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      caseId: $response.body#/id
  - stepId: getCase
    description: Read the Case back to confirm its status and case number.
    operationId: getSObjectRecord
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    - name: sObjectName
      in: path
      value: Case
    - name: recordId
      in: path
      value: $steps.createCase.outputs.caseId
    - name: fields
      in: query
      value: Id,CaseNumber,Status,Subject,ContactId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      caseNumber: $response.body#/CaseNumber
      status: $response.body#/Status
  outputs:
    contactId: $steps.createContact.outputs.contactId
    caseId: $steps.createCase.outputs.caseId
    caseNumber: $steps.getCase.outputs.caseNumber