Supported Features
This page shows the SAP Commerce Cloud features supported by this integration.
API Reference
You can find all available SAPCC module methods, their description and examples in the API Reference.
Category & Productri:link
Feature | Is supported |
---|---|
Getting a product | ✅ |
Getting a list of products | ✅ |
Getting product references | ✅ |
Getting product suggestions | ✅ |
Searching for products | ✅ |
Getting product reviews | ✅ |
Creating a product review | ✅ |
Fetching a category | ✅ |
Fetching a category tree with catalog version | ✅ |
Fetching combined product & category data | ✅ |
Cart - primary operationsri:link
Feature | Is supported |
---|---|
Creating a cart | ✅ |
Fetching a cart | ✅ |
Deleting a cart | ✅ |
Cloning a cart | ✅ |
Restoring a cart | ✅ |
Saving a cart | ✅ |
Cart - operations on entriesri:link
Feature | Is supported |
---|---|
Adding cart entry | ✅ |
Adding cart entry and getting cart | ✅ |
Removing cart entry | ✅ |
Removing cart entry and getting cart | ✅ |
Updating cart entry | ✅ |
Updating cart entry and getting cart | ✅ |
Cart - checkout operationsri:link
Feature | Is supported |
---|---|
Assigning email to a cart | ✅ |
Creating a cart address | ✅ |
Removing a cart address | ✅ |
Replacing a cart address | ✅ |
Fetching cart delivery modes | ✅ |
Replacing cart delivery mode | ✅ |
Creating cart payment details (Used for demo purposes only) | 🚧 Partial |
Replacing cart payment details (Used for demo purposes only) | 🚧 Partial |
Adding cart voucher | ✅ |
Adding cart voucher and getting cart | ✅ |
Removing cart voucher | ✅ |
Payment & Orderri:link
Feature | Is supported |
---|---|
Getting user order | ✅ |
Placing an order | ✅ |
Cancel an order | ✅ |
Getting mocked payment request | ✅ |
Getting mocked payment response | ✅ |
Registration & Session managementri:link
Feature | Is supported |
---|---|
Creating a user | ✅ |
Fetching a user | ✅ |
Signing a user in | ✅ |
Signing a user out | ✅ |
Refreshing user token | ✅ |
User data & Operationsri:link
Feature | Is supported |
---|---|
Updating a user | ✅ |
Changing user password | ✅ |
Getting user address | ✅ |
Getting user addresses | ✅ |
Creating user address | ✅ |
Deleting user address | ✅ |
Updating user address | ✅ |
Fetching user carts | ✅ |
Fetching user order history | ✅ |
Consent managementri:link
Feature | Is supported |
---|---|
Fetching consent templates | ✅ |
Giving a consent | ✅ |
Removing a consent | ✅ |
Getting a consent template | ✅ |
Miscellaneousri:link
Feature | Is supported |
---|---|
Fetching countries | ✅ |
Fetching country regions | ✅ |
Fetching titles | ✅ |
Fetching base store configuration | ✅ |
B2B Featuresri:link
B2B Productsri:link
Feature | Is supported |
---|---|
Getting a product | ✅ |
Getting a list of products from category | ✅ |
B2B Cartsri:link
Feature | Is supported |
---|---|
Get current cart | ✅ |
Update delivery address for cart | ✅ |
Update quantity of the product in cart | ✅ |
Create additional quantity of products in cart | ✅ |
Upate cost center for cart | ✅ |
Update payment type for cart | ✅ |
B2B Usersri:link
Feature | Is supported |
---|---|
Create user registration request | ✅ |
Get user | ✅ |
B2B Ordersri:link
Feature | Is supported |
---|---|
Create cart from prev. order | ✅ |
Create an order | ✅ |
Create a replenishment order | ✅ |
Get order history of org. branch | ✅ |
Get order from org. branch | ✅ |
B2B Order approvalri:link
Feature | Is supported |
---|---|
Get list of orders to be approved for a given user | ✅ |
Approve/reject order | ✅ |
Get details of the order to be approved | ✅ |
B2B Payment typesri:link
Feature | Is supported |
---|---|
Get available payment types | ✅ |
B2B Cost centersri:link
Feature | Is supported |
---|---|
Get active cost ceners | ✅ |
Get cost centre details | ✅ |
Get budgets for cost center | ✅ |
Get all cost centers | ✅ |
Assisted Service Moduleri:link
Customer 360ri:link
Feature | Is supported |
---|---|
Get Customer 360 data | ✅ |
Agentri:link
Feature | Is supported |
---|---|
Get points of service | ✅ |
Customer Listsri:link
Feature | Is supported |
---|---|
Get Customer Lists | ✅ |
Customerri:link
Feature | Is supported |
---|---|
Create customer | ✅ |
Autocomplete information | ✅ |
Bind cart | ✅ |
Customer Listri:link
Feature | Is supported |
---|---|
Get customer list details | ✅ |
Search customers | ✅ |
Limitations of SAP Commerce Cloudri:link
This section presents limitations coming from the SAP Commerce Cloud and possible workarounds.
Setting district
field in a new address is being lostri:link
When creating a new address, the district
field is being lost. It is a known issue in SAP Commerce Cloud. It happens because in the controller responsible for creating an address, the district
field is not being set. However, it is being set in the controller responsible for updating an address. You can follow this flow to address this issue.
As a workaround, you can:
- Create an address (
createCartAddress
SDK method) withoutdistrict
field, - Patch it with the field (
updateUserAddress
SDK method), - Fetch updated address using (
getUserAddress
SDK method).
This workaround works only for a logged in user. Guest user can't use an update address endpoint as it is restricted to logged in users.
It is possible to create user with the same email multiple timesri:link
Even though, it looks like it is possible. In reality, SAP responds with data you provided + UID which is Random string but it doesn't create a new user in that scenario.
We can find code responsible for that in SAP's source code:
// ...
// Part of method responsible for creating an user
try {
customerFacade.register(registerData);
} catch (final DuplicateUidException ex) {
userExists = true;
LOG.debug("Duplicated UID", ex);
}
final String userId = user.getUid().toLowerCase(Locale.ENGLISH);
httpResponse.setHeader(YcommercewebservicesConstants.LOCATION, getAbsoluteLocationURL(httpRequest, userId));
final CustomerData customerData = getCustomerData(registerData, userExists, userId);
return getDataMapper().map(customerData, UserWsDTO.class, fields);
// ...
// Here we can see what's happening if userExists === true
protected CustomerData getCustomerData(final RegisterData registerData, final boolean userExists, final String userId)
{
final CustomerData customerData;
if (userExists)
{
customerData = customerFacade.nextDummyCustomerData(registerData);
// if user exists, make sure return the customer.uid is the same with exist one
alignCustomerUidWithExistUser(userId, customerData);
}
else
{
customerData = customerFacade.getUserForUID(userId);
}
return customerData;
}
/**
* Generate dummy customer data with random customerId to return if user already exists in database.
*
* * @param registerData
* data provided by user during registration
* @return
*/
CustomerData nextDummyCustomerData(final RegisterData registerData);
// ...
@Override
public CustomerData nextDummyCustomerData(final RegisterData registerData)
{
final CustomerModel userModel = new CustomerModel();
setCommonPropertiesForRegister(registerData, userModel);
userModel.setCustomerID(UUID.randomUUID().toString());
return getCustomerConverter().convert(userModel);
}