Adding contract prices to the Catalog Entry index
You can add contract prices to the WebSphere Commerce Search catalog entry index when
you deploy a B2B starter store. First you add contract prices to the pricing index, using your
store's pricing model. Then, you rebuild the master index so that contract pricing becomes visible.
For example, for a B2B starter store, you would build the price index to display contract prices in
the storefront.
Before you begin
- Ensure that the test server is started in Rational Application Developer.
- Ensure that your administrative server is started. For example:
- If WebSphere Commerce is managed by WebSphere Application Server Deployment Manager (dmgr), start the deployment manager and all node agents. Your cluster can also be started.
- If WebSphere Commerce is not managed by WebSphere Application Server Deployment Manager (dmgr), start the WebSphere Application Server server1.
Procedure
-
Complete one of the following tasks:
- Log on as a WebSphere Commerce non-root user.
- Log on with a user profile that has *SECOFR authority.
- Log on with a user ID that is a member of the Windows Administration group.
-
Go to the following directory:
- WC_installdir/components/foundation/samples/dataimport/catalog/dbtype
- WCDE_installdir/samples/dataimport/catalog/dbtype
-
Work with the following files to ensure that you are using the correct price mode for your
starter store. Choose one of the following three options based on your current configuration and
planned expansions.
If you plan to deploy only B2C starter stores, the following pricing files are used by default, with no changes needed:
- wc-dataimport-preprocess-offerprice.xml
- wc-dataimport-preprocess-cntrprice.xml.contractedprice
If you plan to deploy only B2B starter stores:- Rename wc-dataimport-preprocess-offerprice.xml to wc-dataimport-preprocess-offerprice.xml.compatible
- Rename wc-dataimport-preprocess-cntrprice.xml.contractedprice to wc-dataimport-preprocess-cntrprice.xml
If you plan to deploy both a B2C and B2B starter stores:- Create a copy of wc-dataimport-preprocess-cntrprice.xml.contractedprice named wc-dataimport-preprocess-cntrprice.xml
- Set up the WebSphere Commerce Search index.
-
Change the
wc.search.priceMode.compatiblePriceIndex
value to1.0
in the STORECONF table:
For more information, see Changing search configuration properties in the STORECONF table.insert into storeconf(storeent_id,name,value) values('storeent_id', 'wc.search.priceMode.compatiblePriceIndex', '1.0');
- Preprocess the WebSphere Commerce Search index.
-
If you are using sharding:
-
Go to the following directory:
- WC_installdir/bin
- WCDE_installdir\bin
-
Run the calculate price utility:
di-calculateprice.bat -instance instance_name -serverName host_name -masterCatalogId masterCatalogId -siteAdminId siteAdminId [-siteAdminPwd siteAdminPwd] [-passwordFile passwordFile] [-trading trading] [-currency currency] [-catentry catentry] [-numWorkers numWorkers] [-flushSize flushSize]
di-calculateprice.sh -instance instance_name -serverName serverName -masterCatalogId masterCatalogId -siteAdminId siteAdminId [-siteAdminPwd siteAdminPwd] [-passwordFile passwordFile] [-trading trading] [-currency currency] [-catentry catentry] [-numWorkers numWorkers] [-flushSize flushSize]
di-calculateprice.bat -instance instance_name -serverName serverName -masterCatalogId masterCatalogId -siteAdminId siteAdminId [-siteAdminPwd siteAdminPwd] [-passwordFile passwordFile] [-trading trading] [-currency currency] [-catentry catentry] [-numWorkers numWorkers] [-flushSize flushSize]
- instance
- The name of the WebSphere Commerce instance with which you are working (for example, demo).
- serverName
- The fully qualified host name of your WebSphere Commerce Server (for example, wcserver.mydomain.ibm.com is fully qualified).
- masterCatalogId
- Required: The ID of the master catalog (for example, 10101).If you do not know the master catalog ID, run the following SQL:
SQL: select * from catalog where IDENTIFIER='STORE_IDENTIFIER'
To find the master catalog ID for an Extended Site store:- Find the store
ID:
select * from storeent where IDENTIFIER='STORE_IDENTIFIER'
- Use the storeent_id as the store_id in the following
SQL to find the catalog asset store ID of this Extended Site
store:
Where XXXXXX is the storeent_id from the SQL in step 9.a when building the search index.select * from storerel where store_id=XXXXXX and streltyp_id=-4 and relatedstore_id not in (XXXXXX)
- Get the master catalog
ID:
Where YYYYYY is the relatedstore_id from step 9.b when building the search index.select * from storecat where storeent_id=YYYYYY and mastercatalog='1'
- Find the store
ID:
- siteAdminId
- The user ID of the site administrator. The utility is run under the authority of this user.
- siteAdminPwd
- Optional: The password of the site administrator. You are prompted for the password if not passed in.
- passwordFile
- Optional: The full path to the password.properties file that contains the site administrator password. For example, C:\password.properties.
- trading
- Optional: Used to build prices for the specified contract IDs.
- currency
- Optional: Used to build prices for the specified currencies.
- catentry
- Optional: Used to build prices for the specified catalog entries.
- numWorkers
- Optional: This parameter defines the number of calculators. The total number of products that are assigned to one calculator is arrived by dividing the number of products by the number of calculators. In every calculator, the assigned catentries are calculated against all valid buyer contracts that are deployed by the sharing stores of the specified master catalog and all valid currencies that are supported by the sharing stores. For large catalog size, it is recommended to define larger numWorkers to decrease the total execution time of a thread. In addition, the running thread is defined by workManager maximum number, therefore when the numWorkers are larger than work manager number, other numWorkers must wait in queue to be run.
- flushSize
- Optional: This parameter defines the number of batch statements that flush into database. With large flushSize, the database might roll back. With small flushSize, the database might have to be committed multiple times.
-
Ensure that the utility runs successfully.
If the utility runs successfully, the following message is displayed in the Command window:
The program exiting with exit code: 0. Price calculation process completed successfully with no errors.
Also, inspect the following file for errors:- WC_installdir/logs/wc-dataimport-calculateprice.log
- WCDE_installdir\logs\wc-dataimport-calculateprice.log
To get more logging information, update the logging level fromINFO
toFINEST
in the WC_installdir/instances/instance_name/xml/config/dataimport/calculateprice-logging.properties file:
You can also increase the log file size and the number of log files. For example:# Default global logging level, INFO com.ibm.commerce.level=FINEST
If the utility fails due to a transaction timeout error, increase the transaction timeout time to a higher value.# Limiting size of output file in bytes: java.util.logging.FileHandler.limit=50000000 # Number of output files to cycle through java.util.logging.FileHandler.count=2
-
Build the WebSphere Commerce Search index.
- If you are using sharding, run the di-parallel-process utility. For specific usage, see Creating and indexing shards.
- If you are not using sharding, run the di-buildindex utility to build the WebSphere Commerce Search index.
Example
- Set up the organization and contract price index:
- Register an organization in the AuroraB2BESite.
- Set up the following contracts:
- Default contract copy
- Use the default catalog filter and offer price rule.
- Bolts Only Contract
- Include only the Bolts category only at 50% off.
- Switch to the contract price mode for the search index by renaming wc-dataimport-preprocess-offerprice.xml to wc-dataimport-preprocess-offerprice.xml.compatible and wc-dataimport-preprocess-cntrprice.xml.contractedprice to wc-dataimport-preprocess-cntrprice.xml.
- Change the
wc.search.priceMode.compatiblePriceIndex
value to1.0
in the STORECONF table. - Preprocess the search index (di-preprocess utility).
- Log on to the Administration Console.
- Build the contract price index (di-calculateprice utility). Optionally specify trading, currency, or catentry to build the respective price indexes.
- Build the search index (di-buildindex utility).
- Verify the contract prices in the storefront:
- Open the AuroraB2BESite in a web browser and sign in to the store.
- Under contracts, select the Bolts Only contract and continue shopping.
- Go to the Bolts category and add items to your cart.
- Check out and confirm that the price rules are correctly applied during the checkout process.