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 & Product

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 operations

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

Cart - operations on entries

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 operations

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 & Order

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

Registration & Session management

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

User data & Operations

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

Miscellaneous

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

B2B Features

B2B Products

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

B2B Carts

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 Users

FeatureIs supported
Create user registration request
Get user

B2B Orders

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 approval

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 types

FeatureIs supported
Get available payment types

B2B Cost centers

FeatureIs supported
Get active cost ceners
Get cost centre details
Get budgets for cost center
Get all cost centers

Assisted Service Module

Customer 360

FeatureIs supported
Get Customer 360 data

Agent

FeatureIs supported
Get points of service

Customer Lists

FeatureIs supported
Get Customer Lists

Customer

FeatureIs supported
Create customer
Autocomplete information
Bind cart

Customer List

FeatureIs supported
Get customer list details
Search customers

Limitations of SAP Commerce Cloud

This section presents limitations coming from the SAP Commerce Cloud and possible workarounds.

Setting district field in a new address is being lost

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 times

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);
}