Optimizely Commerce consists of an _e-commerce engine_ with a number of subsystems, together with Optimizely CMS for creation and display of product content on the front-end website.
These are the main subsystems of Optimizely Commerce:
[Catalogs](🔗). Define catalog schemas, import existing catalogs, and define price lists.
[Marketing and campaigns](🔗). Create campaigns, custom discounts/promotions, and define policies used for promotions.
[Orders](🔗). Manage orders, connect payment and shipment gateways, customize order workflows, and manage taxes.
[Customers](🔗). Create organization structures, set roles and permissions, and extend customer or organization objects.
[Markets](🔗). Define multiple markets for market-specific features.
## Data model
Below is a data model of the entities in commerce and the logical relationships they have to each other. The _1 to many_ relationship means that for each 1 instance of an entity there are 1 or more other related instances. An example is orders and order lines, where for every _order_ there is at least one _order line_.
The_1 to many (optional)\_relationship means that it \_can_ be related but does not have to be related. A good example is customers and organizations. Customers do not have to be associated with an organization, so the relationship is an optional one to many between organization and customer.
See also [Commerce Cloud class library](🔗) for the REST API service layer.