Skip to content

salesforce-misc/DataCloudAndAgentForceForHospitality

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Sunshine Trail Resorts

Welcome to Sunshine Trail Resorts, a sample hospitality application. Sunshine Trail Resorts is a fictional resort that uses Agentforce, the power of Data Cloud, and the Salesforce Platform to deliver highly personalized guest experiences. Explore ways to bring agents into business workflows, including new smart automation capabilities, Search Property, content generation.

Did you watch the demo? The following are a set of instructions to setup the end to end demo in your own environment. While the end to end demo supports multiple clouds, you have full flexibility to use only the portions relevant to what you want to try out in your own org, additionally once the packages are installed you have the ability to fully customize it based on your needs.

The Sunshine Trail app showcases how with Data Cloud we have a true Customer 360 that then drives the right and best experience with Agentforce Agents.

1. Pre-Deployment Instructions

4 step process

1. Salesforce Org Setup Requirements for Sunshine Resorts App

Option 1: To support the Sunshine Resorts 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
- Sales Cloud
- Service Cloud
- Loyalty Cloud
- Experience
- Commerce Cloud
- Marketing Cloud
- MuleSoft (Optional)
Features Required - Service Agent
- Einstein Agent
- Copilot
- Prompt Builder
- Agent Force
- Real-time(Additional SKU)
- Code Builder (Optional)

Our package is designed to support all these clouds, but you have full flexibility to use only the portions relevant to your business. If you are not using a particular cloud (e.g., Loyalty Cloud), you can simply skip its configuration—the package will still install successfully, but that feature will not be available until you configure it yourself. Additionally, you can customize and enhance the existing package by adding your own features as needed.

⚠️ Important Note: Existing Trailheads playgrounds cannot be used

Option 2: To ensure a seamless integration and unlock a 360-degree view of customer interactions, we recommend enabling Salesforce Foundations in your org. This free enhancement integrates Sales, Service, Marketing, Commerce, and Data Cloud functionalities, improving efficiency and AI-readiness.

How to Enable Salesforce Foundations:

  • Log in to your Salesforce instance.
  • Navigate to Setup → Search for Salesforce Foundations.
  • Click "Add to My Contract" (It's free).
  • Select the Foundations products and proceed with checkout.
  • Return to Setup and follow the on-screen instructions to complete the configuration.
    🔗 More details: Salesforce Foundations

External Connections: The app showcases the use of structured and unstructured data ingested from AWS and the use of zero-copy with Snowflake. This section talks about the connectivtity you would need for those use cases.

Connection Details
Amazon S3 Optional
Used to bring in structured and unstructured data. Unstructured data powers Agent conversations in this setup.
NOTE: If you do not have an existing Amazon S3 instance, register for the free tier and follow this guide to create a dedicated user with required permissions.

Already have an S3 instance? No need to sign up again.

Before proceeding, note your programmatic credentials (Access Key ID and Secret Access Key).
Snowflake Optional
Used to showcase Data Cloud’s Zero Copy capabilities.
NOTE: If you do not have access to a Snowflake instance, follow this article to create a Warehouse, Integration User, and configure and note public/private keys that you will use with Salesforce Data Cloud.

2. Install Pre-Deployment Package (10 minutes)

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
image image
Verify Package installation - Click Setup
- Search for package
- Click on 'Installed PAckage'
- Search for 'Sunshine Trails Pre-Deployment Package' is installed
image

3. Enable Features on the Org (20 minutes)

Step Action and Details Images
Enable Commerce Cloud - From Setup, enter ‘Commerce’ in the Quick Find box.
- Select ‘Settings’ under ‘Commerce’.
- Turn on ‘Enable Commerce’.
image
Enable Loyalty Management Features - From Setup, enter ‘Loyalty Management’ in the Quick Find box.
- Select ‘Loyalty Management Settings’.
- Under ‘Consolidate Member Points for Expiration,’ turn on ‘Consolidate members’ fixed non-qualifying points in real time’.
image
Create a Basic Experience Builder Site - From Setup, enter ‘Digital Experiences’ in the Quick Find box.
- Select ‘All Sites’ under ‘Digital Experiences’.
- Click New to open the Creation wizard with template options.
- Select the ‘D2C Commerce (LWR)’ template.
- Click Get Started.
image
Site Name and URL - After selecting the template, enter a site name and URL.
- Name the site ‘Sunshine Resorts’ and ensure the URL ends with /SunshineResorts
- Click Create. Your site will be created in Preview status.
image
Activate Site - From Setup, enter ‘Digital Experiences’ and select ‘All Sites’ under ‘Digital Experiences’.
- Click Workspaces next to Sunshine Resorts.
- Select Administration, then Emails.
- Under ‘Email Tabs,’ uncheck ‘Send welcome email’ and click Save.
- In Settings, click Activate and confirm by clicking OK.
- Your site will now be live and fully set up.
imageimage
Step Action and Details Images
Setup Data Cloud - Enter “Data Cloud” in Quick Find box.
- Click on “Data Cloud Setup Home”.
- Click on “Get Started” if the Data Cloud instance is not set up.
- If already Data Cloud setup is done then you will not see Get Started option.
- Once the process is complete, the Data cloud instance is ready to use.
Verify Experience Delivery is Disabled - Go to Setup → Digital Experiences → All Sites.
- Click Workspaces for ‘Sunshine Resorts’.
- Click Administration.
- Click on Settings.
- Experience Delivery should be disabled. If it’s enabled, please raise a Salesforce Case with the Support team to disable this feature.
Enable Data Cloud on Experience Site - Go to Setup → Digital Experiences → All Sites.
- Click Builder for ‘Sunshine Resorts’.
- Click Settings → Integrations.
- Click Add to Site for Data Cloud.
- Enable “Share site data with Data Cloud” and click Save.
- Once enabled, a green box will appear
- Click Publish in the top-right corner
imageimage
Verify Data Stream - Go to App Launcher → Data Cloud → Data Stream.
- Change List View to All Data Streams.
- Search for Experience_Cloud.
- 6 total Data Streams should appear
image
Create a Record on Custom Metadata - Go to Setup -> Search for Metadata type -> Click on ‘Install Package Settings Enabled’ -> Click on Manage Install Package Settings Enabled ->Click on ‘New’ -> Give Label as Package Settings Enabled and Check Checkbox of Installation Settings Enabled Field. Click Save image image

4. Setup the Salesforce Org (20 minutes)

Step Action and Details Images
Assign Data Cloud Permissions to Standard Object - Click on App Launcher, search for Sunshine Trails Hospitality and click on Sunshine Trails Hospitality Setup App
- Click on the “Assign Permissions for Standard Objects” button (highlighted in the screenshot below) and wait for a confirmation message before proceeding further.
image
Assign Data Cloud Permissions to Custom Objects & Custom Fields - Click on App Launcher, search for Sunshine Trails Hospitality and click on Sunshine Trails Hospitality Setup App
- Click on “Assign Permissions for Custom Object” button (highlighted in the screenshot below) and wait for a confirmation message before proceeding further
image
Modify the Data Cloud Admin Permission Set - Open the Setup Menu and click Setup
- In the Quick Find, search for ‘Permission Sets’ and click ‘Permission Sets’
- Click the ‘Data Cloud Admin’ permission set
- In the Apps section, click ‘Data Cloud Data Space Management’
- In the Data Spaces panel, click Edit.
- Check the ‘Enabled’ checkbox for the default data space and click Save
- Click OK in the confirmation dialog
image
Install Standard Data Bundles Click on Data Cloud Setup
- Click on ‘Salesforce CRM’
- Under ‘Standard CRM Data Bundles’
- Click on ‘Arrow’ icon and click on ‘install’ of ‘Sales Cloud’
- it will open on new page -> click on Install
imageimage
Turn On Einstein Setup - Navigate to Setup
- Search and Select ‘Einstein Setup’
- Turn on Einstein Setup
Turn On Agentforce - Navigate to Setup
- Search and Select ‘Agent’
- Turn on Agentforce

2. Salesforce Package Installation

1 step process

1. Install Sunshine Base Package (10 minutes)

Step Action and Details Images
Install Sunshine 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.
- Click Done when installation is complete.
image
Verify Package installation - Click Setup
- Search for ‘Installed Package’
- Search for 'Sunshine Trails Base App' is installed
image

3. Data Cloud Configuration

7 step process

1. Setup Data Streams

The Data Kit is installed as a part of the Package installation. Follow the steps below to create data streams.

Setup Salesforce Data Streams (15 minutes)

Step Action and Details Images
Verify Salesforce CRM is Active or Not In Data Cloud, select the Setup icon and then Data Cloud Setup.
- Select Salesforce CRM.
- If connection status is “Inactive”
- then click on drop down to “Active”
- Click on “Active”
imageimage
Create Data Streams from Data Bundle - 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 Salesforce_CRM_Bundle.
- Select your Salesforce Org.
- Click Next.
- Select the data space as ‘Default’, review the fields in your data stream, and click Next.
- Review details and click “Deploy.
image
Create Loyalty_CRM_Bundle Data Streams from Data Bundle - Click on Data Stream Click on New
- Select Salesforce CRM Click Next
- Select Salesforce_CRM_Loyalty_Bundle Click on Next
- Select the data space as ‘Default’, review the fields in your data stream, and click Next.
- Review details and click “Deploy”
imageimageimage
Create Website_Mobile_apps Data Stream from Data Kit - Click on Data Stream
- Click on New
- Select ‘Installed Data Kits Package’
- Select ‘Sunshine Trails DK’ Data Kits
- Select checkbox under ‘Websites_Mobile_Apps’ click on ‘Next’
-Select Connector type ="website" & connector name "Experience_Cloud_Event_Connector".
- Click Next.
- Click on Deploy
image imageimageimage

1a. Create Data Steam for Amazon S3 (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. }$$

Step Action and Details Images
Upload Structured & Unstructured data to the S3 Bucket Before you continue, upload the below test files to your AWS instance, create a bucket called "hospplaygroundbucket" or the bucket you wish to use for this demo

AWS UnStructured Data
AWS Structured Data

Create a Connection to Amazon S3 in Salesforce Navigate to Data Cloud Setup
In the menu, under EXTERNAL INTEGRATIONS, click on Other Connections
- Click New, choose Data Kits as the source and click Next. Select Sunshine Trails DK
-Select hospplaygroundbucket
-Change the name & API name of the connection "hospitalityplayground".
-Put the bucket name “hospplaygroundbucket” please feel free to change the bucket name based on your existing AWS bucket
-Fill the credentials and save.
Create a Data Stream for Third Party Data - Click on Data Stream, click on New
- Select Installed Data Kits & Packages, click on Next
- Under Data Kits, select "Sunshine Trails DK"
- Under "Bundle_Amazon_S3", select Third Party Survey and click Next
- In Connection dropdown, select "hospitalityplayground", click Next
- Click Next and click Deploy.

1b. Create Data Stream for Snowflake (5 minutes) $${ 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 in Salesforce Navigate to Data Cloud Setup
-In the menu, search SnowFlake,
- Click New, choose Data Kits as the source and click Next. Select Sunshine Trails DK
-Select Infosys_Demo_Actual.
-Please feel free to change the connection name based on your existing snowflake connection
-Don’t change the API name
Fill the Account URL, Username, and Private Key and click next and save.
Create Data Stream for Snowflake from data kit - 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
- Under "Other Sources", select "Installed Data Kits & Packages" and click Next
- Select "Sunshine Trails DK" Data Kit
- Select Snowflake Bundle and click Next.
- Under Data Streams choose "POS_Transaction" and "IOT_Transaction" and click Next.
- Review the Data Stream fields and click Next
- Click Deploy to create the Data Streams
imageimage

1c. Create Ingestion API for Mule Data Streams from Data Kit(5 minutes) $${ 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 for Mule Data Streams from Data Kit - Click on Data Stream
- Click on New.
- Select Installed Data Kits & Package.
- Select ‘Sunshine Trails DK’ Data Kits.
- Click on ‘Ingestion’ Bundle.
- Click on Next.
-Select Connection as ‘Mulesoft Ingestion API’
- Click Next
- Click Deploy
imageimageimageimage

1d. Create Hotel FAQ and Hotel Safety FAQ DLO Creation for Unstructured Data(10 minutes)

Complete this step only if you have setup a connection and the file notification process in AWS

Step Action and Details Images
Create Hotel FAQ & Hotel Safety FAQ DLO Creation - Click on Data Lake Object Click on New
- Click on Create from Data Kits, Click on Next
- Select Hotel_FAQ_v3, select “hospitalityPlayground’ connection. Click on Next
- Click on Deploy
- Follow the same step from Step#1 for Hotel_Safety_FAQ_V2.

1e. Create Party Identification Collection Data Lake (5 minutes)

Step Action and Details Images
Create Party Identification Collection & Party Identification Collection IOT DLO Creation - Click on Data Lake Objects Tab
- Click on New
- Click on “Create from Data Kits”, Click on Next and select “Sunshine Trails Base App” package
- Select Party Identification Collection.
- Click on Next
- Click on Save
- Repeat the above steps again but this time select
- Party Identification Collection IOT DLO instead of Party Identification Collection
- Click on Next
- Click on Save.

2. Create Data Transforms from Data Kit (5 minutes)

Proceed with this step only if you have setup a connection to snowflake

Step Action and Details Images
Create IOT & POS Data Transform $${ Snowflake \space Optional}$$ -Click on Data Transforms Tab
- Click on New
- Click on Create from Data Kits, Click on Next
- Select Extract Party Identifiers from IOT
- Click on Next . Click on Save, Copy the Name , Remove the Name then Paste the same Name Again
- Click on Save
- Click on Data Transform Tab
- Click on New. Click on ‘Create from a Data Kits’ Option
- Select Extract Party Identifiers from POS
- Click on Next . Click on Save, Copy the Name , Remove the Name then Paste the same Name Again
- Click on Save
imageimageimageimage

3. Cross Verify CRM Data (5 minutes)

Proceed with this step only if you have the Real-Time SKU enabled in your org

Step Action and Details Images
NOTE - Before proceeding further, please ensure that the CRM data is available in the DMO. You can verify this by following these steps:
- Navigate to Data Explore
- Set Data Space to Default.
- Select the Data Model Object (DMO).
- From the dropdown, choose Account Contact.
- You should see Salesforce_Home listed under the Data Source column.
If you don't see the data then wait until the data is refreshed before proceeding to the next step.
image

4. Create Identity Resolution Ruleset from Data Kit (5 minutes)

Step Action and Details Images
Create Identity Resolutions -Go to Data Cloud app
- Click on the Identity Resolutions tab
- Click New
- Select Installed from Data Kit- Choose Sunshine Trails DK
- Click on Next
- Choose ‘Guest Profile’. Click on Next
Click on Save.
imageimageimage

5. Create Calculated Insights (5 minutes)

Step Action and Details Images
Create Calculated Insights - Go to Data Cloud ap
- Click on Calculated Insights tab
- Click New
- Select "Create from a Data Kit" and click Next
- Select ‘Guest Stay Metrics’
- Click on Next
- Click on ‘Check Syntex’
- Click on ‘Activate’
- Click Activate
- Select Schedule as ‘Every 1 hour’ Select Start Date and Time As default.
- Click on ‘Enable’
- Repeat the steps for the following metrics: ‘Guest Lifetime Value’, ‘Guest Classification’, ‘Guest Satisfaction Score’
imageimageimage

6. Create Data Graph (5 minutes)

Step Action and Details Images
Create Data Graph - Click on Data Graph Tab
- Click on New
- Select Create from Data Kits
- Select Sunshine Trails DK
- Select Hospitality Realtime Profile.
- Select primary Data model object as “Unified Individual real”.
- Click on Individual and go to the right side where the error is showing and uncheck the check box.
- Now click on Save & Build.
imageimageimageimageimageimageimage

7. Create Data Cloud Related List Enrichment (10 minutes)

Step Action and Details Images
Create Booking Related List - Click on Setup
- Object Manager
- Search for Contact
- Click on Contact
- Click on Data Cloud Related List Enrichment.
- Click on New
- Select default data space
- Select Data Cloud object as ‘Booking__dlm’
- Click Next
- Give Child Relationship Name as ‘IndividualBookings’
- Give Related List Label as ‘Individual Bookings’ Click Save.
imageimage
Create Reservation Related List - Click on Setup
- Object Manager
- Search for Contact
- Click on Contact
- Click on Data Cloud Related List Enrichment.
- Click on New
- Select default data space & Select Data Cloud object as ‘Reservation__dlm’
- Click Next
- Give Child Relationship Name as‘IndividualReservations’
- Give Related List Label as ‘Individual Reservations’ Click Save.
imageimage
Create Data Cloud Related List Enrichment for Third Party Survey
$${ S3 \space Optional}$$
- Click on Setup
- Click on Object Manager
- Search for Contact
- Click on Contact
- Click on Data Cloud Related List Enrichment.
- Click on New
- Select default data space -> Select Data Cloud object as ‘Third Party Survey’
- Click Next
- Give Child Relationship Name as 'Third_Party_Survey’
- Give Related List Label as ‘Third Party Survey’ Click Save
image

8. Create Data Cloud Copy Field Enrichment (15 minutes)

Step Action and Details Images
Create Data Cloud Copy Field Enrichment for ‘Customer Classification’ - Go to Object Manager.
- Search for Contact.
Click on Contact
- Click on Data cloud Copy Field.
- Click on New.

- Select data space as ‘default’
- Select Data Cloud Object as Guest Classification‘ whose API name will be this Guest_Classification__cio’ Click on Next

- Select data space as ‘default’
- Select field as ‘Customer Class’. Click Next
- Give Label as ‘Guest Classification’
- Click ‘Next

- On contact -> Data Cloud Copy Field Enrichments -> Guest Classification
- In Customer_Class under contact “click to Edit”
- Select Customer Class
- Save and Start Sync.
imageimageimage
- Give Label as ‘Guest Classification’
- Click on ‘Next.
On contact Select Customer Class
- Save and Start Sync.
imageimageimageimage
Create Data Cloud Field Enrichment of ‘Guest Lifetime Value’ - Go to Object Manager
- Search for Contact.
- Click on Contact
- Click on Data cloud Copy Field.
-Click on New.
- Select data space as ‘default’ > Select Data Cloud Object as ‘Guest_Lifetime_Value__cio’
- Click on Next
- Select Field As ‘GLV’
- Give Label as ‘Guest Lifetime Value’
- Click on ‘Next
- Select Field GLV
- Give Label as ‘Guest Lifetime Value’
- Click on Next
- On contact Select Lifetime_Value__c
- Save and Start Sync.
imageimage
Create Data Cloud Field Enrichment of ‘Guest Statisfection Score’ -> Go to Object Manager.
- Search for Contact.
- Click on Contact
- Click on Data cloud Copy Field.
- Click on New.
- Select data space as ‘default’
- Select Data Cloud Object as ‘Guest_Satisfaction_Score__cio’
- Click on Next
- Select Field As ‘GSS’
- Give Label as ‘Guest Satisfaction Score’
- Click on ‘Next
- On contact Select Guest_Satisfaction_Score__c
- Save and Start Sync.
imageimage
Create Data Cloud Field Enrichment of ‘Guest Stay Matrics’ - Go to Object Manager.
- Search for Contact.
- Click on Contact
- Click on Data cloud Copy Field.
- Click on New.
- Select data space as ‘default’
- Select Data Cloud Object as ‘Guest_Stay_Metrics__cio’
- Click on Next
- Select Fields Total_Stays, Total_Room_Nights, Total_Spend, and Avg_Nights_per_Stay
- Give Label as ‘Guest Stay Metrics’
-Click Next
- Map Fields with below Contact Fields
Data Cloud:Guest stay Matrics->Contact Object
Total_Stays->Total Stays
Total_Stays__c->Total_Stays__c
Total_Room_Nights->Total Room Nights
Total_Room_Nights__c->Total_Room_Nights__c
Total_Spend->Total Spend
Total_Spend__c->Total_Spend__c
Avg_Nights_per_Stay->Avg_Nights_per_Stay
Avg_Nights_per_Stay__c->Avg_Nights_per_Stay__c

- Save and Start Sync
imageimage

4. Commerce Cloud Configuration

8 step process

1. Verify Organization Wide Address (5 minutes)

Step Action and Details Images
Verify Organization-Wide Address Exists or not - Go to Setup -> Search for Organization-Wide Address -> Click on Organization-Wide Addresses
- Verify if there is an organization-wide address with the name ‘Default Email’ created and verified.
- If there is none, then please create an organization-wide address by following below steps
- Click on Add button -> On the Display Name Add ‘Default Email’. On the Email Address <Add your email address> Select ‘Default No-Reply Address’ on Purpose field -> click check box ‘allow all profiles to use this from address’
imageimage

2. Install Agent and Experience Site Package (1 hour 30 minutes)

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/DataCloudAndAgentForceForHospitality.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 type sf project deploy start --source-dir force-app
- If you have AWS S3 Connection Created and Installed AWS Related Data Stream from Step 3 under Data Cloud Configuration, then execute below SFDX command to deploy else do not execute.
- Open terminal type sf project deploy start --source-dir st-aws-app
imageimageimageimageimageimageimage

NOTE: $${\color{red} Skip \space the \space below \space steps \space if \space you \space wish \space to \space bring \space in \space your \space own \space Product \space data}$$ $${\color{red} 3.\space Create Commerce Data}$$ $${\color{red} 4.\space Search Update}$$ $${\color{red} 5.\space Upload CMS Images into the Store and}$$ $${\color{red} 6.\space Add CMS Product Images}$$

3. Create Commerce Data (5 minutes)

Step Action and Details Images
Create Data - Click on App Launcher, search for Sunshine Trails Hospitality and click on Sunshine Trails Hospitality Setup App
- Click on the “Create Commerce Data” button (highlighted in the screenshot to the right) and wait for a confirmation message before proceeding further.
image

4. Search Update (5 minutes)

Step Action and Details Images
Search Update Enable Commerce App
- Click Setup and search for Commerce
- Click Settings under Feature Settings --> Commerce
- Use the toggle to switch on the Enable the Refreshed Commerce App

Enable Search Index
- Click on App Launcher, search for Commerce and select Commerce application
- In the Store dropdown, choose Sunshine Resort Store
- Scroll down to Setting and expand it
- Click on Search
- Use the toggle to turn on Automatic Updates
image image

5. Upload CMS Images into the Store (15 minutes)

Step Action and Details Images
Upload CMS Images into Store - Download Images from CMS Images
- Click on App Launcher>> Select commerce application>> Click on Store
- Open Sunshine Resort Store
- Scroll down to Content Manager
- Click on Add workspace
- Enter details such as Name "Commerce Store Images" and select Enhanced CMS Workspace and click on Next
- Add Sunshine Resorts Channel as Public and Sunshine Resorts site 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 repeat the above steps for all the images
imageimageimageimageimageimageimageimageimageimageimageimageimage

6. Add CMS Product Images (15 minutes)

Step Action and Details Images
Add Image to a Product - Click on App Launcher>> Select commerce application>>Click on Store
- Open Sunshine Resort Store
- Expand Merchandise>> Product>> open one by one product
- Click on eye icon (it removes Site window) after save button
- Confirm that "Products" is selected under categories
- Scroll down >> click on Go to global product record
- Go to Media>> Click on Add image for Product details Image section >> Select appropriate image from Commerce Store image>> click on Add button
- Click on Add image for Product list Image section >> Select appropriate image from Commerce Store image >> click on Add button
- Repeat previous steps for each product
- Go to store>> select Sunshine Resorts >>Scroll down to Website Design>> select product category from dropdown >> click on Publish button (this step maybe not be needed if you are commerce console)
- Go back to Sunshine Resort Store>>Click on Home>> click on preview the site and see product is getting displayed
imageimageimageimageimageimageimageimageimageimageimageimage

7. Enable Self Resgistration (5 minutes)

Step Action and Details Images
Enable Self Registration - Click on App Launcher>> Select commerce application>>Click on Store
- Open Sunshine Resort Store
- Settings >> Store
- Click on Buyer Access Tab
- Scroll down to Self Registration (enable if it’s not enabled)
- Select Account RecordType to “Business Account”
- Select Default Buyers Group to “Sunshine Resorts Buyer Group"
- Click Save
image

8. Share CMS with Site workspace (5 minutes)

Step Action and Details Images
Share CMS with Site workspace - Click on App Launcher and search for CMS Workspaces
- Select CMS Workspaces
- Click on "Commerce Store Images" (the CMS created in previous step
- Click the gear icon (at the top right) and select "Workspace Sharing" from the dropdown
- Move "Sunshine Resorts Managed Content Space" to the right (under Shared) and click Next
- Click Save
image

5. Connect and Create Sample Data

4 step process

1. Create Sample Data (5 minutes) $${ 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. }$$

Step Action and Details Images
Create Sample Data - Click on App Launcher, search for Sunshine Trails Hospitality and click on Sunshine Trails Hospitality Setup App
- Click on the “Create Test Data” button (highlighted in the screenshot below) and wait for a confirmation message before proceeding further.
image

2. Enable Test Account as Buyer Account (5 minutes) $${ 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. }$$

Step Action and Details Images
Enable Account as Buyer Account - Click on Setup
- Go to Object Manager
- Click on Account
- Click on Page Layout
- Click on "Page Layout Assignment"
- Click on ‘Edit Assignment
- Select "SDO-Account" Layout under Record type "Account" for System Administration Profile
- From Page Layout to Use dropdown Select "Account layout"
- Click on Save
- Verify that, for "System Administrator profile" for Record type "Account" Page layout should be ‘Account Layout’
- Go Account Tab -> Search for Account Name "Sunshine Experience" (test Account created in previous steps). Make sure to remove any filter if it exists -> Click on that Record
- On Record Page click on the "Enable as Buyer" Quick Action
imageimageimageimageimageimage

3. Create Community User and Assign User to Buyer Group (5 minutes)

Step Action and Details Images
Create Community User and Assign Buyer Account to Buyer Group - Click on App Launcher, search for Sunshine Trails Hospitality and click on Sunshine Trails Hospitality Setup App
- Click on the "Create Buyer Group Member Data" button (highlighted in the screenshot on the right) and wait for a confirmation message before proceeding further.
- Note: If the confirmation message does not appear after 5 minutes, refresh the page and if the "Create Buyer Group Member Data" button is disabled, proceed.
image

4. Setup Data in Snowflake (15 minutes) $${ 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 Table to hold POS data - Login to the Snowflake Database/Schema that is connected to Data Cloud and run the below DDL script to create DEMO_HOSPITALITY_POS_DATA table.
create or replace TABLE <<database_name>>.<<schema_name>>.DEMO_HOSPITALITY_POS_DATA 
( 
    TRANSACTIONID VARCHAR(30),
    DATE DATE,
    TIME VARCHAR(100),
    CUSTOMERID VARCHAR(30),
    ITEMID VARCHAR(30),
    ITEMNAME VARCHAR(100),
    QUANTITY NUMBER(38,0),
    UNITPRICE NUMBER(38,2),
    TOTALPRICE NUMBER(38,2),
    PAYMENTMETHOD VARCHAR(30)
)
Step Action and Details Images
Load data into DEMO_HOSPITALITY_POS_DATA table - Load data in the below csv file into DEMO_HOSPITALITY_POS_DATA table: DEMO_HOSPITALITY_POS_DATA csv
Create Table to hold IOT data - Login to the Snowflake Database/Schema that is connected to Data Cloud and run the below DDL script to create DEMO_HOSPITALITY_IOT_DATA table.
create or replace TABLE <<database_name>>.<<schema_name>>.DEMO_HOSPITALITY_IOT_DATA
(
    EVENTID VARCHAR(30),
    KEYID VARCHAR(30),
    ROOMNUMBER VARCHAR(30),
    GUESTID VARCHAR(30),
    GUESTNAME VARCHAR(100),
    PHONENUMBER VARCHAR(30),
    ACCESS_DATE TIMESTAMP_NTZ(9),
    ACCESS_OUTCOME VARCHAR(30)
)
Step Action and Details Images
Load data into DEMO_HOSPITALITY_IOT_DATA table - Load data in the below csv file into DEMO_HOSPITALITY_IOT_DATA table: DEMO_HOSPITALITY_IOT_DATA.csv
Grant Access to the Tables in the Database/Schema - While still logged in to Snowflake, execute the following statement
grant select on tables in <<database_name>>.<<schema>> to role sysadmin

6. Finish Configuration

6 step process

1. Configure AWS File Notification for files with unstructured data (30 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. }$$

Step Action and Details Images
Configure AWS File Notification - Navigate to Setup and search for App Manager
- Click in the down arrow for the "AWS Unstructured" app and select view.
- Next to Consumer key and secret, click "Manage Consumer Details" and copy the values.
- Share the values with the AWS team responsible to create the file notification function.
- For more details about how to setup file notification visit: (https://developer.salesforce.com/docs/data/data-cloud-int/guide/c360-a-awss3-udlo.html)
image

2. Prepare Data Cloud

2a. Refresh Amazon S3 Data Streams (5 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. }$$

Step Action and Details Images
Refresh Amazon S3 Data Streams - Navigate to Data Cloud app and the Data Streams tab
- Query for Third Party Survey data stream
- Using drop down control on the right against the data stream initiate refresh for the Third Party Survey data stream and subsequently choose the Refresh Only New Files option:
- Once the data stream is refreshed validate that the Total Records counts for Third Party Survey stream, it should be 42
image

3. 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. }$$

Step Action and Details Images
Refresh Snowflake Data Streams - Navigate to the Data Cloud app and open the Data Streams tab.
- Locate the IOT_Transaction data stream.
- Click the dropdown menu on the right side of the data stream and select "Update Status".
- Repeat the same steps for the POS_Transaction data stream.
- Once both data streams are refreshed, verify that the Total Records count for each stream is no longer 0.
IOT Data    POS Data

2c. Refresh Data Graph (5 minutes)

Step Action and Details Images
Refresh Data Graph - Navigate to Data Cloud app and the Data Graph tab
- Click on the dropdown of the data graph (Hospitality Realtime Profile)
- Click Update Status
- Once the job completes successfully, this status will be set as Active.
image

2d. Run Calculated Insights (5 minutes)

Step Action and Details Images
Run Calculated Insights - Navigate to Data Cloud app and the Calculated Insights tab
- Query for Guest Stay Metrics calculated insight
- Using the drop down control on the right, click "Publish Now" to refresh the Guest Stay Metrics calculated insight.
- When the Calculated Insight is refreshed successfully, the Last Run Status will show as Success.
- Repeat steps b & c for the below Calculated Insights. Ensure all Insights are refreshed successfully.
- Guest Lifetime Value
- Guest Satisfaction Score
- Guest Classification
image

3. Prepare Experience Site

3a. Activate Messaging Setting (5 minutes)

Step Action and Details Images
Activate Messaging Setting - Navigate to Setup go to messaging setting
- Click on ESA Channel -> Click on ‘Activate’
- Click on Checkbox then click on Accept
imageimage

3b. Configure Digital Experience (20 minutes)

Step Action and Details Images
Configure Digital Experience. - Click on Setup, in the Quick Find Box, enter Digital Experiences, and then select All Sites
- Click on builder against the Site ‘Sunshine Resort’
- Click on the ‘Banner’. Under Image Settings, click ‘Clear Image’
- Click on ‘Select Image from CMS’ -> Click on ‘Banner’ image and click save
- Click on Page Structure Icon on Left Side of Page
- Scroll Down and Click on ‘Embedded Messaging ‘and update as per screenshot below
- Select Site End Point as - ESW_ESA_Web_Deployment_1733127495782
- Select enhanced Service URL from dropdown - it should be same as Site URL , refer Screenshot.
- Click on 'Page Structure' Scroll Down and Click on 'Multilevel Navigation Menu'. In the right-hand panel under Default Menu select 'Default Navigation'
- Click on 'Page Structure' Scroll Down to Footer Section under Column 1 , click on Link List then On the Right Hand Side on Default Menu Select 'Default Our Company Menu'.
- Click on Link List inside Column 2 On the Right Hand Side on Default Menu Select 'Default get Help Menu'.
- Click on Link List inside Column 3 On the Right Hand Side on Default Menu Select Default my Account Menu .
- Click on Social Link List inside Column 4 On the Right Hand Side on Default Menu Select Default Social Media Menu

- Click on Setup
- In the Quick Find box, type Digital Experiences, then select All Sites.
- Click on Builder next to the site named ‘Sunshine Resort’.
- At the top, use the search bar to find the Category Page, and open it.
- On the Category Page, select the Result Grid component.
- On the right-hand panel, change both the Column Spacing and Row Spacing to Large.
imageimageimageimageimageimageimageimageimageimageimage

3c. Enable Login Access (5 minutes)

Step Action and Details Images
Enable Login Access. - Go to Setup, in the Quick Find Box, enter Digital Experiences, and then select All Sites
- Against the site ‘Sunshine Resort’, click on Workspaces
- Under My Workspaces, click on Administration
- Click on Login & Registration menu item
- Under Login Page Setup, change Login Page Type to Experience Builder Page
- For URL, choose Login
- Under Password Pages, change Forgot Password to Experience Builder Page
- Choose Forgot Password
- Under Registration Page Configuration enable "Allow customers and partners to self-register"
- Choose Registration Page Type as Experience Builder Page
- Choose Register
- Assign users to a profile and account, choose Sunshine Resort Profile
- Assign Permission Set Group as "Hospitality Industries Permission Set Group"
- Click Save
imageimageimageimage

3d. Change the layout of the Login page (5 minutes)

Step Action and Details Images
Change the layout of the Login page. - Go to Setup, in the Quick Find Box, enter Digital Experiences, and then select All Sites
- Against the site ‘Sunshine Resort’, click on Builder
- From the Pages dropdown, search for Login, and then select Login
-Remove the site logo and add a Text Box component. Enter the text as "Sunshine Resorts", make it bold and center
- Publish the changes
image

3e. Change the layout of the Register page (5 minutes)

Step Action and Details Images
Change the layout of the Register page - Go to Setup, search for Digital Experiences, and select All Sites
- Against the site 'Sunshine Resorts', click on Builder
- From the Pages dropdown, search for Register, and select Register
- Remove the site logo and add a Text Box component. Enter the text as "Sunshine Resorts", make it bold and center (perform this step only if the “Sunshine Resorts” text box doesn't exist)
- Publish the changes
image

3f. Change the email Address (5 minutes)

Step Action and Details Images
Change the email Address. - Go to Setup -> Open All Sites
- Click on Workspaces (the configured Sites) -> Click Administrator
- Click on Emails
- Change Sender email to system admin email
- Click on save
image

3g. Create Trusted URLS (10 minutes)

Step Action and Details Images
Create Trusted URLS - Navigate to Setup, in Quick Find search Trusted URLs and click on Trusted URLs (under Security)
- Click on New. Key-in 'TrustedSite2' as the API Name
- Use https://DOMAINNAME.my.site.co for URL
- Replace DOMAINNAME with actual org Domain Name.

To find the Domain name please follow the following steps:
- Navigate to Setup, in Quick find search Domain → Please add https://DOMAIN from the below path (please select domain which is related to the experience cloud Sites Domain)
- Click on Save

Add Trusted URL to Agent Sites
- Click on Setup
- Click on Sites -> Check the check box if Domain is not enabled, Click on 'Register My Salesforce Site domain' button
- Click on ‘ESW_ESA_Web_Deployment_1733127495782’
- Click on Add Domain
- Add DOMAINNAME with actual org Domain Name.

To find the Domain name please follow the following steps:
- Search for Domain in Quick find → Please copy the name which ends with .my.site.com (e.g epicorgfarm79.my.site.com)
- Navigate to Setup, in Quick Find search All Sites
- Click on All Sites (under Digital Experiences)
- Click on Builder against Sunshine Resort
- Click on Settings and then 'Security & Privacy'
- Click on Add Trusted Sites button - Add Name as 'TrustedSite1' and add url as domain name, which you have copied on prev steps (e.g https://e.g epicorgfarm79.my.site.com)
- Click Publish
imageimageimageimageimage

3h. Create CORS (10 minutes)

Step Action and Details Images
Create CORS - In the Quick Find>Type CORS
- Click on New> Paste https://DOMAINNAME.my.site.com In Origin URL Pattern
- Replace DOMAINNAME with actual org Domain Name.
> Click Save

-Click on New .
- Paste https://*.develop.vf.force.com to 'origin URL Pattern'
- Click Save

- Click on New
- Paste https://*.live-preview.salesforce-experience.com. to ‘origin URL Pattern’
- Click Save

- Click on New
- Paste https://*.my.site.com to ‘origin URL Pattern’

To find the Domain name please follow the following steps:

> Search for Domain in Quick find → Please copy the name which ends with .my.site.com (e.g epicorgfarm79.my.site.com)
imageimage

3i. Publish ESA (5 minutes)

Step Action and Details Images
Publish ESA - Click on Setup
- In Quick Find, search Embedded Service Deployments and click on 'Embedded Service Deployments' (under Feature Settings --> Service --> Embedded Service)
- Click on ESA Web Deployment
- Click on 'Publish' button
- Wait for confirmation Message
image

4. Prepare Agentforce

4a. Add Agent User into Agentforce Service Agent and Activate (5 minutes)

Step Action and Details Images
Add Agent User into Agentforce Service Agent & Activate - Click on setup, search for Agent
- Click on Agentforce Agents (under Einstein --> Einstein Generative AI --> Agentforce Studio)
- In the Agent list, click on 'Agentforce Service Agent'
- In the Details tab, click on the pencil icon against "Agent User", select 'Agent User'
- Check the check box 'Keep a record of conversations with Enhanced Event Logs to review agent behavior.'
- Click on Save then click on Open Builder
- Click Activate
imageimageimage

5. Miscellaneous Configuration

5a. Update Einstein Search Retriever (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. }$$

Step Action and Details Images
Update Einstein Search Retriever - Click on Setup, in the Quick Find Box, enter Prompt Builder, and then select Prompt Builder
- Search for the Prompt Template named AnswerHospitality Question and click on the hyperlink
- Hover the cursor on text the next to 'Use this information to answer the question: ', click on Resource, click on Einstein Search, click on 'Hotel_FAQ_v3' and click on 'Hotel_FAQ_v3' Retriever
- On the right side click on default Hotel_FAQ_v3_Retriever, in a Search text add value as "Input:Product.Name"
- Hover over cursor on next text on 'Use this information to answer the question:', click on Resource, click on Einstein Search and click on Hotel_Safety_FAQ_V2
- On the right side click on default Hotel_Safety_FAQ_v2_Retriever in a Search text add value as "Input:Product.Name"
- Click on Save As New Version click Activate
imageimageimageimage

5b. Share Product Object to External User (5 minutes)

Step Action and Details Images
Provide Product2 Sharing - Go to Setup, in the Quick Find Box, search for Sharing Setting
- Click on Sharing Setting (under Security)
- Click Edit
- For Product Object, under Default External Access, select "Public Read Only"
- Click Save
image

5c. Enable Org Theme Option on Sunshine Resort App (5 minutes)

Step Action and Details Images
Enable Org Theme Option on Sunshine Resort App - Go to Setup
- Search for App Manager
- Click on App Manager
- Click on Edit Related to "Sunshine Trails Hospitality"
- Check the checkbox under "Org Theme Options"
- Click Save
imageimage

5d. Assign Contact Record Page as Org Default (5 minutes)

Step Action and Details Images
Assign Contact Record Page as Org Default. - Click on Setup
- Click on Object Manager
- Click on Contact
- Click on Lightning Record Page
- Click on Contact Record Page (API Name should be 'Contact_Record_Page')
- Click on Edit -> Click on Activation -> Click on 'Assign Org Default' (Desktop and phone) -> Click on Save
imageimageimage

5e. Create a New Version of Omni-Channel Flow (10 minutes)

Step Action and Details Images
Create a New Version of Omni-Channel Flow - Click on Setup
- Search for flow on Quick Button
- Click on Flow
- Click on the Flow
- Click on Route To ESA
- Deactivate the flow and click on the Route To ESA at the end
- Remove the Service channel and select some other option and then select “Live Message” again
- In Route To Select "Agentforce Service Agent"
- In Agentforce Service Agent Select "Agentforce Service Agent"
- Go to the Fallback Queue ID 🡪 Remove the Messaging Queue and add it back (same queue)
- Save as new version and activate the flow by clicking on the Activate button.
imageimageimageimage

5f. Access email Deliverability to all email (5 minutes)

Step Action and Details Images
Access email Deliverability to all email Click on Setup
- Search for ‘Deliverability’
- Change Access Email from ‘System email Only’ to ‘All email’.
- Click Save
image

5g. Prepare User (10 minutes) $${ Optional: \space These \space steps \space are optional \space if \space you \space choose \space to \space use \space your \space own \space data. }$$

Step Action and Details Images
Prepare Test User Note: These steps apply to both existing and new contacts. Below is an example using Marje

To test Community functionality , please use : Marje Croley contact to login as experience user
- Navigate to Setup
- In the Quick Find box, search for Digital Experiences
- Click the ‘Allow users standard external profiles for self-registration, user creation and login checkbox
- Click Okay and click Save

Enable Community User

- Click the App Launcher
- Select the Sunshine Trails Hospitality app
- Navigate to the Contact of Marje Croley
- Click the 'Enable as Customer' button (Goto classic page, if the button is not visible)
- Update the User License to Customer Community Profile
- Update the Profile to Sunshine Resort Profile
- Update the Email field to your personal email
- Click Save

Optional: Update Marje’s email address in her contact record if you want to receive notifications. Otherwise, this step is not necessary.

- Click the App Launcher
- Select the Sunshine Trails Hospitality app
- Navigate to the Contact of Marje Croley
- Click the Edit button
- Update the Email field to your personal email
- Click Save
imageimageimageimageimage

6. General Notes (30 minutes)

Step Action and Details Images
General Notes for new community User To test Community functionality , please use : Marje Croley contact to login as experience user
Note: If user self register from experience site sign up page, admin needs to add below permission set to that new community user
- Buyer
- Customer Community Plus Permissions
image (44)
Verify Product Experience Prompt Builder Activation Please ensure that the Product Experience Prompt Builder is active.

To verify:

 - Navigate to Setup
 - In the Quick Find box, search for Prompt
 - Click on Prompt Builder
 - Open Product Experience
 - Check if it is Active
  If not, please activate the Prompt Builder

Enable EPSessionIdHelper Visualforce Page
 - Log into Salesforce, click the gear icon in the top-right corner, and select Setup
 - In the Quick Find box, search for Visualforce Pages and select it.
 - Locate EPSessionIdHelper in the list.
 - Click the Security link next to the Visualforce page label
 - In the Available Profiles list, select the following profiles:
  Einstein Agent User
  Sunshine Resort Profile
  System Administrator
 - Move them to the Enabled Profiles list using the arrow button
 - Click Save to apply the changes

Steps to Create a New Retriever in Einstein Studio -Go to the App Launcher
-Type "Einstein Studio" in the search bar and select it
- Click on "Retriever", then click "New Retriever"
-Select Retriever Type as "Data Cloud"
-Set the following: a) DMO: Product
b)Search Index: Product
- Click Next
-Choose "All Documents" when prompted
- In the Fields to Return section, configure the following mappings:
a) Description → Product > Product Description
b) Product Id → Product > Product Id
c) Pet Policy → Product > Pet Policy
d) Product Family → Product > Product Family
e) Name → Product > Product Name
f) isActive → Product > Active
Click Next, then click Save.
image (41)
Steps to Add a Retriever to the "Searching Hotel" Prompt in Prompt Builder: -Go to Setup
-Search for and click on Prompt Builder
-Open the "Searching Hotel" prompt
-Locate the Hotel Details text section
-To add a retriever:
-Click Resource
- Select Einstein Retriever
-Choose product then select Product Retriever
image (42)
Finalize and Activate the Prompt in Prompt Builder: -Click on the Retriever you just added
- On the right-hand panel, the Product Retriever settings will appear
-In the Search Parameter text box, enter the following value: input:Question
-Click Save As to save your changes
-Finally, click Activate to activate the prompt in Prompt Builder

Steps to Add a Retriever to the "Searching Hotel For Pets" Prompt in Prompt Builder: -Go to Setup
-Search for and click on Prompt Builder
-Open the "Searching Hotel For Pets" prompt
Locate the Hotel Details text section
-To add a retriever:
-Click Resource
-Select Einstein Retriever
-Choose Product Then select Product Retriever
image (43)
Finalize and Activate the Prompt in Prompt Builder: -Click on the Retriever you just added
-On the right-hand panel, the Product Retriever settings will appear
-In the Search Parameter text box, enter the following value:input:Question
Click Save As to save your changes
Finally, click Activate to activate the prompt in Prompt Builder.

7. Mulesoft Configuration for Amadeus Prices

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, please ensure you register with Amadeus to obtain your Client ID and Client Secret.

Note: Skip Step 2, if you are using the provided configuration XML file (from Step 1) to create a Mule Project

1. Mulesoft Configuration (10 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. }$$


XML File: AmadeusMuleConfigurationXML.txt

2. Mulesoft Configuration Steps (20 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. }$$

Step Action and Details Images
Create a new project in Anypoint Studio image001
Add and Configure the Listener Click on plus button icon to Configure the HTTP listener and then click on Test Connection button for listener connections and add the Path as "/Amadeus_Price_API" image002
image003
Configure Request Connector HTTP Request Connector step
- API URL: https://test.api.amadeus.com/v1/security/oauth2/token
- Method: POST
- Body
 %dw 2.0
 output application/x-www-form-urlencoded
 ---
 {
  grant_type: "client_credentials",
  client_id: "xxxxxxxxxxxxxxxxx",
  client_secret: "xxxxxxxxxxxxxxxxx"
}
- Header
 %dw 2.0
 output application/java
 ---
 {
  "Content-Type": "application/x-www-form-urlencoded"
}
image004
Add Set Variable in the Flow to Store the Access Token Store Access Token step
- Configure as shown in the image
image005
Call the Amadeus API to get Hotel prices Request To Get The Hotel Price step
- API URL: https://test.api.amadeus.com/v3/shopping/hotel-offers
- Method: GET
- Pass the Header and Query Parameters (get the Hotel Id from Amadeus API and store in the query parameters to get prices for these Hotels)
Hotel Id list: MCLONGHM,RTPAR001,BRLAXRRB,ALLON591,ICTYOICB,HLDXB100,ARMADALC,ARMADCAR
image
image (1)
image (2)
Add the Transform message in Mule to prepare the JSON this will comes up as Mule API response Transform Message step
- Prepare the JSON (format given below) that is going the used in Salesforce Connector to ingest data via ingestion API
 %dw 2.0
 output application/json
 var hotelName = ["Palm Oasis Resort","Coral Bay Retreat","Emerald Bay Resort","Paradise Sands Resort","Azure Cove Villas","Golden Palms Retreat","Sea Breeze Villas","Lagoon Paradise Resort"]
 ---
 {
  data: payload.data map(item, index) -> {
   hotel_name: hotelName[index],
   cost: floor(item.offers[0].price.total as Number),
   created_date: now() as DateTime
  }
 }
Now deploy the project on cloud hub Follow the steps below
- Right click on the Project –-> Anypoint Platform –-> Deploy to Cloud Hub
Get the Mule Public API End Point Follow the steps below
- Go to Cloud Hub Runtime Manager Click on the deployed application Click on Setting button left side Click on Ingress tab in middle Copy the Public Endpoint (always use the URL like – Endpoint/ Listener Path).

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.

There are two contacts populated with all the relevant information to drive these conversations - Marje Croley and John Smith. You can login to experience cloud as either of these contacts to have these full agent conversations.

$${ Using \space the \space Agent \space to \space search \space for \space a \space hotel \space and \space create \space a \space reservation }$$

Sl. No. Utterance Behind the Scene Topic Components
1. Find a beach front family friendly hotel for next weekend? Uses LLM to find dates for next weekend, reads unstructurd data via a custom retriever as the hotel description is from in-line unstructured data (i.e. column in a table), prompt builder, APEX class to orchestrate a call via Mulesoft to a travel consolidator to compare prices and looks at structured Reservation Data, Platform event to show the flyout experience Hotel Inquiry For Family Friendly Hotel and Pets Allow Hotel a. Prompt Action
- Searching Hotel.

b. Flow
- Get Product Details From Prompt Builder

c. Apex
- DisplayProductList - to publish the platform event to display the Flyout
- NextWeekendDateCalculation - display the nextweekend check in/check out date for each hotel

d. LWC
- productListComponent
- displayFriendlyHotel
- childModal
- defaultPrechatValuesComponent

e. Platform Event
- Enable_Pet_Friendly_Comp__e
- Enable_Hotel_Search_Comp__e

f. Ingestion API
- Mulesoft_Ingestion_API
2. Do you allow pets? Keeps the original context and uses the custom retriever as the hotel description is from in-line unstructured data (i.e. column in a table), prompt builder, APEX class to orchestrate a call via Mulesoft to a travel consolidator to compare prices and looks at structured Reservation Data, Platform event to show the flyout experience Hotel Inquiry For Family Friendly Hotel and Pets Allow Hotel a. Prompt Action
- Searching Hotel For Pets.

b. Flow
- Get Product Details From Prompt Builder

c. Apex
- DisplayProductList - to publish the platform event to display the Flyout
- NextWeekendDateCalculation - display the nextweekend check in/check out date for each hotel

d. LWC
- productListComponent
- displayFriendlyHotel
- childModal
- defaultPrechatValuesComponent

e. Platform Event
- Enable_Pet_Friendly_Comp__e
- Enable_Hotel_Search_Comp__e

f. Ingestion API
- Mulesoft_Ingestion_API
3. What experiences are offered here? This is where we use real-time browsing behavior and Real Time Data graphs to determine the property the user is looking at and return contextual responses Real Time Experiences Offered a. Flow
- Get Product Details.

b. Flow triggers the Apex Action class
- Get Real Time Selected Product Id
and internally we invoke the
- Data Graph API - Hospitality_Realtime_Profile.

c. Prompt Action
- Product Experience
4. Are there any special offers? Looks at the Promotion DMO based on the Contact ID of the user using the agent Hotel Offers a. Flow
- Get Promotion Details
5. What activities are offered for my children? Get all the product (wehre Product Family - Sunshine Resorts Family)from Flow and provide details to Prompt along with Contact and interested Hotel Name Children Activities a. Prompt Action
- Activities for children

b. Flow
- Get Products for Prompt Builder
6. What is your cancellation policy? Reads unstructured data from PDFs that has been ingested into Data Cloud where it is chunked, vectorized and indexed for easy retrieval Hotel Policy a. Prompt Action
- AnswerHospitality Question
7. I would like to book the room Creates a record in the reservation DMO, based on the hotel and the dates Real Time Experiences Offered a. Flow
- Create Reservation Record

$${ Using \space the \space Agent \space to \space check \space in }$$ You need to have a valid reservation record where the start date is within 24 hours to use the agent to check in.

Sl. No. Utterance Agent Response Behind the Scene Topic Components
1. I'd like to Check-in Determines the guest checking in, and finds the upcoming reservation from the ReservationDMO, if there are no upcoming reservations the agent doesn't continue with the checkin process Check In a. Apex
- GetReservationDetails
Would you like to proceed with checking in? Reservation Update a. Flow
- Update Reservation Record
Would you like to further upgrade to an Ocean view room for $25/night? Reservation Update a. Flow
- Update Reservation Record
How would you like your key—digital or pick up at the front desk? Reservation Update a. Flow
- Update Reservation Record
2. What type of activities available in the area? Looks at the Booking and Experiences DMO based on the interests of the guest and recommends activities for the period that the customer is staying at the hotel Experience Management a. Prompt Action
- Generate Personalized Schedule
3. Would you like me to email these recommended experiences to you? Sends an email with all the recommendations to the guest Experience Management a. Flow
- Send Confirmation Email For Experiences
4. Would you like to book any of these experiences? Lists all available sessions based on the experience selected by the guest Experience Management a. Apex
- GetSessionDetails
5. Which Session would you prefer and how many people are in your party? Creates a booking record based on the session selected Experience Management a. Flow
- Create Booking
6. What should I bring? Based on the experience selected, provides a list of items to bring along with weather details for the day of the experience Experience Management a. Apex
- CheckWeather

About

A E2E Sample App showcasing how Data Cloud powers Agentforce for the hospitality industry

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6