Vlocity/OminiStudio

How to Embed OmniScript in Another OmniScript in Salesforce

OmniScript is a powerful declarative tool in Salesforce Industries (Vlocity) that helps create guided user experiences. One of its most useful features is the ability to embed one OmniScript inside another OmniScript, making processes reusable, modular, and easier to maintain. In this article, we will explore how to embed an OmniScript in another OmniScript, understand the concept of Reusable OmniScripts, and walk through the step-by-step implementation. What Is a Reusable OmniScript? A Reusable OmniScript is an OmniScript that is designed to be called or embedded inside another OmniScript. Instead of building the same logic repeatedly, you can create one OmniScript and reuse it across multiple parent OmniScripts. Benefits of Reusable OmniScripts Reduces duplicate development Improves consistency across processes Simplifies maintenance and updates Speeds up OmniScript development Once an OmniScript is marked as reusable, it becomes callable from other OmniScripts. Use Case for Embedding an OmniScript Embedding OmniScripts is useful when: You have common data collection sections (e.g., address, contact info) You want to reuse validation or business logic Multiple OmniScripts follow the same sub-process You want a modular and scalable OmniScript design Step 1: Create a Reusable OmniScript The first step is to create the OmniScript that you want to reuse. Steps to Create a Reusable OmniScript Go to Setup in Salesforce. Search for OmniScript. Click New OmniScript. Fill in required details such as: Type Subtype Language In the Setup section, check the Reusable checkbox. Save the OmniScript. Step 2: Design the Reusable OmniScript After creating the reusable OmniScript, design its structure. Best Practices Add a Text Block, Input Field, or any component to identify the OmniScript Keep it focused on a single responsibility Avoid unnecessary navigation elements For example, you may add a Text Block with a value like: “This is Reusable/Child OmniScript” This helps identify the reusable OmniScript when it is embedded. Step 3: Activate the Reusable OmniScript Activation is mandatory before the OmniScript can be used elsewhere. Activation Steps Go to the Build section of the reusable OmniScript. Validate the OmniScript to ensure there are no errors. Click Activate. Once activated, the OmniScript becomes available to embed in a parent OmniScript Step 4: Create the Parent OmniScript Now, create the OmniScript where you want to embed the reusable OmniScript. Steps to Create Parent OmniScript Go to Setup → OmniScript. Click New OmniScript. Enter the required details. Save and open the OmniScript in Build mode. This OmniScript will act as the Parent OmniScript. Step 5: Embed the Reusable OmniScript This is the key step where the reusable OmniScript is embedded into the parent OmniScript. Steps to Embed OmniScript Open the Build section of the Parent OmniScript. Scroll down to the Reusable OmniScript section. Locate the reusable OmniScript by its Name. Drag and drop the reusable OmniScript onto the canvas. Once dropped, the child OmniScript becomes part of the parent OmniScript flow. Step 6: Map and Use Data from Child OmniScript When a reusable OmniScript is embedded: All data collected in the child OmniScript becomes available to the parent OmniScript Data is automatically passed up to the parent data JSON You can now: Display child OmniScript values in the parent OmniScript Use the data for integration procedures Apply validations or conditions based on child data Step 7: Activate and Preview the Parent OmniScript After embedding the reusable OmniScript: Validate the Parent OmniScript. Click Activate. Click Preview. In preview mode, you will see the embedded OmniScript content displayed inside the parent OmniScript. For example, if the child OmniScript contains the text: “This is Reusable/Child OmniScript” It will appear within the parent OmniScript, confirming that embedding was successful. Key Points to Remember Reusable OmniScript must be activated before embedding Child OmniScript data automatically flows to the parent Keep reusable OmniScripts simple and focused Avoid navigation elements like Next/Previous in child OmniScripts Test both child and parent OmniScripts thoroughly Conclusion Embedding one OmniScript inside another OmniScript is a powerful feature that promotes reusability, modular design, and efficiency in Salesforce Industries. By creating reusable OmniScripts and embedding them into parent OmniScripts, you can build scalable guided processes with minimal effort. This approach not only saves development time but also ensures consistency across business workflows. With proper design and activation, reusable OmniScripts become an essential building block for advanced OmniScript implementations.

How to Embed OmniScript in Another OmniScript in Salesforce Read More »

How To Use SetValues In Integration Procedure

Integration Procedures (IPs) in Salesforce Industries are used to process data efficiently without writing code. One of the most commonly used elements inside an Integration Procedure is SetValues. It allows you to manipulate, merge, calculate, and transform data before sending it to the output or another system. In this article, we will learn how to use SetValues in an Integration Procedure, how to merge element values, perform calculations, concatenate fields, and finally display the result using Response Action. What Is SetValues in Integration Procedure? SetValues is an element in Integration Procedure that allows you to: Assign static values Merge values from different elements Perform calculations using formulas Concatenate multiple fields Retrieve values from arrays or lists It helps prepare and structure data in the required format before sending it to OmniScript, FlexCard, or an external system. Use Case of SetValues SetValues is commonly used when: You need to combine multiple input fields You want to format output data Calculations are required without Apex Data needs to be reused in another SetValues Final output must be shown in Preview or Response Step 1: Create an Integration Procedure The first step is to create an Integration Procedure. Steps: Go to Setup. Search for Integration Procedure. Click New. Enter required details such as: Name Type Subtype Language Save the Integration Procedure. Once created, open it in Designer mode. Step 2: Add SetValues to the Structure Panel Now, add the SetValues element to the Integration Procedure. Steps: Open the Structure Panel. Drag and drop SetValues into the Integration Procedure flow. Rename it meaningfully (for example: SetValues_1). This SetValues element will be used to define and manipulate data values. Step 3: Configure Element Value Mapping Inside SetValues, you define how values are assigned or merged. Element Value Map Configuration: Click on the SetValues element. Go to the Element Value Map section. Click Add New Value. Define: Element Name (output variable) Value (static value, merge field, or formula) This mapping helps transfer data from input JSON or other elements into new variables. Step 4: Perform Operations Using SetValues SetValues supports multiple operations that can be performed easily. Common Operations in SetValues Merge Fields You can merge values from input or previous elements using merge syntax. Example: %Input:FirstName%   Calculations Using Formulas You can perform mathematical operations like addition or multiplication. Example: %Input:Price% * %Input:Quantity%   Concatenate Two Merge Fields You can combine multiple fields into one value. Example: %Input:FirstName% %Input:LastName%   Retrieving an Array Value You can access values from an array using index-based notation. Example: %Input:Items[0].Name% These features allow you to handle complex logic without writing Apex code. In SetValues Step 5: Configure a Second SetValues for Concatenation In many cases, one SetValues depends on values created in another SetValues. Steps: Drag and drop another SetValues element. Rename it (for example: SetValues_2). In the Element Value Map: Reference values created in the first SetValues Concatenate or manipulate them as needed Example: %SetValues_1:FullName% – %SetValues_1:TotalAmount%   This shows how data can flow from one SetValues element to another. In SetValues 2 Step 6: Add Response Action to Display Output To display the output data in the Preview Tab, you must use Response Action. Steps: Drag Response Action into the Structure Panel. Configure it to return the required data nodes. Map the values created in SetValues to the Response Action output. Without Response Action, the output will not be visible during execution. In Response Action Step 7: Execute and View Results in Preview Tab After completing the configuration: Steps: Click Validate to ensure there are no errors. Click Activate. Click Execute. Go to the Preview Tab. You will now see: Merged values Calculated results Concatenated fields Final output structure This confirms that SetValues and Response Action are working correctly. On preview tab Best Practices for Using SetValues Use meaningful names for SetValues elements Avoid complex logic in a single SetValues Chain SetValues for better readability Always use Response Action for output visibility Validate and test with sample input data Conclusion SetValues is a powerful and essential component of Integration Procedures in Salesforce Industries. It allows you to merge, calculate, concatenate, and transform data without writing Apex code. By combining multiple SetValues and using Response Action, you can efficiently control the data flow and output of your Integration Procedure. Mastering SetValues helps you build scalable, reusable, and maintainable integrations that work seamlessly with OmniScripts and FlexCards.

How To Use SetValues In Integration Procedure Read More »

How To Enable Flex Card in OmniStudio(Vlocity) Salesforce

FlexCards are a core UI component of Salesforce OmniStudio (Vlocity). They allow you to display data in a responsive, reusable, and dynamic card-based layout without writing code. Before you can create or use FlexCards, you must ensure that OmniStudio and FlexCards are properly enabled in your Salesforce org. This article explains how to enable FlexCard in OmniStudio, including required permissions, settings, and verification steps. What Is a FlexCard in OmniStudio? A FlexCard is a lightweight UI component used to: Display Salesforce or external data Work with OmniScripts and Integration Procedures Show summary views, KPIs, or record details Reuse UI logic across apps and pages FlexCards are part of the OmniStudio Designer and rely on proper feature enablement and user access. Prerequisites to Enable FlexCard Before enabling FlexCards, make sure: OmniStudio (Vlocity) is installed in your org You have System Administrator access Required OmniStudio licenses are assigned Your org is Lightning Experience–enabled Step 1: Verify OmniStudio Is Installed FlexCards are available only if OmniStudio is installed. Steps: Go to Setup Search for Installed Packages Verify that OmniStudio, Vlocity, or Salesforce Industries package is installed If OmniStudio is not installed, FlexCards will not appear. you do not do the setting then this is the error Step 2: Enable OmniStudio Designer FlexCards are created inside OmniStudio Designer, so this must be enabled. Steps: Go to Setup Search for OmniStudio Settings Enable: OmniStudio Designer OmniStudio Runtime Save the settings This allows access to FlexCards, OmniScripts, DataRaptors, and Integration Procedures. Warning Tab Click Than Show This Link Remote Site Setting Step 3: Assign Required Permission Sets Even if OmniStudio is enabled, FlexCards will not be visible without proper permissions. Required Permission Sets: OmniStudio Admin OmniStudio Designer OmniStudio Runtime Steps: Go to Setup Open Users Select your user Click Permission Set Assignments Assign the required OmniStudio permission sets Log out and log in again after assignment. Fill the Tab Step 4: Enable FlexCard Feature Access FlexCards are controlled through OmniStudio capabilities. Steps: Go to Setup Search for Custom Permissions Ensure permissions related to: FlexCard OmniStudio UI Vlocity Cards are enabled via permission sets This ensures the FlexCard option appears in the Designer. Step 5: Access FlexCard from OmniStudio Designer Once enabled, you can access FlexCards. Steps: Click the App Launcher Search for OmniStudio Designer Open OmniStudio Designer Select FlexCards from the left panel Click New to create a FlexCard If FlexCard appears in the menu, it is successfully enabled. Step 6: Verify FlexCard Availability in Lightning App Builder FlexCards can be embedded into Lightning pages. Steps: Go to Lightning App Builder Edit a Record Page or App Page Search for FlexCard in Components Drag and drop it onto the page Configure required properties This confirms FlexCards are available at runtime. Common Issues and Troubleshooting FlexCard Not Visible in OmniStudio Designer Check OmniStudio permission sets Verify OmniStudio Designer is enabled Confirm package installation FlexCard Not Rendering on Page Ensure OmniStudio Runtime permission is assigned Activate the FlexCard Check Data Source configuration No Data Displayed Validate DataRaptor or Integration Procedure Confirm context variables like {recordId} Best Practices for Using FlexCards Always activate FlexCards before use Use reusable FlexCards for performance Prefer Integration Procedures for complex logic Test FlexCards using Preview mode Use context variables for dynamic data Conclusion Enabling FlexCards in OmniStudio is a foundational step for building modern, scalable Salesforce UI solutions. By ensuring OmniStudio is installed, permissions are assigned, and Designer access is enabled, you can start creating powerful FlexCards that integrate seamlessly with OmniScripts and Integration Procedures. Once enabled, FlexCards help you deliver faster, more interactive user experiences without writing Apex or Lightning Web Components.

How To Enable Flex Card in OmniStudio(Vlocity) Salesforce Read More »

How To Use ListAction In Integration Procedures

In OmniStudio (Vlocity) Salesforce, Integration Procedures (IP) are used to process data efficiently without writing Apex code. One of the most powerful elements inside an Integration Procedure is ListAction. ListAction allows you to loop through a list of records and perform actions on each item individually. In this article, we will understand what ListAction is, why it is used, and how to configure it step by step inside an Integration Procedure. What Is ListAction in Integration Procedure? ListAction is a looping mechanism in an Integration Procedure. It iterates over an array or list of data and executes child elements (like SetValues, DataRaptor, Integration Action, or Response Action) for each item in the list. It works similar to a FOR LOOP in Apex but is fully declarative. Why Use ListAction? ListAction is commonly used when: You receive multiple records from a DataRaptor or Integration Action You need to process each record individually You want to perform calculations, transformations, or updates on each list item You need to loop data before sending it to OmniScript or FlexCard Common Use Cases of ListAction Loop through a list of Accounts or Cases Perform calculations on each record Build a transformed response structure Update multiple records using DataRaptor Post Prepare formatted output for OmniScript or FlexCard Basic Structure of ListAction A ListAction has three key parts: Input List Loop Processing Elements Output List All actions inside ListAction run once per item in the list. Step 1: Create an Integration Procedure Go to OmniStudio Designer Select Integration Procedures Click New Provide: Name Type (Reusable or not) Save the Integration Procedure In List Action Step 2: Get Data That Returns a List Before using ListAction, you need a list input. Common sources: DataRaptor Extract Integration Action SetValues (array creation) Example: A DataRaptor Extract that returns a list of Accounts: Accounts[]   This list will be used as input for ListAction. In Response Action On the preview tab.  Step 3: Add ListAction to Integration Procedure Drag ListAction into the Structure panel   Place it after the step that returns list data   Rename it (example: Loop_Accounts) In List Action On the preview tab  On preview tab Step 4: Configure ListAction Properties List Input Path Specify the JSON path of the list: Accounts   This tells the Integration Procedure which list to loop through. Loop Variable Define a variable name to represent current record: CurrentAccount   This variable holds one item at a time during iteration. Advanced Merge = true Well Done!!! We got the result in preview tab  On preview tab Step 5: Add Child Actions Inside ListAction Now add elements inside the ListAction. These will execute for each list item. Commonly used actions: SetValues Perform calculations Merge fields Rename attributes Example: CurrentAccount.Name + ‘ – Processed’   DataRaptor Post Update records Insert child records Example: Update Account Status for each record. Integration Action Call external APIs per record Send individual payloads Step 6: Store Output Using ListAction Output To collect results from each iteration: Enable Output List Define Output Path: ProcessedAccounts   Each iteration’s result will be added to this output list. Step 7: Use Response Action to Send Data To return data to OmniScript or FlexCard: Add Response Action Enable Return Full Data JSON (optional) Or return specific node: ProcessedAccounts   This makes the processed list available to the caller. Example Scenario Scenario: You fetch a list of Accounts and want to: Append a label to Account Name Return the modified list to OmniScript Flow: DataRaptor Extract → Accounts[] ListAction → Loop Accounts SetValues → Modify Name Response Action → Send ProcessedAccounts Best Practices for Using ListAction Always validate input list path Keep ListAction logic lightweight Avoid unnecessary nesting Use meaningful loop variable names Return only required data for performance Common Mistakes to Avoid Incorrect List Input Path Using wrong JSON structure Forgetting to store output Returning too much data in Response Action Not testing in Preview tab Testing ListAction Open Integration Procedure Go to Preview Provide sample JSON input Click Execute Verify loop output and response Conclusion ListAction is a powerful feature in Integration Procedures that allows you to process arrays efficiently without Apex. It plays a critical role in data transformation, looping logic, and preparing structured responses for OmniScripts and FlexCards. Mastering ListAction helps you build scalable, high-performance OmniStudio solutions with clean and reusable logic.

How To Use ListAction In Integration Procedures Read More »

How To Use DataRaptorPost In Integration Procedures

In OmniStudio (Vlocity) Salesforce, Integration Procedures (IP) are used to orchestrate data processing without writing Apex. One of the most important actions inside an Integration Procedure is DataRaptorPostAction, which allows you to insert, update, or upsert records in Salesforce using a DataRaptor Load (Post). This post explains what DataRaptor Post is, when to use it, and how to configure it step by step inside an Integration Procedure. What Is DataRaptor Post Action? DataRaptorPostAction is used in an Integration Procedure to send data to Salesforce and perform DML operations, such as: Insert records Update records Upsert records It uses a DataRaptor Load interface, which defines how incoming data maps to Salesforce objects. When Should You Use DataRaptor Post in Integration Procedures? Use DataRaptor Post when: You need to save OmniScript or API data into Salesforce You want to avoid Apex for DML operations You need high performance and bulk-safe processing You are updating records from OmniScript, FlexCard, or API requests Step 1: Create an Integration Procedure Navigate to OmniStudio → Integration Procedures Click New Enter: Name Type (Reusable or Standard) Save the Integration Procedure This Integration Procedure will act as the orchestrator for posting data. Step 2: Add DataRaptorPostAction to the Structure Panel In the Structure panel, drag DataRaptor Post Action Place it at the correct position in the execution flow Rename it for clarity (example: Post_Account_Data) Step 3: Configure DataRaptor Interface In the DataRaptor Interface field: Select the DataRaptor Load (Post) that you want to use This DataRaptor must already be created and activated This interface defines: Which Salesforce object will be updated Which fields will be mapped What operation will be performed (Insert / Update / Upsert) Post Data Raptor Step 4: Configure Additional Input / Output / Failure Response Inside DataRaptorPostAction, scroll to: ADDITIONAL INPUT / OUTPUT / FAILURE RESPONSE Important options: Send Only Additional Input Set to True if you want to send only mapped input Set to False if you want to send full Integration Procedure data Best Practice: Set this to True for better performance and cleaner payloads. Additional Output You can define what response you want back from the DataRaptor, such as: Record Id Success flag Error message Failure Response Configure error handling to capture: Validation errors Required field errors DML exceptions Field mapping for send data in post data raptor Step 5: Configure Field Mapping in DataRaptor Load Now open the DataRaptor Load (Post) used above. Inside DataRaptor Load: Select the Target Object (e.g., Account) Choose the Operation Type: Insert Update Upsert Map source fields to Salesforce fields Field mapping in DataRaptor Load Step 6: Add ResponseAction to Send Data Back To display or return results: Drag ResponseAction into the Structure panel Place it after DataRaptorPostAction Configure: Return Full Data JSON = True OR Return a specific node using %%PostResult%% This allows the Integration Procedure to return: Created/updated record Id Status of the operation Error messages (if any) In Response Acton Step 7: Provide Input Parameters in Preview Tab Go to the Preview tab of the Integration Procedure. Example Input JSON: {   “Name”: “Test Account”,   “Phone”: “1234567890” }   These values must match: The input expected by the DataRaptor Load The field mapping defined earlier Step 8: Execute the Integration Procedure Click Execute Check the response JSON Verify: Record is created or updated in Salesforce Response contains success or error details On Preview Tab Result Common Use Cases of DataRaptor Post in IP Save OmniScript form data Update Account, Contact, Case records Bulk record updates using ListAction + DataRaptor Post API-based data ingestion FlexCard action-based updates Best Practices Always use Send Only Additional Input = True Validate required fields before posting Use ListAction for bulk updates Return minimal response data Handle errors using Failure Response Common Mistakes to Avoid Using incorrect DataRaptor Interface name Missing required fields in input JSON Not activating DataRaptor Load Returning too much data in ResponseAction Skipping error handling Conclusion DataRaptorPostAction is the preferred way to perform create and update operations in OmniStudio Integration Procedures. It provides a declarative, high-performance, and scalable alternative to Apex, making it ideal for OmniScript and FlexCard integrations. Mastering DataRaptor Post helps you build robust, maintainable OmniStudio solutions.

How To Use DataRaptorPost In Integration Procedures Read More »

How To Use Edit Block in OmniScript (Vlocity)

Edit Block is one of the most powerful components in OmniScript. It allows users to view, add, and edit multiple records directly on the screen without navigating away or using separate load actions. In this post, we will learn how to use Edit Block in OmniScript Vlocity, how it works internally, and how to configure it step by step. What Is an Edit Block in OmniScript? An Edit Block enables users to add or edit multiple entries in a single array. It is commonly used when you want to edit related records like: Account Contacts Related Addresses Custom child records Edit Blocks are repeatable by default, meaning they can display multiple rows of data dynamically. Edit Blocks also support prefilling data, which means records can be fetched first and then edited directly on the UI. When Should You Use an Edit Block? Use an Edit Block when: You need inline editing of records You want to update records without a Load DataRaptor You want a cleaner, faster user experience You are working with child records in an array format Step 1: Create OmniScript and Fetch Data To edit records, users must first see the records. Step 1.1: Create an OmniScript Create a new OmniScript Activate it after configuration Step 1.2: Fetch Data Using DataRaptor Extract Add an Extract Action Use a DataRaptor Extract to fetch records Ensure the response is returned as an array This extracted data will later be bound to the Edit Block. Step 2: Add and Configure the Edit Block Step 2.1: Add Edit Block Drag an Edit Block into the OmniScript canvas Step 2.2: Bind Edit Block to Extract Data Edit Block Name must match the Extract JSON Path This binding is mandatory for data to display correctly Example: Extract JSON Path: Contacts Edit Block Name: Contacts This is how OmniScript knows which data belongs to the Edit Block. Step 3: Add Editable Fields Inside Edit Block Inside the Edit Block: Add Text, Input, or other form elements Each element name must exactly match the field name coming from DataRaptor Example: Field from DataRaptor: FirstName Element Name: FirstName This name matching binds data automatically. Step 4: Configure Remote Action for Edit Block To update records without a Load Action, a Remote Action is required. Step 4.1: Add Remote Action Inside Edit Block Drag a Remote Action inside the Edit Block Step 4.2: Configure Remote Action Properties Remote Class: DefaultOmniScriptEditBlock Remote Method: edit This standard Salesforce class handles record updates automatically. Step 5: Configure SObject Mapping Correct mapping ensures records are updated in Salesforce. Required Configurations: Set SObject Name Map fields correctly in SObject Field Mappings Map: Edit Block element Id → SObject field Id Important rules: Id field must be: Marked as Duplicate Key Hidden from the UI This ensures correct record identification. Step 6: Enable Edit Functionality In Edit Block Properties: Enable Allow Edit Set Edit Label (for example: “Edit”) The Edit Label must match the Remote Action Name exactly. This connects the UI edit button with the backend update logic. Step 7: Configure Elements Inside Edit Block Select all elements that should be editable Mark them under Elements Inside Edit Block This controls what fields appear when editing starts Step 8: Test the Edit Block Preview the OmniScript: Records appear in repeatable rows Click Edit Modify values Save updates Changes are saved directly to Salesforce without using a Load DataRaptor. Key Points to Remember Edit Block Name must match Extract JSON Path Field names must match exactly Remote Action is mandatory Id field mapping is required No Load Action is needed Common Mistakes to Avoid Mismatched JSON Path and Edit Block Name Forgetting to add Remote Action Incorrect Id mapping Not enabling Allow Edit Using Load Action unnecessarily Conclusion Edit Blocks in OmniScript provide a powerful and efficient way to manage multiple records directly on the UI. When configured correctly, they eliminate the need for additional load actions and significantly improve performance and user experience. Edit Blocks are especially useful in complex OmniStudio implementations where inline record updates are required.

How To Use Edit Block in OmniScript (Vlocity) Read More »

How To Use Delete Action In Integration Procedures

The Delete Action in Integration Procedures allows you to remove Salesforce records directly using OmniStudio, without writing any Apex code. It is commonly used when you want to delete records from an OmniScript or FlexCard based on a user action, such as clicking a button or submitting a form. This approach keeps the implementation lightweight, fast, and easy to maintain. In this post, we will understand how the Delete Action works, how to configure it correctly, and how to call it from an OmniScript. Understanding Delete Action in Integration Procedures Delete Action is a standard OmniStudio Integration Procedure element designed specifically for record deletion. It works by accepting a Salesforce record Id and deleting the corresponding record from the specified object. Unlike DataRaptor or Apex-based solutions, Delete Action does not require field mappings or custom logic, making it ideal for straightforward delete operations. This action is especially useful when you need to delete child records, clean up related data, or allow users to manage records directly from a guided OmniScript flow. Creating the Integration Procedure To begin, create a new Integration Procedure from the OmniStudio console. Provide a meaningful name and description so the purpose of the Integration Procedure is clear. Once created, save the Integration Procedure before adding any actions. After saving, drag the Delete Action onto the Integration Procedure canvas. This action will handle the actual deletion of the record in Salesforce. Configuring the Delete Action In the Delete Action properties, you must specify the Salesforce object and the record Id to be deleted. The Delete SObject Type should be the API name of the object, such as Account, Contact, or a custom object. The Path To Id is where the record Id will be passed in the request JSON. This Id usually comes from an OmniScript, FlexCard, or context variable. As long as the correct Id is provided, the Delete Action will remove the record successfully. Once configured, the Delete Action is ready to perform deletions. Using Response Action to Return Status Although the Delete Action deletes the record, it does not automatically send a confirmation back to the calling component. To handle this properly, it is recommended to add a Response Action after the Delete Action. The Response Action allows you to send information such as a success message, deleted record Id, or status flag back to the OmniScript or FlexCard. This helps in displaying confirmation messages or triggering additional logic on the UI side. After adding the Response Action, configure it to return the required output data and save your changes. Activating the Integration Procedure Before the Integration Procedure can be used, it must be activated. Activation makes it available for use across OmniScripts and FlexCards. Without activation, the Integration Procedure will not appear in the selection list. Calling Delete Action from OmniScript Next, open or create an OmniScript where the delete operation is required. Drag an Integration Procedure Action onto the OmniScript canvas and select the Integration Procedure you created. In the Remote Properties → Extra Payload, pass the record Id that needs to be deleted. This Id can come from the Context Id, a DataRaptor response, or user-selected data. Once the Id is passed correctly, the OmniScript is fully connected to the Delete Action.   Delete Action an Integration Procedures Testing the Delete Functionality To test the setup, go to the OmniScript preview. Provide a valid record Id in the Context Id or test parameters and trigger the delete action. Once executed, the record will be immediately deleted from Salesforce. If a Response Action is configured, you will also see the confirmation or response data returned on the preview screen.   Response Action Best Practices for Using Delete Action While Delete Action is powerful, it should be used carefully. Always ensure that only authorized users can delete records. Adding confirmation messages and using role-based access control helps prevent accidental deletions. In production environments, it is also a good idea to log delete operations or notify users after successful deletion. Result On Preview Tab Conclusion The Delete Action in Integration Procedures offers a clean and efficient way to delete Salesforce records using OmniStudio. It eliminates the need for Apex or complex DataRaptor configurations and works seamlessly with OmniScripts and FlexCards. When used correctly with proper validation and confirmation, it becomes a reliable solution for record management in OmniStudio implementations.

How To Use Delete Action In Integration Procedures Read More »

How to create a new org in OmniStudio Vlocity

OmniStudio (formerly Vlocity) is a Salesforce Industries toolset used to build guided user experiences, dynamic UI components, and server-side integrations. Before working with FlexCards, OmniScripts, Integration Procedures, or DataRaptors, you must create and prepare a Salesforce org that supports OmniStudio. Below is a structured explanation combining paragraph clarity with step-wise pointers. Prerequisites to Use OmniStudio OmniStudio does not work in a standard Salesforce Developer Edition org. It requires a Salesforce Industries–enabled org or a special developer environment. Key requirements include: Salesforce Industries (Vlocity) license OmniStudio managed packages Proper permission sets For learning and development, Salesforce provides Industries Developer Edition orgs, which already include OmniStudio components. Step 1: Create a Salesforce Industries Developer Org To create a new OmniStudio-supported org: Go to the Salesforce Industries (Vlocity) Developer signup page Fill in basic details such as: Name Email address Company name Country After submission, Salesforce sends a verification email. Once verified, your Salesforce Industries org is created, and login credentials are shared via email. This org usually comes pre-installed with OmniStudio tools. Fill all details and signup Step 2: Log in and Verify OmniStudio Availability After logging in to the new org, confirm that OmniStudio is available. You can verify this by: Opening App Launcher Searching for: OmniStudio FlexCards OmniScripts Integration Procedures If these options appear, OmniStudio is successfully enabled in your org. Step 3: Check OmniStudio Settings in Setup To further confirm configuration: Go to Setup Search for: OmniStudio Settings Industries Settings These settings control runtime behavior, component visibility, and platform features related to OmniStudio. Step 4: Assign Required Permission Sets Even with OmniStudio installed, users cannot access it without permissions. From Setup > Permission Sets, assign: OmniStudio User OmniStudio Designer Industries Runtime permissions (as required) After assigning permissions: Log out Log back in This refresh ensures all OmniStudio features become accessible. Step 5: Open OmniStudio and Start Development Once permissions are assigned, open the OmniStudio App. You can now work with: FlexCards for UI components OmniScripts for guided user flows Integration Procedures for backend logic DataRaptors for data extraction and transformation Enable preview and debug modes while developing to test components easily. Best Practices for a New OmniStudio Org When working in a fresh OmniStudio org, follow these best practices: Use clear naming conventions for all components Maintain version control for OmniScripts and Integration Procedures Clone components instead of editing base metadata Create sample test data for development and demos These practices help keep your org clean and scalable. Conclusion Creating a new org in OmniStudio (Vlocity) Salesforce is the first and most important step in building modern, industry-driven applications. By choosing the correct developer org, verifying OmniStudio availability, assigning permissions, and configuring settings properly, you can start building FlexCards, OmniScripts, and Integration Procedures with confidence.

How to create a new org in OmniStudio Vlocity Read More »

How to Use Exposed Attributes in FlexCard (OmniStudio)

In OmniStudio (Vlocity), Exposed Attributes in a FlexCard allow you to pass data dynamically from a parent component—such as an OmniScript, another FlexCard, or a Lightning App Page—into a FlexCard. This makes FlexCards reusable, dynamic, and context-aware instead of hard-coded. In this article, we’ll understand what Exposed Attributes are, why they are used, and how to configure and use them step by step. What Are Exposed Attributes in FlexCard? Exposed Attributes are input parameters of a FlexCard. They act like variables that receive values from an external source. Instead of fetching data internally every time, the FlexCard can accept values such as: Record Id (AccountId, ContactId, etc.) Any custom field value Context data from OmniScript or another FlexCard Once exposed, these attributes can be used inside: Data Sources Conditional Visibility Text Fields Actions This makes the FlexCard highly reusable across different pages and contexts. Why Use Exposed Attributes? Using Exposed Attributes provides several benefits: Makes FlexCards reusable across multiple records Avoids hardcoding record IDs Enables communication between OmniScript and FlexCard Improves performance by passing context instead of refetching data Helps in dynamic UI rendering based on input values Steps to Use Exposed Attributes in FlexCard Step 1: Open or Create a FlexCard Go to OmniStudio → FlexCards Open an existing FlexCard or create a new one Switch to Edit Mode In Setup Exposed Attributes Step 2: Add an Exposed Attribute Click on the Setup tab (right panel) Scroll to Exposed Attributes Click Add New Now define the attribute: Name: Example – recordId Type: String (most commonly used) Default Value (optional): Can be left blank or set for testing Save the FlexCard after adding the attribute. Exposed Attributes Step 3: Use Exposed Attribute in Data Source Exposed Attributes are commonly used in Data Sources to fetch record-specific data. Go to the Data Source section In the Input Map, reference the exposed attribute using: {{recordId}}   Map it to the required parameter (e.g., Id in DataRaptor or Integration Procedure) This ensures data is fetched dynamically based on the value passed from outside. In Text Field Paas {Session.AttributeName} Step 4: Use Exposed Attributes in FlexCard Fields You can also use exposed attributes directly in UI elements. Examples: Text Field value: {{recordId}} Conditional Visibility: Show component only if recordId != null Actions: Pass the attribute to another OmniScript or FlexCard This allows UI behavior to change dynamically. Step 5: Pass Exposed Attribute from OmniScript When using a FlexCard inside an OmniScript: Drag the FlexCard element into the OmniScript canvas Go to Element Properties Under Input Parameters, map: Key: recordId Value: %ContextId% or any OmniScript variable Now the FlexCard receives the record Id from the OmniScript context. Step 6: Pass Exposed Attribute from Another FlexCard If calling a FlexCard from another FlexCard: Add the child FlexCard as an element In the Input Parameters, pass a value like: {{Id}}   Map it to the exposed attribute name This allows parent-child FlexCard communication. Common Use Cases of Exposed Attributes Showing Account details based on selected Account Reusing the same FlexCard on different record pages Passing ContextId from OmniScript to FlexCard Controlling UI visibility based on input values Calling Integration Procedures dynamically Best Practices Always use meaningful attribute names (e.g., accountId, caseId) Keep attribute type consistent with expected value Avoid unnecessary default values in production Use exposed attributes instead of hardcoded values Test using Preview and different record contexts Conclusion Exposed Attributes are a powerful feature in FlexCards that enable dynamic data passing and reusability. By defining exposed attributes and passing values from OmniScripts or parent FlexCards, you can build flexible, scalable, and performance-optimized OmniStudio solutions. Mastering exposed attributes is essential for real-world OmniStudio implementations.

How to Use Exposed Attributes in FlexCard (OmniStudio) Read More »

How to Make Transform DataRaptor in ListofObject to ListofItems.

Step :– 1 First let’s create a DataRaptor Transform. /*! elementor – v3.18.0 – 20-12-2023 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=”.svg”]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} Step :– 2  Now we go to the Transform Tab and click on the Plus(+) icon.                  then go to the Output JSON Path and type MoviesNames And type MovieNames in the Input JSON                     Path Step :– 3  Now we can formula by going to the Formula Tab. type Movies:Name in the formula and type MovieNames in the output result  path. Step :– 4  Click on Preview Tab and write down in input json. {     “Movies”: [         {             “Name”: “ABC”,             “Genre”: “Action”         },         {             “Name”: “ABC2”,             “Genre”: “Comedy”         },         {             “Name”: “ABC3”,             “Genre”: “Action”         }     ] } Click Execute Button: Review Output Results: After clicking the “Execute” button, review the output results. Verify that the displayed results align with your expectations and correspond to the input JSON data you provided.

How to Make Transform DataRaptor in ListofObject to ListofItems. Read More »

Scroll to Top