Vue Storefront is now Alokai! Learn More
Supported Features

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

FeatureIs 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

FeatureIs supported
Creating a cart
Fetching a cart
Deleting a cart
Cloning a cart
Restoring a cart
Saving a cart

Cart - operations on entriesri:link

FeatureIs 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

FeatureIs 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

FeatureIs supported
Getting user order
Placing an order
Cancel an order
Getting mocked payment request
Getting mocked payment response

Registration & Session managementri:link

FeatureIs supported
Creating a user
Fetching a user
Signing a user in
Signing a user out
Refreshing user token

User data & Operationsri:link

FeatureIs 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
FeatureIs supported
Fetching consent templates
Giving a consent
Removing a consent
Getting a consent template

Miscellaneousri:link

FeatureIs supported
Fetching countries
Fetching country regions
Fetching titles
Fetching base store configuration

B2B Featuresri:link

B2B Productsri:link

FeatureIs supported
Getting a product
Getting a list of products from category

B2B Cartsri:link

FeatureIs 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

FeatureIs supported
Create user registration request
Get user

B2B Ordersri:link

FeatureIs 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

FeatureIs 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

FeatureIs supported
Get available payment types

B2B Cost centersri:link

FeatureIs 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

FeatureIs supported
Get Customer 360 data

Agentri:link

FeatureIs supported
Get points of service

Customer Listsri:link

FeatureIs supported
Get Customer Lists

Customerri:link

FeatureIs supported
Create customer
Autocomplete information
Bind cart

Customer Listri:link

FeatureIs 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:

  1. Create an address (createCartAddress SDK method) without district field,
  2. Patch it with the field (updateUserAddress SDK method),
  3. 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);
}