We are working in an Episerver implementation that has a huge Catalog. We have around 130.000 products, and each of those, has at least 1 variant below. Which give us around 260.000 entities.
One of the challenges that we have faced, was pushing updates from the PIM platform into Episerver. With that amount of items in the PIM, we have a lot of updates coming everyday, and performance is something to keep an eye on.
We were facing issues when the push from the PIM was taking place. After some investigation we realized that Find was pushing updates for each update that we were pushing from the PIM to Episerver. And both things happening at the same time was too much overhead.
In order to improve the performance of the Catalog import, we decided to take the following approach:
- Whenever we trigger the import of products from the PIM to Episerver, we disable the updates to Episerver Find.
- We run the import until it finished.
- We enable the updates from Episerver to Find.
- We trigger the job to re-index Episerver Find (Episerver Find Content Indexing Job)
The approach is really easy from the implementation point of view, so let’s see how it looks:
And now let’s see it working in the implementation.
I am not elaborating how to trigger the Episerver Find Content Indexing Job, and you will find plenty of examples about how to do that. In our case, the solution was to schedule it at some specific time, when we knew that the import from the PIM server is already finished.
You can also find a similar, but more elaborated, approach in which Jeroen is keeping track of all the elements and providing methods to perform specific actions on them. Here is the link.
Please keep in mind that the code is only for educational purposes 🙂
In another post I will explain an easy way to include Pre-Import handlers and Post-Import handlers for the cases in which we need to do some small tweaks, updates and sanitize the XML file that goes into Episerver.
Hope this was useful!
Happy codding!