Promotion agenda builder considerations

When the promotion engine is invoked, an agenda builder is first used to determine the active promotions for an order. The specific promotion agenda builder your site uses and the number of active promotions for your site can affect the performance of the promotion evaluation process.

To help improve the promotion evaluation process, you can change the setting for the promotion agenda builder. Changing these settings can ensure that your site uses the appropriate agenda builder and improve the performance of the agenda builder that is used. When you are changing these settings, consider the following tips:
  • Limit the number of promotions to be evaluated for an order by deactivating or removing unneeded promotions. By limiting the number of active promotions, you can reduce the total promotion evaluation time and reduce the effect on performance from order calculation tasks.
  • Ensure that the appropriate agenda builder is used. The following table details when to use a specific PromotionExecutionAgendaBuilder in your site:
    Agenda builder usage considerations
    PromotionExecutionAgendaBuilder When to use it When not to use it
    ShopcartDrivenAgendaBuilder
    • Recommended for most sites
    • Your store relies on catalog-promotion data that is populated by Management Center for default promotion types
    • Your store has customized promotion types or promotions that are directly loaded into your store database. If your store has these promotions or promotion types, the CATENCALCD and CATGPCALCD tables must be populated according to the promotion rules
    • A different AgendaBuilder is more suitable
    • Your store catalog-promotion data is not populated in the database by customization or data load.
    DefaultAgendaBuilder
    • Your site does not require extended site support
    • Your store has only a few active promotions
    • Your promotion engine evaluates all active promotions for your store.
    • Your site has many active promotions
    • Your site requires extended site support
    StorePathSupportedAgendaBuilder
    • Your site requires extended site support
    • Your store has only a few active promotions
    • Your promotion engine evaluates all active promotions for your store.
    • Your site has many active promotions
    CodeDrivenAgendaBuilder
    • All promotions for your site require a shopper to enter a promotion code
    • Your site has a promotion that does not require a shopper to enter a promotion code
You can also implement a custom PromotionExecutionAgendaBuilder for your store and configure this builder to work with the promotion engine. To use a custom agenda builder, modify the PromotionExecutionAgendaBuilder section to change the implementation class for the builder in your promotion engine configuration file. The configuration file is in the following directory:
  • WC_eardir\xml\PromotionEngineConfiguration\WCSPromotionEngineConfig.xml
If your store uses the default ShopcartDrivenAgendaBuilder, you can add the following database index to improve the SQL queries for the agenda builder:
CREATE INDEX SCDAB001 ON px_promotion
(
  STATUSASC,
  CDREQUIRED  ASC,
  TYPE        ASC,
  STARTDATE   ASC,
  ENDDATE     ASC
);
If you apply the interim fix for APAR JR53622, the definition of this index is available in the following file, where dbtype is the database type for your WebSphere Commerce database:
  • WC_installdir/dbtype/fixpack10/wcs.fixpack10.schema.sql

If your store uses promotions that are created and updated only with Management Center, you can improve the agenda builder performance by disabling the unnecessary SQL queries. For more information about disabling these queries, see Disabling unused queries for the shopping cart agenda builder