# 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:

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 the SynchronizeProduct 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.

### Note

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.