Migration Guide - Collector

Upgrading From Version 5.* To Version 6.*

  1. The general concept of collectors, and collector queries are enhanced to support multi-store.

    The following classes were altered to support the multi-store concept:

    • AbstractCollector
    • AbstractDatabaseCollector
    • AbstractPdoCollector
    • AbstractPropelCollector
    • AbstractSearchPropelCollector
    • AbstractStoragePropelCollector
    • AbstractCollectorQuery

    You can find additional details on Collector module release page.

  2. Update/install spryker/touch to at least 4.0.0 version. You can find additional help for feature migration here.
  3. If you have multiple stores: Amend your existing custom AbstractPdoCollectorQuery extended queries to always select current store related spy_touch_storage and spy_touch_search records. This has to be made for all of the queries regardless if they work with a multi-store entity or a single-store entity. You can find additional details regarding collector multi-store concept in the previous step, on Collector module release page, and on our Demoshop implementation. Note: it is important to add the condition to the LEFT JOIN section so the number of result rows will not change.
  4. The deprecated CollectorDependencyProvider::provideLocaleFacade() is removed, please check your code if you have custom calls or dependencies.
  5. The following methods have internal changes, please check if you have customized them:

    • AbstractTouchUpdater::bulkUpdate()
    • AbstractTouchUpdater::getCollectorKeyFromData()

    You can find additional details on Collector module release page.

Upgrading From Version 3.* To Version 4.*

With version 4 of the Collector module, we fixed the collector:search:export and collector:search:update console commands to run for all available locales instead of just for the current one. This behavior is now consistent with the storage collector command (collector:storage:export).

If you would like to upgrade to this version and you have multiple locales in your store, then you need to make sure that your collector query (in the Spryker Demoshop we use the ProductCollectorQuery class) is also correctly filtered by locale, otherwise it could happen that you’ll have inconsistent data in your Elasticsearch.


See also:


Last review date: Jan. 31st, 2018