This article covers a Bloomreach Experience Manager version 13. There's an updated version available that covers our most recent release.

Elastic Path Configurations

This Bloomreach Experience Manager feature requires a standard or premium license. Please contact Bloomreach for more information.
Elastic Path commerce connector is based on the Commerce Connector SDK.

Introduction

Bloomreach Experience Manager can be instantaneously integrated with Elastic Path when using Bloomreach Accelerator: B2C Commerce. The boot application contains all the configurations needed to interact with your Elastic Path instance.

This page focuses on two points:

  • How to connect to your Elastic Path instance.
  • A high-level description of Elastic Path connector configurations.

Connect to a Elastic Path instance

Elastic Path commerce is an e-commerce solution that supports both cloud based and on-premise installation. In either case, the Bloomreach Accelerator: B2C Commerce boot application provides a CRISP API resource space able to connect to your instance. The related configuration can be found at the following repository path:

/hippo:configuration/hippo:modules/crispregistry/hippo:moduleconfig/crisp:resourceresolvercontainer/elasticpath

 You need to provide your specific connection properties explained in the table below:

Property name Description
elasticpath.baseUrl The base url of your Elastic Path cortex instance (e.g https://<instance_name>.elasticpath.com/cortex)
elasticpath.accessTokenUri

The uri need to obtain your access token (e.g.  https://<instance_name>.elasticpath.com/cortex/oauth2/tokens)

elasticpath.username Your Elastic Path username 
elasticpath.password Your Elastic Path password
elasticpath.scope Your Elastic Path store name 
elasticpath.role Your Elastic Path authentication role

Those properties must be defined directly in the hst.propertiesThe Bloomreach Accelerator: B2C Commerce Boot Application contains a root folder called conf: among others, this folder contains a properties file called hst.properties. You can define the properties as in the example below (replace project name):

..
elasticpath.cache.enabled = true
elasticpath.baseUrl = <your_elasticpath_commerce_instance>/cortex
elasticpath.accessTokenUri = <your_elasticpath_commerce_instance>/cortex/oauth2/tokens
elasticpath.username =
elasticpath.password =
elasticpath.scope = <your_store_name>
elasticpath.role = PUBLIC
..

Please note that three parameters above (username, password and role) have been intentionally fixed. The main reason is that the Elastic Path connector has been developed without using a merchant account. This means that in case of anonymous Bloomreach Accelerator: B2C Commerce user, the PUBLIC role will be always used. Once customers authenticate against the StarterStore the underling session will be converted using the REGISTERED role: customer specific operation (e.g. cart managment, checkout) will be now available.

Connector configurations

The Bloomreach Accelerator: B2C Commerce boot application provides an out-of-the-box commerce connector definition for Elastic Path: you can find the related Commerce Connector document under the commerce-connectors folder, with the Connector ID with value elasticpath

The module name is com.bloomreach.commercedxp.container.connector.elasticpath and matches the HST module addon name specified in the connector implementation

The Resource space property matches with Elastic Path CRISP API resource space name for the Elastic Path backend.

The table below contains all the Connector components used for the Elastic Path connector. For each component you will find a short description and all the context "variables" that will be used to perform the external request. This table refers to the Elastic Path connector implementation shipped with Bloomreach Accelerator: B2C Commerce v2.

Component ID

Description Context Variables

productSearchById

Retrieve the details of a product

code: the product id (specified in the payload)
productSearch Return a list of products based on the query parameter

page-size: the limit of your query result

keywords: string query parameter

productSearchByCategory Like productSearch, but using categories id as filter

resourceId: the category id specified in the backend

currentPage: the page number of the paginated result

PLEASE NOTE that the result is dynamically paginated in XM

categoriesSearch Return a list of categories  

categoryDetailSearch

Fetch the details of a specific category resourceId: the category id specified in the request
customerCreate Register customer account in the  e-commerce backend

username: customer username, compliant to the email address format

password: customer password

family-name: customer family name

given-name: customer given name

authenticateCustomer Authenticate customer against the  e-commerce backend

grant-type: type of authentication (default is password)

username: customer username, compliant to the email address format

password: customer password

scope: e-commerce internal store (catalog) name  

role: customer role (REGISTERED in case of authentication)

getCustomer Retrieve customer profile data  
updateCustomer Update customer data

resourceId: customer identifier stored in the e-commerce backend

family-name: customer family name

given-name: customer given name

createCustomerAddresses Create customer address

Input required:

street-address, extended-address, locality,postal-code, region, country-name, family-name, given-name

updateCustomerAddresses Set the customer address

Input required:

street-address, extended-address, locality,postal-code, region, country-name, family-name, given-name

removeCustomerAddresses Remove customer addresses

resourceId: address identifier stored in the e-commerce backend 

cartProductList Retrieve a cart object containing the status of the cart, including the related product entries  
cartProductAdd Add a new or existing product to the cart

resourceId: product identifier

quantity: product quantity to add

cartProductUpdate

Update the item quantity 

storeId: store identifier (PLEASE NOTE that this is different than the classic scope)

lineItemId: id of the item to be updated

quantity: new quantity of the cart item

cartProductRemove

Remove a product from the cart

storeId: store identifier (PLEASE NOTE that this is different than the classic scope)

lineItemId: id of the item to be updated

quantity: new quantity of the cart item (fixed to 0)

cartShipmentAddressUpdate Update the cart shipment address

resourceId: shipping address selector id 

addressId: identifier of the customer shipping address

 

cartCheckout Retrieves the status of a cart and it's used when starting the checkout process  
orderCreate Place the order in the e-commerce backend, creating a new customer purchase resourceId: order draft identifier
orderRead Retrieve a specifc order placed in the e-commerce backend 

resourceId: id of the purchase

orderQuery Retrieves the list of orders placed by a specific user   

Summary

Bloomreach Accelerator: B2C Commerce v2 provides an OOTB Elastic Path Commerce Connector Module based on the Commerce Connector SDK. The current implementation supports all the operations listed in the table above.

In case you need to customize some of the operations already shipped with this connector, you can download the connector sources and implement your own customization based on the existing implementation. For more detail, see Develop a New Commerce Connector.

When copying products from Elastic Path into brSM, a "link" needs to be created between the original product stored in the commerce backend and the related copy stored in brSM. In other words, brSM needs to store product specific data which can be used to retrieve the same product from the commerce backend.

brSM provides a standard field, called variant, in which product SKUs can be stored. In case products are copied from Elastic Path, the SKU must contain the value stored in the product code field.

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?