With the Optimizely Product Information Management (PIM) integration, you can manage detailed product information and synchronize the data to Optimizely Customized Commerce.
Note
Commerce dependency: version 13.15.0 and higher.
The current integration is a beta version and does not support multi-language management.
## About the Optimizely PIM
The PIM manages detailed product information such as size, weight, color, and associated images. You can set up the catalog and product data requirements and manage the data acquisition and curation process.
Integration contains a set of scheduled jobs for synchronization of the information with [Optimizely Customized Commerce system overview](🔗).
## Install and configure
Add the PIM integration by installing the [_EPiServer.Commerce.PIM_](🔗) NuGet package to your Optimizely Commerce site. The integration package contains the **EPiServer.Commerce.PIM** integration project, including a set of scheduled jobs for data synchronization.
### Configuration settings
After installing the package, add the following configuration settings to the \<appSettings> section in the `web.config
` file, and define values as described in the following example.
### Configuration keys
Key | Description |
episerver:PIM.Environment | Values: **Production** or **Sandbox**. <br>Setting for current site environment. <br>This must match the setting in **PIM > Configure > Settings > Active Publishing Environment**. |
episerver:PIM.AppKey | The application key (instance key) to connect to PIM API. |
episerver:PIM.SecretKey | The secret key (instance secret ) to connect PIM API. |
episerver:PIM.NumberOfLookbackDays | Number of days, used in **Refresh mode** to get product records based on the published date. Default value is **5 days**. |
episerver:PIM.APIAddress | Root URL of PIM API endpoint. Default value is `https://pim.insitecloud.net/ ` |
#### Set Commerce version
You also need to set the **Commerce Version** in Optimizely PIM to “Epi B2C Commerce”. Open **PIM** and go to **Configure > Settings** to set this.
## Scheduled jobs
The PIM integration package contains a set of scheduled jobs for managing data synchronization with Optimizely Commerce. [Scheduled jobs](🔗) are managed from the **CMS Admin** view.
### Synchronize setup data
The **PIM: Synchronize setup data**job is configured early in the implementation process by the implementation team. You should run the job at initiation to pull in languages, websites, product relationships, and product custom properties. Run the job from a **Sandbox** or **Production** instance, not a partner QA site, and run the job when new catalogs, languages, meta-classes, meta-fields or relationship types (`AssociationGroupDefinition
`) are added or updated.
Note
The Catalogs in Commerce site will be synced to PIM as Websites. So, after "PIM: Synchronize setup data" is finished, you can map the PIM category tree to **only one** Website (Catalog) to integrate with Commerce Cloud. If you select more than one website an error will occur when you run "PIM: Publish approved products" job.
The catalog data (categories, products, and variants) synchronization occurs only from PIM to Commerce. So if you try to create category outside of PIM, it will be discarded after you run "PIM: Publish approved products" job.
### Publish approved products
The **PIM: Publish approved products** job runs whenever you want Approved products to be pulled into the active environment of your choice - either **Sandbox** (early in the project), or **Production** (once live). It pulls in products with the status "Approved", and then updates the status in PIM to "Published". You csan set the job as recurring, or run on-demand.
### Refresh published products
The **PIM: Refresh published products** job keeps non-production environments synced with the PIM as needed. It uses the **lookback days** parameter in the job to pull in products with Published status based on the date last published into the environment you are running the job from. You also can use this for development environments. It should typically only be run on-demand.