Skip to main content
New tool CRON Expression Builder — preview next run times before you schedule Apex. Open the builder →
Diagram illustrating the flow of Salesforce Integration Procedures for server-side data orchestration
Integration

What are Integration Procedures?

Overview of Integration Procedures in OmniStudio: declarative, server-side orchestration for integrations, data transformation, and multi-step logic.

The short answer

Integration Procedures are declarative, server-side orchestration components in Salesforce OmniStudio used to execute multi-step integrations and data transformations without writing Apex code. They bundle operations like HTTP calls and DataRaptor mappings into a single server call to minimize client-server round trips.

Key takeaways Combine multiple HTTP calls, DataRaptor transforms, and conditional branches into a single Integration Procedure to minimize client-server round trips. Rely on declarative DataRaptors and HTTP Actions instead of custom Apex actions whenever possible to simplify ongoing maintenance. Structure complex integration logic into modular, nested Integration Procedures to maximize component reuse. Switch long-running synchronous workflows to asynchronous execution using platform events or scheduled jobs to avoid latency issues. Inspect inputs, outputs, and intermediate variables using OmniStudio debug logs and the built-in interactive execution trace.

Overview

Integration Procedures are declarative, server-side orchestration components in Salesforce OmniStudio (formerly Vlocity). They run multi-step integrations and data transformations without Apex, synchronously or asynchronously, and they are where I put logic that sits between Salesforce and an external system.

Why Integration Procedures matter

One procedure bundles HTTP calls, DataRaptor transformations, Apex actions and conditional logic into a single execution plan. That cuts the number of client-server round trips and keeps the orchestration in one reusable, testable unit instead of spread across components.

Key building blocks

The elements you will use most:

Start is the entry point for an execution.

Action covers the units of work:

HTTP Action calls external REST or SOAP services.

DataRaptor Extract/Transform/Load maps data declaratively between JSON or XML and Salesforce objects.

Integration Procedure Action calls a nested procedure, which is how you keep things modular.

Apex Action runs custom Apex when the declarative actions cannot do the job.

Set Variables / Assign stores intermediate values and transforms data inside the procedure.

Conditional (If/Else) branches on runtime data.

Execution modes

Synchronous returns a response to the caller straight away, which is what OmniScripts and FlexCards normally use. Asynchronous hands long-running work to platform events or scheduled jobs.

Typical use-cases

Common uses:

- Aggregating data from several systems into one JSON response for a UI component.

- Running dependent actions in sequence, where each step needs what the last one returned.

- Mapping data between API payloads and Salesforce objects with DataRaptors.

- Moving orchestration off the client so the front end waits on one call instead of several.

Sample Integration Procedure JSON (simplified)

{
  "type": "IntegrationProcedure",
  "steps": [
    { "type": "DataRaptorExtract", "name": "GetAccount", "input": { "accountId": "%accountId%" } },
    { "type": "HTTPAction", "name": "CallPricingAPI", "endpoint": "https://api.example.com/pricing", "method": "POST", "body": "%payload%" },
    { "type": "DataRaptorTransform", "name": "NormalizeResponse" },
    { "type": "SetVariables", "name": "PrepareOutput" }
  ]
}

Best practices

- Keep each procedure focused and modular, and nest procedures when you want reuse.

- Prefer declarative DataRaptors and HTTP Actions over Apex where you can. The declarative version is easier for whoever inherits it.

- Handle errors explicitly with try/catch patterns, error handlers and a clear response structure.

- Keep synchronous work short. If an operation takes too long, design it as an asynchronous flow instead.

Monitoring and debugging

OmniStudio logs, Salesforce debug logs and the built-in interactive execution trace let you inspect inputs, outputs and intermediate variables. Put retry and circuit-breaker patterns around unstable external services so one bad endpoint does not take the whole call down with it.

Conclusion

Integration Procedures centralise orchestration, cut client-server traffic and express multi-step logic declaratively. If you find yourself writing Apex to chain a few callouts and mappings together, this is usually the cheaper place for that logic to live.

Frequently asked questions

What is an Integration Procedure in Salesforce OmniStudio?

An Integration Procedure is a declarative, server-side orchestration component in OmniStudio that executes multi-step integration and data transformation tasks without custom Apex code.

When should you use an Integration Procedure?

Use Integration Procedures to aggregate data from multiple systems into a single response, run sequential dependent transactions, map payloads via DataRaptors, and reduce front-end latency.

What is the difference between synchronous and asynchronous Integration Procedures?

Synchronous Integration Procedures immediately return data to callers like OmniScripts or FlexCards, while asynchronous Integration Procedures process long-running tasks using platform events or scheduled jobs.

How do you debug an Integration Procedure?

You can troubleshoot Integration Procedures using OmniStudio logs, Salesforce debug logs, and the built-in interactive execution trace to monitor runtime inputs, outputs, and variables.

Newsletter

One email every Tuesday

New guides, tool updates, and the release-note changes that break things.

No spam. Unsubscribe in one click.

Comments

Loading comments...

Leave a Comment