The product sync domain model

Version: 10.3

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.

Note

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

Do you have some feedback for us?

If you have suggestions for improving this article,