| Acknowledgments | xix |
| Introduction | xxi |
| PART I GETTING STARTED WITH MICROSOFT COMMERCE SERVER 2000 | |
| 1 Installing and Configuring Commerce Server 2000 | 3 |
| System Requirements | 3 |
| Hardware | 3 |
| Software | 5 |
| Commerce Server 2000 Components | 5 |
| Installation Process | 6 |
| Welcome To Commerce Server 2000 Setup Wizard | 6 |
| Prerequisites | 6 |
| License Agreement | 7 |
| Customer Information | 7 |
| Destination Folder | 7 |
| Setup Type | 7 |
| Administration Database Configuration | 8 |
| Direct Mailer Database Configuration | 8 |
| Ready To Install | 9 |
| Installing Commerce Server 2000 | 9 |
| Completing The Commerce Server 2000 Setup Wizard | 9 |
| Performing a Silent Installation | 9 |
| Migrating from Site Server 3 Commerce Edition | 14 |
| Uninstalling Commerce Server 2000 | 16 |
| 2 Solution Sites, Sitelets, and Samples | 19 |
| Sample Catalogs | 19 |
| Installing Solution Sites | 20 |
| The Blank Site Solution Site | 21 |
| The Retail Site Solution Site | 22 |
| The Supplier Active Directory Site | 23 |
| Sitelets | 24 |
| Ad | 25 |
| Auction | 25 |
| Catalog | 25 |
| Discount | 25 |
| Order | 26 |
| Passport | 26 |
| Profile | 26 |
| Samples | 26 |
| Business Analytics | 26 |
| Management | 27 |
| Marketing | 27 |
| Order Processing | 28 |
| Privacy | 28 |
| Sitelets | 28 |
| Solution Sites | 28 |
| PART II MANAGEMENT SERVICES AND TOOLS | |
| 3 Commerce Server Manager | 31 |
| Global Resources | 32 |
| Predictor | 32 |
| Direct Mailer | 32 |
| Data Warehouse | 33 |
| CS Authentication | 35 |
| Profiles | 36 |
| Commerce Sites | 37 |
| Site Resources | 37 |
| Applications | 42 |
| 4 Business Desk | 51 |
| Business Desk Web Site | 51 |
| Installing Business Desk | 52 |
| Business Desk System Requirements | 55 |
| Business Desk Organization | 56 |
| Analysis | 57 |
| Campaigns | 57 |
| Catalog | 57 |
| Orders | 58 |
| Users | 61 |
| Business Desk Pages | 62 |
| XML Pages | 62 |
| ASP Pages | 68 |
| Debugging Business Desk Pages | 68 |
| Securing the Business Desk | 69 |
| 5 Business Analytics | 73 |
| Using Business Analytics | 73 |
| Data Warehouse | 73 |
| Data Warehouse Classes | 74 |
| OLAP Cubes | 77 |
| Commerce Server Reports | 84 |
| Importing Data Using DTS | 85 |
| Creating the DTS Package | 86 |
| Campaign Data Import | 86 |
| Configuration Synchronization | 87 |
| Data Deletion | 87 |
| IP Resolution | 88 |
| Product Catalog Import | 89 |
| Report Preparation | 89 |
| Transaction Data Import | 90 |
| User Profile Data Import | 90 |
| Web Server Log Import | 90 |
| Generating a Report | 91 |
| Building a Static Report | 92 |
| Building a Dynamic Report | 93 |
| Custom Reports | 93 |
| Building a Static Report | 93 |
| Building a Dynamic Report | 102 |
| 6 Site Packager | 107 |
| Deploying a Site Using Site Packager | 107 |
| Creating a Site Package | 108 |
| Unpacking and Deploying a Site | 111 |
| Running Scripts with the PUP | 121 |
| Prepackaging Scripts | 121 |
| Postpackaging Scripts | 122 |
| Application Scripts | 122 |
| Running the Site Packager from the Command Line | 123 |
| PART III SITE ARCHITECTURE AND BASICS | |
| 7 Building the Site | 131 |
| Using the Blank Site | 131 |
| CSAPP.INI | 132 |
| GLOBAL.ASA | 132 |
| Using Application Variables | 133 |
| Setting Common Names and Settings | 133 |
| Initializing Components | 138 |
| Loading Additional Values | 139 |
| Adding New Resources and Properties | 140 |
| Extending the App Default Config Resource Using Structured Query Language Scripts | 140 |
| Creating a New Resource | 142 |
| Component Reference | 145 |
| AppConfig | 145 |
| GlobalConfig | 145 |
| SiteConfig | 146 |
| SiteConfigReadOnly | 147 |
| 8 Common Components | 149 |
| SimpleList | 149 |
| Creating a SimpleList | 149 |
| Adding Items to the SimpleList | 149 |
| Counting the Items in the SimpleList | 150 |
| Parsing the SimpleList | 150 |
| Deleting an Item from the SimpleList | 150 |
| Dictionary | 150 |
| Creating a Dictionary | 151 |
| Accessing the Value of a Dictionary Key | 151 |
| Adding a New Key | 151 |
| Retrieving the Value from a Key | 151 |
| Retrieving the Dictionary Keys | 152 |
| Parsing the Dictionary | 152 |
| AppFramework | 152 |
| Creating the AppFramework Object | 152 |
| Getting the Virtual Directory | 152 |
| Using the VerifyWith Method | 153 |
| DataFunctions | 153 |
| Creating the DataFunctions Object | 153 |
| Setting the Defaults | 154 |
| Getting a List of Available Locales | 154 |
| Getting Locale Information | 154 |
| Displaying Localized Currency | 156 |
| MessageManager | 157 |
| RC.XML | 157 |
| Creating the MessageManager | 158 |
| Initializing the MessageManager | 158 |
| Getting Messages from MessageManager | 159 |
| CacheManager | 159 |
| LRUCache | 161 |
| Creating the CacheManager Object | 161 |
| Initializing the CacheManager | 161 |
| Adding Data to the Cache | 163 |
| Retrieving Data from the Cache | 163 |
| GenID | 164 |
| Creating the GenID Object | 164 |
| Generating GUIDs | 164 |
| Initializing Counters | 164 |
| Getting the Next Counter Value | 164 |
| Component Reference | 165 |
| AppFramework | 165 |
| CacheManager | 166 |
| DataFunctions | 166 |
| Dictionary | 168 |
| GenID | 168 |
| LRUCache | 168 |
| MessageManager | 169 |
| SimpleList | 169 |
| PART IV USER MANAGEMENT | |
| 9 User Authentication | 173 |
| Authentication in Commerce Server 2000 | 173 |
| AuthManager | 174 |
| Creating the AuthManager | 174 |
| Detecting Authentication | 174 |
| Issuing Authentication Tickets | 175 |
| Login Authentication | 176 |
| Supporting No Cookies | 176 |
| AuthFilter | 177 |
| Custom Authentication | 178 |
| Windows Authentication | 179 |
| Autocookie Support | 180 |
| Single Sign-On Support | 181 |
| Sharing Cookies Across Domains | 181 |
| Sharing Cookies Across Applications | 181 |
| Integrating with Passport | 182 |
| The Passport Manager | 182 |
| The Passport Factory | 182 |
| Displaying the Passport Login/Logout Logo | 183 |
| Reading the Passport Profile | 183 |
| Authentication Components | 185 |
| AuthManager | 185 |
| 10 Profiles | 187 |
| Defining a Profile Object | 187 |
| The Data Source | 188 |
| The Data Object | 189 |
| Data Members | 190 |
| Profile Definition | 191 |
| Types of Profiles | 196 |
| Profiles in Action | 196 |
| Profile Service | 196 |
| ProfileObject | 198 |
| BusinessDataAdmin Object | 199 |
| User Object Profile | 199 |
| Retrieving the Profile | 200 |
| Creating a User Account | 201 |
| Editing the Profile | 201 |
| Deleting a Profile | 202 |
| Address Profile Object | 202 |
| Searching for an Address in the Address Book | 202 |
| Organization Profile Object | 205 |
| Assigning a User to an Organization | 206 |
| Searching for Users in an Organization | 206 |
| Profile Components | 210 |
| ProfileObject | 210 |
| ProfileService | 211 |
| BusinessDataAdmin | 212 |
| PART V THE CATALOG SYSTEM | |
| 11 Managing Catalogs | 221 |
| Catalog Hierarchy | 221 |
| Multiple Catalogs | 223 |
| Custom Catalogs | 223 |
| Catalog Sets | 223 |
| Designing the Catalogs | 224 |
| Creating Property Definitions | 224 |
| Product Definitions | 228 |
| Category Definitions | 230 |
| Populating Catalogs | 230 |
| Creating the Catalog | 230 |
| Adding Categories | 232 |
| Adding Products | 234 |
| Importing Catalogs | 237 |
| Refreshing Catalog Data | 242 |
| Exporting Catalog Data | 243 |
| Sending Catalog Data | 243 |
| Catalog Sets | 243 |
| Retrieving a User's Catalog Set | 244 |
| Catalog Schema | 246 |
| 12 Catalog Management System | 253 |
| Retrieving Catalog Information on the Web Site | 254 |
| CatalogManager | 254 |
| CatalogSets | 256 |
| ProductCatalog | 257 |
| Categories | 257 |
| Products | 260 |
| Catalog Component Reference | 266 |
| CatalogManager | 266 |
| CatalogSets | 267 |
| Category | 268 |
| Product | 269 |
| ProductCatalog | 270 |
| 13 Catalog Searching | 273 |
| Free-Text Search | 273 |
| The FreeTextSearch Method | 273 |
| Using FreeTextSearch | 275 |
| Property Search | 277 |
| The Property Search Page | 278 |
| The Query Method | 279 |
| Using Property Search | 280 |
| Specification Search | 282 |
| Selecting the Catalog | 282 |
| Searchable Categories | 282 |
| Step Search | 282 |
| PART VI TRANSACTIONS AND PROCESSING | |
| 14 Order Basics | 293 |
| The OrderForm | 293 |
| OrderForm Structure | 293 |
| The OrderGroup | 301 |
| OrderGroup Contents | 302 |
| Order Templates | 304 |
| Managing OrderGroups | 304 |
| Searching OrderGroups | 305 |
| Deleting OrderGroups | 307 |
| Order Components Reference | 308 |
| OrderForm | 308 |
| OrderGroup | 308 |
| OrderGroupManager | 309 |
| SimpleFindResultInfo | 310 |
| SimpleFindSearchInfo | 311 |
| 15 Order Processing | 313 |
| Creating the OrderGroup Object | 313 |
| Working with the Basket | 313 |
| Creating a New Basket | 313 |
| Retrieving a Basket | 314 |
| Retrieving the OrderForm from the OrderGroup | 314 |
| Displaying the Basket | 314 |
| Running a Pipeline | 318 |
| Adding an Item to the Basket | 318 |
| Removing an Item from the Basket | 319 |
| Removing All Items from the Basket | 319 |
| Aggregating Items in the Basket | 320 |
| Saving the Basket | 321 |
| Processing the Order | 321 |
| Adding Addresses | 321 |
| Adding Shipping Types and Charges | 324 |
| Adding Handling Charges | 326 |
| Adding Taxes | 326 |
| Calculating the Total Cost of the Order | 327 |
| Getting Payment Information | 327 |
| Getting Order Confirmation | 328 |
| Verifying the Order Amounts | 328 |
| Saving Data from the OrderForms | 328 |
| Saving an Order | 330 |
| Postorder Processing | 331 |
| Sending E-Mail for an Order | 331 |
| Submitting an Order to BizTalk | 332 |
| Displaying a Receipt | 334 |
| Order Templates | 336 |
| Saving an Order Template | 336 |
| Loading an Order Template | 337 |
| Adding Items from a Template | 337 |
| Order Processing Components Reference | 338 |
| DictionaryXMLTransforms | 338 |
| ShippingMethodManager | 338 |
| 16 Pipelines | 341 |
| Types of Pipelines | 341 |
| Content Selection Pipeline | 341 |
| Direct Mailer Pipeline | 343 |
| Order Processing Pipeline | 343 |
| Existing Pipelines | 345 |
| Order Processing Pipelines | 345 |
| Content Selection Pipelines | 348 |
| Pipeline Objects | 349 |
| MicroPipe | 350 |
| MtsPipeline | 350 |
| MtsTxPipeline | 350 |
| OrderPipeline | 350 |
| PooledPipeline | 350 |
| PooledTxPipeline | 350 |
| Running a Pipeline | 350 |
| Pipeline Parameters | 351 |
| Configuring a Pipeline Dictionary | 351 |
| Running Through the OrderGroup | 351 |
| Runing Through the Pipeline Component | 352 |
| Running a Single Pipeline Component | 354 |
| Using the Pipeline Editor | 354 |
| Opening a Pipeline | 355 |
| Creating a New Pipeline | 355 |
| Viewing Pipeline Properties | 356 |
| Adding a Stage | 357 |
| Viewing Stage Properties | 357 |
| Removing a Stage | 358 |
| Adding a Component | 358 |
| Component Properties | 359 |
| Removing a Component | 361 |
| Saving a Pipeline | 361 |
| Pipeline Components Reference | 361 |
| MicroPipe | 361 |
| MtsPipeline | 361 |
| MtsTxPipeline | 361 |
| OrderPipeline | 362 |
| PooledPipeline | 362 |
| PooledTxPipeline | 362 |
| 17 Building Custom Pipeline Components | 363 |
| Custom Pipeline Strategies | 363 |
| Using Context Dictionary Values | 364 |
| Using Order Dictionary Values | 364 |
| Returning Results | 364 |
| Reporting Errors | 364 |
| Scriptor Components | 365 |
| Internal | 365 |
| External | 366 |
| Script Contents | 366 |
| Pipeline Components | 368 |
| Language Choice | 369 |
| Interfaces | 369 |
| Visual Basic Pipeline Component Wizard | 372 |
| Active Template Library Pipeline Wizard | 382 |
| Pipeline Component Registration | 392 |
| ATL Component Stage Affinity Registration | 392 |
| Stage Affinity Registration with Pipe Registration Wizard | 393 |
| Registry Files | 395 |
| PART VII CONTENT SELECTION FRAMEWORK | |
| 18 Campaign Management | 401 |
| Campaigns in the Business Desk | 401 |
| Campaign Expressions and Targets | 402 |
| Creating a Target Expression | 402 |
| Creating a Catalog Expression | 405 |
| Target Groups | 407 |
| Campaign Management | 408 |
| Creating a Customer | 409 |
| Creating a Campaign | 410 |
| Creating an Ad | 412 |
| Creating a Direct Mail Campaign | 417 |
| Creating a Discount Campaign | 421 |
| Component Reference | 425 |
| ListManager | 425 |
| 19 Content Selection | 429 |
| Selecting Content | 429 |
| Content Selection Pipelines | 429 |
| Initializing the Content Selection Components | 430 |
| Using the ContentSelector | 435 |
| Displaying Ads | 435 |
| Displaying Discounts | 437 |
| Displaying Other Content | 437 |
| Component Reference | 438 |
| ContentList | 438 |
| ContentListFactory | 439 |
| ContentListSchema | 440 |
| ContentSelector | 441 |
| ExpressionEval | 441 |
| ExpressionStore | 442 |
| ExprFltrQueryBldr | 442 |
| RowCollection | 443 |
| 20 Predictor Service | 445 |
| The Predictor Service | 445 |
| Analysis Models | 446 |
| Prediction Models | 446 |
| Segment Models | 450 |
| Model Configuration | 451 |
| Model Effectiveness | 451 |
| Managing Models | 453 |
| Building Models | 453 |
| Get Prediction | 457 |
| Initializing the PredictorClient Object | 457 |
| Making a Prediction | 458 |
| Predictor Service Components Reference | 459 |
| PredictorClient | 459 |
| PredictorServiceAdmin | 461 |
| PredictorServiceSiteAdmin | 461 |
| PredModelBuilder | 462 |
| INDEX | 463 |