The product sync domain model
This section describes the domain model that represents the product objects where the following three assertions hold true:
-
The domain model primarily serves as DTO objects for transferring information between the external commerce system and Sitecore.
-
The domain model contains the minimum required information as contracts and is typically extended, when integrated with a specific commerce system.
-
The domain model is used when a Sitecore developer wants to synchronize product data with the external commerce system or product data is pushed into Sitecore from the external commerce system
The following class diagram shows the domain model.
The domain model consists of abstract classes that make up the contracts with the external system. The contracts are defined as abstract classes instead of interfaces to allow the model to be easily extended later if needed. This follow the best practice guidelines defined in the book Framework Design Guidelines.
Default implementation of the contracts are delivered as part of Connect. If an actual Connect provider with an external commerce system contains more functionality that provided by default, the implementation can be replaced. All instantiation of actual classes will be handled through dependency injection.
Class: Product
The product class is responsible for representing a product or any variant of it, hence a variant is a product in this model.
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier for the product in the commerce system. This can be used to get a reference to the product using the commerce system's native API. |
|
SitecoreItemId |
String |
Returns the Sitecore ID |
|
Name |
String |
Name of the product |
|
ShortDescription |
String |
The short description of the product. |
|
FullDescription |
String |
The full description of the product. |
|
ProductType |
ProductType |
A reference to the product type |
|
Manufacturers |
Manufacturer |
Reference to the manufacturers |
|
ClassificationGroups |
IReadOnlyCollection<ProductClassificationGroup> |
Reference to the associated classifications and categories |
|
Specifications |
ProductSpecifications |
Collection of specifications set directly on the product |
|
VariantSpecifications |
ProductVariantSpecifications |
List of references to specifications that tells the variants apart and which potentially can be selectable to the visitor |
|
Resources |
IReadOnlyCollection<ProductResource> |
Reference to the associated resources |
|
Divisions |
IReadOnlyCollection<Division> |
Reference to the associated divisions |
|
RelationTypes |
IReadOnlyCollection<ProductRelationType> |
Reference to the related products |
|
Created |
DateTime |
Date of creation |
|
Updated |
DateTime |
Date of last update |
Class: ProductSpecification
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Group |
String | |
|
Key |
String | |
|
Value |
String | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductSpecifications
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Specifications |
IReadOnlyCollection<ProductSpecification> | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductClassification
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
ExternalParentId |
String | |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Name |
String | |
|
Description |
String | |
|
Specifications |
ProductSpecifications | |
|
Created |
DateTime | |
|
Updated |
Class: ProductType
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
string |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
string |
Represents the Sitecore ID. |
|
ProductTypeId |
String | |
|
Description |
String | |
|
Specifications |
ProductSpecifications | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductManufacturer
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Name |
String | |
|
Description |
String | |
|
WebSiteUrl |
String | |
|
ProductTypes |
IReadOnlyCollection<ProductType> | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductClassificationGroup
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Name |
String | |
|
Description |
String | |
|
Classifications |
IReadOnlyCollection<ProductClassification> | |
|
Created |
DateTime | |
|
Updated |
Name |
Class: ProductVariantSpecifications
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Specifications |
IReadOnlyCollection<ProductSpecification> | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductResource
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: Division
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Name |
String | |
|
SubDivisions |
IReadOnlyCollection<Division> | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductRelation
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Product |
Product | |
|
ReferredProduct |
Product | |
|
Created |
DateTime | |
|
Updated |
DateTime |
Class: ProductRelationType
|
Name |
Type |
Description |
|---|---|---|
|
ExternalId |
String |
Unique identifier used to identify the item in an external system. |
|
SitecoreItemId |
String |
Represents the Sitecore ID. |
|
Name |
String | |
|
Relations |
IReadOnlyCollection<ProductRelation> | |
|
Created |
DateTime | |
|
Updated |
DateTime |
