How to Understand Salesforce Commerce Cloud Platform

Salesforce Commerce Cloud, formerly known as Demandware — is a cloud platform with the primary purpose of serving B2C e-commerce solutions

Oleg Sapishchuk
13 min readNov 23, 2020

Welcome, everyone. I have been working for several years as a Salesforce Commerce Cloud (SFCC) developer. Allow me to share with you what the SFCC is and how one can properly navigate its systems. This article is especially directed to individuals who will be using the platform for the first time. Employees currently working in the job position that possess some familiarity with the technology will find this very helpful. Also it can be useful for JavaScript developers who are going to try themselves with SFCC.

The question you may be asking yourself is, what is expected of me? Can I really work with this platform? The motive for writing this article is the lack of publicly available resources. You cannot really “google” too much about it, as historically speaking, it was a closed ecosystem. Previously, you could only learn about SFCC after a few months of working with the platform. If what you encountered matched what you had expected, then great! If that is not the case, then help is here. I am happy to share this article explaining the SFCC platform with you.

My Experience Using SFCC

At one stage in my life, I questioned if I should pursue a career path connected with SFCC. Back then, it was extremely difficult to find information about this technology. I found the information on the web to be frustrating. I determined then that SFCC was incompatible with different types of companies. At the time, it was called Demandware and did not have any connection to Salesforce.

By now, you have probably figured out that I gave it a try. Recently, documentation about the platform became public, facilitating high-level analysis of the functionalities and capabilities of SFCC. Here is an introduction to the details of the SFCC platform. No comparisons have been made to domain competitors such as Magento or Hybris.

Introduction to Commerce Cloud

Salesforce Commerce Cloud, formerly known as Demandware before Salesforce acquired it, is a cloud platform for e-commerce solutions which is relatively easy to use. It is used to drive the big business of electronic commerce. It provides useful capabilities and experiences for sellers, as well as users. SFCC accelerator provides capabilities for regional and cross-brand eCommerce solutions. The customer is provided with an easy buy-in experience in a well-managed way. Orders are efficiently managed, and the customer service tools provided support a smooth shopping experience for the end-customer.

1.1. Salesforce Commerce Cloud Architecture

Architecture
Architecture

When customers enter a website created on SFCC — all static content (JS, CSS, and images) is delivered from CDN. SFCC use eCDN (Embedded Content Delivery Network) for such purposes. Also, we can configure external CDN by native platform capabilities. This ensures that there are no resource consumptions on the platform for static content. The rest of the information and data are covered by Salesforce servers. Powerful data centers are distributed globally, placing them physically closer to the end-users.

Structure-wise, in such data centers, Salesforce may keep multiple PODs (Point of Delivery). PODs are groups of hardware shared by multiple Salesforce customers. The PODs enable the sharing and availability of additional resources to the stakeholder should there be a spike in demand for those resources. PODs consist of firewalls, switches, load balancers, computing power, and a file system.

Data Integration: Web Services
Data Integration: Web Services

1.2. SFCC integrations on average project

All new projects based on SFCC are directed towards established, large-scale clients with a revenue of 10–50 million dollars or more per year. This means that such customers will have a relatively equal load of expectations on the website with hundreds of thousands of visitors. On the peak load time frames, such load might reach millions of users, for example, on “Black Friday” or “Cyber Monday” events. Almost on each project, there is a list of services and systems with which we should integrate:

  • payment system providers, including fraud management engine (PSP)
  • taxation providers
  • order management systems (OMS)
  • customer relationship management systems (CRM)
  • address validation systems
  • rating and review solutions
  • analytical systems and tools

Most of such integrations are based on plug-and-play solutions (integration cartridges), required to modify each customer’s requirements and business needs. Usually, the complexity of client-business processes and requirements for global support (for example, multi-brand solutions in Europe, APAC, and the Americas) will require a lot of additional functionality beyond standard integrations. In such cases, we need to produce many custom functionalities via coding activities, making design and planning interfaces, as we would do with any other technology.

1.3. Demo-shop

Like other eCommerce solutions, SFCC has its own demo shop. The demo shop starts with the development of projects. SFCC demo shop includes:

  • Home Page
  • Categories (Category Landing Page, Product Listing Page, Product Detail Page)
  • Promotional banners
  • Store locator
  • Promotions
  • Checkout
  • My accounts and others.

Delivery of eCommerce solutions begins with customizations of the demo-shop. Salesforce calls it; Storefront Reference Architecture, Reference Application or SFRA. Traditionally on SFCC, our clients organize their B2C business model solutions while there are also cases for B2B, B2B2C, and even D2C.

In one of my recent projects on SFCC, we developed a B2B solution for an international company in the pharmaceutical industry, making sales in all major markets throughout the world. After more than a year of work and significant customizations per customer needs from the standard SFRA, the client is doing exceptionally well. We were able to achieve extraordinary results. All features provided by the Reference Application were completely redrafted for this unique project in order to achieve the best-customized solution for the company. We adjusted the defined solutions and best practices to the customer’s unique situation. Of course, this type of project is an exception.

For customizations with demo-shop, a highly engaged delivery team consisting of UX & UI designers, Business Analysts, and other professionals are deployed to support the client during the development phase

The SFCC eCommerce business model works. I was supporting a B2B solution less than a year ago. We saw the client increase revenues to several billion, or ⅓. more than revenue performance on the legacy ecosystem. That is phenomenal growth.

1.4. Business Manager

Salesforce provides an administrative feature called Business Manager (BM). It is used for the administration of the platform. In BM, we can control different aspects of the website. Also, some modules are directly related to selling products and services. Products and services sold include catalogs of products, price books, inventories, content, etc.

Business Manager: Merchant Tools
Business Manager: Merchant Tools

In BM, there are capabilities directly linked to developmental and IT operations. Such capabilities include Jobs that are similar to Cron Job Software Utility, web services, and others.

Business Manager: Administration
Business Manager: Administration

Business Manager allows the user to control the creation of the code and data replications between different environments. It also facilitates the scheduling of backups. In addition to those features, the admin with responsibility for the BM can allow other users to access the system, assign roles, and grant permission for users to utilize various aspects of the BM.

What is behind the scenes in the SFCC?

On the server-side, we have B2C Commerce JavaScript (Demandware Script) — A rhino-based JavaScript engine, which includes ECMAScript 5, Mozilla extensions, JavaScript 1.8, and E4X. Behind the scenes, you will also find server codes that have been organized with the help of CommonJS compatible B2C Commerce script modules. Moreover, SFCC provides API capabilities to work directly with the platform:

The B2C Commerce Script API provides a mature structure of the classes that work seamlessly with the platform and realization standard eCommerce flow. Features, such as orders, baskets, customers, catalogs, and others each have their specific classes; with which to work. SFCC does not have the capability to allow you to interact directly with their Database (DB). Access to the DB is solely via the API of SFCC; the same goes for core platform logic.

The reason for this is the permission to access and change how the core platform functions operate, which is not available to you. All customizations must be done in collaboration with what is already in place, as with any other SaaS solution. This feature saves the developer the trouble of designing databases, creating relationships between tables, and so forth because the platform does it all for you. However, the platform will permit the expansion of the existing system objects; and the implementation of new custom data features if necessary. The platform handles a wide range of tasks, which provides you with the time to focus on delivering efficient business solutions.

Below is an example of an extension suitable for the Basket system class with a newly customized feature.

Object Type ‘Basket’ — Attribute Definition Details
Object Type ‘Basket’ — Attribute Definition Details

In order to get the current customer basket via B2C Commerce Script API, you are required to write only two (2) lines of code:

var BasketMgr = require('dw/order/BasketMgr');
var basket = BasketMgr.getCurrentBasket();

Open Commerce API (OCAPI) — is a RESTful (Representational State Transfer) API, and is a software architecture that brings to action (employs) user-friendly web-based services. It consists of three (3) main parts:

  1. Shop API (more information at Shop API resources and Shop API documents) — provides access to Commerce Cloud Digital storefront functionality. The primary role of a shop API is to assist with the customer journey to buy products. It helps with access to products, baskets, the creation of orders, and other customer-related features.
  2. Data API (more information at Data API resources and Data API documents) — provides access to Commerce Cloud Digital configurations and integration functionality for the related projects.
  3. Meta API (more information at Meta API) — provides access to resources and document descriptions, which are available in Open Commerce API.

The existing version of the SFRA server-side JavaScript might remind us of the Express Node.js framework. For example, this is how it is written out if we are using SomeController.js as the controller that we are adding data structures/parsing logic to for a GET-request under SomeController-SomeEndpointAction:

var server = require('server');

server.get('SomeEndpointAction',
someMiddleware1,
someMiddleware2,
someMiddleware3,
function (req, res, next) {
var someResult = {};

res.json(someResult);
next();
}
);

The current version of the demo-site of the SFRA does not have JavaScript optimally organized. In my opinion, the architecture of the storefront JavaScript doesn’t exist. While I do not think it is the worst code, it still is certainly not one that I would ever include in my portfolio. The issue with JavaScript is one of the key reasons why quite often; developers tend to have their own custom solutions (micro-frameworks) for the client-side JavaScript architecture when they are managing the customizations of the demo-site. Currently, Salesforce is working on the standardization of the approaches for the architecture of the client-side JavaScript. For this development, they intend to use Lightning Component Framework. This framework is widely used and known in the core products of Salesforce and various domains.

Before SFRA came into the picture, SFCC had a few other major solutions. Their previous solution was implemented on “pipelines”. The development of pipeline architecture is a form of visual programming. You can find an example of such a development approach below:

Product.xml pipeline which is analog of new SFRA Product.js controller

Modern developers do not enjoy working with pipelines. Solution Integrators always encountered challenges in solving control version conflicts. Performance improvements were also difficult to execute using pipeline technology. That is why SFCC decided to move away from using pipelines and did JavaScript-based technology and architectural approach. The JavaScript-based versions are similar to Express Node.js. Clearly, each version of the SFCC Reference Application is an improvement on the previous one.

Currently, Salesforce is actively working on Headless Commerce, which sounds promising for the NextGen technology approach.

Commerce API
Commerce API

In Headless Commerce, we have a complete separation between server logic and the presentation layer. The back-end only provides API, which is hosted somewhere else (another domain) and does not have any default front-end implementation. “Head” terminology means “front-end” which is closely (monolith-like) connected to the back-end. There are a lot of variations in visualizing the presentation layer from mobile application to the complex web application. These frontend implementations are hosted separately from API.

For those working with the frontend using such a backend, API would make it look like they are working with any other 3rd party integration. Headless Commerce provides API to operate with products, catalogs, baskets, inventory, pricebook, and many others. Various solutions to the experience layer are using the same server-side API. To add a new front-end solution, we do not need to rewrite all business logic on the server-side. You can read this in more depth about Headless Commerce in the article from Stanislav Publika.

How COVID-19 influenced the SFCC platform?

With the beginning of the global lockdown, most countries went online, and the internet became a life-savior for many people and businesses. The Salesforce report of April 2020 indicated that the number of unique online buyers nearly doubled compared to the previous year. Revenues of online-shops, allowing customers to buy goods on their websites and pick up in the store, BOPIS (buy online, pick-up in-store), increased by 27% in the first quarter.

The process and nature of buying behavior are changing. In July 2020, Salesforce published a Shopping Index for the second quarter. It showed that the number of online shoppers did not reduce even though many physical stores reopened. Salesforce has predicted that eCommerce will continue to grow, even if all physical shops reopen and the pandemic is stabilized.

Online shopping is increasing. With this expansion, expectations for eCommerce solutions are increasing for business stakeholders and customers. Demand for high quality and reliable eCommerce solutions (online-shops, applications, etc.) are also rising. Considering the scale of Salesforce and the vast package of services offered, there will certainly be numerous career opportunities for SFCC experts. During the pandemic, industries like tourism and the transport sectors have struggled. Contrastingly, online shopping or eCommerce has boomed during the pandemic.

How to start a career in SFCC?

To start a relatively easy career with the SFCC platform:

  • you should know Javascript
  • you would require some experience working with backend systems in any technology
  • you need to be familiar with what eCommerce is and its common business functionalities.
  • you also need to understand the inflow of revenue and what are the main user scenarios encountered in eCommerce

Even if you did not have a chance to get familiar with the above elements, you could search for learning programs, special courses, and student academies that are teaching JS or even SFCC. For example, Astound occasionally offers a JS Boot Camp. If you were successful with a similar course, you are qualified to become a Trainee SFCC Developer. Currently, the industry has a limited number of SFCC experts.

Furthermore, the future looks bright for the global development of eCommerce. These factors indicate that the demand for SFCC experts is only set to increase. These factors also explain why a lot of Consultancy and Solution Integrator companies are ready to invest heavily to train novices all the way up to outstanding SFCC experts. Companies have been providing SFCC novices with a lot of time (up to several months) for onboarding to build familiarity with the platform. They only send that trainee for “combat” missions after they have been properly upskilled.

Here are some extra resources:

  1. SFCC documentation documentation.b2c.commercecloud.salesforce.com/DOC1/index.jsp
  2. Salesforce Trailhead (choose «Commerce Cloud» section) — trailhead.salesforce.com/trails
  3. Developer center — developer.commercecloud.com/s
  4. Github (some repositories are public) — github.com/SalesforceCommerceCloud
  5. Salesforce AppExchange — appexchange.salesforce.com
  6. Channel on Youtube — www.youtube.com/c/commercecloud/videos
  7. A relatively good video to understand the platform — youtu.be/U_aoTXkwgmA

In Summary

Salesforce Commerce Cloud — is a cloud platform with the main purpose of providing B2C e-commerce solutions. Because this SaaS solution is cloud-based, the technical team does not need to worry about supporting the hardware parts. Scaling challenges or the threat of the site crashing on “Black Friday” are also removed by the cloud technology.

This platform is usually used by clients with high revenues. This is because SFCC makes part of their revenue by negotiating and collecting a predetermined percentage of gross merchandise (volume-based) of the total sales on the eCommerce site. It is, therefore, unprofitable for Salesforce to support small businesses.

SFCC, like most eCommerce solutions, has its own demo shop (or reference application) from which all projects are developed. The nature of development consists of customization and extension of the demo shop capabilities, adding new integrations for payments, taxation providers, and so forth. Technology-wise, the server code of the SFRA is similar to a well-known Express Node, JS framework. Client JS needs improvement, and users must exercise caution if using Client JS until it is fixed. We expect that SFCC will refactor client-side JS in the nearest future. Probably new JS architecture will be based on the Lighting Component Framework.

SFCC is growing rapidly. A lot of positive changes have been happening each quarter. Soon, we will be able to implement projects based on Salesforce Headless Commerce.

Photo by Austin Kehmeier on Unsplash

This blog post is a contribution to the Commerce Cloud Community and is based on my partnership with Ostap Spilchuk. Ostap is the Principal Web Developer at Astound Commerce and an active contributor to the Commerce Cloud Community. His initial article posted on DOU is published in Ukrainian. He kindly agreed to allow me to present this article for the benefit of the English-speaking audience. I wish to thank Ostap for this most generous contribution.

My name is Oleg Sapishchuk, and I’m an experienced architect providing digital transformation with unified commerce solutions for some of the world’s best-known and most influential brands. Salesforce B2C Commerce is the topic that I write about most frequently. If you are interested in new or previously written material, I invite you to follow my Medium profile.

--

--

Oleg Sapishchuk

Solution Architect providing digital transformation with unified commerce solutions for some of the world’s best known and most influential brands