4 step process
To support the Automotive app, you can either create a new Salesforce Org or use an existing one, provided it includes the following features and licenses:
Requirement | Details |
---|---|
Licenses Required | - Data Cloud - Auto Cloud - Sales Cloud - Service Cloud - Experience - Commerce Cloud - Marketing Cloud - MuleSoft (Optional) - Tableau Admin |
Features Required | - Service Agent - Einstein Agent - Copilot - Prompt Builder - Agent Force - Real-time - Code Builder (Optional) - Tableau Next (Beta) |
Step | Action and Details | Images |
---|---|---|
Install package | - Click on this Package Installation Link - Sign-in to the Org with your credentials. - Choose Install for Admins Only option - Choose “Rename conflicting components in package” and click the Install button. - Wait until installation is completed, you will receive a confirmation on logged in user’s email |
![]() |
Verify Package installation | - Click Setup - Search for package - Search for 'AutomotiveConfigPackage' is installed |
![]() |
1 steps process
Step | Action and Details | Images |
---|---|---|
Install Automotive Base Package | - Click on this Package Installation Link - Sign-in to the Org with your credentials. - Choose Install for Admins Only option - Choose “Rename conflicting components in package” and click the Install button. - Wait until installation is completed, you will receive a confirmation on logged in user’s email |
![]() |
Verify Package installation | - Click Setup - Search for package - Search for 'SFAutomotiveDataKitsPackage' is installed |
![]() |
3. Data Cloud Configuration
7 steps process
1. Install the Data Kit to add Data Cloud components to the Org (15 mins) $${ S3 \space Optional: \space Please \space note \space that \space some \space functionality \space in \space Experience \space Cloud \space and \space in \space the \space C360 \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
The Data Kit is installed as a part of the Package installation. Once the Data is available in the org, follow the steps below to create data streams.
Step | Action and Details | Images |
---|---|---|
Create Data Streams from Data Bundle | - While logged into the environment where you installed the data kit - Go to Data Cloud app and the Data Streams tab. - Click New to create a Data Stream - Select Salesforce CRM and click Next. - Under Custom Data Bundles,select the SalesforceCRM01. -Select your Salesforce Org and Click Next. -Select the data space as ‘Default’, review the fields in your data stream, and click Next. -Review details and click “Deploy”. -Repeat the same step for second Data Bundles, select the SalesforceCRM02 . |
![]() ![]() ![]() |
Create Website_Mobile_apps Data Stream from Data Kit | - Click on Data Stream - Click on New - Select ‘Installed Data Kits Package’ - Select ‘SFAutomotiveDataKitsPackage’ Data Kits - Select checkbox under ‘Websites_Mobile_Apps’ click on ‘Next’ -Select Connector type =‘website’ & connector name Experience_Cloud_Event_Connector’. - Click on Deploy |
![]() ![]() ![]() ![]() ![]() |
Create a Connection to Amazon S3 |
NOTE: If you do not have an existing Amazon S3 instance, register for the free tier, and then follow instructions in How to Use the Amazon S3 Storage Connector in Data Cloud to create dedicated user with required permissions for this demo. If you already have an S3 instance, no need to sign up for a new one. Before proceeding further, make a note of your programmatic credentials (Access Key ID and Secret Access Key) that can be used to access the account - Navigate to Data Cloud Setup - In the menu, under EXTERNAL INTEGRATIONS, click on Other Connections - Click New, choose DataKit click on next then click on SFAutomotiveDataKitPackage And Select Amazon_S3_Unstructure Then click on Next. -Under Authentication details select Authentication option as Access key/Secret based. Add your AWS Access key And AWS Secret Access Key -Click on test connection -Click on save. (After saving wait for 10 to 15min till the status is active)DO NOT CHANGE THE CONNECTION NAME - Refer to this document for more details on how to setup the connection |
![]() |
1a. Create Data Stream for Snowflake (10 mins) $${ Snowflake \space Optional: \space Please \space note \space that \space some \space functionality \space in \space the \space C360 \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
Step | Action and Details | Images |
---|---|---|
Create a connection to snowflake |
NOTE: If you do not have access to an existing Snowflake instance, please get access before proceeding further - Follow instructions in this article to create a Warehouse and Integration User in Snowflake, generate a public and private key pair, and configure Salesforce Data Cloud to connect to Snowflake. - Name the connection “SnowflakeDataFederatio” -Enter your Snowflake account URL. Then enter the username of your integration user and the private key. -Click Next And Save It. |
![]() |
Create Data Stream for Snowflake from data kit | - Click on Data Stream Click on New - Select Installed Data Kits & Package Click on Next -Select Snowflake Bundle - Select connection as ‘SnowflakeDataFederation’ . - Select Snowflake Bundle and click Next. - Under Data Streams choose "THIRD_PARTY_SURVEY". - Review the Data Stream fields and click Next - Click Deploy to create the Data Streams |
![]() |
1b. Create Ingestion API for Mule Data Streams from Data Kit (5 mins) $${ Mulesoft \space Optional: \space Please \space note \space that \space some \space functionality \space in \space Experience \space Cloud \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
1c. Create Automotive_FAQ DLO Creation for Unstructured Data (5 min)
1d. Create Identity Resolution Ruleset from Data Kit (5 min)
2. Create Calculated Insights (10 min)
3. Create Data Graph (10 min)
4. Create Data Cloud Copy Field Enrichment (10 min)
5. Create activation targets (5 min)
6. Create Segment From Data Kit (5 min)
7. Create Activation (10 min)
4. Commerce Cloud Configuration And Sample Data Creation
13 steps process
1. Verify Organization Wide Address (5 min)
2. Install Agent and Experience Site Package (1 hr 30 min)
Step | Action and Details | Images |
---|---|---|
Install Agent & Exp Site Package |
- Install VSCode Download - Setup CLI a. Install the Salesforce CLI https://developer.salesforce.com/tools/salesforcecli or check that your installed CLI version is greater than 2.56.7 by running sf -v in a terminal. - If you need to update the Salesforce CLI, either run sf update or npm install --global @salesforce/cli depending on how you installed the CLI. - Install Extension - Open VSCode > Go To> Extensions->Salesforce Extension Pack>Install - Open Terminal Clone git Repository by using below command git clone https://github.com/salesforce-misc/DataCloudAndAgentForceForAutomotive.git - Open the Project - Authorize an Org - Type Ctrl+Shift+P Select SFDX:Authorize an Org - Select Project Default - Enter the Org alias - Authorize the Org - Open terminal and run the command sf project deploy start --source-dir force-app NOTE: |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
3. Create Sample Data (5 mins) $${ Optional: \space These \space steps \space are \space optional \space if \space you \space choose \space to \space use \space your \space own \space data. }$$
4. Create Commerce Data (5 min)
5. Turn on Search Update (5 min)
6. Upload CMS Images into the Store And Verify Workspace Shared To Site (15 min)
Step | Action and Details | Images |
---|---|---|
Upload CMS Images | -Download Images for CMS From download -Click on App Launcher>> Select commerce application>> Click on Store - Open Autofolio Store - Scroll down to Content Manager - Click on Add workspace - Enter details such as Name "AutoFolio Store" and select Enhanced CMS Workspace and click on Next - AutoFolio Site as Public and click Next - Keep language as it is and click on Finish - Click on Add and select Content >> select images>>Click on Create button>> click on upload button>>Select Image>>Image and Title populated>>Enter API name (can be the same as file name)>> Save it>> Click on Publish button>> Keep Details as is>> Click on Next>> Select Publish Now>>click on publish now button - Please find the required images here - Download images |
![]() ![]() ![]() ![]() ![]() ![]() |
Verify Workspace Shared to Site | -Open Autofolio Store -Scroll down to Content Manager>> Click on Autofolio Store workspace -Click on Gear Icon>> Select Workspace Sharing -Select All Commerce -Enhanced, AutoFolio Managed Content Space CianuN4G. |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
7. Add Image to a Product in CMS (10 min)
8. Enable as a Buyer Group (5 min)
9. Enable Guest access (5 min)
10. Create Community User and Assign Buyer Account to Buyer Group (5 min)
11. Create Order and OrderItems Data (5 min)
12. Create Opportunity ML Data (5 min)
Step | Action and Details | Images |
---|---|---|
Create Opportunity ML Data | -Click on App Launcher, search for Automotive Setup and click on Automotive Setup app -Click on the Create Opportunity Data For ML button (highlighted in the screenshot below) and wait for a confirmation message before proceeding further. |
13. Search Index and Retriever Configuration (15 min)
Step | Action and Details | Images |
---|---|---|
Search Index and Retriever Configuration | -Go to App Launcher Search for Data Cloud, Go to Search Index Tab. -Click on New, Select From a Data Kit , Select ‘SFAutomotiveDataKitsPackage’ , Select Product ,Click on Next -For Search Type Select Hybrid Search, Click Next -For Chunking, Keep the Same Changes and Click Next. -For Vectorization, Make sure E5 Large V2 Embedding model is Selected, Click Next -For Fields for Filtering, Keep Same, Click Next. -For Ranking, no Change , Click Next -Click Save -After Save the ‘Search Index Last Run Status’ Will be In Progress, wait for 15-30 Minutes Till the Status changes to Ready. -Create Retriever for Showing Product -Create Retriver, Go to App Launcher Search for Data Cloud, Go to Einstein Studio Tab. On the Left Side below Models, click on Retriver, Clikc on New Retriver -In Select Retriever Type Section, Select Data Source as Data Cloud, In which data space does the source data reside? As default, data model objec as Product, Data model object's search index configuration as Product, Click Next -In Section Define Retriver Filters, Select All Document, Click Next -In Section Confiure Retriver Results Number of Results as 20 and map Fields to Return as following 1- Field Label :Seat Capacity Field Name :Direct Attribute > Product >Seat Capacity 2- Field Label :Product Description Field Name :Direct Attribute > Product >Product Description 3- Field Label :Vehicle Name Field Name :Direct Attribute > Product >Product Name -Click Next -Click Save -Click on Setup, in the Quick Find Box, enter Prompt Builder, and then select Prompt Builder -Search for the Prompt Template named Vehicle Recommendation and click on the hyperlink -Place the cursor after the text the ‘Vehicle Details:’, click on Resource then click on Einstein Search then click on ‘Product’ click on ‘Product retriever’ -On the right side click on default ‘Product retriever’ click on Search Parameter click on Free Text Click on Question -Scroll down Select Chunk under Output Field and Enter 1 in Number of Result -Click on Save As New Version click Activate |
5. Configure Amazon and Snowflake Connections
4 steps process
1. Assign Account Page Layout (10 min)
2. Setup Data in Amazon S3 (20 mins)
Note: If Amazon S3 is using exisiting connection and data is already present then skip this step, this is for new connection
Step | Action and Details | Images |
---|---|---|
Setup Data in Amazon S3 | - Log into Management Console and proceed to S3 service and create a new bucket (give it an appropriate name). NOTE**:** if you already have a bucket, you don’t need to create another bucket. Download the following files to your computer: - Automotive FAQ PDF csv https://github.com/salesforce-misc/DataCloudAndAgentForceForAutomotive/tree/main/AWS%20Unstructure%20Data] - Upload these files to the appropriate S3 bucket. |
3. Setup Data in Snowflake (15 mins) $${ Snowflake \space Optional: \space Please \space note \space that \space some \space functionality \space in \space the \space C360 \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
Note: If Snowflake is using exisiting connection and data is already present then skip this step.
create or replace TABLE <<database_name>>.<<schema_name>>.THIRD_PARTY_SURVEY (
SURVEY_ID VARCHAR(30),
SURVEY_DATETIME TIMESTAMP_NTZ(9),
RESPONDENT_ID VARCHAR(30),
SURVEY_QUESTION VARCHAR(32768),
RATING_VALUE NUMBER(5,0),
QUESTION_WEIGHT NUMBER(5,0),
IS_INTERESTED_IN_OUTDOOR_ACTIVITIES VARCHAR(10),
IS_INTERESTED_IN_ROOF_RACK VARCHAR(10)
);
Load data in the below csv file into Third_Party_Survey_Data table:
Third Party Survey Data- [https://github.com/salesforce-misc/DataCloudAndAgentForceForAutomotive/blob/main/Snowflake%20Data/SurveyResponse_Automotive.csv.csv]
4a. Create ML Model (20 min)
Note: Before Creating ML Model, Go to Data Cloud>> Data Stream>> Opportunity>> Click on Refresh Now Button and Wait till it get into success status Go to Data Explorer>>Under Object select Data Model Object >> Then Select Opportunity>>Verify your Data their You can modify columns as well by click on Edit Columns.
4b. Add ML Model into Flow (15 min)
6. Finish Configuration
10 steps process
1. Prepare Data Cloud
1a. Refresh Snowflake Data Streams (5 mins) $${ Snowflake \space Optional: \space Please \space note \space that \space some \space functionality \space in \space the \space C360 \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
1b. Run Identity Resolution Ruleset (5 mins)
1c. Run Calculated Insights (5 min)
2. Activate Messaging Setting (5 mins)
3. Update Einstein Search Retriever (10 mins) (perform only if Amazon S3 Connection has been created ) (10 minutes) $${ S3 \space Optional: \space Please \space note \space that \space some \space functionality \space in \space Experience \space Cloud \space and \space in \space the \space C360 \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
4. Prepare Experience Site
4a. Configure Digital Experience (5 mins)
4b. Enable Login Access (5 min)
4c. Change the layout of the Login page (5 min)
4d. Change the layout of the Forget Password page. (5 min)
4e. Change the layout of the Register page (5 min)
4f. Change the email Address (5 min)
4g. Add site logo (5 min)
Step | Action and Details | Images |
---|---|---|
Add Site Logo | -Go to Setup>> Enter All sites in quick find box click on builder of "AutoFolio" site Search for the logo of "alpine group' >> click on it Under setting>> click on Select Image from CMS> Select Content space>> select image "image name" click on Save. |
4h. Create Trusted URLS (20 min)
Step | Action and Details | Images |
---|---|---|
Create Trusted URLS | - In the Quick Find>Type Trusted URLs - Click on New>In API Name >Type ‘‘Trusted’ - In URL> Type> https://.tile.openstreetmap.org - Under CSP Directives>>check below checkbox for. 1. connect-src(scripts) 2. frame-src (iframe content) 3-img-src (images) - Save it - Click on New. - In API Name, type ‘TrustedSite2’. - In URL, type: https://DOMAINNAME.my.site.com. Replace DOMAINNAME.my.site.com with your actual org Domain Name. - To find the Domain Name follow these steps: -Search for Domain in Quick Find. -Copy the domain name ending with .my.site.com (e.g., epicorgfarm79.my.site.com). -Select the domain related to your Experience Cloud Sites. -Click on Save. Add Trusted URL to Agent Sites: -Click on Setup. -Search for Site, then click on Enable Site (if it’s not enabled already). -Click on Register My Salesforce Site Domain. -Search for Site, and click on ‘ESW_ESA_Web_Deployment_1736313145513’. -Click on Add Domain. -Add DOMAINNAME with your actual org Domain Name. -Prefix with https://(e.g.,https://epicorgfarm79.my.site.com). -To find the Domain Name, follow these steps: -Search for Domain in Quick Find. -Copy the name ending with .my.site.com (e.g., epicorgfarm79.my.site.com). To Add Trusted Sites in Digital Experience: -Click on All Sites under Digital Experience. -Click on Builder for your site (e.g., Autofolio). -Click on Security & Privacy. -Click on the Add Trusted Sites button. -Name it ‘TrustedSite1’. -Add the copied Domain URL And Click on Publish. Configure CORS Settings: -In Quick Find, type CORS. -Click on New -In Origin URL Pattern, type: (https://DOMAINNAME.my.site.com.) -Replace DOMAINNAME with your actual org Domain Name. -Click save. -Click on New. - Paste this into Origin URL Pattern: (https://.develop.vf.force.com) Click Save -Click on New And Paste this into Origin URL Pattern: (https://.live-preview.salesforce-experience.com.) -Click Save. -Click on New. Paste this into Origin URL Pattern: (https://.my.site.com.) And Click Save. Steps to Publish Embedded Service: -Search for Domain in Quick Find. Copy the domain name ending with .my.site.com (e.g., epicorgfarm79.my.site.com). -Click on Setup -Search for Embedded Service. -Click on Embedded Service Deployment. -Click on ESA Web Deployment. -Click on Publish and wait for the confirmation message. After Successfully publishing the ESA EWS deployment 1- go to In Setup Search for Embedded Service Deployments Click on ESA_Web_Deployment 2-In the Card Code Snippet Click on Install Code Snippet and add Below Values mentioned in the Image in the LeadFlyoutConfig Custom metadata Open LeadFlyoutConfig Custom metadata 3- Click on Manage LeadFlyoutConfig 4- Click On New to Create new Custom Metadata record. Fill in details as below when creating new custommetadata record LeadFlyoutConfig -Add Label às Lead Flyout Configuration LeadFlyoutConfig Name Will auto Populate -Bootstrap Link às Boostrap Link ; Refer Image -ESA Deployment Link as ESA Deployment Link ;Refer Image -Org Id as Organization Id ;Refer Image -Srct Url as Scrt Id ;Refer Image |
![]() ![]() ![]() ![]() ![]() ![]() |
4i. Create CORS (10 min)
Step | Action and Details | Images |
---|---|---|
Create CORS | - In the Quick Find> Type CORS - Click on New> In Origin URL Pattern> Type https://DOMAINNAME.my.site.com - Replace DOMAINNAME with actual org Domain Name. To find the Domain name please follow the following steps: - search for Domain in Quick find → Please add https://DOMAIN from the below path - Click on Save |
![]() ![]() |
4j. Assign Contact, Vehicle and Opportunity Record Page as Org Default (15 min)
5. Prepare Agentforce
5a. Add Agent User into Agent force Service Agent and Activate (10 min)
5b. Activate Einstein Copilot (5 min)
Step | Action and Details | Images |
---|---|---|
Activate Einstein Copilot | - Click on setup, search for agent - Click on ‘Einstein Copilot’ - Click on Open Builder click on Activate |
![]() ![]() |
5c. Create a New Version of Omni-Channel Flow (10 min)
6. Connected App Configuration (20 min)
Step | Action and Details | Images |
---|---|---|
Connected App Configuration | -In the Top Right, Click on the Profile Icon then Click on the Name of the profile(for e.g OrgFarm Epic), then click on User Details, after you land on User Detail Page, click Edit -Change the Email Address Of Orgfram Epic User to your Email Id -Wait for 5-10 minutes till your Email is Verified -Go to Setup, search App Manager, Click on App Manager Then, search for ‘GuestUserCometD’ Connected App, scroll to the Right, click on drop-down arrow button, click on View, once you are on Connected App Page, click on ‘Manage Consumer Details’ -Copy the Consumer Key and Consumer Secret and Keep it in Notepad, we will be using them in the steps below. -Perform the below script from anonymous window to get the Secret key and then store in Secret_Key__mdt -->Secret_Key__c Field ‘String secretKey = EncodingUtil.base64Encode(Crypto.generateAesKey(256)); System.debug('Generated Key: ' + secretKey);’ Metadata record name must be Label=HMAC_Secret, Client_Id__c = Consumer Key Client_Secret__c= Consumer Secret -Search for the connected app again ‘GuestUserCometD’ -From Setup Go to the connected app again ‘GuestUserCometD’ Scroll to the Right, click on drop-down arrow button, click on View, once you are on Connected App Page, click on ‘Manage’, Scroll down to ‘Client Credentials Flow’ and Select Admin User for E.g( Org Farm Epic), and Save -Go to Auth Provider Search for ‘GuestUserAuth’ Click on Edit and Paste the Consumer Secret and Consumer key that you have in your notepad, also If you are performing this in Sandbox change the Authorization Endpoint as "https://test.salesforce.com/services/oauth2/authorize" and Authorization Token "https://test.salesforce.com/services/oauth2/token", if Performing in Production add the Authorization Endpoint as "https://login.salesforce.com/services/oauth2/authorize" and Authorization Token "https://login.salesforce.com/services/oauth2/token". -Save the Auth Provider, from the same Auth Provider Scroll down to Salesforce Configuration Section, Copy the Callback URL and Paste It in Notepad. Go To Setup , Search App manager, Search for ‘GuestUserCometD’, Scroll to right Click on dropdown arrow and view, once you are in connected app, Click on Edit Paste the callback URL you copied inThe Callback URL Field and Save the App -Go to Setup Search for Named Credentials -Search for GuestCometD And Click on Edit -Update the URL to current org domain URL (Go to setup>>search>>MyDomain ) -Save the Named Credentials and you will Get authenticated -If you get an Error Wait for 10 minutes and Save the Named Credentials again. -Connected App Configuration 2 -Go to Setup, search App Manager, Click on App Manager Then, search for ‘Data Cloud API’ Connected App Click on Manage Consumer Details -Copy the Consumer Key, Consumer Secret and Keep it in Notepad, we will be using them in below steps. -Go to Setup, search for Auth. Provider Auth Search for ‘Data_Cloud_Auth ‘Click on Edit and Paste the Consumer Secret and Consumer key that you have in your notepad, If you are performing this in Sandbox change the Authorization Endpoint as https://test.salesforce.com/services/oauth2/authorize and Authorization Token "https://test.salesforce.com/services/oauth2/token" -if Performing in Production add the Authorization Endpoint as https://login.salesforce.com/services/oauth2/authorize and Authorization Token "https://login.salesforce.com/services/oauth2/token" -Save the Auth Provider, from the same Auth Provider Scroll down to Salesforce Configuration Section, Copy the Callback URL and Paste It in Notepad. -Go To Setup , Search App manager, Search for Data Cloud API, Scroll to right Click on dropdown arrow and view, once you are in connected app, Click on Edit Paste the callback URL you copied inThe Callback URL Field and Save the App. |
7. Named Credentials (10 min)
8. Enable Oauth and OpenID Connect Settings (5 min)
9a. Assign AutoFolio Guest Buyer Profile. (5 min)
9b.Assign Buyer Group For Self Registration (5 min)
10.Experience Site Product Price as Display 1 Price Configuration (15 min)
Step | Action and Details | Images |
---|---|---|
Experience Site Product Price as Display 1 Price Configuration | -Go to App Launcher>>Enter All sites in quick find box>> click on it -For Autofolio site click on builder -click on preview>>click product>>Click on any of Electra product -click on back to builder again>>There are some pricing details present click on it -Under Setting scroll down >> Pricing type as Display 1 Price -Click on Publish button. |
|
Enable Email Deliverability | -go to setup -search for deliverability Access to Send Email (All Email Services) -->Select All Email |
|
Assign Permission to Agent User | -Go to setup -In the Top Search for 'Agent User' -Click on agent user -Go the Permission Set Assignment, click on Edit -Select 'Automotive Service Agent' Permission set and add to the Right Side -Click Save |
|
Assign CSS For Header | -Go to setup -Search for All Site -for 'Autofolio' Site Click on Builder -Click on Settings Icon on Left Side -Click on Advanced --> Click on Edit Head Markup -Paste this CSS .header { width:100%; } header{ background: black !important; } .slds-has-flexi-truncate ul li a { color: #f0f0f0 !important; } .slds-icon_small{ fill: white;} |
|
Change logout URL | -Go to setup -Search for All Sites -For Autofolio click on Workspaces And click on Administration -Click on login and registration page -go to Logout Page URL add the Domain URL as (https://Domain_Url/Autofolio/) -Steps to get Domain URL- Go to setup search for domains click on Domains and copy the Site.com URL |
|
Remove the Embedded Messaging from Content Section | -Go to setup -Search for All Sites -For Autofolio Click on Builder -Go to Product Page and Left Side Click on Page structure -Under Content Section Remove the Embedded Messaging Component |
|
Remove the Trusted Site | -Go to setup -Search for All Sites -For Autofolio Click on Builder -Go to Seatings-->Security and Privacy -Under Trusted Sites for Scripts -Delete the Trusted Cookie and Publish |
|
Profile Menu Setting | -Go to App Launcher>>Enter All sites in quick find box>> click on it -For Autofolio site click on builder -Click on Profile Menu(profile icon) >> Under Setting expand Authenticated User Menu>>For Default Menu , select Default User Profile Menu -Publish the Site |
|
Experience Site Product UI Configuration | -Go to App Launcher>>Enter All Sites and click on it. -For Autofolio site click on builder -click on preview>>click product>>click on back to builder again -search for product images then click on it( result grid) -Under Grid layout there is Number of Columns on Desktop – Select More Column Spacing – Select None Row Spacing- Select None. -Publish the Site |
7. Mulesoft Configuration For Real Time Telemetric Data
5 steps process
Use Case: Integrate Salesforce with MuleSoft to ingest the Data (for Vehicle 360) in Data Cloud via Ingestion API
Note: Please check first 4 steps already performed in the org or not. if already present (ingestion API already present) then start with step 5, if not present then start with step 1 and use the attached schema file while creating Ingestion API.
Real_Time_Telemetric_Data: https://github.com/salesforce-misc/DataCloudAndAgentForceForAutomotive/blob/main/Mulesoft%20Yaml/Real_Time_Telemetric_Data.yaml
1. Create Ingestion API in Data Cloud. (10 min) $${ Mulesoft \space Optional: \space Please \space note \space that \space some \space functionality \space in \space Experience \space Cloud \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
Step | Action and Details | Images |
---|---|---|
Create Ingestion API in Data Cloud | ![]() |
2. Upload the schema file(used ‘Order’ in the yaml file format. (10 min)
Step | Action and Details | Images |
---|---|---|
Upload the schema file(used ‘Order’ in the yaml file format |
![]() ![]() |
3. Create a Data Stream for Ingestion API with Selected Schema Object that going to use. (10 min)
Step | Action and Details | Images |
---|---|---|
Create a Data Stream for Ingestion API with Selected Schema Object that going to use | ![]() |
4. Configure the mapping with Primary key. (10 min)
Step | Action and Details | Images |
---|---|---|
Configure the mapping with Primary key |
![]() ![]() ![]() |
5. Flow to insert the data form Mule to Salesforce Data Cloud via Ingestion API. (30 min)
Step | Action and Details | Images |
---|---|---|
Flow to insert the data form Mule to Salesforce Data Cloud via Ingestion API. | -The integration starts with Scheduler component configured to trigger the flow every 30,000 milliseconds. -The first Transform message generates random values for all the telematics fields. -Using second Transform message prepare the payload structure required by Salesforce Data Cloud Ingestion API. -Create a New Connected App for securely integrating MuleSoft with Salesforce Data Cloud via APIs using OAuth2.0 below are the details for connected app: -Go to Setup and Search App Manager and Select App Manager. -Provide details of Connected App name, Contact Email and enable OAuth details as follows: Callback URL: https://login.salesforce.com (depend on org, if prod then its login.salesforce.com and if Sandbox then its test.salesforce.com) Require Secret for Web Server Flow: Enable Require Secret for Refresh Token Flow: Enable Enable Client Credentials Flow: Enable -Please give the Profile level of access to connected App for System Administrative profile. -Click on Manage Custom Details to get the client id and secret. -Go to Setup and open OAuth and OpenID Connect Settings and enable the toggle for Allow OAuth Username-Password Flows -Use the Salesforce Streaming Insert Object connector – below is the configuration details: Connection between Salesforce and Mule based on Username, Password, Client Id and Client Secret. -Source API Name: Ingestion API Name -Object: Selected Object name (Order). |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Mulesoft Flow Diagram | ||
a. First Transform Message and below is the script |
-%dw 2.0 output application/json varvinNumber["1A9416080TA288340","JF1SG65633H720182","1J8GA591X8L585418","1FMZK05125GA34650","4S4BP61C367326807","2B4GP44G31R110618","2C3LA53G68H187062","1C6RR6KT8FS501438","1G4GA5ER9CF217432","1G1AF5F56A7188155","3C8FY68814T224319","3TMJU4GN1BM116390","JN8AZ1MW0CW208397","5XYPGDA5XGG002192","3D7KU28D14G161500","1FAHP34N47W213682","3TMLU4EN2AM049034","1FTFW1EF4CFC35658","1N6AA06A64N571239","3B7KF23W9VM516994","KNAFU4A2XC5622597","2G1WG5EKXB1312050","3VWRK69M02M053790","1FDXE40S3XHA03474","5XYKU4A72FG653951","3GNDA63XX8S643669","2GKFLWE51C6247763","1GCFG15X861182048","JTJHF10UX10182895","5XYKT3A63EG529108","4V4WDBRH2VN737217","2G1WT58K369145853","2A4RR2D18AR406072","WDDHF8HB2BA295868","5J6RE38308L006040","JTDKN3DU5A0098811","3C4PDCBG4ET107805","1FTSW21P87EA29662","1N6AA0ECXCN305496","JTHBE1BL9E5039430"] var status = ["Active", "Normal", "Critical", "Warning","Done"] var airBagStatus = ["Active", "Critical"] var latitudeData = ["37.787396", "37.777773", "37.791263", "37.797480", "37.785754", "37.786006"] var longitudeData = ["-122.403324", "-122.426442", "-122.415680", "-122.408679", "-122.414068", "-122.411320"] var randomSpeed = (min,max) ->(round(random()(max-min+1)+min)) var batteryLevel =(min,max) -> (floor(random()(max-min+1)+min)) var randomInRange = (min, max) -> (random() * (max - min)) + min var randomTirePressure = (min, max) -> randomInt(max - min) + min var randomTemperature = (min, max) -> round(random() * (max - min) + min) var randomVoltage = (min, max) -> round(random() * (max - min) + min) var randomStatus = () ->status[randomInt(sizeOf(status))] var randomStatusForAirBag = () -> airBagStatus[randomInt(sizeOf(airBagStatus))] var randomlatitudeData = () -> latitudeData[randomInt(sizeOf(latitudeData))] var randomlongitudeData = () -> longitudeData[randomInt(sizeOf(longitudeData))] --- (1 to 199)map(index)->{ eventname:uuid(), timestamp: now() as DateTime, VIN: vinNumber[(index / 5) as Number], latitude: randomlatitudeData() longitude: randomlongitudeData(), speed: randomSpeed(20,120), rpm: randomTirePressure(2000,6000), oilpressure:randomInRange(3.5,3.5), engine_temperature: randomTemperature(70, 100), coolant_temperature: randomTemperature(60, 90), battery_voltage: randomVoltage(11.5, 14.5), battery_soc_level: batteryLevel(10,100), fuel_level: randomTemperature(60, 100), tire_pressure_fl: randomTirePressure(30, 32) tire_pressure_fr:randomTirePressure(30, 32), tire_pressure_rl: randomTirePressure(30, 32), tire_pressure_rr: randomTirePressure(30, 32), brake_fluid_level:randomTemperature(78, 80), esp_status:randomStatus(), ABS_status:randomStatus(), airbag_status: if(index <= 195) "Active" else "Critical", odometer:randomTirePressure(10000,300000), //odometer: if(payload.VIN__c == randomVIN) brake_pad_wear_rr:randomTirePressure(45, 90), brake_pad_wear_rl: randomTirePressure(12, 15), brake_pad_wear_fr: randomTirePressure(12, 15), brake_pad_wear_fl: randomTirePressure(12, 15) } |
![]() ![]() |
b. Second Transform Message and below is the script | - %dw 2.0 output application/json--- { "data":payload } |
![]() |
c. Mule Streaming Insert Objects Connected | - Click on plus sign and then select Connection as Oauth Username and Password and then fill the required details then click on test connection and then user Source API Name as “Real_Time_Telemetric_data” and Object Name as “vehicle_telemetric” and Body as “payload” |
![]() |
Below is the configuration XML file so directly creating new project in Mule Anypoint and copy paste the configuration XML then update the credentials for Salesforce Data Cloud (Streaming Insert Object) connector. (Don’t forget to add the Data Cloud Insert Object Connector from Exchange)
XML File- https://github.com/salesforce-misc/DataCloudAndAgentForceForAutomotive/blob/main/TelemeticMuleConfigXML/TelemeticMuleConfigXML.txt
8. Mulesoft Configuration For Vehicle Issue
1 steps process
IMP NOTE: You may skip the MuleSoft section if it is not applicable to your use case or if you do not have Mulesoft licenses. However, if you plan to use MuleSoft.
Use Case: Get the Real Time Vehicle Complaint details using Mule API inside Agentforce Conversation.
Note: Skip the Mule Configuration Steps If you are using provided Configuration XML file directly in the Mule Project.
1. Mule Configuration (25 min) $${ Mulesoft \space Optional: \space Please \space note \space that \space some \space functionality \space in \space Experience \space Cloud \space will \space no\space longer \space function\space as \space expected \space if \space not \space installed. }$$
5 steps process
Note: To support the Automotive app, you can either create a new Salesforce Org or use an existing one, provided it includes the following features and licenses: Important Note: Existing Trailheads playgrounds cannot be used Enable/Execute below steps in the Org.
Step | Action and Details | Images |
---|---|---|
Enable Tableau Next Beta | -From Setup, enter ‘Tableau Next’ in the Quick Find box. -Enable Tableau Next Beta. |
![]() |
Step | Action and Details | Images |
---|---|---|
Create Workspace | -Click on App Launcher And Search Tableau Next -Click on New WorkSpace. -Enter Name "AutoFolio" click on create. |
![]() |
10. After Creating Self Registration User
$${ \space Below \space Steps \space from \space 6a \space to \space 6c \space only \space need \space to \space perform \space after \space Creating \space self- \space registration \space user }$$
1a. Add External Id into Contact as well snowflake after Self Registration contact creation (20 min)
Step | Action and Details | Images |
---|---|---|
Scenario 1: When Existing Ext Id value present in snowflake and user want to use it | ||
Add External Id into Contact as well snowflake after Self Registration contact creation | -Go to App launcher>> Search for Data Explorer >> Select object type as data model>> Select Survey Response -Now Result will show under Submitter column>> copy any of any of the value(eg: 48291735) -Go to contact tab>> open recently created record via self registration form paste the value in EXT Id field. -click on save -Wait for 10 to 15 min so that data stream will refresh then refresh the page then ask the question to copilot. Scenario 2: When new Ext Id mentioned in contact , so new snowflake record need to create -Go to contact tab>> open recently created record via self registration form And Enter new EXT Id field value And click on save -Same Ext id need to present in snow flake : Download the below file, use the same format to create data entries, under Response_Submitter__c column you can mention the Ext Id field new value from Contact object. Snowflake data file Go to Snowflake>> under table THIRD_PARTY_SURVEY ,upload the file Wait for 15 to 20 min to refresh the data stream named as Third Party Survey. -Go to App launcher>> Search for Data Explorer >> Select object type as data model>> Select Survey Response>> Result will pop up , verify your new data entry -At the end you will refresh the contact page and ask your copilot scenario. Note: Before asking any questions to agentforce and copilot please wait 15 to 30 min for all data stream to be refresh so that you will see the data under contact 360, vehicle 360. 2. You can only create 26 self register users. |
![]() ![]() ![]() |
1b. Create warranty contract document for vehicle record created via Self Registration form and upload into S3 (10 min)
Step | Action and Details | Images |
---|---|---|
Create warranty contract document for vehicle record created via Self Registration form and upload into S3 | -Go to Contact>> Open the recently created record via self registration form>> -Go to Related tab>> go to asset>> Open the record>> click on Vehicle field value -It will redirect to vehicle record>> Go to details>> Copy the VIN -Download below file , you can replace the details as per your requirement such as VIN ,warranty start date, end date but make sure your VIN should be correct.Warranty Contract - Create a PDF and upload into amazon S3. Note: Before asking any questions to agentforce and copilot please wait 15 to 30 min for all data stream to be refresh so that you will see the data under contact 360, vehicle 360. 2. You can only create 26 self register users. |
![]() |
1c. To enable real time for the new contact on Self Registration (5 min)
1.If Strikethrough price is not populating on UI for any of the products then perform below steps (10 min)
Step | Action and Details | Images |
---|---|---|
Testing Guideline | -To proceed for testing kindly change below fields manually -We are using John Smith contact for testing purpose whose email id ends with dataclouddemo.com And Address, Email -phone number, please add phone extension as well don't add plus sign please see eg(eg: 19045737373, 1 is here as usa phone number extension), |
Behind the Scenes - how is the agent powered?
Curious to see the all the possible utterances and how they are powered by the Agent. Here is a list of all the possible coversations, the corresponding topics and the components that power them. Sl. No. | Utterance | Behind the Scene | Topic | Components |
---|---|---|---|---|
1. | What’s a good car for a family of 5? | Uses LLM to find the Products That Best Suits Customer's Requirment, reads unstructurd data via a custom retriever as the Product description is from in-line unstructured data (i.e. column in a table), prompt builder. | Vehicle Suggestions | a. Prompt Action - Vehicle Recommenadation. b. Retriver - Product Retriver |
2. | Are there any deals on this car ? | This is where we use real-time browsing behavior and Real Time Data graphs to determine the Vehicle the user is looking at We also then Make use of Flows and Apex classes and return contextual responses | Vehicle Pricing and Deals | a). Flow Action call RT DG for CURRENT product Promotion - Get Promotion b). Data Graph Web_Engagement_RT_Profile c). Apex Class DSPGetRTDGData parseJSON d).Connected App Data Cloud API e).Named Credentials DataCloudNew |
3. | What’s the price of this car ? | This is where we use real-time browsing behavior and Real Time Data graphs to determine the Vehicle the user is looking at We also then Make use of Flows and Apex classes and return contextual responses | Vehicle Pricing and Deals | a). Flow Action call RT DG for CURRENT product Data Cloud - Vehicle Prices b). Data Graph Web_Engagement_RT_Profile c). Apex Class DSPGetRTDGData parseJSON ClsGetProductPrice d).Connected App Data Cloud API e).Named Credentials DataCloudNew |
4. | Any issues with this car? | This is where we use real-time browsing behavior and Real Time Data graphs to determine the Vehicle the user is looking at We also then Make use of Flows and Apex classes and return contextual responses | Vehicle Issues | a). Flow Action call RT DG for CURRENT product Data Cloud- Vehicle Complaints b). Data Graph Web_Engagement_RT_Profile c). Apex Class DSPGetRTDGData parseJSON Vehicle Complaints d) Ingestion Api CustomLabel:-VehicleIssueMuleApi Remote Site Settings:-MuleSoftVehicleIssue e).Connected App Data Cloud API f).Named Credentials DataCloudNew |
5. | I want to test drive | This is where we use real-time browsing behavior and Real Time Data graphs to determine the Vehicle the user is looking at, we then Fire Platform event That is caught in Experience site to show the LWC Flyout and return contextual responses | Test Drives Management | a). Flow Action call RT DG for CURRENT product Data Cloud- Invoke Appointment Flyout(Guest) b). Data Graph Web_Engagement_RT_Profile c). Apex Class DSPGetRTDGData parseJSON DisplayLeadForm appointment/br>EmailHandler d).AppointmentforGuest__e e) LWC embeddedMessaging f).Connected App GuestUserCometD Data Cloud API g).Named Credentials GuestCometD DataCloudNew |
6. | Can I test drive at home? | Reads unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval | Test Drives Management | a). Prompt Action - Generate FAQ From Automotive Industry |
7. | What is the wait time for delivery? | Reads unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval | Vehicle Delivery Wait Time | a). Prompt Action - Generate FAQ From Automotive Industry |
Sl. No. | Utterance | Behind the Scene | Topic | Components |
---|---|---|---|---|
1. | How long will it take me to go home? | Based on User's Current Location Determined by telemetric Data and the Users Mailing Address, we Determing the Time it will Take to travel also Show Map with the Geocodes Mapped | Travel Time & Charging Station Assistance | a). Flow Action - Data Cloud - Calculate Time b). Apex Class clsMapController clsCalculateTime c).Platform Event HomeMapFlyOut__e d) LWC lwcMapFlyout e)Named Credentials Calculate Distance |
2. | Find the nearest charging station? | Based on User's Current Location Determined by telemetric Data and the Charging Station Geocode, and Retrun the Charging Station Details also Show Map with the Geocodes Mapped | Travel Time & Charging Station Assistance | a). Flow Action - Get Charging Station b). Apex Class clsMapController c).Platform Event HomeMapFlyOut__e d) LWC lwcMapFlyout |
3. | Lock Doors, Unlock Doors, Start the Car, Stop the Car | Based on user's Command We Simulate the Action/command and Update the Primary Vehicle of the User in Vehicle 360 | Vehicle Command Management | a). Flow Action - GetSimulatorResult b). Apex Class GetSimulatorResult |
4. | I’m experiencing brake squeaks, please check my brake pads | Based on the Telemetric Data We Prompt the User about their Break Pads Information and Show Flyout Experience | Vehicle Maintenance & Service | a). Flow Action - Data Cloud - Maintenance Appointment Data Cloud - Appoinment Creation>b). Apex Class clsAppoinmentController appointment EmailHandler c).Platform Event TestDriveAppoinmentFlyout__e d) LWC appointmentFlyout |
5. | Why is the check engine light blue? | Reads unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval | Vehicle Maintenance & Service | a). Flow Action Data Cloud - Appoinment Creation>b). Apex Class clsAppoinmentController appointment EmailHandler c).Platform Event TestDriveAppoinmentFlyout__e d) LWC appointmentFlyout e). Prompt Action Generate FAQ From Automotive Industry |
6. | Why is my battery showing 30%? | Reads unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval | Vehicle Maintenance & Service | a). Flow Action Data Cloud - Appoinment Creation>b). Apex Class clsAppoinmentController appointment EmailHandler c).Platform Event TestDriveAppoinmentFlyout__e d) LWC appointmentFlyout e). Prompt Action Generate FAQ From Automotive Industry |
7. | Can you help with roadside assistance? | Show Conceptual Responses based on telemetric data | Free Service Eligibility & Roadside Assistance | a). Flow Action Data Cloud - RoadSideAssistance |
8. | Can I get a free service? | Reads User's Warranty Contracts Document unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval, Use Prompt Builder to Read the Unstructured data and return the relevant response | Free Service Eligibility & Roadside Assistance | a). Flow Action Data Cloud-Free Service Eligiblity b). Apex Class clsWarrantyDocumentController c). Prompt Action Return_Warranty_Info |
9. | When is my battery health check due ? | Reads User Data and Determine when they have battery health check due and prompt the response and show the Flyout experience | Vehicle Maintenance & Service | a). Flow Action Data Cloud - Oil Maintainance Data Cloud - Appoinment Creation b). Apex Class clsAppoinmentController appointment EmailHandler c). Platform Event TestDriveAppoinmentFlyout__e d) LWC appointmentFlyout |
Sl. No. | Utterance | Behind the Scene | Topic | Components |
---|---|---|---|---|
1. | What is the meaning of the P0300 diagnostic trouble code? | Reads unstructured data from PDF that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval. | P0300 Diagnostic Troublecode | a. Prompt Action - Generate FAQ From Automotive Industry |
2. | Are there any active recalls? | Uses telemetric data. It looks at Asset Contact Participant DMO, Vehicle DMO, Vehicle Telemetric DMO based on current Contact Id or Vehicle Id and checks airbag information to return a response. | Vehicle Active Recalls | a. Flow Action - Data Cloud Vehicle Recall Availability |
3. | Is the car still covered by warranty? | Reads User's Warranty Contracts Document unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval, Use Prompt Builder to Read the Unstructured data and return the warranty response | Vehicle Warranty | a. Flow Action - Data Cloud Warranty Details b. Apex Class - clsWarrantyDocumentController c. Prompt Action - Return_Warranty_Info |
4. | Are there any perks available for oil change? | Based on Current Contact Id or Vehicle Id, it looks the Asset Contact Participant DMO , Vehicle DMO,Asset DMO, Asset Warranty DMO and Asset Milestone DMO and it check free service for oil check based on that copilot return response | Oil Perks Availability | a. Flow Action - Data Cloud Warranty Coverage |
5. | Lock Doors, Unlock Doors, Start the Car, Stop the Car | Based on user's command, simulates the action and updates the Primary Vehicle of the user in Vehicle 360. | Vehicle Commands | a. Flow Action - DataCloud-SimulationResult b. Apex Class - GetSimulatorResult |
6. | Send a status update to the user regarding the delay and include a perk, such as a voucher? | Based on Current Contact Id or Vehicle Id, it looks the Asset Contact Participant DMO , Vehicle DMO,Asset DMO, Service Appoinment and it check it has any dealy then send an email /sms to user | Vehicle Delay Status | a. Flow Action - Data Cloud Vehicle Delay Status b. Apex Class - SFMCCallOutService |
7. | Tell me more about this customer and what upsell opportunities are there? | Based on Current Contact Id or Vehicle Id, it looks the Asset Contact Participant DMO , Vehicle DMO,Asset DMO, Product Related Materials DMO and verify any product related materials presents and return response to user. Also invoke another flow where Survey Response DMO is having records verify customer is intrested in roof rack and outdoor activities and return response to user | Upsell Opportunities | a. Flow Action - Data Cloud Upsell Opportunities b. Flow - Data Cloud Survey Response |