Guide - Change Behavior for Job ProductPriceChangeEvents - Refresh Product Prices

1 Introduction

When a price list import is executed in the back office to update product prices, "price change events" are created in the database. After the import a separate job ProcessProductPriceRefresh must be executed in order to process the created price change events and do further things like CacheRefresh etc. The job ProcessProductPriceRefresh has a job configuration named Cleanup events. Depending on that configuration (true/false), the processed price change events are deleted (cleanup events = true) or remain in the database (cleanup events = false/missing). The default value is true. In order to reduce the number of events to process and also to ensure that the events are processed only once (for option cleanup events = false), this job only processes events that are created within a certain time frame - from last run of this job until now.

Since the job ProcessProductPriceRefresh (which consumes the events) is independent from the price list import which creates the events, it could be that both processes are running simultaneously. In this case events are created within the time frame of the current run in which they are to be processed. However, they are not because of parallel execution. This leads to an accumulation of unprocessed price change events in the database.

This occurred in both modes (cleanup events = true or false).

1.1 References

2 Migration

2.1 ProcessProductPriceRefresh (cleanup events = true - default)

In order to fix that issue, the behavior of the job ProcessProductPriceRefresh was changed for the option (cleanup events = true):

Running the job with cleanup events = true normally means that afterwards all processed price change events are removed and the database table should be empty. So there is no need to reduce the number of events that are processed by a time frame. Therefore this date check has been removed. As a result the price change events that are created from the price list import during a parallel execution remain in the database after the current run of the job ProcessProductPriceRefresh and will simply be processed with the next run. Since this mode "cleanup events = true" is the default option this fix will cover most cases. There is no migration necessary. However, there could be a lot of leftover (outdated) price change events that the job has to process, which might increase the execution time of the job.

2.2 ProcessProductPriceRefresh (cleanup events = false)

The behavior for the second option (cleanup events = false) remains unchanged.

This means there could still be unprocessed price change events. Therefore Intershop does not recommend using this option.


The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.

Customer Support
Knowledge Base
Product Resources
Support Tickets