Catalogs are used primarily to store and categorize products you want to sell on your site. There are two types of catalogs you can create in the catalog system.
  1. Base catalogs, are used to store the products you want to sell on your site, categorize them into different categories, sequence/rank child products, categories and variants, define relationships between products and categories, define prices for products and categories.
  2. Virtual catalogs, allow you to aggregate products and categories from one or more base catalogs and define price rules on the included products. For eg. you can have a printer in your printers catalog costing 99 dollars. However you might want to offer a 10% discount on this printer to certain class of customers. In order to do this you can create a virtual catalog, add  the printer from the printers catalog and define a price rule on the printer which offers the printer at a 10% discount.
    You create a catalog by specifying its name and if it is a base catalog or a virtual catalog. Just like the properties in the catalog system, catalogs have a set of built in properties and the catalog system allows you to extend the catalogs by adding additional properties. For eg you can add a user defined property named VendorId to associate a vendor with a catalog. You can also get a list of catalogs for a particular VendorId. The following are the built in properties that apply to base and virtual catalogs :
  • CatalogName, contains the name of the catalog.
  • Locale, contains the locale id for the catalog.
  • StartDate, contains the start date for the catalog.
  • EndDate, contains the end date for the catalog.
  • Currency, contains the currency for the catalog.
  • WeightMeasure, contains the unit of measure for the catalog.
    Note that all the above mentioned built in properties are not used internally by the catalog system. It is upto the caller to specify values for these properties and use them.
  • DefaultLanguage, contains the default language of the catalog.
  • ReportingLanguage, contains the language that will be used to report multilingual catalog content to datawarehouse.
  • IsVirtualCatalog, contains if the catalog is a virtual catalog or a base catalog.
  • VirtualCatalogStatus, contains the status of the virtual catalog. This property contains the following values
    • The virtual catalog should be rebuilt(0)
    • The virtual catalog is being rebuilt(1)
    • The virtual catalog encountered an error during a rebuild (2).
    • The virtual catalog is up to date and is not materialized(3).
    • The virtual catalog is up to date and is materialized(4).
  • CatalogFlags, contains if the virtual catalog is materialized or not.This property contains the following values
    • The virtual catalog is not materialized (0)
    • The virtual catalog is materialized (1)
    Unlike virtual catalogs, base catalogs contain the following two built in properties
  • ProductId, contains the name of the property which is used to uniquely identify products in your catalog. For eg if you have a books catalog then you can define the ISBN property as the productid property. The ISBN property will then be used to uniquely identify products in your catalog. When creating a base catalog you have to specify the productId. This property is ignored for virtual catalogs.
  • VariantId, contains the name of the property which is used to uniquely identify product variants in your catalog. The variantid property can be specified only for base catalogs but is not mandatory.If a base catalog does not define a variantid property then you cannot create variants in that catalog.
        In addition to these built in properties you can add your own properties (for eg VendorId) using the CatalogManager.AddCatalogAttribute method.