in implementation guides ~ read.
Salesforce Omnichannel Inventory Implementation Guide

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.

Download

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

***