The basics of product synchronization
There are various ways to synchronize one or more products ranging from explicit to implicit specification of the products to synchronize:
-
Synchronize All Products
The
SynchronizeProducts
service method synchronizes all products and related product repositories (that is, artifacts) that need to be synchronized. A part of the logic retrieves a list of updated products from the external commerce system and a list from Sitecore and compares them to implicitly determine which products to synchronize and which to delete.After determining which products to synchronize, due to being newly added, updated, or deleted, the next method, the
SynchronizeProductList
method is called, specifying the list of products to synchronize.Before calling the
SynchronizeProductList
method, all the related product repositories are synchronized. -
Synchronize Product List
The
SynchronizeProductList
service method accepts a list of product IDs, which it iterates over and calls theSynchronizeProduct
method.No related product repositories are synchronized as part of this, but are assumed to be up-to-date.
-
Synchronize Product
The
SynchronizeProduct
service method accepts a single product ID for which the data is synchronized.No related product repositories are synchronized as part of this, but are assumed to be up-to-date.
-
Synchronize Artifacts
The related product repositories such as Manufacturers, Product Types, Classifications (categories), and global specifications are referred to as product artifacts.
The
SynchronizeArtifacts
service method will synchronize all the repositories separately.
While synchronizing all or a list of products, a number of Sitecore Disablers are temporarily activated to speed up performance, such as the EventDisabler, SecurityDisabler, and so on.
The item IDs generated in Sitecore for the product data in the external system are based on a direct mapping of external IDs to Sitecore Item IDs. This means the same specific item ID is always generated for a specific external ID. The implication is that product data can be synchronized even if the related product repositories are not up to date. When the related product data is synchronized, the connection is automatically established because the Sitecore item ID was already known and configured.