Skip to main content
Group

Salesforce OmniStudio Developer

This group is to support development using Salesforce OmniStudio (Earlier known as Vlocity Digital Interaction Platform). Training Org: https://www.salesforce.com/form/signup/financial-services-cloud-trial Trailmix: https://trailhead.salesforce.com/en/content/learn/trails/build-guided-experiences-with-omnistudio Developer Documentation: https://help.salesforce.com/s/articleView?id=sf.os_omnistudio.htm&type=5

I have created a Turbo Extract Data Mapper to get Accounts Fields Like Name and Industry.  

I have taken Extraction Object as Account, Extract Object Path as Accounts, I have not taken any filter, my Related Object is Account as It's mandatory to select and Selected Fields are Name and Industry. 

While click on preview and after executing this logic I'm facing this error message: 

 

    "fetchAcc": { 

        "all": { 

            "0": "Critical Error: We couldn’t execute the Data Mapper because the mappings are incorrect. Verify the mappings and try again. If the issue persists, contact Salesforce Customer Support." 

        } 

    } 

 

I have done same thing with custom JSON while applying filter to get records of particular accounts, that is  working fine. 

 

To get records of Accounts, I have check another way to  

where I'm just applying filter Id != "$VLOCITY>NULL" and every thing is same as above here I'm getting this error 

    "FetchAccs": { 

        "all": { 

            "0": "OmniStudio Query Error: ; nested exception is: \n\tcommon.exception.ApiQueryException: \nType,Name FROM Account WHERE (Id != '$VLOCITY.NULL') LIMIT 50000\n                              ^\nERROR at Row:1:Column:41\ninvalid ID field: $VLOCITY.NULL" 

        } 

    } 

In SOQL it's normal logic "Select Id, Name, Industry from Account Where Id != null" but it's not working in omnistudio.  

What wrong I'm doing ? Please Help me  

2 answers
  1. Jun 16, 9:02 PM

    Assuming that you are trying to extract all accounts, use the filter 

     

    Id Not Equal To "$Vlocity.null" 

     

    Note: you need the double qoutes around $Vlocity.null. Refer to the screenshot below. 

     

     

    Assuming that you are trying to extract all accounts, use the filter Id Not Equal To

     

     

    You may also use an empty double quote to attain the same result. 

     

    Id Not Equal To ""  

     

0/9000

I am using apex for extracting a data and transform to transform this even though the field mapping is correct in data mapper transform and document template but still the rich text field data is not displaying, it is displaying as blank. 

However I am able to see the data in preview in omni data transform like below  

 "RTB_Dasc_text": "<p>Test the Document data for <strong>rich text</strong></p>", 

and field used in template like this - {{RTB_Dasc_text}} 

 

Any help on this would be very useful

3 answers
  1. Jun 16, 7:12 AM

    @Himanshu Gupta Steps to Update Token Data

    1. Update the token data to RTB_Dasc_text
      • Apply this for both in Datatransform : 
        • Input JSON Path
        • Output JSON Path
      • Data Extract (Output JSON Path)
    2. In the Data Mapper Preview, the value will appear as:

    <p>Test the Document data for <strong>rich text</strong></p>

    This is expected behavior in preview.

    1. When you generate the document, the rich text will render correctly (formatted text will be displayed properly).
0/9000

Hi All,  

I am using standard runtime Omnistudio which is trail org, I have created a Toggle lwc component and want to use that on Omniscript but I am getting No MODULE named markup://omnistudio:omniscriptBaseMixin found : [markup://c:customToggleButton] while deploying lwc component. Any Idea on this issue. 

 

Omnistudio Standard Runtime No MODULE named markup://omnistudio:omniscriptBaseMixin found : [markup://c:customToggleButton]

 

 

11 answers
  1. Jun 14, 3:38 AM

    @Eduardo López

     

    I checked your comment about standard runtime 

    So, i am having the same issue unable to import omnistudio packages since i am on standard runtime, I have a use case where i need to use custom lwc for a date validation, the validation works correctly but i am unable to pass the data from lwc back to data json of omniscript

0/9000

Hello,

I am encountering difficulties generating a document via an omniscript.

I have 3 templates that I would like to merge into a single pdf. These are conditional on certain fields of a quote (proposal, annexes, conditions).

I manage to generate the 3 corresponding templates, then perform the merge in a second step within a single PDF.

So I have a step to generate the 3 documents, and a step to generate the merged document.

If possible, I would like to generate the 3 documents on the server side, and only display the final document to the user.

Are there any ideas to achieve this?

7 answers
  1. Jun 2, 2:11 PM

    Hello @Shawn James

     , you can give more details , please or documentation. 

     

    I have the same probleme. 

     

    Thanks you

0/9000

We're utilizing the Google API to search for an address and populate five read-only fields in Omni script if the address is found. If not, we're providing users with the option to manually enter the address via an LWC pop-up screen. After they've entered the address, we return to the Omni script. Although the fields are updating in JSON, the old values persist on the screen. How can we refresh the screen to display the new address data?

#Omni Channel
1 answer
  1. Jun 1, 3:22 PM

    Hi, 

     

    omniUpdateDataJson() updates the DataJSON but doesn't trigger UI re-render on OmniScript elements — their local state stays stale. 

     

    Fix: Use omniApplyCallResp(payload) instead — it updates the JSON and forces UI refresh.

    const addr = {

    AddressLine1: '123 Main St',

    City: 'Noida',

    PostalCode: '201301'

    };

    this.omniApplyCallResp(addr);

    Requirements:

    • LWC must extend OmniscriptBaseMixin
    • Payload keys must exactly match OmniScript element names (case-sensitive)
    • For nested step data, use { StepName: { FieldName: value } }

    If still not refreshing, chain both:

    this.omniUpdateDataJson(addr);

    this.omniApplyCallResp(addr);

0/9000

Hey everyone, I’m stuck with a Salesforce Time field issue.

In OmniScript, when a user selects 2:00 PM, the JSON shows it as 14:00, but DataRaptor gives an “invalid value: 14:00” error.

Earlier we used DateTime, and Salesforce stored a converted UTC time like 18:00:00.000Z, which shifted the actual time.

Even in the UI, Salesforce converts and stores the time differently (e.g., 2:00 PM becomes 14:00:00.000Z), and sometimes shifts again on update.

Has anyone figured out the correct way to save Time values from OmniScript to Salesforce without timezone issues?

#Omnistudio
1 answer
  1. Jun 1, 3:17 PM

    Hi, 

     

    Transform the value before passing to DataRaptor

     

    Option A — Formula Element in OmniScript Add a Formula element after the Time picker:

    %timeField% & ":00.000Z"

    This turns 14:00 → 14:00:00.000Z. Map this formula output to DataRaptor, not the raw picker value. 

     

    Option B — SetValues / DataJSON manipulation Use a SetValues element to construct the correct string:

     

    json

    {

    "transformedTime": "{timeField}:00.000Z"

    }

     

    Option C — Integration Procedure (recommended for complex flows)

    Use a Transform action in an Integration Procedure to append :00.000Z before the Load step hits Salesforce. 

     

     

0/9000

Hello, I've noticed that after deploying integration procedures that have changes to the target environment the integration procedure executes without the latest changes in place. In order for the updates to reflect, I have to deactivate and activate the integration procedures affected. 

 

I was wondering if there is a better way to do this where a post deployment step of manually deactivating and activating the IPs can be avoided. Appreciate the help. Thanks! 

 

#Omnistudio

3 answers
  1. May 31, 8:45 AM
    Yes, this needs to be performed as a post deployment step. We've raised this concern with Salesforce, as it's a task when more IPs/OS are deployed.
0/9000

I have added Static resurces to the Omniscript. When I update the css in static resources and publish the site, the updates css are not getting updated. 

 

Tried below steps and nothing wrks. 

 

  • Tried activate and deactivate multiple times
  • Created new version 

Any suggestion to fix this? 

 

@Salesforce OmniStudio Developer @OmniStudio SFDC 

1 answer
  1. May 28, 2:14 PM

    Static Resource CSS Issue in OmniScript Experience Cloud - Here’s the Fix

     

    When applying custom CSS to OmniScripts using Static Resources, everything works perfectly at the initial.

     

    Applying Custom Styling to OmniScript:

    1. Create CSS file

    2. Upload it in the Static Resource (Eg. CustomStyling)

    3. Reference it in "Custom Lightning Stylesheet File Name or Custom Newport Stylesheet File Name".

    4. Activate the OmniScript and add it to the Experience Site

    5. Publish the site

     

    ✅ Now, the site will be loaded with the applied custom css with the Omniscript.

     

    😥 But the real issue starts after modifying the CSS.

     

    Upload the modified CSS to the same Static Resource, publish the site and nothing changes.

    You may try:

    1. ❌ Waiting for cache refresh

    2. ❌ Activating/deactivating OmniScript

    3. ❌ Republishing the site multiple times

     

    Still, the old CSS continues to load because of caching.

     

    💡 Solution: Add Version Control to the Static Resource in Omniscript.

     

    Instead of referencing only the static resource name, append a version parameter.

    Example:

    "yourStaticResourceName?ver=1.0" (Eg. CustomStyling?ver=1.0)

     

    After every CSS update:

    1. Upload the updated CSS to the Static Resource

    2. Increment the version number in Omniscript "Custom Lightning Stylesheet File Name/Custom Newport Stylesheet File Name"

    Example:

    ?ver=1.0

    ?ver=1.1

    ?ver=2.0

    3. Activate the OmniScript

    4. Publish the Experience Site

     

    ✅ The latest CSS changes will reflect immediately without cache issues.

0/9000

Omniscript Language = Multi-Language 

 

Radio Button Element

With manual values, the given Custom Labels are not showing any values for English or Other Language.

 

design view :Need Help with OmniScript Multi-Language Translationsactual view on preview & activated omniscript in Community :Screenshot 2023-04-11 at 13.20.03.png

SetErrors Element -

have to use Custom Label to show error message in English or Other Language.

 

tried using following format for Custom Labels in Error Element Value, but nothing works

1. os_sports_BankAccountConfirmWarning

2. $Label.os_sports_BankAccountConfirmWarning

3. unable to figure out what format "Expression Section" accept for Custom LabelScreenshot 2023-04-11 at 13.25.40.png

Placeholder within Lookup Element

have to use Custom Label to show placeholder text for Lookup, but unable to figure out what format to use so that it show English or Other Language respectively.Screenshot 2023-04-11 at 13.29.11.png

 

Thanks

@Salesforce OmniStudio Developer

3 answers
  1. May 28, 4:35 AM

    I have almost same issue 

    when I Preview the Omniscript without activated it, the labels are displayed correctly, but after activate it, the labels disappeared.  

     

    have you faced this issue?

0/9000

I am extracting data from related records and wants to join fields value and using JOIN(Case:OPLC_Narrative__c, "\r\n"). But in document data is coming in same line like "Hello testing\\r\\nHello testing\\r\\nHello testing\\r\\nNA" . but I want data to come in next line.  I have tried all approach like <br> ,\n,\\n 

nothing worked . 

 

 

 

 

Line Break in Document Template - Salesforce OmniStudio

 

 

 

image.png

 

 

image.png

 

Screen flow -> Calls "Integration Procedure" -> IP fetchs document template id and calls remote class "omnistudio.DocumentServiceGateway" . 

 

Document tempate takes DM extract and DM transform .  

image.png

 

 

image.png

 

 

image.png

 

 

 

1 answer
0/9000