Use this component with the CacheManager object to load discounts for the Content Selection Framework.


  • Although the CSFLoadDiscounts component implements two pipeline component interfaces (IPipelineComponent and IPipelineComponentAdmin), it is not a pipeline component, it does not appear in the Pipeline Editor, and cannot be used or configured in the Pipeline Editor.

Configuration Values

The following table describes the CSFLoadDiscounts configuration values.

Box Description
ConnectionString The connection string for the campaigns database.
Query The SQL query used to populate the cache of discounts. Reading this property returns the default query unless it has been overridden with a custom query.
RedirectUrl If specified, Commerce Server writes this value into the Cache dictionary unchanged.

You do not need to set RedirectUrl in Commerce Server 2002, as Commerce Server 2002 takes the value for RedirectUrl from the Cache dictionary.

Values Read


Values Written



You can use the CSFLoadDiscounts component with the CacheManager object to load discounts for use later in your application.

When run by the CacheManager object, the CSFLoadDiscounts component uses two pipeline dictionaries (Order and Context) to determine how to run and how to return information to the CacheManager object.

The CSFLoadDiscounts component first opens a connection to the database and gets the list of discounts. The component uses a ContentListFactory object to populate a ContentList object with the data. The component then extracts templates, target groups, and page groups from the retrieved information.

The following table describes the columns in the ContentList object returned by the CSFLoadDiscounts component. Column names appear in alphabetical order.

Column Name Type Flags
award_expr int (CLCOL_I4) 1 (CLCOL_READONLY)
award_max int (CLCOL_I4) 1 (CLCOL_READONLY)
campaign_id int (CLCOL_I4) 1 (CLCOL_READONLY)
click_required Boolean (CLCOL_BOOL) 1 (CLCOL_READONLY)
condition_basis int (CLCOL_I4) 1 (CLCOL_READONLY)
condition_expr int (CLCOL_I4) 1 (CLCOL_READONLY)
condition_mny_min Currency (CLCOL_CY) 1 (CLCOL_READONLY)
condition_qty_min int (CLCOL_I4) 1 (CLCOL_READONLY)
date_end date/time (CLCOL_DATE) 1 (CLCOL_READONLY)
date_modified date/time (CLCOL_DATE) 1 (CLCOL_READONLY)
date_start date/time (CLCOL_DATE) 1 (CLCOL_READONLY)
description String (CLCOL_STRING) 1 (CLCOL_READONLY)
disc_id int (CLCOL_I4) 1 (CLCOL_READONLY)
disjoint Boolean (CLCOL_BOOL) 1 (CLCOL_READONLY)
exposure_limit int (CLCOL_I4) 1 (CLCOL_READONLY)
expressions_used_for_display Boolean (CLCOL_BOOL) 1 (CLCOL_READONLY)
height short (CLCOL_I2) 1 (CLCOL_READONLY)
item_id int (CLCOL_I4) 1 (CLCOL_READONLY)
limit int (CLCOL_I4) 1 (CLCOL_READONLY)
offer_type int (CLCOL_I4) 1 (CLCOL_READONLY)
offer_value Currency (CLCOL_CY) 1 (CLCOL_READONLY)
order_level Boolean (CLCOL_BOOL) 1 (CLCOL_READONLY)
rank int (CLCOL_I4) 1 (CLCOL_READONLY)
required_exprs SafeArray (CLCOL_VARIANTARRAY) 1 (CLCOL_READONLY)
special_offer_type String (CLCOL_STRING) 1 (CLCOL_READONLY)
width short (CLCOL_I2) 1 (CLCOL_READONLY)

Abbreviations in the table are enumerated values for the ContentList object. For more information, see the Remarks section in ContentListSchema.ColumnType.

If necessary, you can add additional custom fields into the ContentListFactory cache by overriding the default query for CSFLoadDiscounts. Overriding the query is an advanced programming technique, and requires that you have detailed knowledge of SQL queries. Because the default query for CSFLoadAdvertisements is large and complex, you should use the following steps to avoid accidential changes to the query.

To modify the SQL query for CSFLoadAdvertisements

  1. In Visual Studio .NET, query the component for the default SQL query. The following code describes how to query a component for the default SQL query:

    function GetDiscountQuery
        set oLoad = CreateObject("Commerce.CSFLoadDiscounts")
        set dictConfig = oLoad.GetConfigData()
        GetAdQuery = dictConfig.Query
    end function
  2. Save the query to a file.

  3. Modify the saved copy of the query.

    You can add columns to the query. However, you should not remove existing columns, as removing existing columns may cause the advertising selection pipeline to fail. The query also contains placeholder strings such as "?" and "##GUIDGUIDGUIDGUIDGUIDGUIDGUIDGUIDGUID", which you should not alter or remove.

  4. Load the modified query from the file to the component at runtime. One way to load the query would be to use the Scripting.FileSystemObject object.

  5. Use the SetConfigData method from IPipelineComponentAdmin to set the new query property.


See the example in CacheManager Object.

Copyright © 2005 Microsoft Corporation.
All rights reserved.