<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Vinayak's WebLog : New Catalog Features in CS2007</title><link>http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx</link><description>Tags: New Catalog Features in CS2007</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Securing the catalog system</title><link>http://blogs.msdn.com/vinayakt/archive/2006/06/28/Securing-the-catalog-system.aspx</link><pubDate>Wed, 28 Jun 2006 07:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:649364</guid><dc:creator>vinayakt</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/649364.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=649364</wfw:commentRss><description>&lt;P&gt;The authorization model is another new feature in the Commerce Server 2007&amp;nbsp;catalog system which allows you to protect your catalog data from being accessed by unauthorized users. Since we decided to expose the functionality of the catalog system over the web service it became imperative to ensure that only authorized users can access the catalog data. The catalog system in Commerce Server 2007 has two main components: the catalog web service and the catalog database. Both these components can be appropriately secured.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Securing the Catalog web service&lt;/U&gt;&lt;/STRONG&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;First let's talk about securing the catalog web service. Securing the catalog web service involves securing the web methods&amp;nbsp;to ensure that unauthorized users cannot successfully invoke these methods. Instead of reinventing the wheel and introduce another authorization model for users to learn we decided to use the &lt;A href="http://msdn.microsoft.com/msdnmag/issues/03/11/AuthorizationManager/"&gt;Windows Authorization Manager&lt;/A&gt;. There are several articles on Authorization manager on msdn. You can also check out the &lt;A id=bp___v____ctl0__ctl0_bcr_bth___BlogTitle href="http://blogs.msdn.com/azman/archive/2006/02/22/536513.aspx"&gt;&lt;SPAN style="COLOR: #0033cc"&gt;Authorization Manager Team Blog&lt;/SPAN&gt;&lt;/A&gt;&amp;nbsp;for overviews, case studies etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The catalog system provides various levels of authorization which can be defined by assigning the users&amp;nbsp;to&amp;nbsp;the different roles. Users can be Administrators, catalog editors, language translators etc. You can also create your own user model and still enforce the catalog authorization in the web service. The authorization model also allows you to control which users can view which catalogs and edit which properties. For eg you can disable certain&amp;nbsp;users from editing specific product properties like list price, description etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The catalog system&amp;nbsp;supports only&amp;nbsp;the XML store which means that the authorization information is defined in an xml file.&amp;nbsp;The name of the&amp;nbsp;xml file is specified in the catalogWebService element in the web.config via the &lt;STRONG&gt;authorizationPolicyPath&lt;/STRONG&gt;&amp;nbsp;attribute. When you unpup the catalog webservice a default xml file named CatalogAuthorizationStore.xml is installed in the web service directory (typically &amp;lt;Drive&amp;gt;:\Inetpub\wwwroot\CatalogWebService). You can use the &lt;STRONG&gt;authorizationPolicyPath &lt;/STRONG&gt;attribute&lt;STRONG&gt; &lt;/STRONG&gt;to specify a different authorization store. If the specified path is not an absolute path then the path is relative to the catalog web service's directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;After you install the catalog web service you need to perform the following steps to get the catalog webservice up and running.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;1. Application pool: Verify that the catalog web service has been assigned to the desired Application pool. Verify the properties of the application pool especially the Identity. The identity of&amp;nbsp;the application pool is the name of the account under which an application pool's worker process runs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;2. Once the identity of the catalog web service's application pool has ben configured ensure that this account has write access on the catalog authorization store. You can do this by right clicking the CatalogAuthorizationStore.xml, click properties, select the Security tab, add the&amp;nbsp;catalog web service’s account and check the Allow Write checkbox. The catalog system offers catalog level security which means that you can control which users can access which catalogs. This has been implemented by means of scopes in the authorization store. Since the catalogs are dynamically created in the catalog system it becomes necessary to create a new scope in the authorization store every time a catalog is created. Creating the catalog scope needs write permissions on the xml file. This is why you need to ensure that the account running the catalog web service has Write permissions on the catalog authorization store. If this is not done then the&amp;nbsp;catalog web service will throw a configuration exception at startup and none of the methods can be invoked.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;3. The final step is to add the user accounts to the appropriate roles. This can be done by the Authorization Manager MMC.&amp;nbsp;To do this &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;Start-&amp;gt;Run-&amp;gt;Azman.msc&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;Right click Authorization Manager&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;Click Open Authorization Store&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;Select the CatalogAuthorizationStore.xml&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;Expand CatalogAuthorizationStore-&amp;gt;CatalogAndInventorySystem-&amp;gt;Role Assignments&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;To add a user to a role, right click the role and select "Assign&amp;nbsp;Windows Users&amp;nbsp;or groups" and add the users to the appropriate roles.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Note that adding the user the Administrator role will allow the user to perform any operation in the catalog system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;4. As I mentioned previously we dynamically create scopes for each catalog, language and property in the catalog system to provide a finely grained authorization mode. This means that every time you create a new catalog you need to follow the above steps to ensure that appropriate users have access to this catalog. The only difference is that you need to expand the node named "CatalogScope_&amp;lt;Catalog Name&amp;gt;"-&amp;gt;Role Assignments and add the users to the CatalogEditor role. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;5. If you are unable to access the catalog web service due to the following exception: System.IO.FileNotFoundException: File or assembly name 0x1gew0n.dll, or one of its dependencies, was not&amp;nbsp;found. File name: "0x1gew0n.dll" at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark&amp;amp; stackMark) --- LOG: Attempting download of new URL file:///C:/WINDOWS/TEMP/6hg1.dll. The resolution for this issue is to grant write permissions on the temp directory mentioned in the above URL (C:/WINDOWS/TEMP) to the catalog web service account. &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The next post will be about the various operations, tasks and roles and how you can create your own tasks and roles to enforce an authorization model which is driven by your business needs. It will also discuss how to define&amp;nbsp;permissions for the various user scenarios.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=649364" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>Improving the catalog search experience in Commerce Server 2007</title><link>http://blogs.msdn.com/vinayakt/archive/2006/06/18/Improving-the-catalog-search-experience-in-Commerce-Server-2007.aspx</link><pubDate>Sun, 18 Jun 2006 08:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635896</guid><dc:creator>vinayakt</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/635896.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=635896</wfw:commentRss><description>&lt;P&gt;Two years back in this post on &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/05/05/126329.aspx"&gt;fulltext search in the catalog system&lt;/A&gt;, I had explained how fulltext searches are performed in the catalog system and added the following comment&lt;/P&gt;
&lt;P&gt;"Providing an increased number of search features/conditions is something we are looking forward to, in the&amp;nbsp;upcoming releases. This should allow you to specify more complex search phrases."&lt;/P&gt;
&lt;P&gt;Commerce Server 2007 now allows you to specify complex search phrases which&amp;nbsp;allow you to customize your searches to the finest level of granularity.&amp;nbsp;If the default&amp;nbsp;freetext search behavior as described in the above link does not work for you, you can now &amp;nbsp;use the new AdvancedFreeTextSearchPhrase property on the CatalogSearch object. An example of using this property&amp;nbsp;to implement Thesaurus support&amp;nbsp;is provided in this &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/06/12/627861.aspx"&gt;link&lt;/A&gt;. Note that when you set this property you should also set the UseAdvancedFreeTextSearch&amp;nbsp;to true. This is to avoid ambiguity on whether the value specified for AdvancedFreeTextSearchPhrase&amp;nbsp;or FreeTextSearchPhrase&amp;nbsp;&amp;nbsp;property should be used to perform the search.&lt;/P&gt;
&lt;P&gt;Here are some additional search scenarios&amp;nbsp;for which you can use this new property.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can perform&amp;nbsp;wild card searches by appending * to the search phrase. For eg to return all the products containing search terms beginning with "Commerce". When passing a compound phrase you need to enclose the phrase in quotes. &lt;/LI&gt;&lt;/UL&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff"&gt;&lt;FONT color=#008000&gt;&lt;FONT color=#006400 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase&amp;nbsp; = "Commerce*"; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catalogSearch.AdvancedFreeTextSearchPhrase&amp;nbsp; = "\"Commerce Server*\"";&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;To perform exact searches you should&amp;nbsp;enclose the phrase in quotes. For eg to return rows that contain the exact phrase "Commerce Server 2007" &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase&amp;nbsp; = "\"Commerce Server 2007\""; &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;To return all the products containing the phrases "Commerce Server" and "Sql Server"&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase=" \"Commerce Server 2007\"&amp;nbsp;AND&amp;nbsp;\"Sql Server\" "; &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;To return all the products containing the phrases "Commerce Server"&amp;nbsp;OR "Sql Server"&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt;&lt;FONT size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase=" \"Commerce Server 2007\"&amp;nbsp;&amp;nbsp;OR&amp;nbsp;&amp;nbsp;\"Sql Server\" ";&lt;/FONT&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;To return all products&amp;nbsp;beginning with Commerce Or Sql server&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase=" Commerce*&amp;nbsp;&amp;nbsp;OR \"Sql Server\" "; &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&amp;nbsp;You can also perform proximity searches using the NEAR keyword. For eg to return all&amp;nbsp;products containing the word 2007 near "Commerce Server" &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase="2007 NEAR \"Commerce Server\""; &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&amp;nbsp;You can perform inflectional searches using the INFLECTIONAL keyword. For eg to return all products with forms of dry&amp;nbsp;like drying, dried etc &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase="FORMSOF (Inflectional,dry)"; &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;To return all products containing Commerce or Sql Server and not ASP &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000 size=2&gt;catalogSearch.AdvancedFreeTextSearchPhrase="(\"commerce \" OR \"sql server\") and not ASP\"";&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The above are just some of the scenarios. To truly understand what else you can do take a look at this &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_2y2h.asp"&gt;link&lt;/A&gt;. Determine the clause which best reflects your search criteria and pass it to the AdvancedFreeTextSearchPhrase as in the above example.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For a complete code sample and additional filtering using other criteria like "list price &amp;lt; $100 AND IsActive=1"&amp;nbsp; see this &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/05/04/125476.aspx"&gt;post&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=635896" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/Programming+the+Catalog+System/default.aspx">Programming the Catalog System</category><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category><category domain="http://blogs.msdn.com/vinayakt/archive/tags/Catalog+Search+functionality/default.aspx">Catalog Search functionality</category></item><item><title>Implementing Thesaurus support in the catalog system</title><link>http://blogs.msdn.com/vinayakt/archive/2006/06/12/Implementing-Thesaurus-support-in-the-catalog-system.aspx</link><pubDate>Mon, 12 Jun 2006 10:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:627861</guid><dc:creator>vinayakt</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/627861.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=627861</wfw:commentRss><description>&lt;P&gt;Sql Server 2005 now&amp;nbsp;provides &lt;A href="http://msdn2.microsoft.com/en-us/library/ms142491.aspx"&gt;Thesaurus&amp;nbsp;&lt;/A&gt;support through configurable xml files. In a nutshell &amp;nbsp;the Thesaurus feature allows you to search for synonyms of the search phrase or replace the search phrase with a&amp;nbsp;replacement phrase and perform the search&amp;nbsp;using the replacement phrase.&amp;nbsp;&amp;nbsp;These synonyms and replacements can be configured using the xml files.See this &lt;A href="http://msdn2.microsoft.com/en-us/library/ms345186.aspx"&gt;link&lt;/A&gt; for configuring the xml files. &lt;/P&gt;
&lt;P&gt;If you are using Sql Server 2005 as your Commerce Server database server then you can take advantage of this cool feature when&amp;nbsp;performing catalog searches.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;As an example, suppose &amp;nbsp;that you have a Books catalog. Assume that Description is a fulltext searchable property in this catalog and that this catalog has various C# books. When performing a search&amp;nbsp;on your site users might search for C# or "C Sharp".&amp;nbsp;You can use the Thesaurus feature to allow searches for "C Sharp" to return C# books. &lt;/P&gt;
&lt;P&gt;The first step is to edit the tsENU.xml file located in the SQL_Server_install_path\Microsoft SQL Server\MSSQL.1\MSSQL\FTDATA\ directory and add the following element to it&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;expansion&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sub&amp;gt;C sharp&amp;lt;/sub&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sub&amp;gt;C#&amp;lt;/sub&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/expansion&amp;gt; &amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;After you edit the xml file you will have to restart the "SQL Server FullText Search (MSSQLSERVER)" &amp;nbsp;service for the changes to take effect. &lt;/P&gt;
&lt;P&gt;The following code sample demonstrates how to perform the catalog search to allow searches for "C Sharp" to return books containing C#: &lt;/P&gt;&lt;FONT color=#008080 size=2&gt;
&lt;P&gt;CatalogSearch&lt;/FONT&gt;&lt;FONT size=2&gt; catalogSearch = catalogContext.GetCatalogSearch();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;catalogSearch.SearchOptions = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;CatalogSearchOptions&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Set appropriate search options&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;catalogSearch.SearchOptions.SetPaging(1,20);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;catalogSearch.UseAdvancedFreeTextSearch = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;true&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;catalogSearch.AdvancedFreeTextSearchPhrase = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"FORMSOF(THESAURUS, \"C Sharp\")"&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; totalRecords;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;CatalogItemsDataSet&lt;/FONT&gt;&lt;FONT size=2&gt; searchResults = catalogSearch.Search(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;out&lt;/FONT&gt;&lt;FONT size=2&gt; totalRecords);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Iterate through the search results&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;CatalogItemsDataSet&lt;/FONT&gt;&lt;FONT size=2&gt;.&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;CatalogItem&lt;/FONT&gt;&lt;FONT size=2&gt; searchResult &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; searchResults.CatalogItems)&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console&lt;/FONT&gt;&lt;FONT size=2&gt;.WriteLine(searchResult.CategoryName);&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=627861" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/Programming+the+Catalog+System/default.aspx">Programming the Catalog System</category><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category><category domain="http://blogs.msdn.com/vinayakt/archive/tags/Catalog+Search+functionality/default.aspx">Catalog Search functionality</category></item><item><title>New Catalogset features in Commerce Server 2007</title><link>http://blogs.msdn.com/vinayakt/archive/2006/06/07/New-Catalogset-features-in-Commerce-Server-2007.aspx</link><pubDate>Wed, 07 Jun 2006 09:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:620377</guid><dc:creator>vinayakt</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/620377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=620377</wfw:commentRss><description>&lt;P&gt;The catalogsets feature is probably the least known feature in the catalog system.&amp;nbsp;Unlike in previous versions, the catalogsets feature is now &amp;nbsp;tightly integrated with the catalog sytsem. We have also provided a managed API to create, edit and delete catalog sets.This functionality is also available through the catalog web service.&amp;nbsp;In addition you can now export and import catalog sets just as you can import and export product catalogs. In addition we have also provided&amp;nbsp;appropriate Azman security for catalogsets. More importantly the ability to manipulate the catalog sets has been added in the Catalog Manager application.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What are catalogsets anyway?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;Catalogsets provide a way to group together a similar set of product catalogs.You can use catalog sets to&amp;nbsp;decide the appropriate list of catalogs to be displayed&amp;nbsp;to your site users based on their profile.&amp;nbsp;&amp;nbsp;For eg you can create a catalogset containing a list of preferred product catalogs. The catalog set can then be associated to profile of runtime users and when a user browses your site you can then select the list of catalogs the user can browse.This allows you to show a different list of catalogs for anonymous users, registered users or privileged users. See this &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/04/29/122858.aspx"&gt;post &lt;/A&gt;for more information and the various fallbacks. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;A new feature in Commerce Server 2007 is the ability to create dynamic catalog sets. A catalog set can now be&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Static&lt;/STRONG&gt;, which contains a static list of catalogs. 
&lt;LI&gt;&lt;STRONG&gt;Dynamic, &lt;/STRONG&gt;which allows you to associate an expression with the catalog set.&amp;nbsp;The catalog set will now contain &amp;nbsp;the list of catalogs which match the expression. A good usage of this feature would be to define a catalog set for active product catalogs. For eg "Active catalogset" can be a dynamic catalogset which has the expression "StartDate&amp;gt; 01/01/2006" and "EndDate&amp;lt;12/31/2006" associated with it. This catalog set will now contain all the catalogs which have a start and end dates that fall in the specified range. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;By default the catalog system creates two default catalog sets&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Anonymous User Default CatalogSet&lt;/STRONG&gt;, is a catalog set for anonymous users 
&lt;LI&gt;&lt;STRONG&gt;Registered User Default CatalogSet&lt;/STRONG&gt;, is a catalog set for&amp;nbsp;registered users&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;As I previously mentioned you can associate catalogsets to a users profile and use the users profile and the catalog sets to display the list of catalogs for that user. The newly added dynamic catalogset&amp;nbsp;feature can be used here&amp;nbsp;to provide a better user experience, increased flexibility and less maintainence. Once you define your expression you dont have to worry about the contents of the catalog set.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;New in Commerce Server 2007 is the ability to &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/03/07/545098.aspx"&gt;import &lt;/A&gt;and &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/03/06/544347.aspx"&gt;export&lt;/A&gt; catalog sets&amp;nbsp;from and&amp;nbsp;to xml files. We have also added&amp;nbsp;Azman security to control which users can view and edit the catalogsets.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=620377" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>Caching in the catalog system</title><link>http://blogs.msdn.com/vinayakt/archive/2006/06/02/Caching-in-the-catalog-system.aspx</link><pubDate>Fri, 02 Jun 2006 07:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:613939</guid><dc:creator>vinayakt</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/613939.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=613939</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;The Commerce Server 2007 catalog system adds a new caching feature which caches frequently used datasets.&amp;nbsp;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;What is cached?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;In order to prevent repeated calls to the sql server the catalog system caches the results of various methods in the catalog system. These results are cached in the form of datasets. The catalog system uses the System.Web.Caching.Cache object to cache the various datasets. Each dataset is inserted in the cache with the CacheItemPriority.Normal. The time for which a dataset remains in the cache is configurable. If not specified the default time is 5 minutes.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;However in order to account for the relative frequency at which different items in the catalog system are changed we have classified the datasets in six different categories allowing you to specify different timeouts. The goal is to ensure allow for items which change less frequently to remain in the cache much longer that those that change more frequently. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The cache configuration can be defined when you create the CatalogContext object&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;CacheConfiguration cacheConfiguration = new CacheConfiguration();&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.CacheEnabled = true;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.SchemaCacheTimeout = new TimeSpan(0, 10, 0);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.ItemAssociationsCacheTimeout = new TimeSpan(0, 10, 0);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.ItemHierarchyCacheTimeout = new TimeSpan(0, 10, 0);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.ItemInformationCacheTimeout = new TimeSpan(0, 10, 0);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.ItemRelationshipsCacheTimeout = new TimeSpan(0, 10, 0);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;cacheConfiguration.CatalogCollectionCacheTimeout = new TimeSpan(0, 10, 0);&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;CatalogSiteAgent siteAgent = new CatalogSiteAgent();&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;siteAgent.SiteName = "SiteName";&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;CatalogContext cc = CatalogContext.Create(siteAgent, cacheConfiguration);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Caching is enabled by setting cacheConfiguration.CacheEnabled property to true.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The following are the different categories of datasets and their timeout configuration parameters&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;CatalogSchema &lt;/STRONG&gt;: This applies to datasets that return schema information. These datasets will remain in the cache for the timeout defined by the cacheConfiguration.SchemaCacheTimeout property. Since the catalog schema is less likely to change once it has been defined setting the timeout to a high value can result in improved performance. &lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;The cacheConfiguration.SchemaCacheTimeout&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;applies to the datasets returned by the following properties/methods &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogContext.GetProperty()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogContext.GetEntityProperties()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogContext.GetProperties()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogContext.GetSearchableProperties()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogContext.GetPropertiesInCatalog()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ProductCatalog.PropertiesInCatalog &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogEnumerationProperty.EnumerationValues&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogContext.GetDefinitions()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogDefinition.DefinitionProperties&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1 start=2&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;Item Properties&lt;/STRONG&gt; : Almost all the objects in the catalog system expose an Information property which is a dataset containing the properties for that object. For eg ProductCatalog.Information returns a dataset containing the properties of the specified product catalog. The duration the dataset returned by the Information property remains in the cache is controlled by the cacheConfiguration.ItemInformationCacheTimeout property. &lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;The cacheConfiguration.ItemInformationCacheTimeout property applies to the datasets returned by the following properties/methods &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CatalogSet.Information&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Category.Information&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;InventoryCatalog.Information&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;InventorySku.Information&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Product.Information&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ProductCatalog.Information&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ProductVariant.DataRow&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;Note that this timeout also applies to the product information stored by the QueryCatalogInfo pipeline component.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Another thing to note is that if inventory integration is enabled the inventory information also gets cached.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1 start=3&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;Catalog Hierarchy &lt;/STRONG&gt;: The catalog system allows you to define parent child hierarchies between categories and products. This information is returned in the form of datasets. The duration for which these datasets are cached is determined by the cacheConfiguration.ItemHierarchyCacheTimeout property. The cacheConfiguration.ItemHierarchyCacheTimeout&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;property applies to the following methods/properties :&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;ProductCatalog.GetRootCategories()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;ProductCatalog.GetRootProducts()&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Product.AncestorCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.AncestorCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Product.ParentCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.ParentCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Product.CanonicalCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.CanonicalCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.Products&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.ChildCategories&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1 start=4&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;Catalog Relationships&lt;/STRONG&gt; : The catalog system allows you to define relationships between products and categories. The duration for which the relationships datasets remain in the cache is determined by the cacheConfiguration. ItemRelationshipsCacheTimeout property and applies to the following properties&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.RelatedCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Product.RelatedCategories&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Category.RelatedProducts&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;Product.RelatedProducts&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1 start=5&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;Associations between different objects&lt;/STRONG&gt;: The catalog system allows you to have various types of associations between different objects. For eg product catalogs associated to inventory catalogs, product catalogs to catalog sets, languages associated to product catalogs etc The duration for which these associations datasets remain in the cache is determined by the cacheConfiguration. ItemAssociationsCacheTimeout property and applies to the datasets returned by the following properties:&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;ProductCatalog.Languages&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;ProductCatalog.DependentCatalogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;VirtualCatalog.SourceCatalogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;CatalogSet.IncludedCatalogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;CatalogSet.NotIncludedCatalogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;InventoryContext.GetUnassociatedProductCatalogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;InventoryCatalog.AssociatedProductCatalogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;VirtualCatalog.VirtualCatalogRules&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;VirtualCatalog.PriceRules&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1 start=6&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;STRONG&gt;Catalog Collections&lt;/STRONG&gt;&amp;nbsp;: The cacheConfiguration .CatalogCollectionCacheTimeout property controls how long the following datasets remain in the cache&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;CatalogContext.GetCatalogs()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;InventoryContext.GetInventoryCatalogs()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;CatalogSetsContext.GetCatalogSets&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;Monitoring the Catalog cache using perfmon&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=FR style="mso-ansi-language: FR"&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If you have enabled caching then you can monitor the perfomace of the cache by&amp;nbsp;observing the following performance counters under &lt;STRONG&gt;Commerce : Catalog&lt;/STRONG&gt; set of&amp;nbsp;counters.&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .75in"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;CacheTotalHits&lt;/STRONG&gt; : The total number of cache hits&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .75in"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;CacheTotalMissess&lt;/STRONG&gt;: The total number of cache misses&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .75in"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;CacheHitRate&lt;/STRONG&gt; : The number of cache hits per sec&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .75in"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;CacheMissRate&lt;/STRONG&gt; : The number of cache misses per sec&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .75in"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;CacheHitRatio&lt;/STRONG&gt; : The ratio of the cache hits to the total number of cache accesses. This is equal to&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;CacheTotalHits / (CacheTotalHits + CacheTotalMisses)&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2; tab-stops: list .75in"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;6.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;CacheTurnOverRate&lt;/STRONG&gt; : The number of cache insert and deletes per second&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;Web.Config section for caching&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The Caching parameters can also be set in web.config of your runtime site using the following element&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;lt;catalog&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;cache&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;enable="true" &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;schemaTimeout="10" &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;itemInformationCacheTimeout ="10" &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;itemHierarchyCacheTimeout ="10" &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;itemRelationshipsCacheTimeout = "10" &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;itemAssociationsCacheTimeout="10" &lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;catalogCollectionCacheTimeout="10"&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;/catalog&amp;gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Here 10 is the duration in minutes, the respective datasets should be in the cache.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Since the catalog system uses the&amp;nbsp;&amp;nbsp;System.Web.Caching.Cache you can tune the different aspects of the&amp;nbsp;catalog cache using the ASP.NET &lt;A href="http://msdn2.microsoft.com/en-us/ms228248.aspx"&gt;cache settings&lt;/A&gt;. &lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=613939" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/Programming+the+Catalog+System/default.aspx">Programming the Catalog System</category><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>New Virtual catalog features in Commerce Server 2007</title><link>http://blogs.msdn.com/vinayakt/archive/2006/05/31/New-Virtual-catalog-features-in-Commerce-Server-2007.aspx</link><pubDate>Wed, 31 May 2006 09:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:611453</guid><dc:creator>vinayakt</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/611453.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=611453</wfw:commentRss><description>&lt;P&gt;Virtual catalogs is a key feature we improved upon in Commerce Server 2007 to allow you to further customize your base and virtual catalogs. These features will enable additional&amp;nbsp; scenarios which were not possible in previous versions. If you are not familiar with virtual catalogs, read this &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/10/14/242190.aspx"&gt;post&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The following new features have been added to virtual catalogs in Commerce Server 2007 &lt;/P&gt;
&lt;P&gt;1. &lt;STRONG&gt;Ability to add rules from another virtual catalog&lt;/STRONG&gt; : Commerce Server 2007 now allows you to add inclusion/exclusion/pricing rules to a virtual catalog from another virtual catalog.&amp;nbsp;Note that a virtual catalog can now be created by rules from &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;One or more base catalogs OR&lt;/LI&gt;
&lt;LI&gt;Another (&lt;U&gt;and only one&lt;/U&gt;)&amp;nbsp; virtual catalog&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;This new feature now allows you to create a virtual catalog from one or more base catalogs (possibly coming from different vendors)&amp;nbsp; and then you can create another customized virtual catalog based off this virtual catalog. &lt;/P&gt;
&lt;P&gt;2. &lt;STRONG&gt;Ability to override values of custom properties from&amp;nbsp;inherited catalogs: &lt;/STRONG&gt;New in this release is the ability to override the values of custom properties from the inherited catalogs. For eg you can add a product from a base catalog to a virtual catalog and have a different description or display name for the product in the virtual catalog. In addition you can also choose not to override these values and revert back to the original values&amp;nbsp;from the inherited catalogs.&lt;/P&gt;
&lt;P&gt;3. &lt;STRONG&gt;Ability to explicitly specify prices for products in the virtual catalog: &lt;/STRONG&gt;While you can use flexible pricing rules to define the prices of products and categories in a virtual catalog, you can also explicitly set the prices of products in a virtual catalog. This feature also allows you to revert back this explicit pricing and have the price rule take effect.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;4. &lt;STRONG&gt;Importing and exporting virtual catalogs: &lt;/STRONG&gt;Another new feature in this release is the ability to export and import virtual catalogs as virtual catalogs. &lt;/P&gt;
&lt;P&gt;The &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/03/07/545098.aspx"&gt;export feature &lt;/A&gt;allows you to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Export a virtual catalog as a virtual catalog.&amp;nbsp; This will export the rules&amp;nbsp;in the virtual catalog and values of the overridden properties.&lt;/LI&gt;
&lt;LI&gt;Export a virtual catalog as a base catalog. This will export the current contents of the virtual catalog as a base catalog.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Export&amp;nbsp;source catalogs. This feature allows you to export the source catalogs of the virtual catalog to the same xml file. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/03/06/544347.aspx"&gt;import feature &lt;/A&gt;allows you to :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Import virtual catalogs as virtual catalogs.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/04/28/121961.aspx"&gt;Materialize &lt;/A&gt;virtual catalogs during import.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;5. &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/05/30/610546.aspx"&gt;Sequencing in virtual catalog&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;6. In addition we have made notable performance improvements for virtual catalog rebuilds and&amp;nbsp;materialization of virtual catalogs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=611453" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>New catalog sequencing features in Commerce Server 2007</title><link>http://blogs.msdn.com/vinayakt/archive/2006/05/30/New-catalog-sequencing-features-in-Commerce-Server-2007.aspx</link><pubDate>Tue, 30 May 2006 08:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:610546</guid><dc:creator>vinayakt</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/610546.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=610546</wfw:commentRss><description>&lt;P&gt;A while back I had written about &lt;A href="http://blogs.msdn.com/vinayakt/archive/2005/06/25/432678.aspx"&gt;sequencing products and categories in the feature pack&lt;/A&gt; and mentioned a few features that were not supported. I am happy to say that we have now addressed all the limitations I had mentioned in this post and also added a couple of new features. &lt;/P&gt;
&lt;P&gt;The following are the new sequencing features in Commerce Server 2007&lt;/P&gt;
&lt;P&gt;1. &lt;STRONG&gt;Sequencing products and categories:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can now sequence child products and categories in any category. 
&lt;LI&gt;You can also sequence root categories and root products. 
&lt;LI&gt;You can sequence variants in a product family 
&lt;LI&gt;Sequencing of child products/categories, root products/categories and variants is also supported in virtual catalogs. When you add a rule from a base catalog to a virtual catalog the existing sequencing for the included items will be inherited from the base catalog. We have also provided the ability to override this inherited sequencing in the virtual catalog so that you can have these items appear in a different sequence in the virtual catalog.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;2. &lt;STRONG&gt;Sequencing relationships:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Just as you can sequence child products and categories you can also sequence &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/06/21/161083.aspx"&gt;product and category relationships&lt;/A&gt;. Sequencing of relationships is also supported in virtual catalogs where inherited sequencing&amp;nbsp;of base&amp;nbsp;catalog relationships can be overridden in the virtual catalog.&lt;/P&gt;
&lt;P&gt;3. &lt;STRONG&gt;Sequencing enumeration values:&lt;/STRONG&gt; We have also added the ability to sequence enumeration values&amp;nbsp;of an enumerated property. This is particularly useful where the&amp;nbsp;alphabetical ordering of the&amp;nbsp;enumeration values does not confirm to the desired display order. For eg.&amp;nbsp;it would make sense to display the values&amp;nbsp;Small, Medium and Large for a Size property&amp;nbsp;in that order rather than the alphabetical order. You can now use the sequencing feature to control the display order of the enumarated values.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The above features can be implemented programmatically or they can also be done using the Business Manager UIs. In addition the sequence values are&amp;nbsp;exported to and imported from catalog xml files.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=610546" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>New catalog search features in Commerce Server 2007</title><link>http://blogs.msdn.com/vinayakt/archive/2006/05/22/New-catalog-search-features-in-Commerce-Server-2007.aspx</link><pubDate>Mon, 22 May 2006 09:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:603602</guid><dc:creator>vinayakt</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/603602.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=603602</wfw:commentRss><description>&lt;P&gt;One of my posts (&lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/05/04/125476.aspx"&gt;Catalog classtypes and search functionality in the catalog system&lt;/A&gt;) described the search functionality in&amp;nbsp;previous versions&amp;nbsp;of the catalog system. We have now made the following enhancements to the search functionality. Incidentally,&amp;nbsp;all these new features were&amp;nbsp;driven by feedback from our customers.&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;&lt;STRONG&gt;Ability to&amp;nbsp;search more than one category in one or more catalogs:&lt;/STRONG&gt;&amp;nbsp; Commerce Server 2002&amp;nbsp;allowed searching a &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/05/13/130972.aspx"&gt;single category&amp;nbsp;&lt;/A&gt;in a single catalog. &amp;nbsp; We have now added the ability to search multiple categories in one or more catalogs.&amp;nbsp;In addition the searches can be both recursive and non-recursive. This feature is particularly useful where you have a set of similar catalogs and you want to search a specific set of categories in all the catalogs or if you want to restrict your search to a set of categories in a single catalog.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp;&lt;STRONG&gt;Improved freetext search query support: &lt;/STRONG&gt;Freetext&lt;STRONG&gt; &lt;/STRONG&gt;searches in CS2002 were limited to keyword searches or And/Or inflectional searches. This made it difficult to perform complex searches like "return all the products containing the phrase 'black shoes' " or&amp;nbsp;&amp;nbsp;"return all the products where the word 'black' is near &amp;nbsp;'shoes' ". In addition to providing the default search behavior of CS2002 we now allow you to specify an expression that is a valid for the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_3syt.asp"&gt;ContainsTable&lt;/A&gt;&amp;nbsp; function thereby exposing the full power of Sql Server fulltext search engine.Anything you can do using&amp;nbsp;&amp;nbsp;Sql Server fulltext search is now possible from the catalog system search. If you want to perform more complex &amp;nbsp;searches you can use this feature to constuct the search phrase that can return more detailed and targetted search results. If you are&amp;nbsp;using Sql Server 2005 then this feature will also allow you to implement the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms142491.aspx"&gt;Thesaurus &lt;/A&gt;feature when performing catalog searches. &lt;/P&gt;
&lt;P&gt;3. &lt;STRONG&gt;Inventory integration&lt;/STRONG&gt;: &amp;nbsp;One of the compelling features in Commerce Server 2007 is the addition of&amp;nbsp;a new&amp;nbsp;inventory resource and its tight and flexible integration with the Catalog and Orders systems.&amp;nbsp;This allows you to manage inventory for products in your product catalog and also control the display of products on your site based on their inventory status. For eg you can use the search&amp;nbsp;functionality to prevent out of stock products from being displayed on the site. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Performance improvements&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;4. &lt;STRONG&gt;Updating fulltext catalogs&lt;/STRONG&gt;: We have now fixed the way fulltext catalogs are updated. Once you set up your fulltext catalogs correctly, incremental updates will now trigger incremental updates on the fulltext catalogs. This will no longer cause your CPU to get busy everytime you update your fulltext catalog.&lt;/P&gt;
&lt;P&gt;5. &lt;STRONG&gt;Performance improvement&amp;nbsp;when performing&amp;nbsp;freetext search&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;6. &lt;STRONG&gt;Additional&lt;/STRONG&gt; &lt;STRONG&gt;performance&lt;/STRONG&gt; &lt;STRONG&gt;improvement&amp;nbsp;when performing&amp;nbsp;freetext searches on virtual catalogs&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=603602" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category><category domain="http://blogs.msdn.com/vinayakt/archive/tags/Catalog+Search+functionality/default.aspx">Catalog Search functionality</category></item><item><title>Microsoft Commerce Server 2007 Release Candidate is now available</title><link>http://blogs.msdn.com/vinayakt/archive/2006/05/20/Microsoft-Commerce-Server-2007-Release-Candidate-is-now-available.aspx</link><pubDate>Sat, 20 May 2006 07:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:602426</guid><dc:creator>vinayakt</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/602426.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=602426</wfw:commentRss><description>&lt;P&gt;After several years of hardwork the Release candidate for Microsoft Commerce Server 2007 is now available for public download. The details of the download location and the name change from Microsoft Commerce Server 2006 to Microsoft Commerce Server 2007 can be found&amp;nbsp;in &lt;A href="http://blogs.msdn.com/rdonovan/archive/2006/05/19/602259.aspx"&gt;Ryan's post&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;The team had been pretty busy for the past several weeks in making this possible and the biggest achievement after we shipped Beta was performance. After several weeks of performance and stress testing, I can definitely say that we now have a product which is not only feature rich and secure&amp;nbsp;but also highly performant.&amp;nbsp;Now that we have delivered on an important milestone I will start&amp;nbsp;blogging regularly on the several cool features in the Commerce Server 2007 catalog system.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=602426" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>The new catalog system in Commerce Server 2007 ... Part III</title><link>http://blogs.msdn.com/vinayakt/archive/2006/03/07/The-new-catalog-system-in-Commerce-Server-2007-_2E002E002E00_-Part-III.aspx</link><pubDate>Tue, 07 Mar 2006 08:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:545098</guid><dc:creator>vinayakt</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/545098.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=545098</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;6. New features in Import&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Just as we provided a number of options in &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/03/06/544347.aspx"&gt;Export&lt;/A&gt;&amp;nbsp;, we have provided a similar number of options for Import.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;1. &lt;STRONG&gt;Importing from client machines: &lt;/STRONG&gt;The Commerce Server 2007 catalog system now allows you to&amp;nbsp;import data&amp;nbsp;from client machines. The client side&amp;nbsp;import functionality has been built in the catalog system and you don't need to install additional external assemblies. The import can be done over the catalog web service in a secure and performant manner.&lt;/P&gt;
&lt;P&gt;2. &lt;STRONG&gt;Import Modes: &lt;/STRONG&gt;There are two modes for import&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. In the &lt;STRONG&gt;Full&lt;/STRONG&gt; mode&amp;nbsp;if the catalog already exists in the catalog system then it will be deleted and its contents will be replaced by the contents of the catalog in the xml file. This operation is equivalent to deleting the existing catalog and creating a new one from the xml file.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b. In the &lt;STRONG&gt;Incremental&lt;/STRONG&gt; mode if a category, product or variant exists in the xml file and the catalog system then the catalog item will be updated. If the catalog item does not exist in the catalog a new one will be created. All other items will be preserved. Items marked for deletion in the xml file will also be deleted from the catalog system.&lt;/P&gt;
&lt;P&gt;3. &lt;STRONG&gt;Operations: &lt;/STRONG&gt;In this release we have simplified way xml files can be imported and validated. You can &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. &lt;STRONG&gt;Validate, &lt;/STRONG&gt;an xml file in which case the file will be parsed, validated&amp;nbsp;and errors reported through the status reporting mechanism.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b. &lt;STRONG&gt;Import, &lt;/STRONG&gt;an xml file in which case the file will be&amp;nbsp;imported&amp;nbsp;and errors reported through the status reporting mechanism.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c. &lt;STRONG&gt;ValidateAndImport&lt;/STRONG&gt;, allows you to first validate the xml file and if the file is valid it will be imported. If there are errors in the file then the import will not happen.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;4. &lt;STRONG&gt;Importing selected catalogs:&lt;/STRONG&gt;&amp;nbsp; You can now specify&amp;nbsp;a selected list of catalogs you want to be imported from the file.&lt;/P&gt;
&lt;P&gt;5. &lt;STRONG&gt;Importing selected properties:&lt;/STRONG&gt;&amp;nbsp;Just as you can specifiy a list of catalogs to import, you can also specify a set of properties to import. A typical scenario is where you want to import a file but don't want the list price of the products to be imported. &lt;/P&gt;
&lt;P&gt;6. &lt;STRONG&gt;Transactioning the import process: &lt;/STRONG&gt;You can now transact some of the key elements during import. There are two modes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. &lt;STRONG&gt;Non transactional:&lt;/STRONG&gt; In this mode individual elements in the xml file like catalog, category, product, variant etc will be transacted. However failure in importing a single category will still cause the rest of the catalog iyems to be imported.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b. &lt;STRONG&gt;Transactional: &lt;/STRONG&gt;If you want to ensure that all elements in a catalog should be imported successfully or none at all then you can use the transactional mode. In this mode importing an entire catalog element (all category, product and&amp;nbsp;variant elements ) will be transacted. A failure in importing a single category, product and&amp;nbsp;variant element will rollback all imports on that catalog. Note that this option&amp;nbsp;applies to individual catalog elements and not the entire xml file. &lt;/P&gt;
&lt;P&gt;Irrespective of the above modes importing the CatalogSchema element is transactional. failure to import a single property, definition will&amp;nbsp;abort the import and rollback any changes.&lt;/P&gt;
&lt;P&gt;7. &lt;STRONG&gt;Importing schema changes: &lt;/STRONG&gt;We now allow you to import an xml file where the catalog schema in the xml file does not match the catalog schema in the catalog system. In this mode any changes made to the catalog schema in the xml file will be made to the schema in the catalog system. For eg suppose that you have a Definition named book in the catalog system containing properties name and author. If you import an xml file containing a definition named book with properties name and&amp;nbsp;writer then importing the xml file with schema changes will change the book definition in the catalog system be deleting the author property from and adding the writer property to the book definition. When doing this operation values assigned to the author property of the book definition in existing catalogs will be lost.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Note that not all types of schema changes are permitted. For eg a language sensitive attribute of a property cannot be changed. Similary the data types of the properties should be compatible. For eg changing the data type of a property from integer to datetime is not permitted. However changing the datatype from integer to biginteger and changing the datatype from biginteger to integer (provided that there is no loss of existing catalog data)&amp;nbsp;is permitted. &lt;/P&gt;
&lt;P&gt;8. &lt;STRONG&gt;Restricting the number of errors and aborting import: &lt;/STRONG&gt;You can now control the number of errors that&amp;nbsp;can occur before the import operation is terminated. The default value is 100 which means that if the import process encounters 100 errors the import will be terminated. &lt;/P&gt;
&lt;P&gt;9. &lt;STRONG&gt;Updating fulltext indexes: &lt;/STRONG&gt;This option allows you to control if full text indexes on the catalog should be updated after the import is done.Since updating the full text indexes is a CPU intensive operation you can delay these updates to occur during downtime.&lt;/P&gt;
&lt;P&gt;10. &lt;STRONG&gt;Maintaining existing hierarchy and relationships:&lt;/STRONG&gt; When importing a catlaog in an incremental mode, you now have an option to retain existing hierarchy and relationships for the catalog items being imported. For eg consider a&amp;nbsp;product&amp;nbsp; "My story" which has a parent category "Biography"&amp;nbsp; and is related to another product "My autobiography" in the books catalog . Now if you are importing the books catalog from the xml file and the product "My story" has a parent category "Autobiography" and is related to "My autobiography 2" you have an option to specify that importing the product will delete or retain the existing hierarchies and relationships for the product. If you choose the delete option the the imported product will have the parent category "Autobiography" and&amp;nbsp;will be &amp;nbsp;related to "My autobiography 2". If you choose the&amp;nbsp;retain option the the imported product will have the parent categories "Biography"&amp;nbsp; and "Autobiography" and&amp;nbsp;will be &amp;nbsp;related to "My autobiography" and "My autobiography 2".&lt;/P&gt;
&lt;P&gt;11. &lt;STRONG&gt;Filtering products to import: &lt;/STRONG&gt;When&lt;STRONG&gt; &lt;/STRONG&gt;importing in incremental mode, you can also control which products to import from the xml file and which products to update in the catalog system. This is achieved by using the &lt;STRONG&gt;LastModifiedDate&lt;/STRONG&gt; option. When you set the &lt;STRONG&gt;LastModifiedDate&lt;/STRONG&gt;&amp;nbsp; option then the catalog system will not attempt to import products and categories in the xml file having a lastModifiedDate attribute which is less than the specified &lt;STRONG&gt;LastModifiedDate&lt;/STRONG&gt; option. Also the catalog system will not update a product if it has been modified &amp;nbsp;after the specified &lt;STRONG&gt;LastModifiedDate&lt;/STRONG&gt; option. This is to ensure that changes made to the products in the catalog system are not overwritten inadvertently by the import process.Note that when using this option all product and category elements in the xml file should have the lastModifiedDate attribute. Absence of this attribute will be treated as an error.&lt;/P&gt;
&lt;P&gt;12. &lt;STRONG&gt;Importing the last modified date values from the xml file: &lt;/STRONG&gt;When importing an xml file the import process will set the lastmodifieddate property of the products and categories to the value of the &amp;nbsp;corresponding lastmodifieddate attribute in the xml file. If the lastmodifieddate attribute is missing then the current datetime will be used.&lt;/P&gt;
&lt;P&gt;13. &lt;STRONG&gt;Status reporting: &lt;/STRONG&gt;This is a new addition in CS 2007. All long running operations like import, export and virtual catalog rebuilds now report current status of the operation in terms of the percentage of the operation completed. &lt;/P&gt;
&lt;P&gt;14. &lt;STRONG&gt;Cancelling an import operation: &lt;/STRONG&gt;You can now cancel an import operation.&lt;/P&gt;
&lt;P&gt;15. &lt;STRONG&gt;Marking a catalog item as ready for export : &lt;/STRONG&gt;In LOB adapter and staging scenarios where you are using import/export to synchronize changes in your catalog systems you need to control if importing a catalog item should signal the product to be ready for export to another system. You can use the &lt;STRONG&gt;ExportReady &lt;/STRONG&gt;option to signal if the exportready flag of a catalog item should be set.&lt;/P&gt;
&lt;P&gt;As you can see there are a number of options which allow you to control how your information is imported and updated.&lt;/P&gt;
&lt;P&gt;While we added a number of cool features in CS2007 we also dropped a couple of features from CS2002.&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;If you remember&amp;nbsp;CS2002 allowed&amp;nbsp;importing xml files in the elementcentric format. We have now dropped&amp;nbsp;importing catalog data in the elementric centric format. We will however provide a script which will allow you to import these types of xml files. You should however note that the element centric format is now deprecated.&lt;/P&gt;
&lt;P&gt;2. We no longer support&amp;nbsp;importing catalog data&amp;nbsp;from CSV files. This might be provided as an SDK tool in the future. &lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=545098" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>The new catalog system in Commerce Server 2007 ... Part II</title><link>http://blogs.msdn.com/vinayakt/archive/2006/03/06/The-new-catalog-system-in-Commerce-Server-2007-_2E002E002E00_-Part-II.aspx</link><pubDate>Mon, 06 Mar 2006 10:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:544347</guid><dc:creator>vinayakt</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/544347.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=544347</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;5. New features in Export&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Import/Export is one of the features we took a new look at in Commerce Server 2007, studied&amp;nbsp;customer feedback and came &amp;nbsp;up with a number of configurable options which should address most of typical scenarios like staging, LOB adapters, trading partners etc. These are the things you can do with export&lt;/P&gt;
&lt;P&gt;1.&lt;STRONG&gt;Exporting to client machines: &lt;/STRONG&gt;The 2007 catalog system now allows you to export data&amp;nbsp;to client machines. In addition to catalog data you can now export catalogset and inventory information. The client side export functionality has been built in the catalog system and you don't need to install additional external assemblies.&lt;/P&gt;
&lt;P&gt;2. &lt;STRONG&gt;Modes: &lt;/STRONG&gt;The catalog system now allows you to export all your catalog data (Full mode) or you can specify which data should be exported by specifying an expression(Expression based mode). The expression based export can be further&amp;nbsp;fine grained&amp;nbsp;based on other options discussed later. &lt;/P&gt;
&lt;P&gt;3. &lt;STRONG&gt;Exporting empty values: &lt;/STRONG&gt;By default empty (null or empty) values for a property are not exported. You can use this option to specify that properties whose value is null or empty should also be exported.&lt;/P&gt;
&lt;P&gt;4. &lt;STRONG&gt;Exporting deleted items: &lt;/STRONG&gt;The catalog system keeps track of products and categories deleted from individual catalogs. You can use this option to export these deleted items to your xml file. This option is particularly useful if you want to use import/export for staging data from staging to production servers and delete catalog items deleted from your staging server on your production server.&lt;/P&gt;
&lt;P&gt;5. &lt;STRONG&gt;Specify catalogs to export: &lt;/STRONG&gt;You&amp;nbsp;can now specify a list of catalogs to be exported. If not specified all base and virtual catalogs will be exported.&lt;/P&gt;
&lt;P&gt;6.&lt;STRONG&gt;Specify properties to export:&lt;/STRONG&gt; &amp;nbsp;Similar to specifying catalogs to export you can also specify which of the category and product properties you want to be exported to the xml file. This option is particulary useful if you want to send xml files to your vendors but dont want&amp;nbsp;competitive data like list price, quantity etc to be exported to the&amp;nbsp;xml file.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;7. &lt;STRONG&gt;Controlling &amp;nbsp;data to be exported:&lt;/STRONG&gt;As I&amp;nbsp;noted in point 2, you can now use expressions to control which data should be exported. If you look at the CatalogExportOptions class, you will see that there are three properties on this class which allow you to control this behavior. The &lt;STRONG&gt;ProductsAndCategoriesClause&lt;/STRONG&gt;&amp;nbsp; allows you to specify an expression which will be applied on each catalog that being exported. For eg this clause can be something like "IsActive=1 and Lastmodified &amp;gt; '2006/03/03' " which means export all the catalogs items which are active and which have been modified after '2006/03/03'. &lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;FilterDescendantsClause&lt;/STRONG&gt; allows you to specify an additional clause which will be applied to the results of the &lt;STRONG&gt;ProductsAndCategoriesClause. &lt;/STRONG&gt;Extending the above example and specifying "cy_list_price&amp;gt; 99" for the FilterDescendantsClause means export all the catalog items which are active and have been modified after '2006/03/03' and which have a list price greater than 99 dollars.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;FilterDescendantsClause&lt;/STRONG&gt; allows you to specify an additional clause which will be applied to the results of the &lt;STRONG&gt;ProductsAndCategoriesClause. &lt;/STRONG&gt;There is a third option which allows you to control the set of records on which the &lt;STRONG&gt;FilterDescendantsClause &lt;/STRONG&gt;will be applied. This is the &lt;STRONG&gt;Descendants &lt;/STRONG&gt;option and it has three values&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. &lt;STRONG&gt;None &lt;/STRONG&gt;: means that the &lt;STRONG&gt;FilterDescendantsClause &lt;/STRONG&gt;will be applied on the&amp;nbsp;records that are obtained by applying the&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;ProductsAndCategoriesClause. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b. &lt;STRONG&gt;ImmediateChildren&lt;/STRONG&gt; : means that the &lt;STRONG&gt;FilterDescendantsClause &lt;/STRONG&gt;will be applied on the records that are obtained by applying the&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;ProductsAndCategoriesClause &lt;/STRONG&gt;and the immediate ( first level ) children&amp;nbsp; of these records&lt;STRONG&gt;. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.&amp;nbsp;&lt;STRONG&gt;All&lt;/STRONG&gt; : means that the &lt;STRONG&gt;FilterDescendantsClause &lt;/STRONG&gt;will be applied on the records that are obtained by applying the&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;ProductsAndCategoriesClause &lt;/STRONG&gt;and&amp;nbsp;all the (descendant) children of these records&lt;STRONG&gt;. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The algorithm for this is something like:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1. Apply the &lt;STRONG&gt;ProductsAndCategoriesClause &lt;/STRONG&gt;on the catalog.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; 2. If &lt;STRONG&gt;Descendants = ImmediateChildren&lt;/STRONG&gt; then get all the immediate children of the records obtained in step 1 else if &lt;STRONG&gt;Descendants =&amp;nbsp;All&lt;/STRONG&gt; then get all the descendants of the records obtained in step 1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;3. Apply the &lt;STRONG&gt;FilterDescendantsClause &lt;/STRONG&gt;on the records obtained in step 2. These will the items that will be exported&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Let's consider an example to make this less confusing. Suppose that you have the following hierarchy in a base catalog:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE id=table1 width="57%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=62&gt;Category&lt;/TD&gt;
&lt;TD width=67&gt;ProductId&lt;/TD&gt;
&lt;TD width=63&gt;VariantId&lt;/TD&gt;
&lt;TD width=88&gt;IsActive&lt;/TD&gt;
&lt;TD width=88&gt;cy_list_price&lt;/TD&gt;
&lt;TD&gt;Parent&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;Category1&lt;/TD&gt;
&lt;TD width=67&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=63&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=88&gt;1&lt;/TD&gt;
&lt;TD width=88&gt;10&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;Category2&lt;/TD&gt;
&lt;TD width=67&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=63&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=88&gt;1&lt;/TD&gt;
&lt;TD width=88&gt;99&lt;/TD&gt;
&lt;TD&gt;Category1&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=67&gt;ProductFamily1&lt;/TD&gt;
&lt;TD width=63&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=88&gt;1&lt;/TD&gt;
&lt;TD width=88&gt;55&lt;/TD&gt;
&lt;TD&gt;Category2&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=67&gt;ProductFamily1&lt;/TD&gt;
&lt;TD width=63&gt;Variant1&lt;/TD&gt;
&lt;TD width=88&gt;0&lt;/TD&gt;
&lt;TD width=88&gt;57&lt;/TD&gt;
&lt;TD&gt;ProductFamily1&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=67&gt;Product1&lt;/TD&gt;
&lt;TD width=63&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=88&gt;0&lt;/TD&gt;
&lt;TD width=88&gt;89&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=67&gt;Product2&lt;/TD&gt;
&lt;TD width=63&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=88&gt;1&lt;/TD&gt;
&lt;TD width=88&gt;85&lt;/TD&gt;
&lt;TD&gt;Catgeory1&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=62&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=67&gt;Product3&lt;/TD&gt;
&lt;TD width=63&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width=88&gt;0&lt;/TD&gt;
&lt;TD width=88&gt;45&lt;/TD&gt;
&lt;TD&gt;Category2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;1. ProductsAndCategoriesClause&amp;nbsp;= "cy_list_price &amp;lt;59" ,&amp;nbsp;&amp;nbsp;FilterDescendantsClause = "IsActive=1", Descendants=None.&amp;nbsp;The&amp;nbsp;ProductsAndCategoriesClause will select Category1, Productfamily1 &amp;nbsp;and Product3. Since descendants is none the FilterDescendantsClause will be appied to the above three items and since Product3 is not active only category1 and&amp;nbsp;&amp;nbsp;Productfamily1&amp;nbsp;will be exported.&lt;/P&gt;
&lt;P&gt;2.ProductsAndCategoriesClause&amp;nbsp;= "cy_list_price &amp;lt;59" ,&amp;nbsp;&amp;nbsp;FilterDescendantsClause = "IsActive=1", Descendants=ImmediateChildren.&amp;nbsp;The&amp;nbsp;ProductsAndCategoriesClause will select Category1, Productfamily1 &amp;nbsp;and Product3. Since descendants is ImmediateChildren the immediate children of&amp;nbsp;&amp;nbsp;&amp;nbsp;Category1, Productfamily1 &amp;nbsp;and Product3 viz. Category2 and &amp;nbsp;Variant1 will also be selected as records to apply the FilterDescendantsClause on. This will result in Category1, Productfamily1 and Category2 to be exported.&lt;/P&gt;
&lt;P&gt;3. ProductsAndCategoriesClause&amp;nbsp;= "CategoryName='Category1'" ,&amp;nbsp;&amp;nbsp;FilterDescendantsClause = "IsActive=1", Descendants=All.&amp;nbsp;&lt;FONT size=2&gt;&lt;FONT size=3&gt;This means export all the descendants of Category1 which are active.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;As you can see a combination of these three options provide for any set of records to be exported from the catalog.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;8.&amp;nbsp;XSD &lt;STRONG&gt;support&lt;/STRONG&gt;: In addition to exporting catalog data the catalog system now allows you to export an xsd representation of the catalog xml schema. You can use this option to export an xsd. This will help you generate your own catalog xml files that confirm to the catalog xml schema. This will help you transfer data from external tables to the commerce server catalog system.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;9. &lt;STRONG&gt;Controlling exporting of the catalog schema:&lt;/STRONG&gt; The catalog xml file contains a CatalogSchema element which contains the properties and definitions used in the catalog system.By default the entire schema will get exported to the xml file. However you can now control how the schema is exported to the xml file using the&amp;nbsp;&lt;STRONG&gt;SchemaExportType &lt;/STRONG&gt;option&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. &lt;STRONG&gt;All, &lt;/STRONG&gt;is the&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;default and will export the entire&amp;nbsp;schema to the xml file&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;&amp;nbsp;&amp;nbsp; b. &lt;STRONG&gt;None&lt;/STRONG&gt;, will not export the CatalogSchema element to the xml file.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT size=3&gt;c. &lt;STRONG&gt;Relevant, &lt;/STRONG&gt;will export only the schema&amp;nbsp;contained&amp;nbsp;in the catalogs being exported to be exported to the xml file. For eg if there are two product definitions Books and CDs in your system and you only want to export the Books catalogs then using the Relevant option will export only the Books definition in the xml file.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;10. &lt;STRONG&gt;Exporting virtual catalogs as virtual catalogs&lt;/STRONG&gt;: Unlike CS 2002, you can now export a virtaul catalog as a virtual catalog. In this mode the XML file will contain a representation of the inclusion, exclusion and price rules in the virtual catalog. In addition you also have an option to export a virtual catalog as a base catalog wherein the contents of the virtual catalog will be exported in a base catalog format. This effectively converts your virtual catalog to a base catalog. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;11. &lt;STRONG&gt;Exporting dependent base catalogs: &lt;/STRONG&gt;Complementing option 10 is snother option for virtual catalogs which allows you to specify that when you export a virtual catalog, export the virtual catalog and also the base catalogs included in the virtual catalog.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;12. &lt;STRONG&gt;Exporting catalogsets:&lt;/STRONG&gt; You now have an option to export catalogsets to your xml file. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;13. &lt;STRONG&gt;Status reporting: &lt;/STRONG&gt;This is a new addition in CS 2007. All long running operations like import, export and virtual catalog rebuilds now report current status of the operation in terms of the percentage of the operation completed.The export can also be performed in a synchronous mode. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;14.&amp;nbsp;&lt;STRONG&gt;Cancelling an export operation&lt;/STRONG&gt;&amp;nbsp;: New in CS 2007 is the ability to cancel an export operation. &lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;As you can see there are a number of options which allow you to control how your information is exported. This opens a number of scenarios like staging data from staging to production servers, sending xml files to trading partners, allowing customers to download your catalog information using the web service in a secure and performant manner. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;As you will notice the new &lt;STRONG&gt;Staging and LOB adapters &lt;/STRONG&gt;that we introduced in CS2007 heavily rely on the import/export&amp;nbsp;features of the catalog system.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;While we added a number of cool features in CS2007 we also dropped a couple of features from CS2002.&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;If you remember&amp;nbsp;CS2002 allowed exporting catalog data in elementcentric and attributecentric formats. We have now dropped exporting catalog data in the&amp;nbsp;&lt;FONT size=2&gt;&amp;nbsp;&lt;FONT size=3&gt;elementcentric format. The reason behind this was that the elementcentric format was&amp;nbsp;used mostly in CS2000 and does not work well with schema validators.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;2. We no longer support exporting catalog data to CSV files.&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=544347" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>The new catalog system in Commerce Server 2007 ... Part I</title><link>http://blogs.msdn.com/vinayakt/archive/2006/03/05/The-new-catalog-system-in-Commerce-Server-2007-_2E002E002E00_-Part-I.aspx</link><pubDate>Sun, 05 Mar 2006 10:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:543918</guid><dc:creator>vinayakt</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/543918.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=543918</wfw:commentRss><description>&lt;P&gt;Commerce Server 2007 offers the following major enhancements to the catalog system since Commerce Server 2002.&lt;/P&gt;
&lt;P&gt;1. &lt;STRONG&gt;Programming model : &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;The catalog system is one of the components which has been completely rewritten in managed code. The COM objects will no longer be supported. The entire catalog functionality will now be available&amp;nbsp;as web service methods.&amp;nbsp;Since it is not easy to&amp;nbsp;program against the web service methods directly, we have provided a managed assembly which will contain a developer friendly object model to program against. More importantly these methods can be invoked in the web service mode or in inproc mode (for improved performance). We are also introducing strongly typed collections instead of datasets. The exception model is also very flexible and developer friendly.Compared to the COM objects you will find this model rich in functionality, performant, developer friendly and more importantly consistent. &lt;/P&gt;
&lt;P&gt;2. &lt;STRONG&gt;Unified Property Store&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Commerce server 2002 allowed extending products and categories by adding properties to the definitions. We also supported extending catalog and property definitions by adding user defined attributes.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;In Commerce Server 2007, we added a new Inventory component and also rearchitected&amp;nbsp;the usage of the property definitions and the extension model in the catalog system. You can now&amp;nbsp;create a property in the catalog system and use it to extend the property definitions, catalog definitions, product and category definitions, inventory catalogs and inventory skus. For eg you can create a property named VendorId and use it to extend the Catalog definitions. This will allow you to associate a vendor id for each catalog. In addition you can use the same property to extend the inventory catalogs and associate vendor ids to your inventory catalogs. This model now allows you to defined your properties &amp;nbsp;in the catalog system and use it to extend other entities in the catalog and inventory systems in a consistent manner. This should greatly improve the maintainability, extensibility and consistency of the new extension model.We have also added support to add languages to property definitions to allow display names to be defined&amp;nbsp;in each language.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;3. &lt;STRONG&gt;New features in Base catalogs&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Ranking&lt;/STRONG&gt; : You can now rank child products and categories in a category, variants in a product family and root products and categories in base catalogs. This will allow you to control how products and categories are displayed on your runtime site. For eg you can rank your products in such a way that important products are displayed at the top and less important products at the bottom. In addition to catalog items you can also rank related products and categories thereby allowing you to control display of cross relationships.You can also rank the enumeration values for an enumeration property. This is important for a property like Size which has values Large, Small and Medium and you want to control how they are displayed to the user. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;Display Names&lt;/STRONG&gt;: We have now added the ability to&amp;nbsp;provide displaynames&amp;nbsp;for categories, products and variants. &lt;/P&gt;
&lt;P&gt;4.&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;New features in&amp;nbsp;virtual catalogs&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Given that virtual catalogs&amp;nbsp;was a V1 feature in Commerce server 2002 it was only natural that we improve upon it in Commerce server 2007.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Ranking&lt;/STRONG&gt; : Just as in base catalogs you can now rank child products and categories in a category, variants in a product family and root products and categories in&amp;nbsp;virtual catalogs. In addition you can either inherit the ranking from base catalogs or override ranks in the virtual catalog. The same goes for ranking relationships.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;Overriding prices and properties in virtual catalog&amp;nbsp;: &lt;/STRONG&gt;You can now override property values and prices of base catalog items in virtual catalogs.&amp;nbsp; For eg if a product has a description "foo" in a base catalog and you include this product in a virtual catalog you can now change the description of this product to "bar". In adition to properties you can also override prices of products in the virtual catalog. For eg if a product has a price of 200 dollars in the base catalog and you include it in a virtual catalog with a 50% discount the product will now have a price 100 dollars in the virtual catalog. The new virtual catalog system now allows you to override this price and set it to 75 dollars. Once you override a property value or a price you can also reset it so that it inherits these values from the base catalog. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Adding rules from virtual catalog : &lt;/STRONG&gt;The new virtual catalog system now allows you to add rules from another virtual catalog. There is however a limitation to this.A virtual catalog can contain rules from (one or more) base catalogs or one virtual catalog. This opens a numer of scenarios. You can now aggregate one or more base catalogs (possibly from your vendors or distributors) in one virtual catalog and then create another virtual catalog (off this virtual catalog ) for your customers.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;More features in the &lt;A href="http://blogs.msdn.com/vinayakt/archive/2006/03/06/544347.aspx"&gt;next post &lt;/A&gt;..... &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=543918" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item><item><title>What's new in Commerce Server 2007?</title><link>http://blogs.msdn.com/vinayakt/archive/2006/03/04/What_2700_s-new-in-Commerce-Server-2007_3F00_.aspx</link><pubDate>Sat, 04 Mar 2006 09:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:543492</guid><dc:creator>vinayakt</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vinayakt/comments/543492.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vinayakt/commentrss.aspx?PostID=543492</wfw:commentRss><description>&lt;P&gt;Twenty months back when we started planning for the next release of Commerce Server I had written a post asking for &lt;A href="http://blogs.msdn.com/vinayakt/archive/2004/05/21/136533.aspx"&gt;feedback&lt;/A&gt;&amp;nbsp;on Commerce Server 2007. Now twenty months later we are&amp;nbsp;on track&amp;nbsp;to ship Commerce Server 2007 sometime soon. Commerce server 2007 beta was released in December, '05&amp;nbsp;and is available for &lt;A href="http://www.microsoft.com/commerceserver/evaluation/2006/beta.mspx"&gt;download&lt;/A&gt;. The first drop of the &lt;A href="http://blogs.msdn.com/rdonovan/archive/2006/01/20/515351.aspx"&gt;Starter Site&lt;/A&gt;&amp;nbsp;and the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CS06Default/html/02afcee1-5546-4acc-b053-2aa6d7762bd3.asp?frame=true"&gt;documentation &lt;/A&gt;are also available.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Given that this is the first major Commerce Server release since Commerce Server 2002 the obvious question is "What's new in Commerce Server 2007"?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;These are just some of the new features in Commerce Server 2007&lt;/P&gt;
&lt;P&gt;1. The biggest feature is the architectural change in the major commerce components to use the web service model.What this means is that the functionality of the catalog, orders, marketing and profiles systems is now available&amp;nbsp;as web services. Some of these components have been fully written in managed code and provide a developer friendly object model to program against.&lt;/P&gt;
&lt;P&gt;2. A flexible role based security model based on Windows Authorization manager which defines which users can perform which operations based on their role has been built in the catalog , orders, marketing and profiles systems. &lt;/P&gt;
&lt;P&gt;3. Performant Winforms UI for managing catalog schema, managing catalogs, marketing and orders. &lt;/P&gt;
&lt;P&gt;4. A C# based production ready starter site which demostrates how to use the commerce components.&lt;/P&gt;
&lt;P&gt;5. A new Inventory component, tightly integrated with the catalog system which will allow you to store, update and maintain inventory information for products and variants and also control how they are rendered on the site based on their inventory levels.&lt;/P&gt;
&lt;P&gt;6. Staging data from staging servers to production servers was a big issue in previous releases. We now have a product team tested staging module which will allow staging your commerce data from staging to production servers. &lt;/P&gt;
&lt;P&gt;7. LOB adapters for inventory, catalog, orders and profiles.The will help you build Connected Commerce applications that will easily tie your Commerce Server deployment into LOB systems, trading partners, or other Commerce Server deployments.&lt;/P&gt;
&lt;P&gt;8. Revamped orders systems.&lt;/P&gt;
&lt;P&gt;9. Major improvements in the catalog system especially virtual catalogs, search functionality, security and ranking. More on this later. &lt;/P&gt;
&lt;P&gt;10. MOM pack for monitoring the state of your commerce server deployment.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=543492" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vinayakt/archive/tags/New+Catalog+Features+in+CS2007/default.aspx">New Catalog Features in CS2007</category></item></channel></rss>