Cross Promotion Effects Module (CPEM) is used to generate the crossing promotion effects between merchandise and location. There are two types of cross effects that are calculated at corresponding levels:
Cannibalization effects
Halo effects
The Cannibalization level and Halo level are to define at which product and location levels the Cannibalization or Halo cross effects are produced. The Halo level should be higher than Cannibalization level along hierarchy.
Note: The Cross Promotion Effects Module is not available for RDF Cloud Service. |
RDF was launched with Promotional Halo and Cannibalization capabilities in January 2013. The functionality has had limited adoption due to various factors including necessary data required to support reliable results, market maturity and implementation complexity. In an attempt to share lessons learnt with our experience so far, we would recommend the following to our customers considering implementing this functionality:
Starting Conditions
Both Halo and Cannibalization deal with the cross item effects of running promotions, that is, the impact of promoting an item on the sales of other related items. The most important inputs for estimating these cross effects are a robust baseline forecast and self-promotion effects from RDF Causal. Hence, we recommend that CPEM be considered for implementation only after RDF Causal has been up and live for a 12-18 month period, delivering reliable baseline and causal forecasts to drive business decisions.
Replacement SKUs — All historical SKUs that are replacement or promotional variants of each other need to be grouped together into a Plan SKU. The Plan SKU level needs to be used within RDF for estimating both baseline forecasts and causal forecasts.
Appropriate pre-processing — That corrects for missing sales periods and other factors that might bias the estimated baseline forecast and hence impact that quality of CPEM output.
Set Up for Cannibalization
Careful configuration and pre-implementation set up is required for Cannibalization to run. It is important to note that Cannibalization (though configurable) is designed to run at an item-group level (as defined in the following list) and not the individual SKU level.
Note: Cannibalization needs to stay inside a local domain. |
Item-group or L1 Set Up — This is the level at which Cannibalization is estimated. SKUs have to be grouped (outside the system and fed in). These are groups of items that are typically promoted together. For example, in the yogurt Category, SKUs of a particular brand, size, fat content but different flavor variants. An attribute analysis exercise, should inform this L1-grouping. What are the key combinations of attributes that need to be the same for all items in an L1-group and what attributes can be different? It is important to note that these attributes will vary significantly, from Category to Category.
Cannibalization-group Or L2 Set Up — L2 is the level within which Cannibalization is estimated. Only item group or L1 within a Cannibalization group are analyzed for possible Cannibalization, when one or more items are promoted. This could be a grouping of one or more classes or sub-classes. Note that L2 grouping needs to be a roll up of L1 groupings, that is, every L1 item-group needs to cleanly map to one and only one L2 grouping (many to one mapping from L1 to L2).
L1-pairing Set Up — In addition to set up of L1 or Item-groups, RDF's CPEM also needs to be told of legal/possible L1-pairs. This requires careful analysis on a Category by Category basis. For example. SKUs within a certain regular price range could be considered Cannibalistic and hence valid L1-pairs. It is recommended that this analysis be conducted carefully, ideally in conjunction with Customer Decision Trees (CDTs) to ensure the correct pairings are set up for each Category.
Co-promotion Effects are Turned Off — A system flag that effectively looks for conditions when both L1 pairings are promoted at the same time and accounts for it appropriately.
Halo effects
Current functionality is designed for a limited use case for businesses with minimal promotional activity. The solution aims to estimate Halo effects by observing the impact on sales of other subclasses when a subclass is promoted. As we vetted this with a broad set of retail use cases with significant promotional activities, we recognized that this functionality is not adequate. We are revisiting our approach to estimating Halo effects and welcome partnerships with retailers.
CPEM is a standalone RPAS instance and its hierarchies including calendar, product, location, and RHS product, are the same as the ones in RDF and all measure data files are imported from RDF. RDF prepares the CPEM needed measure data files based on the Cannibalization and Halo level, so CPEM and RDF should have exactly the same Cannibalization and Halo levels set for CPEM to work. In other words, if you change the cannibalization or Halo level in RDF (CPEM), then you should make the same changes in CPEM (RDF).
CPEM performs the following functionality:
Define and override the cross promotion estimation related parameters in the Effect Estimation Administration workbook.
Run the CPEM batch script to produce both Cannibalization and Halo promotion effects. The CPEM determines the regression based on the promotion, baseline sales, sales, and price information to produce the cross effects.
Review and approve the produced crossing promotion effects in the Effect Estimation Review and approval workbook.
Export the approval cross promotion effects into RDF.
CPEM is a standalone RPAS instance and it is a single domain.
Note: The CPEM domain must be a single domain. Users should not partition the CPEM domain. |
The hierarchy file of Calendar, Location and RHS Product are the same as the RDF domain. However, the RDF and CPEM Product Hierarchy are no longer the same.
Calendar (CLND) Hierarchy File
Merchandise or Product (PROD) Hierarchy File
Location (LOC) Hierarchy File
RHS Merchandise or Product (PROR) Hierarchy File
The measures data files needed in CPEM are imported from RDF as listed in Table 8-1.
Table 8-1 CPEM Measure Data Files imported by RDF
Measure Name | Intersection | Description |
---|---|---|
slscann |
Cannibalization Level + week |
The aggregated weekly sales history at cannibalization level. |
slsbaselinecann |
Cannibalization Level + week |
The aggregate weekly baseline sales history at cannibalization level. |
normprccann |
Cannibalization Level + week |
The weekly normalized price at cannibalization level. |
promoindcann |
Cannibalization Level + week |
Weekly Promotion indicator at cannibalization level. |
slsHalo |
Halo Level + week |
The aggregated weekly sales history at Halo level. |
slsbaselineHalo |
Halo Level + week |
The aggregate weekly baseline sales history at Halo level. |
normprcHalo |
Halo Level + week |
The weekly normalized price at Halo level. |
promoindHalo |
Halo Level + week |
Weekly Promotion indicator at Halo level. |
CPEM produces the cross promotion effects and then outputs the cross promotion cannibalization effects and Halo effects as listed in Table 8-2.
The following sections provide an overview of CPEM installation.
Note: For additional information, refer to the chapter, ”CPEM Installation” in the Oracle Retail Demand Forecasting Installation Guide. |
RPAS and RDF must be installed before setting up and configuring CPEM. For information on installing these products, refer to the Oracle Retail Predictive Application Server Installation Guide and Oracle Retail Demand Forecasting Installation Guide.
Before downloading the installation package to the UNIX server, a central directory structure to support the environment needs to be created. This central directory is referred to as <cpem_directory>
. Set <cpem_directory>
to the full path name to the $CPEM_HOME variable.
The CPEM installer performs the following functions:
Downloads the configuration and batch scripts into the <cpem_directory>/config
and <cpem_directory>/bin
directories
Downloads a set of sample hierarchy and data files into the <cpem_directory>/input
directory
Builds a sample domain at <cpem_directory>/domain/cpem
To do a custom build of a domain:
Update the globaldomainconfig.xml
file with the correct domain paths.
If needed, update the default environment variables in environment.sh
.
Run the cpem_build_domain.ksh
script: ./ cpem_build_domain.ksh
The CPEM installation software enables you to install the taskflow and online help files for the RPAS Fusion Client. In order to install the taskflow files, the RPAS Fusion Client must already be installed. For more information on installing the RPAS Fusion Client, see the Oracle Retail Predictive Application Server Installation Guide.
During the RPAS Fusion Client installation, the installer automatically sets up the RPAS domain connection configurations in the ProfileList.xml
file. If you choose to set up the domain connection after the installation or set up an additional domain, you must manually set up the connection. For more information, see the Oracle Retail Predictive Application Server Administration Guide for the Fusion Client.
CPEM has a batch script to generate the cross promotion effects and export the final effects. The following batch scripts are available in CPEM:
CPEM batch script
Cross effect export script
Before running the batch script, set these two system variables:
CHECK_PROMO_DIFF: It is recommended to set to YES. YES turns off the co-promotion. When set to NO, RDF considers the co-promotion case.
PROMO_THRESHOLD: A numeric value for the promotion threshold. Only the week the promotion value is greater or equal then this threshold will be treated as ”on promotion”.
To generate the cross effects, run the cpem_batch.sh
script in the domain.
./cpem_batch.sh
To export the cross promotion effects, run the exportCPEMtoRDF.ksh
script in the domain
./cpem_e_rdf.ksh
This section describes CPEM scripts including:
Note: With this release, some script names have been changed. For more information, refer to Appendix J, "RDF Script Names." |
Script Name
cpem_build_domain .ksh
Frequency
This script runs when building or patching a CPEM domain.
Description
This script is an example script to show how a CPEM simple domain can be built. This script does not support all of the features of rpasInstall. It does cover the options used most commonly for CPEM.
Steps
These are the steps of the script:
Validate arguments.
If the configuration name is not supplied, set it to CPEM.
If the domain home is not set, set it to <current path>/../domain.
If not a patch install, create the domain home directory if it does not exist.
Call rpasInstall to build the domain with the following parameters:
Parameter | Value |
---|---|
either:
|
Depends on whether –p or -t passed to build script |
-ch | Configuration home |
-cn | Configuration name |
-in | Input home |
-log | <log directory>/<log file> |
-dh | Domain home |
-verbose | not applicable |
-updatestyles | not applicable |
-rf | AppFunctions |
-rf | RdfFunctions |
Scan the build log for error messages.
If test install, skip to the last step.
Call cpem_load_measures.ksh on the domain.
Log informational success message.
Additional Required Environment Variables
None
Required Arguments
None
Optional Arguments
Parameter | Short Description | Description |
---|---|---|
-n | Configuration name | Default is CPEM. |
-d | Domain home | Default is $PWD/../domain.
This is the path of the directory in which the domain will be created. |
-c | Configuration home | Default is $PWD/../config.
This is the path to the directory containing the configuration. |
-i | Input home | Default is $PWD/../input.
This is the directory containing the input files for the domain to be created. |
-l | Log directory | Default is $PWD/..
Directory where the log file will reside. -f Log file Default is build_domain.log. This is the log file name. |
Optional Flags
Flag | Short Description | Description |
---|---|---|
-t | Test install flag | Run rpasInstall with the –testinstall flag. |
-p | Patch install flag | Run rpasInstall with the –patchinstall flag. |
-u | Usage flag | Displays the usage and then exits. |
Script Name
cpem_load_measures.ksh
Domain Scope
This script should be run on the CPEM domain.
Description
This script will load the measures needed for CPEM. The input files need to be present in the domain input directory.
Steps
These are the steps of the script:
Validate arguments
For the measures cannitbasesls, cannitsls, cannpromoflag, cannpromoprice, itembrand, itempcksz, itemsz, itemuom, iterbrand, iterpcksz, itersz, and iteruom call loadmeasure with the following parameters:
Parameter | Value |
---|---|
-d | Path to the CPEM domain |
-measure | Current measure |
-processes | $BSA_MAX_PARALLEL |
-recordLogLevel | recordLogLevel passed to the script (if provided) |
If the directory <current directory>/../translations/CPEM exists and there are files that start with ”r_” in it, then:
Copy the files to <CPEM domain>/input directory.
Call loadmeasure on the following files (using the same parameters as above): r_dimlabel, r_hierlabel, r_measdescripti, r_measlabel, r_measpicklist, r_msglabel, r_wbtglabel, r_wbtlabel.
Exit.
Additional Required Environment Variables
None
Required Arguments
Parameter | Short Description | Valid Values | Description |
---|---|---|---|
-d | CPEM domain | Path to CPEM domain | Path to the CPEM simple domain. |
Optional Arguments
Parameter | Short Description | Valid Values | Description |
---|---|---|---|
-r | recordLogLevel | error, warning, information, and profile | Sets a logging level for record loading issues. If the logging level set at implementation time is less verbose than the record logging level, then record issues will not be logged. If utility's logging level is at same or higher verbosity as the record logging level, the record issues will be logged with the log indicator as set using this argument. |
Optional Flags
None
Script Name
rdf_e_cpem.ksh
Domain Scope
This script should be run on the RDF master domain.
Description
This script exports a pre-determined list of measures from RDF for use by CPEM.
Steps
These are the steps of the script:
Validate arguments.
Use mace to run the Xpromo_preproc rule group on the local domains using para_spawn from BSA.
Export measures at the specified intersections to the specified files names to the destination path using exportMeasure.
Measure Name | File Name | Export Intersection |
---|---|---|
itbrand | itembrand.csv.ovr | item |
itpcksize | itempcksz.csv.ovr | item |
itsize | itemsz.csv.ovr | item |
ituom | itemuom.csv.ovr | item |
pos | cannitsls.csv.ovr | weekitemstr_ |
pvarxlpprc | cannpromoprice.csv.ovr | weekitemstr_ |
rdfpromoind | cannpromoflag.csv.ovr | weekitemstr_ |
regprice07xb | cannpromoprice.csv.ovr | weekitemstr_ |
totadjbasesls | cannitbasesls.csv.ovr | weekitemstr_ |
Copy the following files:
Original file name | Copied file name |
---|---|
itembrand.csv.ovr | iterbrand.csv.ovr |
itempcksz.csv.ovr | iterpcksz.csv.ovr |
itemsz.csv.ovr | itersz.csv.ovr |
itemuom.csv.ovr | iteruom.csv.ovr |
Log informational success message.
Additional Required Environment Variables
None
Required Arguments
Parameter | Short Description | Valid Values | Description |
---|---|---|---|
-d | RDF master domain | Path to RDF master domain | Path to the RDF master domain. |
-out | Output file path | Any valid directory name according to OS |
Optional Arguments
None
Optional Flags
None
Script Name
cpem_e_rdf.ksh
Domain Scope
This script should be run on the CPEM domain.
Description
This script exports a pre-determined list of measures from CPEM for use by RDF.
Steps
These are the steps of the script:
Validate arguments.
Use mace to run the Xpromo_preproc rule group on the local domains using para_spawn from BSA.
Export measures at the specified intersections to the specified files names to the destination path using exportMeasure.
Measure Name | File Name | Export Intersection |
---|---|---|
FinChgRatioHalo | halochgratio.csv.ovr | rgn_clsr |
FinMaxChgRatioHalo | halomaxratio.csv.ovr | rgn_clss |
FinSpProfileHalo | apphaloeff.csv.ovr | clssrgn_clsr |
itemchgratioCann | cannchgratior.csv.ovr | rgn_iter |
itemmaxchgratioCann | cannmaxratio.csv.ovr | rgn_item |
itemspprofileCann | appcanneff.csv.ovr | itemrgn_iter |
Convert the file cannchgratior.csv.ovr into cannchgratio.csv.ovr by swapping the first two fields.
Remove the temporary file cannchgratior.csv.ovr.
Log informational success message.
Additional Required Environment Variables
None
Required Arguments
Parameter | Short Description | Valid Values | Description |
---|---|---|---|
-d | CPEM domain | Path to CPEM domain | Path to the CPEM domain. |
-out | Output file path | Any valid directory name according to OS |
Optional Arguments
None
Optional Flags
None
Script Name
cpem_batch.ksh
Domain Scope
This script should be run on the CPEM domain.
Description
This script runs the rule groups to calculate the cross promotional effects.
Steps
These are the steps of the script:
Validate arguments.
Calls mace to run the following rule groups in the specified order on the CPEM domain:
pre_data
Calc_Markdownsls
pre_process
pre_cann
batch_cann
Batch_Cann_Ratio
Batch_Cann_Prof
pre_halo
batch_halo
Batch_Halo_Ratio
Batch_Halo_Prof
Batch_export
Log informational success message
Additional Required Environment Variables
None
Required Arguments
Parameter | Short Description | Valid Values | Description |
---|---|---|---|
-d | CPEM domain | Path to CPEM domain | Path to the CPEM domain. |
Optional Arguments
None
Optional Flags
None