Salesforce Omnichannel Inventory Implementation Guide
DOWNLOAD
First things first !
To download this implementation guide, click the download button below.
If you need more information about the implementation guide, you can read the Table of Contents below.
Salesforce Omnichannel
Inventory Implementation Guide
Salesforce Spring
salesforcedocs
Last updated November
Copyright Salesforce Inc All rights reserved Salesforce is a registered trademark of Salesforce Inc as are other
names and marks Other marks appearing herein may be trademarks of their respective owners
CONTENTS
Salesforce Omnichannel Inventory Implementation
Omnichannel Inventory
Plan Your Omnichannel Inventory Implementation
Step Set Up Omnichannel Inventory in Salesforce
Step Integrate BC Commerce
Step Configure Omnichannel APIs
Step Initialize Omnichannel Inventory Data in Your Salesforce Org
Step Activate the BC Commerce Integration
SALESFORCE OMNICHANNEL INVENTORY
IMPLEMENTATION
This guide outlines the necessary steps for Salesforce Administrators to understand set up and use Salesforce Omnichannel Inventory
Follow the steps in the order they appear
Omnichannel Inventory
Familiarize yourself with basic Omnichannel Inventory concepts to help you plan your implementation
Plan Your Omnichannel Inventory Implementation
Consider your inventory requirements and plan your implementation
Step Set Up Omnichannel Inventory in Salesforce
Configure Salesforce to run Omnichannel Inventory
Step Integrate BC Commerce
If youre integrating Omnichannel Inventory with a Salesforce BC Commerce storefront configure the integration Otherwise skip
to the next step
Step Configure Omnichannel APIs
You can implement Omnichannel Inventory functionality via the headless Commerce API Connect API and invocable actions
Step Initialize Omnichannel Inventory Data in Your Salesforce Org
After setting up the Omnichannel Inventory APIs initialize the inventory data in your Salesforce org
Step Activate the BC Commerce Integration
If youre integrating Omnichannel Inventory with a Salesforce BC Commerce storefront follow these steps to activate the integration
Omnichannel Inventory
Familiarize yourself with basic Omnichannel Inventory concepts to help you plan your implementation
For information on terminology see the Omnichannel Inventory Glossary in Salesforce Help
The Inventory Lifecycle
This example illustrates the process of setting up and maintaining a system using Omnichannel Inventory with Salesforce Order
Management and BC Commerce
Inventory Fulfillment Locations
Omnichannel Inventory uses three objects to represent the facilities that fulfill orders Location Location Group and Location Group
Assignment
Inventory Reservations
When an order is placed the system reserves inventory to fulfill that order A reserved quantity of a specific product at a location or
location group is called a reservation When a reservation is assigned to a location group you can implement business rules to
transfer it to a specific location for fulfillment
Configuring Locations for Order Shipping and Pickup
You can configure a fulfillment location to ship order products or provide Buy Online Pick Up In Store BOPIS service
Salesforce Omnichannel Inventory Implementation
The Inventory Lifecycle
The Inventory Lifecycle
This example illustrates the process of setting up and maintaining a system using Omnichannel Inventory with Salesforce Order
Management and BC Commerce
Create the location graph in Omnichannel Inventory
Seed Omnichannel Inventory with initial availability data from an external inventory management system such as a WMS or ERP
Create the products and locations in the BC Commerce storefront
Configure and enable the integration of Order Management with the storefront
Configure and enable the integration of Omnichannel Inventory with the storefront including inventory lists based on the location
graph and the inventory availability data feed
As shoppers place orders in the storefront it sends order data to Order Management
Order Management communicates with Omnichannel Inventory to identify product availability and route reservations to fulfillment
locations
As locations fulfill orders Order Management communicates with Omnichannel Inventory to adjust the corresponding reservations
and inventory levels in the Omnichannel Inventory service
The external inventory management system sends regular physical stock level updates to Omnichannel Inventory which then sends
updated availability data to the storefront
Inventory Fulfillment Locations
Omnichannel Inventory uses three objects to represent the facilities that fulfill orders Location Location Group and Location Group
Assignment
Location
Tracks inventory availability for a location such as a warehouse or retail store
Location Group
Aggregates and exposes inventory availability for a group of related locations such as those in a defined geographic area or belonging
to a common brand or storefront When a shopper orders through a sales channel associated with a location group routing logic
can fulfill the order from any location or set of locations in that group In BC Commerce you can easily associate a location group
with a site or store by using the corresponding BC Commerce inventory list
Location Group Assignment
The relationship between a location and a location group A location group has one assignment for each of its locations and a
location has one assignment for each location group that it belongs to
The complete set of locations groups and assignments is called the location graph
Note When using DC Commerce your location graph is limited to one location and one location group
Salesforce associates location and location group records with corresponding OCI records and BC Commerce inventory lists by using
the External Reference field
External References must be unique Attempting to save a duplicate External Reference causes an error
A location or location groups External Reference must exactly match the ID of the corresponding inventory list in BC Commerce
In inventory API inputs and outputs locations and location groups are identified by External Reference not record ID
Salesforce Omnichannel Inventory Implementation
Inventory Reservations
Inventory Reservations
When an order is placed the system reserves inventory to fulfill that order A reserved quantity of a specific product at a location or
location group is called a reservation When a reservation is assigned to a location group you can implement business rules to transfer
it to a specific location for fulfillment
For example
A shopper places an order for several products on an online storefront
The system creates reservations for the ordered products at the location group containing that storefronts fulfillment locations
Business rules calculate the most efficient set of locations in the group that can fulfill all the reservations from the order
The system transfers the reservations to the individual locations determined by the calculation
Each location that received one or more reservations fulfills the ordered products represented by its reservations
Configuring Locations for Order Shipping and Pickup
You can configure a fulfillment location to ship order products or provide Buy Online Pick Up In Store BOPIS service
Here are some examples
Shipping Only
In Salesforce assign the location to a location group associated with a storefront When a shopper places an order on that storefront
create inventory reservations at the location group Then route the reservations to individual locations for fulfillment according to
business rules
When using BC Commerce create a site inventory list that represents the storefront and then map it to the location group
BOPIS Only
When a shopper places a BOPIS order reserve inventory at the location
When using BC Commerce create a site inventory list containing products available for BOPIS orders at that location and then map
it to the location When a shopper places a BOPIS order use that inventory list instead of the inventory list associated with a location
group for shipping fulfillment To restrict a location to only BOPIS orders dont add it to any location groups
Shipping and BOPIS
In Salesforce assign the location to a location group associated with a storefront For order items to be shipped reserve inventory
at the location group For BOPIS items reserve inventory at the location
When using BC Commerce create a store inventory list containing BOPISeligible products for each location that can fulfill shipping
and BOPIS orders Map the location group to the inventory list that represents the storefront and then map each location to the
corresponding inventory list containing products available for BOPIS
Plan Your Omnichannel Inventory Implementation
Consider your inventory requirements and plan your implementation
Considerations for Omnichannel Inventory
Keep these considerations in mind when designing your system
Salesforce BC Commerce Considerations
If you use a Salesforce BC Commerce storefront be sure to consider these things as you plan your implementation
Salesforce Omnichannel Inventory Implementation
Considerations for Omnichannel Inventory
Connecting Omnichannel Inventory to Multiple BC Commerce Instances
You can connect storefronts from multiple BC Commerce instances or realms to a single Omnichannel Inventory instance so that
all inventory is powered from a single source All orders from the various instances are sent to a single order management for
processing
Considerations for Omnichannel Inventory
Keep these considerations in mind when designing your system
How to handle data imports from an external system of record such as a WMS
Which physical and virtual inventory locations to include in the Omnichannel Inventory location graph
Note The location graph is a complex topic and changing it after uploading inventory data can cause performance issues
For more information see Manage Locations and Location Groups in Salesforce Help
Note When using DC Commerce your location graph is limited to one location and one location group
How to transfer any existing inventory data import processes from your current storefront to Omnichannel Inventory
How to manage the cutover from your existing implementation to the integrated system For example you can plan an order
moratorium while switching to the new system for managing availability data
Whether any existing customizations or business processes can benefit from being reimplemented in Omnichannel Inventory
Salesforce BC Commerce Considerations
If you use a Salesforce BC Commerce storefront be sure to consider these things as you plan your implementation
Before refreshing a Salesforce sandbox thats integrated with BC Commerce deactivate the existing connections associated with
the Salesforce sandbox Then provision new connections from the refreshed Salesforce sandbox to your BC Commerce instance
Understanding that activating Omnichannel Inventory for a BC Commerce instance activates it for all sites running on that instance
You use one Omnichannel Inventory instance for each BC Commerce instance Initial provisioning provides one Omnichannel
Inventory instance To provision another one request an additional Order Management sandbox Each Order Management sandbox
allows one Omnichannel Inventory instance
Whether to use BC Commerce stores to associate inventory lists with order product line items If so how to map stores to the
location graph
How to map your sites stores and inventory locations to locations and location groups in Omnichannel Inventory
Which locations and location groups to associate with inventory lists in BC Commerce
How to associate Omnichannel Inventory locations and location groups with BC Commerce inventory lists that are used for orders
but not assigned to a site For example lists assigned to a store
Whether any existing customizations are incompatible with Omnichannel Inventory and whether to reimplement them in Omnichannel
Inventory This consideration includes any customization that creates or modifies individual product inventory records
Note OCAPI calls to the inventorylistsinventorylistidproductinventoryrecords
endpoint arent compatible with Omnichannel Inventory
Whether your storefront uses a custom SSL certificate You cant use Omnichannel Inventory with a staging instance of BC Commerce
that uses a custom SSL certificate Custom domain traffic from BC Commerce isnt allowlisted so communication with Omnichannel
Inventory requires the storefront to use the embedded Content Delivery Network eCDN The eCDN isnt active for a staging instance
Salesforce Omnichannel Inventory Implementation
Connecting Omnichannel Inventory to Multiple BC
Commerce Instances
Connecting Omnichannel Inventory to Multiple BC Commerce Instances
You can connect storefronts from multiple BC Commerce instances or realms to a single Omnichannel Inventory instance so that all
inventory is powered from a single source All orders from the various instances are sent to a single order management for processing
The Omnichannel Inventory integration is enabled for the entire BC Commerce instance After Omnichannel Inventory is activated all
sites within that instance switch to Omnichannel Inventory You cant enable Omnichannel Inventory for an individual site in the BC
Commerce instance
All quota limits are applied at the Omnichannel Inventory instance level When youre connecting multiple BC Commerce instances to
a single Omnichannel Inventory instance consider whether the Omnichannel Inventory limits will support your needs as they expand
across multiple BC Commerce instances and realms
You can also connect production and stage instances to a single Omnichannel Inventory instance to work in a stage environment with
real production data without needing to replicate the data However dont make changes to the data
To connect one or more BC Commerce instances to one Omnichannel Inventory instance use the BC Commerce Connections page
in Salesforce see Set Up the Connection Between Omnichannel Inventory and BC Commerce
Considerations
When initially adding the Omnichannel Inventory license to Salesforce determine if you want to use an existing or new org
Salesforce Omnichannel Inventory Implementation
Step Set Up Omnichannel Inventory in Salesforce
If youre using an existing org consider who requires licenses access and visibility to Omnichannel Inventory
If youre creating an org this data will be separate from other orgs so consider how data sharing and segmenting will be impacted
Determine how many sandbox copies to create as part of your development and implementation setup
To clone a sandbox see Create Clone or Refresh a Sandbox
To apply an Omnichannel Inventory license to a sandbox see Match production and sandbox licenses without a sandbox refresh
Step Set Up Omnichannel Inventory in Salesforce
Configure Salesforce to run Omnichannel Inventory
Enable Omnichannel Inventory
If youre new to the Salesforce platform start by setting up a Salesforce org
Users and Permissions
To access Omnichannel Inventory features users require either the System Administrator profile or the Omnichannel Inventory
Manager permission set You can assign the permission set to users with the Identity user license
Enable Omnichannel Inventory
If youre new to the Salesforce platform start by setting up a Salesforce org
The person who signed your Omnichannel Inventory order form received a welcome email for the org Their email address is the user
ID of the orgs initial Salesforce admin account For information about setting up the org see Set Up and Maintain Your Salesforce
Organization in Salesforce Help
Important Instructions to log out refresh a page or wait for the cache to update are easy to miss Skipping them can cause
problems that are hard to troubleshoot so follow every step carefully
Enable Lightning Experience Omnichannel Inventory isnt currently supported on Salesforce Classic or Mobile On Mobile you can
view record pages but cant use other Omnichannel Inventory features
If you plan to integrate with Salesforce Order Management set it up by following the procedures in the Salesforce Order Management
Implementation Guide for BC Commerce or Salesforce Order Management Implementation Guide for BB and DC Commerce
Note If you use the Create Reship Order flow customize it to set the applyOCI variable to true Its default value is
false
If you arent using Salesforce Order Management define a set of fulfillment location types such as Warehouse and Retail Store Add
them to the Location Type picklist on the Location object For details about the location object see Location in the Object Reference
From Setup in the Quick Find box enter Omnichannel Inventory and then select Omnichannel Inventory
Note OmniChannel is a different product
Turn on the Omnichannel Inventory setting
Users and Permissions
To access Omnichannel Inventory features users require either the System Administrator profile or the Omnichannel Inventory Manager
permission set You can assign the permission set to users with the Identity user license
Salesforce Omnichannel Inventory Implementation
Users and Permissions
Assign Permission Sets
Assign the permission set to users with the Identity user license
Set Sharing Settings for Location and Location Group Objects
Set the sharing settings for the Location and Location Group objects
Give Order Management BC Service Permission Set Access to Inventory Objects and Fields
If you use Salesforce Order Management and BC Commerce give the Order Management BC Service permission set access to the
inventory objects and fields
Assign Permission Sets
Assign the permission set to users with the Identity user license
From Setup in the Quick Find box enter Permission Sets and then select Permission Sets
Select Omnichannel Inventory Manager
Click Manage Assignments
Click Add Assignments
Select the checkbox next to each user that you want to have the permission set
Click Assign
Click Done
Note Assigning the Omnichannel Inventory Manager permission set to a user also assigns an Omnichannel Inventory license to
that user
Set Sharing Settings for Location and Location Group Objects
Set the sharing settings for the Location and Location Group objects
From Setup in the Quick Find box enter Sharing Settings and then select Sharing Settings
Click Edit
For Location and Location Group from the Default Internal Access dropdown select Public ReadWrite
For Location and Location Group from the Default External Access dropdown select Public ReadWrite
Click Save
Give Order Management BC Service Permission Set Access to Inventory Objects and
Fields
If you use Salesforce Order Management and BC Commerce give the Order Management BC Service permission set access to the
inventory objects and fields
From Setup in the Quick Find box enter Permission Sets and then select Permission Sets
Select Order Management BC Service
In the Apps section click Object Settings
Select Order Products
Click Edit
In the Field Permissions section find Reserved at Location and select its Edit Access checkbox
Salesforce Omnichannel Inventory Implementation
Step Integrate BC Commerce
Click Save
From the objects dropdown select Location Group Assignments
Click Edit
In the Object Permissions section select all of the checkboxes
Click Save
From the objects dropdown select Location Groups
Click Edit
In the Object Permissions section select all of the checkboxes
Click Save
From the objects dropdown select Locations
Click Edit
In the Object Permissions section select all of the checkboxes
Click Save
Step Integrate BC Commerce
If youre integrating Omnichannel Inventory with a Salesforce BC Commerce storefront configure the integration Otherwise skip to
the next step
Prepare BC Commerce
First get your BC Commerce instance ready
Set Up the Connection Between Omnichannel Inventory and BC Commerce
This process includes steps in Salesforce and BC Commerce instance Business Manager
Prepare BC Commerce
First get your BC Commerce instance ready
If youre setting up a new instance of BC Commerce install and configure it according to the documentation
Note You activate the Omnichannel Inventory integration per BC Commerce instance So if you have sandbox stage and
production instances you follow the process for each one separately
Create or import your sites and stores in BC Commerce
Create or import the BC Commerce inventory lists to be paired with locations and location groups Make sure that each ID in BC
Commerce matches the External Reference of the corresponding location or location group in Salesforce
Assign the inventory lists to sites and stores
In Business Manager navigate to Administration Global Preferences Retention Settings Set the Inventory Record Retention
to a value greater than This setting ensures that after the integration is activated BC Commerce deletes any unused legacy
product inventory records When the integration is active Omnichannel Inventory handles all individual product inventory records
Note If this setting is then BC Commerce doesnt delete records that are no longer needed
Salesforce Omnichannel Inventory Implementation
Set Up the Connection Between Omnichannel Inventory and
BC Commerce
In Business Manager navigate to sitename Merchant Tools Site Preferences Order In the Failed Orders Setting section
set AutoFail Orders to a value greater than This setting automatically fails any unplaced orders in Created status after the specified
number of minutes Unplaced orders older than days can cause availability discrepancies with Omnichannel Inventory
Set Up the Connection Between Omnichannel Inventory and BC Commerce
This process includes steps in Salesforce and BC Commerce instance Business Manager
In your BC Commerce instance log in to Business Manager and keep the tab open
In another browser tab log in to Salesforce and go to Setup
From Setup in the Quick Find box enter Omnichannel Inventory and then select Omnichannel Inventory
Note OmniChannel is a different product
Select Omnichannel InventoryBC Commerce Integration
In the Quick Find box enter BC Commerce and then select BC Commerce Connections
Note If you dont see BC Commerce Connections return to the Omnichannel Inventory settings page and verify that you
selected Omnichannel Inventory
If you use Salesforce Order Management and already set up a connection with BC Commerce when you configured it that connection
appears here If so and you plan to use the same connection for Omnichannel Inventory click Edit in the existing Tenant Connection
and skip the next step
If you dont already have a connection with BC Commerce create one
a Click New Connection
b Enter a name for the connection You can also change the Connection Name later by clicking the name in the Tenant Connections
list
c For BC Instance ID enter the BC Commerce realm instance ID To get your instance ID log in to BC Commerce Business
Manager and go to Administration Global Preferences Salesforce Order Management Configuration The Tenant
ID displayed on that page is the instance ID
d Click Save and then in the Allow Tenant Linkage window click Allow
In the Available Connection Type list select Omnichannel Inventory and move it to the Selected Connection Type list
Click Save
Confirm that the information is correct and click Save
You can connect more than one instance of BC Commerce to Omnichannel Inventory by repeating the connection process for each
BC Commerce instance
The new connections appear in the Tenant Connections list Depending on a connections type its status can be Active or Queued
When a queued connections provisioning is completed its status changes to Active and a notification is sent to the System Administrator
email address
Step Configure Omnichannel APIs
You can implement Omnichannel Inventory functionality via the headless Commerce API Connect API and invocable actions
Salesforce Omnichannel Inventory Implementation
API Access
API Access
The headless Commerce API is the main programmatic interface with Omnichannel Inventory To use it configure authentication
via Account Manager or set it up as a connected app
Configure Headless Commerce API Authentication via Account Manager
To authenticate with Account Manager set up an API Client ID then use it to obtain a token for making API calls
Set Up the Headless Commerce API as a Connected App
Set up the Headless Commerce API as a connected app
API Access
The headless Commerce API is the main programmatic interface with Omnichannel Inventory To use it configure authentication via
Account Manager or set it up as a connected app
Note If youre integrating Omnichannel Inventory with Salesforce BC Commerce use Account Manager Otherwise set up the
headless Commerce API as a connected app
You can access most of the same functionality using Connect in Apex or Connect REST API In Salesforce Flow you can call the Omnichannel
Inventory invocable actions Connect API and invocable actions dont require configuration
Important A flow that uses Omnichannel Inventory actions must have a runtime API version of or later If possible always
use the latest API version in your flows
Note When importing inventory availability records the headless Commerce API supports a much larger volume of data than
Connect API does Use the Commerce API for inventory availability imports whenever possible
Because these inventory API calls communicate across applications best practice for handling errors is to implement retries
For more information on headless Commerce API authentication see Commerce API Authentication in the BC Commerce API Guide
Configure Headless Commerce API Authentication via Account Manager
To authenticate with Account Manager set up an API Client ID then use it to obtain a token for making API calls
Log into Account Manager as an account administrator at httpsaccountdemandwarecom
Select the API Client tab
Select Add an API Client ID
Enter a unique Display Name and a strong password
Under Access Control select Enabled
In the Organizations section click Add
Select your org and click Add
In the Roles section take these steps
a Click Add
b Select Salesforce Commerce API and click Add
c Click the filter icon
d In the Add Instance Filters tab select your organization
e Select your BC Commerce instance and click Add
Salesforce Omnichannel Inventory Implementation
Set Up the Headless Commerce API as a Connected App
In the Default Scopes field add the desired scopes For information about available scopes see the AUTHZ Scope Catalog in the BC
Commerce API Guide
From the Token Endpoint Auth Method dropdown select clientsecretpost
From the Access Token Format dropdown select JWT
To obtain an Account Manager token for calling the headless Commerce APIs use your tenant ID Client ID not the display name
and Client ID password For example
curl k data granttypeclientcredentialsscopeSALESFORCECOMMERCEAPItenantID
user clientIDpassword X POST
httpsAccountManagerURLdwssooauthaccesstoken
Note The tenant ID is part of your organization ID fecomtenantid For example if your organization ID is
fecomzzzz then the tenant ID is zzzz
When building URIs for your API calls you need the short code for your BC Commerce realm and your Salesforce Orgs tenant group
ID Use the short code in the base URL and the tenant group ID as the organization ID For example
httpsShortCodeapicommercecloudsalesforcecominventoryavailabilityv
organizationsTenantGroupIdavailabilityrecordsactions
Get the tenant group ID and the base URL which includes the short code from the Omnichannel Inventory admin settings page
In your Salesforce org from Setup in the Quick Find box enter Omnichannel Inventory and then select Omnichannel
Inventory
Important Use the tenant group ID as the Organization ID in resource URLs
Note For these inventory resources the short code is a twocharacter country code in capital letters Other resources use a
different short code
Set Up the Headless Commerce API as a Connected App
Set up the Headless Commerce API as a connected app
Create a private key and certificate Follow the instructions in Create a Private Key and SelfSigned Digital Certificate in the Salesforce
DX Developer Guide
In Salesforce from Setup in the Quick Find box enter OAuth Custom Scopes and then select OAuth Custom Scopes
Click New Custom Scope
For each of the Omnichannel Inventory scopes enter the Name and Description and then save it
Name
Description
sfccinventoryimpexgraphs
Export location graphs
sfccinventoryimpexinventoryrw
Import inventory records
sfccinventoryimpexinventory
Export inventory records
sfccinventoryavailability
Get inventory availability data
sfccinventoryavailabilityrw
Update inventory availability data
sfccinventoryreservations
Get inventory reservation information