A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Magnus Rahl
Mar 9, 2015
  6526
(3 votes)

Optional performance tweaks in EPiServer Commerce 8.9

EPiServer Commerce 8.9 contains, among many other features and fixes, several performance improvements with focus on Orders and the Catalog. These performance improvements benefit all implementations automatically. But we have also added a couple of optional tweaks.

Disabling version sync for ICatalogSystem operations

Whenever a catalog entry, node or the catalog itself is updated using ICatalogSystem (CatalogContext.Current) a synchronization mechanism activates to make sure that the content versions used by the Content Repository and the Catalog UI are up to date with the change. This includes updates done through the catalog import, Service API and integrations using any of these.

This version synchronization can now be disabled if you don’t care about the versions, e.g. if the catalog information is maintained using an external system that integrates using ICatalogSystem. Note that “disabled” in this context means that rather than updating or creating versions, any existing versions (including drafts not yet published) will be removed when the corresponding data is updated through ICatalogSystem.

The version synchronization is controlled by the AppSetting “DisableVersionSync”. It defaults to false if not present in the config file, i.e. version synchronization enabled. To disable synchronization, set it to true:

<appSettings>
  <add key="DisableVersionSync" value="true" />
</appSettings>

Clear version history for saved Catalog Content

The DisableVersionSync AppSetting does not affect updates done through the ContentRepository (including the Catalog UI), versions will be created regardless of the setting. But similar mechanism for skipping/clearing versions has been added to the ContentRepository. By extending the used SaveAction with the extra flag ExtendedSaveAction.ClearVersions in the call to Save(), any existing versions of the content will be removed. Note that this applies only to the Catalog Content Provider, other providers are unaware of this flag.

The best way to add the flag is to use the SetExtendedActionFlag extension method (namespace EPiServer.Commerce.Catalog.Provider), example:

// using EPiServer.Commerce.Catalog.Provider;
var contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();
var myContent = contentRepository.Get<MyProductContentType>(linkToProductContent);
myContent = (MyProductContentType)myContent.CreateWritableClone();
myContent.Name = "New name";
var publishAndClearAction = SaveAction.Publish.SetExtendedActionFlag(ExtendedSaveAction.ClearVersions);
contentRepository.Save(myContent, publishAndClearAction, AccessLevel.NoAccess);

This might be useful for example in cases where the catalog data is maintained in an external system and the integration uses the Content Repository to import the catalog data.

Mar 09, 2015

Comments

Rasmus Hollin
Rasmus Hollin Apr 9, 2015 08:33 AM

Is versions still created when updatning catalog entries (products, catalog nodes) manually in CMS?

Magnus Rahl
Magnus Rahl Apr 13, 2015 08:42 AM

Yes, if you work with the new Catalog UI versions will still be created, as they will if you work with the content repository and don't use the ExtendedSaveAction.ClearVersions.

May 7, 2015 11:18 AM

Is it possible to clear verisons for assets connected to catalog entries?

Magnus Rahl
Magnus Rahl May 18, 2015 10:37 AM

The assets are basically a feature of CMS and are not affected by any of these flags.

Rasmus Hollin
Rasmus Hollin Jun 17, 2015 07:19 AM

Is the app setting to be added to Web.config for CMS or Commerce site?

Magnus Rahl
Magnus Rahl Aug 12, 2015 11:25 AM

This is for the frontend site. Changed made through the Commerce Manager site will always clear versions (as it says in the warning above the form when editing catalog entities in CM).

Please login to comment.
Latest blogs
A day in the life of an Optimizely OMVP: Learning Optimizely Just Got Easier: Introducing the Optimizely Learning Centre

On the back of my last post about the Opti Graph Learning Centre, I am now happy to announce a revamped interactive learning platform that makes...

Graham Carr | Jan 31, 2026

Scheduled job for deleting content types and all related content

In my previous blog post which was about getting an overview of your sites content https://world.optimizely.com/blogs/Per-Nergard/Dates/2026/1/sche...

Per Nergård (MVP) | Jan 30, 2026

Working With Applications in Optimizely CMS 13

💡 Note:  The following content has been written based on Optimizely CMS 13 Preview 2 and may not accurately reflect the final release version. As...

Mark Stott | Jan 30, 2026

Experimentation at Speed Using Optimizely Opal and Web Experimentation

If you are working in experimentation, you will know that speed matters. The quicker you can go from idea to implementation, the faster you can...

Minesh Shah (Netcel) | Jan 30, 2026