---
schema_version: "1"
id: a8e758788e4f27a1377ed3503d56d67fb3729fdb25d4d925613472beb16d7b02
title: Integration Procedure Invocation from Salesforce Flow (Managed Package)
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/os_integration_procedure_invocation_from_salesforce_flow.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.os_integration_procedure_invocation_from_salesforce_flow.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 18ffd572df87d2e3f56fa8ff02aa6f4183a6e410405cb05789407991cbc60e4b
description: For the managed package runtime, to call an Integration Procedure from a Salesforce Flow, create a Salesforce Flow component by defining a class using the Salesforce Developer Console, as shown in the following example. Note that the class must have the @InvocableMethod annotation.
products:
  - Omnistudio
release: "264"
---
# Integration Procedure Invocation from Salesforce Flow (Managed Package)

For the managed package runtime, to call an Integration Procedure from a Salesforce Flow, create a Salesforce Flow component by defining a class using the Salesforce Developer Console, as shown in the following example. Note that the class must have the `@InvocableMethod` annotation.

![Managed Package app icon](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-xcloud-omnistudio_for_managed_packages-264-0-0-production-enus/aa2554ec-624a-4ee6-8da4-6435670e6e62/resources-global/_corporate/images/managedpackageicon.png) This information is for Omnistudio for Managed Packages. For Omnistudio on standard runtime, see [Omnistudio Help](https://help.salesforce.com/s/articleView?id=xcloud.os_omnistudio_standard.htm&language=en_US).

When calling `IntegrationProcedureService.runIntegrationService`, be sure to replace the namespace with `omnistudio`, `vlocity_cmt`, `vlocity_ins`, or `vlocity_ps`.

```
global with sharing class IntegrationProcedureInvocable {
 @InvocableMethod(label = 'Integration Procedure')
 global static List < IntegrationProcedureOutput > runIntegrationServiceInvocable(List < IntegrationProcedureInput > input) {
  System.debug(LoggingLevel.Error, JSON.serialize(input));
  IntegrationProcedureOutput result = new IntegrationProcedureOutput();
  result.output = JSON.serialize(
   namespace.IntegrationProcedureService.runIntegrationService(
    input[0].procedureAPIName,
    new Map < String, Object >
    {
     'Id' => input[0].input
    },
    new Map < String, Object > ()));
  System.debug(LoggingLevel.Error, JSON.serialize(result));
  return new List < IntegrationProcedureOutput >
   {
    result
   };
 }
 global class IntegrationProcedureInput
 {
  @InvocableVariable(label = 'Procedure Name') global String procedureAPIName;
  @InvocableVariable(label = 'Input') global String input;
 }
 global class IntegrationProcedureOutput
 {
  @InvocableVariable(label = 'Output') global String output;
 }
}
```

After defining the class, you can use the resulting flow component in the Salesforce Flow Designer to call Integration Procedures. Drag the component from the list to the flow and set its properties as follows.

**General Settings**: Set **Name** and **Unique Name** to descriptive names for the instance of the component in the flow.

**Input Settings**

- Procedure Name: Specify the Integration Procedure to be run using this format: **Type**\_**SubType** (note the underscore).
- Input: For each input variable required by the Integration Procedure, choose **Variable** and specify the name of the input variable using the following format: `{!variableName}`

**Output Settings**: For each variable that is returned by the Integration Procedure, choose **Variable** and specify the name of the output variable using the following format: `{!variableName}`

For example, if you're calling the [Conditional Block Example with If-Elseif-Else Logic](https://help.salesforce.com/s/articleView?id=xcloud.os_create_a_conditional_block_example_with_if_elseif_else_logic.htm&release=264.0.0&type=5 "For the managed package runtime, based on a price and a state code, an Integration Procedure calculates the sales tax and reports the total price. For brevity, only four state codes are included: WA, OR, CA, and NV."), your input variables are `{!Price}` and `{!State}`, and your output variable is `{!Output}`.