Commerce Server Blog

Build world class ecommerce applications using Microsoft Commerce Server
  •  
  • Home
  • About
  • Advertise
  • Copyright Policy
  • Disclaimer

Design consideration for developing commerce server catalog system

ravikanth | February 20, 2010

For past few weeks, I am seeing few architecture questions in MSDN communities on how to mold catalog system to address client requirements. Catalog system is heart of the ecommerce solution and any architecture flaw can lead the application into failure. While doing some of the SME reviews to ecommerce projects, I also feel that developers might of done over architecture without knowing the strengths and weakness of catalog system. 

Catalog system contains following items.

  • Base Catalogs: Catalogs created in commerce server are base catalog.
  • Virtual Catalogs: Catalogs that are aggregated from one or more base or virtual catalogs.\
  • Catalog Sets: Grouping of one or more catalogs to target to the user is called catalog sets.
  • Categories: A category is a logical group of products or sub-categories.
  • Product/Product families: A product is a individual item in the catalog and if that product has multiple variants then it is called product family.

Microsoft has shared some of the architecture suggestions to be considered while developing CS2009 catalog system. Here are the few items which I collated from msdn site or documents published from Microsoft.

  • Supports up to 10,000 catalogs: 10,000 base catalogs, 10,000 virtual catalogs, or a combination of both base and virtual catalogs.
  • A catalog supports at least five million products. (CS has not been tested with 10,000 catalogs each containing five million products.)
  • A catalog can support up to 1,000 property definitions.
  • A virtual catalog can include content from up to 80 base catalogs.
  • A virtual catalog can include up to one million products.
  • A virtual catalog can support up to 10,000 price rules.
  • A category can support up to 10,000 products & can be nested up to five layers deep is recommended.
  • Multiple product catalogs can share a single SQL Server full-text catalog.
  • Add your own user-defined attributes at the catalog level and/or Category /Product level, as needed. Catalog attributes, such as currency, unit of weight measure, locale, and catalog name are available by default. You might want to add your own catalog attributes, for example, to store information about the vendor that supplies the products in a catalog.
  • Create separate catalogs (base or virtual) if search is to be restricted across a collection of products.
  • After you create a product, you cannot assign a different product definition to it. If you create a product based on product definition “mobile”, at a later date you cannot change the product to be based on product definition “Electronics”. You can, however, change product definition “mobile”, for example, by adding/removing a property.
  • You cannot change a data type of a property after the property is created.
  • You cannot assign a new product definition, or change a data type, after it is in use because other products or properties might be affected by the change.
  • If you need to search on a custom property, you should add an SQL index to that property.
  • Fewer catalogs are better, depending on hardware and your specific scenarios. This guideline is valid up to around 500,000 products per catalog.
  • A materialized catalog is a snapshot of a virtual catalog.
    • If the virtual catalog contains a number of base catalogs and/or the base catalogs contain a lot of products and categories then materializing the virtual catalog can result in better runtime performance.
    • If the content of the base catalogs changes frequently then materializing the virtual catalogs will mean frequent rebuilds which might offset the performance gain.
    • If the desired performance without materializing a virtual catalog meets your needs then you should not materialize the virtual catalog.
    • As a general rule of thumb : start without materializing a virtual catalog and determine based on whether  the desired performance is acceptable or not.
  • Do not add a product variant property to any properties that are being used as a Product Identifier property in a catalog. For example, if you use ModelNumber as the identifier for products in your catalog, do not create a product based on a product definition in which ModelNumber appears as a product variant property. If you do, you will not be able to identify variant information based on the product definition in that catalog.
  • Do not use the same value for product unique identifiers and variant unique identifiers. For example, you cannot assign stockkeeping unit (SKU) as the product unique identifier and the product variant unique identifier.
  • Before you import an XML catalog file, select the Validate XML file option on the Import Catalog dialog box to ensure that all data in your XML file is valid.
  • Start the full-text indexing service before you import a catalog. When a catalog is imported into catalog database, the full-text index is created at the same time.
  • If you experience poor performance when importing 100,000 to 1 million products into a base catalog, or publishing a virtual catalog of a similar size,
    run DBCC FREEPROCCACHE and sp_updatestats to improve the performance of APIs such as GetProduct and GetProductProperties:
  • If you create a .pup package that contains a materialized virtual catalog, after you unpack the virtual catalog, you must materialize the virtual catalog again.
  • Delete temporary tables from the MSCS_CatalogScratch database regularly. To improve run-time performance, the Product Catalog System uses the MSCS_CatalogScratch database to store temporary catalog tables.
  • Rebuild a virtual catalog in the following scenarios:
    • If a virtual catalog is materialized, when any data changes in the associated base catalogs.
    • If the virtual catalog is not materialized, whenever the data in the associated base catalogs changes (for example, pricing changes, and hierarchy and relationship changes).
    • You must rebuild a virtual catalog whenever you change include/exclude rules or pricing rules.
  • Do not rebuild a virtual catalog on a production server. Users will not be able to access the catalog. Only rebuild on staging server. After the catalogs are materialized, you can replicate them to you production servers.
  • Limit the number of rules in the virtual catalog. As a general rule you should rely on catalog and category level rules.

The list may be small and remaining good practices, you will learn in real time :) .

Comments
No Comments »
Categories
Commerce Server 2009, commerce server 2007
Tags
Best practices, Catalog, developing catalog system
Comments rss Comments rss
Trackback Trackback

Account Creation Approval Process

ravikanth | February 7, 2010

In most of the B2C web sites, the user account creation process is pretty simple, i.e., the user can able to login to the application once he register in the website. The same process will not be applied for B2B websites as the user has to go undergo some organization process (may be contract sign, security deposit, etc). So, how can we implement workflow in registration process.

For this, we can leverage user object’s account status field. It will take three values – “Inactive”, “Active” and “Requires Approval” and by default commerce server sets this field value to “Active” on user object creation. We will make the user’s account status to “Requires approval” in commerce server on account creation – that means he can’t log in to the application. The business user completes their formalities and can change the user account status to active from business tools. Once enabled, the user can able to log into the application.

I foresee couple of options for you

1. Create a class which extend OperationSequence. This class performs account status update operation through API. Inject this class in channel configuration at “CommerceUpdateOperation_UserProfile”.

2. The second option is creating insert trigger on UserObject as shown below.

CREATE TRIGGER StarterSite_OnRegistration
ON UserObject
FOR INSERT
AS
Begin
                  DECLARE @userId VARCHAR(100)
                  SELECT @userId = (SELECT u_user_id FROM Inserted)
                  UPDATE UserObject SET u_account_status =2 WHERE u_user_id= @userId
End

Comments
No Comments »
Categories
Commerce Server 2009
Comments rss Comments rss
Trackback Trackback

Microsoft Commerce Server 2009 code name "R2" – January 2010 Community Technical Preview

ravikanth | January 27, 2010

Today Microsoft has released new pre-release build (January 2010 CTP) for review. This CTP is valid through December 31, 2010 and supported in following platforms.

  • Windows Server 2008 R2, with SQL Server 2008 SP1 and Microsoft Office SharePoint Server 2007 SP2
  • Windows Server 2008 SP2, with SQL Server 2008 SP1 and Windows SharePoint Services 3.0 SP2
  • Windows Server 2008 SP2, with SQL Server 2008 SP1 and Microsoft Office SharePoint Services 2007 SP2

You can download bits from Microsoft website and the url is.

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=d6cb6769-6c5e-46c2-a72a-a9911823ffd9

Some of the highlights in this release are

  • New naming convention for all file handlers and other class name changes/additions.
  • Commerce Server pipelines fail if the culture ID is not added to the ChannelConfiguration.config file.
  • New public API changes.
  • RequestedPromoCode section in MetadataDefiniton.xml file must be modified.
  • The setup for Commerce Foundation Components does not include the assembly Microsoft.Commerce.dll
  • Must add /pages to your site URL when using WSS
  • Microsoft.Commerce.Application.Common.EtwTraceListener and Microsoft.Commerce.Application.Common API changes

Some of the low lights are

  • Microsoft Office SharePoint Server 2010 is not supported for this release.
  • plus –> a bunch of known issues – http://download.microsoft.com/download/8/A/7/8A774702-9ECE-4353-A2CF-03A8E31118D6/Microsoft_Commerce_Server_R2_Readme_January_2010_CTP.htm#WhatsNew
Comments
No Comments »
Categories
Commerce Server 2009, What's New
Tags
CTP
Comments rss Comments rss
Trackback Trackback

Commerce Server 2009 December VPC ready for download

ravikanth | December 23, 2009

Today Microsoft has released December version commerce server 2009 VPC and you can able to download it from connect website. This VPC is same as CS2009 September/November VPC but expiry date was updated and there are no changes to the content. To download this VPC, you have to fill a survey. Once you submit the survey (by providing all details), it will take 1-2 business days to get your copy and it can be seen from downloads folder. No e-mail notification will be sent to you confirming its availability. So, what are you waiting for – click on the link below and download your copy.

https://connect.microsoft.com/Survey/Survey.aspx?SurveyID=10038&SiteID=643&wa=wsignin1.0

Comments
No Comments »
Categories
Commerce Server 2009
Comments rss Comments rss
Trackback Trackback

Will Commerce Server November CTP work on SharePoint 2010

ravikanth | December 23, 2009

One of my friend (Amit) has given a try to install commerce server November CTP on SharePoint 2010 (with Windows 2008 x64 Enterprise, SQL Server 2008 SP1& VS2010) but when we run SharePoint commerce services configuration, he got below error.

clip_image002

When I approached Microsoft support team, I came to know that current commerce server (November) CTP version is not supported and currently CS support team is working on it and hopefully availability of SharePoint 2010 support will be in in new year (in January CTP).

Comments
No Comments »
Categories
Commerce Server 2009
Comments rss Comments rss
Trackback Trackback

« Previous Entries

Sign up for Newsletter


Categories

Quiz

  • Catalog Quiz for Beginners
  • Profile Quiz for Beginners
  • Quiz 1 for Advance Users
  • Quiz for Beginners

Recent Posts

  • Configuration Error: Could not load type ‘Microsoft.Commerce.Providers.SharePointCommerceOrderModule from assembly because the parent type is sealed
  • How commerce server Site Terms are stored
  • Troubleshoot: An unexpected error has occurred.
  • Design consideration for developing commerce server catalog system
  • Troubleshoot: AuthManager(CommerceServer): Error reading Commerce Server administration database
  • Account Creation Approval Process
  • Troubleshoot: Unauthorized exception when the new user tries to access MyAccount page
  • Microsoft Commerce Server 2009 code name "R2" – January 2010 Community Technical Preview
  • Merchant Access to Catalog Manager
  • Commerce Server 2009 December VPC ready for download

Archives

  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008

Tags

add discounts add images to profile Advantages of commerce server approve discounts authentication auto login process automatic user creation basket Brand Management business tools campaign management Catalog catalog import Category CategoryConfiguration cc_number checkout commerce 7 commerce server commerce server 2002 commerce server 2007 commerce server 2007 Display Types Commerce Server SP2 discounts ecommerce Estimation inventory Kanth Koppala marketing system migration error Mojave Product profile profile subsystem property metadata purchase order quick checkout Ravi Ravi Kanth site cache refresh starter site tools transactions error Variant
(c) 2009 Commerce Server Blog. All rights Reserved. Articles cannot be reproduced without permission from the author.Write to me at kanth@ravikanth.net if you have any comments, questions, suggestions about this site or would like to send us a tip
About Us | Terms of Use | Disclaimer | Advertise .