Customers and users
Commerce Connect is a generic Commerce API that supports both B2C and B2B scenarios. In Connect:
-
A Commerce customer represents a person in a B2C scenario whereas in a B2B scenario a Commerce customer typically represents a company. The CommerceCustomer account is used for the customer in the ECS who receives and pays for the submitted orders.
-
A Commerce user represents a person who has registered or who is going through the checkout without registering (that is, an anonymous user). The CommerceUser account is used for authentication as well as for managing the Customer account profile.
In a B2C scenario, the CommerceUser and CommerceCustomer can be considered one and the same, depending on the integration with the External Commerce System (ECS). In the Commerce Engine, only the CommerceUser account is used.
It is possible for customers to exist without users (for example, during anonymous checkout), but normally users would not be without customers.
There are many different ways to use Connect with an ECS for customers and users:
-
To pass customer and user information between the ECS and Sitecore.
-
To set and/or get customer information during checkout.
-
To register accounts for new users.
-
To authenticate (for example, login or logout registered users).
-
To enter a user into an engagement automation (EA) plan when creating a user account and trigger goals when logging in.
Configuration
You can find all configuration for the customer subsystem in the Sitecore.Commerce.Customers.config file. Here you will find all details for the entities, pipelines, and repositories used by the customer and user system.
Entities
The default customer entities for Commerce Connect only assume some of the basic customer and user information that will be used across all commerce systems; it is expected that you will need to extend these entities.
The concept of a customer is determined by the integrated commerce system and the e-shop solution. In B2C solutions, the customer typically represents a person whereas in B2B scenarios a customer typically represents a company.
You can use the following five entities defined in the Connect system for customers and users to extend functionality to suit your needs:
-
CommerceCustomer
- is always extended to include custom information particular to the external commerce system (ECS). -
CommerceUser
- is always extended to include custom information particular to the external commerce system (ECS). -
CustomerParty
- represents the type and 0-to-many relationship between the customer and a list of parties, where parties are of type Party. -
CustomerPartyType
- indicates the type of relationship between the customer and party. The class is introduced as an extensible enum. To extend and customize the options, Connect has two party types:AccountingParty
andBuyerParty
. -
Party
- a shared entity between the carts service layer and the customer and users service layer. This entity stores party information, for example, address information.To extend any of these default entities, you create a new class that inherits from the relevant type and then patch the relevant entity under commerce.Entities in the
Sitecore.Commerce.Customers.config
file.
Pipelines
There are numerous pipelines for customers and users that provide most basic functionality.
For example:
-
CreateCustomer
andCreateUser
pipelines - used to create customers and users. -
UpdateCustomer
andUpdateUser
pipelines - used to update customers and users. -
DeleteCustomer
andDeleteUser
pipelines - used to delete customers and users. -
AddCustomers
andAddUsers
pipelines - used to associate customers to users. -
AddParties
pipelines - used to add party information.
For more information, see the Commerce Connect Developer Reference.