<?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>Alan Faulkner's Forefront Security Blog</title><link>http://blogs.msdn.com/akfaulkner/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Microsoft Forefront Codename "Stirling" Beta 1</title><link>http://blogs.msdn.com/akfaulkner/archive/2008/04/24/microsoft-forefront-codename-stirling-beta-1.aspx</link><pubDate>Fri, 25 Apr 2008 05:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8423291</guid><dc:creator>akfaulkner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/8423291.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=8423291</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=8423291</wfw:comment><description>&lt;P&gt;Hey Folks&lt;/P&gt;
&lt;P&gt;As you might know, we released Microsoft Forefront Codename "Stirling" a couple of weeks ago at RSA 2008.&amp;nbsp; I encourage you all to watch the demo, download the product, and give it a try.&amp;nbsp;&amp;nbsp; Please send feedback as well through the Connect program - your feedback is invaluable!&lt;/P&gt;
&lt;P&gt;Read more about it here: &lt;A href="http://www.microsoft.com/forefront/stirling/en/us/default.aspx"&gt;http://www.microsoft.com/forefront/stirling/en/us/default.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Enjoy&lt;/P&gt;
&lt;P&gt;Alan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8423291" width="1" height="1"&gt;</description></item><item><title>Welcome again - New Team and Focus!</title><link>http://blogs.msdn.com/akfaulkner/archive/2008/04/03/welcome-again-new-team-and-focus.aspx</link><pubDate>Fri, 04 Apr 2008 09:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8355901</guid><dc:creator>akfaulkner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/8355901.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=8355901</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=8355901</wfw:comment><description>&lt;P&gt;I have recently&amp;nbsp;made the switch from Commerce Server to Forefront Server team on the Stirling product.&amp;nbsp; See more information about Stirling here: &lt;A href="http://www.microsoft.com/forefront/prodinfo/roadmap/stirling.mspx"&gt;http://www.microsoft.com/forefront/prodinfo/roadmap/stirling.mspx&lt;/A&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I also worked on&amp;nbsp;FCS Enterprise Manager.&amp;nbsp; More information here: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=D9413461-9384-4B14-8A26-1E77E6D98182&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=D9413461-9384-4B14-8A26-1E77E6D98182&amp;amp;displaylang=en&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have taken a huge break on blogging but hope to get into it soon with some helpful posts!&lt;/P&gt;
&lt;P&gt;-Alan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8355901" width="1" height="1"&gt;</description></item><item><title>Sample Orchestration for Commerce Server 2007 Adapters on GotDotNet</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/11/14/sample-orchestration-for-commerce-server-2007-adapters-on-gotdotnet.aspx</link><pubDate>Wed, 15 Nov 2006 04:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1078943</guid><dc:creator>akfaulkner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/1078943.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=1078943</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=1078943</wfw:comment><description>&lt;P&gt;I have uploaded a sample BizTalk Orchestration on GotDotNet.&amp;nbsp; You can download it &lt;A class="" href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=77487df3-96dc-41de-9ca0-b7f284a8c113" mce_href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=77487df3-96dc-41de-9ca0-b7f284a8c113"&gt;here&lt;/A&gt;, under the Release section.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here are the instructions for using the orchestration (these instructions are also contained in the sample project):&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp; You will need to compile the Commerce Server Adapters located in the SDK: %ProgramFiles%\Commerce Server 2007\SDK\Adapters\MessageSchemas.&lt;BR&gt;2.&amp;nbsp; You will need to add a reference to the compiled schema's dll to this sample orchestration&lt;BR&gt;3.&amp;nbsp; You will need to modify the Biztalk Server name in the deployment settings of the project.&lt;BR&gt;4.&amp;nbsp; Once you deploy the orchestration - You will need to bind the ports.&amp;nbsp; You can do this through BizTalk 2006 Administration Console.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Hope this Helps.&lt;/P&gt;
&lt;P&gt;Alan&lt;BR&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1078943" width="1" height="1"&gt;</description></item><item><title>Commerce Server Community now on MSDN Forums</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/11/06/commerce-server-community-now-on-msdn-forums.aspx</link><pubDate>Tue, 07 Nov 2006 05:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1008636</guid><dc:creator>akfaulkner</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/1008636.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=1008636</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=1008636</wfw:comment><description>&lt;P&gt;We have officially opened our new Commerce Server Community Support Group on MSDN Forums.&lt;/P&gt;
&lt;P&gt;We would love for you to&amp;nbsp;&lt;A class="" href="http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=294&amp;amp;SiteID=1" mce_href="http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=294&amp;amp;SiteID=1"&gt;join&lt;/A&gt; and post any questions&amp;nbsp;or issues that you have with Commerce Server 2007 or Commerce Server 2002.&amp;nbsp; You must have a Microsoft Passport&amp;nbsp;account to post questions or issues.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Hope to see you all there!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Alan&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1008636" width="1" height="1"&gt;</description></item><item><title>DW/A Class Creation Script from Webcast</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/11/03/dw-a-class-creation-script-from-webcast.aspx</link><pubDate>Fri, 03 Nov 2006 20:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:943443</guid><dc:creator>akfaulkner</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/943443.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=943443</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=943443</wfw:comment><description>&lt;P&gt;If you have seen our &lt;A class="" href="http://www.microsoft.com/technet/prodtechnol/comm/2007/webcasts.mspx" mce_href="http://www.microsoft.com/technet/prodtechnol/comm/2007/webcasts.mspx"&gt;DW/A WebCast Series&lt;/A&gt;, I have placed the script that was used to create the DiscountsApplied DW/A Class.&amp;nbsp; Enjoy!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'Create an ADO connection object.&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim cnnConnection&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set cnnConnection = CreateObject("ADODB.Connection")&lt;/P&gt;
&lt;P&gt;'Create an ADO command object.&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim cmdCommand&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set cmdCommand = CreateObject("ADODB.Command")&lt;/P&gt;
&lt;P&gt;'Create an ADO record object.&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim recNew&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set recNew = CreateObject("ADODB.Record")&lt;/P&gt;
&lt;P&gt;'Open a connection (bind) to the provider.&lt;BR&gt;'Modify the values for Catalog, Database, User, and Password to match your&lt;BR&gt;'resources.&lt;BR&gt;&amp;nbsp;&amp;nbsp; cnnConnection.Open "URL=mscop://InProcConnect/Server=localhost:" &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Catalog=DWSchema:Database=StarterSite_datawarehouse:Trusted_Connection=Yes:" &amp;amp; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "FastLoad=True"&lt;/P&gt;
&lt;P&gt;'Set the connection in the command object.&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set cmdCommand.ActiveConnection = cnnConnection &lt;/P&gt;
&lt;P&gt;'Turn on "Schema Change" mode.&lt;BR&gt;'SchemaMode can be set to On, True, or 1 to turn the&lt;BR&gt;' schema change mode on. &lt;BR&gt;&amp;nbsp;&amp;nbsp; cmdCommand.CommandText = "SchemaMode=1"&lt;BR&gt;&amp;nbsp;&amp;nbsp; cmdCommand.Execute&lt;/P&gt;
&lt;P&gt;'Create a new class in the Class Definition table.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Open "Class/DiscountsApplied", cnnConnection, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adModeWrite, adCreateOverwrite&lt;/P&gt;
&lt;P&gt;'Set the attributes.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("ClassDefName") = "DiscountsApplied"&lt;BR&gt;'Always set SourceDefName to test_Source for new classes. &lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("SourceDefName") = "test_Source"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("Description") = "Discount Applied."&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("GenerateTableDef") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("GeneratePartitionDef") = 1&lt;/P&gt;
&lt;P&gt;'Create your own key.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("GenerateKeyDef") = 0&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; recNew("GenerateIdentity") = 1&lt;/P&gt;
&lt;P&gt;'Save the new row.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("__Commit") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Fields.Update&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Close&lt;/P&gt;
&lt;P&gt;'Create an instance in the Member Definition table for the first member.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Open "Member/DiscountsApplied/OrderGroupId", cnnConnection, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adModeWrite, adCreateOverwrite&lt;/P&gt;
&lt;P&gt;'Set the attributes.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("ClassDefName") = DiscountsApplied&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("TypeName") = "UUID"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("Description") = "Identifier for an Order Group."&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("IsPrimaryKey") = 0&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("DefaultValueAsStr") = "{00000000-0000-0000-0000-000000000000}"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("MemberDefName") = "OrderGroupId"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("GenerateColumnDef") = 1&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'Save the new row.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("__Commit") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Fields.Update&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Close&lt;/P&gt;
&lt;P&gt;'Create an instance in the Member Definition table for the first member.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Open "Member/DiscountsApplied/LineItemId", cnnConnection, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adModeWrite, adCreateOverwrite&lt;/P&gt;
&lt;P&gt;'Set the attributes.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("ClassDefName") = DiscountsApplied&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("TypeName") = "UUID"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("Description") = "Identifier for an Line Item."&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("IsPrimaryKey") = 0&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("DefaultValueAsStr") = "{00000000-0000-0000-0000-000000000000}"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("MemberDefName") = "LineItemId"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("GenerateColumnDef") = 1&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'Save the new row.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("__Commit") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Fields.Update&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Close&lt;/P&gt;
&lt;P&gt;'Create an instance in the Class Key Definition table.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Open "Key/DiscountsAppliedKey", cnnConnection, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adModeWrite, adCreateOverwrite&lt;/P&gt;
&lt;P&gt;'Set the attributes.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("ClassDefName") = "DiscountsApplied"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("Description") = "Unique key for the DiscountsApplied class."&lt;/P&gt;
&lt;P&gt;'Save the new row.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("__Commit") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Fields.Update&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Close&lt;/P&gt;
&lt;P&gt;'Create an instance in the Key Member table for the first member.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Open "KeyMember/DiscountsAppliedKey/ordergroup_id", _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnnConnection, adModeWrite, adCreateOverwrite&lt;/P&gt;
&lt;P&gt;'Set the attributes for the first key member.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recnew("MemDefName") = "OrderGroupId"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("OrdinalPosInKey") = 0&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("Description") = "First member of DiscountsAppliedKey."&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("KeyDefName") = DiscountsAppliedKey&lt;/P&gt;
&lt;P&gt;'Save the new row.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("__Commit") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Fields.Update&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Close&lt;/P&gt;
&lt;P&gt;'Create an instance in the Key Member table for the second member.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Open "KeyMember/DiscountsAppliedKey/OrderForm_Id", _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnnConnection, adModeWrite, adCreateOverwrite&lt;/P&gt;
&lt;P&gt;'Set the attributes for the second key member.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recnew("MemDefName") = "LineItemId"&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("OrdinalPosInKey") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("Description") = "Second member of DiscountsAppliedKey."&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("KeyDefName") = DiscountsAppliedKey&lt;/P&gt;
&lt;P&gt;'Save the new row.&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew("__Commit") = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Fields.Update&lt;BR&gt;&amp;nbsp;&amp;nbsp; recNew.Close&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;'Commit the changes to the Data Warehouse schema.&lt;BR&gt;&amp;nbsp;&amp;nbsp; cmdCommand.CommandText = "CommitSchema"&lt;BR&gt;&amp;nbsp;&amp;nbsp; cmdCommand.Execute&lt;/P&gt;
&lt;P&gt;'Turn off "Schema Change" mode.&lt;BR&gt;'If SchemaMode is set to a value other than On, True, or 1&lt;BR&gt;' it is turned off. &lt;BR&gt;&amp;nbsp;&amp;nbsp; cmdCommand.CommandText = "SchemaMode=0"&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp; cmdCommand.Execute&lt;/P&gt;
&lt;P&gt;'Close the connection.&lt;BR&gt;&amp;nbsp;&amp;nbsp; cnnConnection.Close&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Hope this helps!&lt;/P&gt;
&lt;P&gt;Alan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=943443" width="1" height="1"&gt;</description></item><item><title>Three new Data Warehouse WebCast published!</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/11/02/three-new-data-warehouse-webcast-published.aspx</link><pubDate>Fri, 03 Nov 2006 09:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:939459</guid><dc:creator>akfaulkner</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/939459.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=939459</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=939459</wfw:comment><description>&lt;P&gt;We added three new webcasts as part of a series on extending the Data Warehouse.&amp;nbsp; Here are the details, be sure to check them out!&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=label&gt;&lt;A href="mms://wm.microsoft.com/ms/commerceserver/DWASimpleOrderStatus.wmv"&gt;Commerce Server Data Warehouse&lt;/A&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;B&gt;Presenters: &lt;/B&gt;&lt;I&gt;Brian Blum and Alan Faulkner, Microsoft&lt;/I&gt;&lt;BR&gt;The Commerce Server Data Warehouse is a combination of a SQL Server database, an Online Analytical Processing (OLAP) database, and a set of processes that a system administrator uses to import and maintain data. In this three-part series, Brian and Alan will walk you through extending the Data Warehouse logical schema. In the first installment, you will &lt;A href="mms://wm.microsoft.com/ms/commerceserver/DWASimpleOrderStatus.wmv"&gt;learn how to extend an existing Data Warehouse class&lt;/A&gt;. The second installment illustrates the &lt;A href="mms://wm.microsoft.com/ms/commerceserver/DWAAdvancedDiscountApplied.wmv"&gt;creation of a new Data Warehouse class&lt;/A&gt;. The third installment illustrates &lt;A href="mms://wm.microsoft.com/ms/commerceserver/DWAProfiles.wmv"&gt;how to add a multi-value Data Warehouse class member&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Be sure to check out other Commerce Server 2007 webcasts&amp;nbsp;here: &lt;A href="http://www.microsoft.com/technet/prodtechnol/comm/2007/webcasts.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/comm/2007/webcasts.mspx&lt;/A&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps!&lt;/P&gt;
&lt;P&gt;Alan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=939459" width="1" height="1"&gt;</description></item><item><title>How to extend the Data Warehouse to include a custom Commerce Server event (Part 2)</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/10/30/how-to-extend-the-data-warehouse-to-include-a-custom-commerce-server-event-part-2.aspx</link><pubDate>Tue, 31 Oct 2006 02:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:904965</guid><dc:creator>akfaulkner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/904965.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=904965</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=904965</wfw:comment><description>&lt;P&gt;This is the second part of a three part series in extending the Data Warehouse.&amp;nbsp; To recap the first part, take a look at this post &lt;A href="http://blogs.msdn.com/akfaulkner/archive/2006/09/08/746956.aspx" mce_href="http://blogs.msdn.com/akfaulkner/archive/2006/09/08/746956.aspx"&gt;here.&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;This part will focus on adding a new Data Warehouse class for the MusicDownload event and adding the event to the&amp;nbsp;CommerceEvent table&amp;nbsp;in the Data Warehouse database.&lt;/P&gt;
&lt;P&gt;Let's get right to it:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;First, we need to create the MusicDownload.&amp;nbsp; We will do this by executing the below script (you can take this script and modify it for your specific class/event):&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;'------------------------------------------------&lt;BR&gt;' Creates the Wishlist01 class for use with the &lt;BR&gt;' Extending Commerce Events sample and the &lt;BR&gt;' Commerce Server 2007 Data Warehouse.&lt;BR&gt;'------------------------------------------------ &lt;/LI&gt;
&lt;P&gt;Public Const fPrimaryKey = 1&lt;BR&gt;Public Const fMultiValued = 2&lt;BR&gt;Public Const fHasDefaultVal = 4&lt;BR&gt;Public Const fIsRequired = 8&lt;BR&gt;Public Const fIsJoinKey = 16&lt;BR&gt;Public Const fDontClear = 32&lt;BR&gt;Public Const fGenerateColDef = 64&lt;BR&gt;Public Const fIsUniqueKey = 128&lt;BR&gt;Public Const fIsIdentityMember = 256 
&lt;P&gt;'--- flags for clsdef&lt;BR&gt;Public Const fGenerateIdentity = &amp;amp;H1&lt;BR&gt;Public Const fGenerateTableDef = &amp;amp;H2&lt;BR&gt;Public Const fGenerateKeyDef = &amp;amp;H4&lt;BR&gt;Public Const fGeneratePartDef = &amp;amp;H8&lt;BR&gt;Public Const fIsAbstract = &amp;amp;H10 
&lt;P&gt;Public Const fHasAggrExp = &amp;amp;H100 'member is aggregate&lt;BR&gt;Public Const fIsDimension = &amp;amp;H1000&lt;BR&gt;Public Const fIsMeasure = &amp;amp;H10000 
&lt;P&gt;Main&lt;BR&gt;Sub Main() 
&lt;P&gt;'Create an ADO connection object.&lt;BR&gt;Dim objConn&lt;BR&gt;Set objConn = CreateObject("ADODB.Connection")&lt;BR&gt;'Create an ADO command object.&lt;BR&gt;Dim cmdCommand&lt;BR&gt;Set cmdCommand = CreateObject("ADODB.Command")&lt;BR&gt;'Create an ADO record object.&lt;BR&gt;Dim recNew&lt;BR&gt;Set recNew = CreateObject("ADODB.Record")&lt;BR&gt;'Open a connection to the provider.&lt;BR&gt;'Modify the connection string to match your configuration. &lt;BR&gt;objConn.Open "URL=mscop://InProcConnect/Server=localhost:" &amp;amp; _&lt;BR&gt;"Catalog=DWSchema:Database=Startersite_datawarehouse: Trusted_Connection=Yes:" _&lt;BR&gt;&amp;amp; "FastLoad=True"&lt;BR&gt;'Set the connection in the command object.&lt;BR&gt;Set cmdCommand.ActiveConnection = objConn&lt;BR&gt;'Turn on "Schema Change" mode.&lt;BR&gt;cmdCommand.CommandText = "SchemaMode=1"&lt;BR&gt;cmdCommand.Execute&lt;BR&gt;' This is the event name&lt;BR&gt;strClsDef="MusicDownload"&lt;BR&gt;'Create a class.&lt;BR&gt;'Always set SourceDefName to test_Source for new classes. &lt;BR&gt;CreateClassDef objConn, strClsDef, "DWSchema", "test_Source", "", _&lt;BR&gt;False&lt;BR&gt;'-- MEM1 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "Event" &lt;BR&gt;strMemDefType = "WSTR"&lt;BR&gt;strDefVal = "0"&lt;BR&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType , _&lt;BR&gt;lMemFlags, strDefVal, strAggrExp 
&lt;P&gt;'-- MEM1 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "Artist" &lt;BR&gt;strMemDefType = "WSTR"&lt;BR&gt;strDefVal = "0"&lt;BR&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal,strAggrExp &lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "Album" &lt;BR&gt;strMemDefType = "WSTR"&lt;BR&gt;strDefVal = "0"&lt;BR&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags , strDefVal,strAggrExp &lt;BR&gt;'-- MEM2 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "Title" &lt;BR&gt;strMemDefType = "WSTR"&lt;BR&gt;strDefVal = "0"&lt;BR&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal,strAggrExp 
&lt;P&gt;'The follwoing members are the required for every Commerce Event. 
&lt;P&gt;'-- MEM4 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "DTimeStamp" &lt;BR&gt;strMemDefType = "FILETIME"&lt;BR&gt;strDefVal = "1900-1-1 0:0:0.0" 
&lt;P&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal, strAggrExp &lt;BR&gt;'-- MEM8 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "VisitNum" &lt;BR&gt;strMemDefType = "INT64"&lt;BR&gt;strDefVal = "0" 
&lt;P&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal, strAggrExp 
&lt;P&gt;'-- MEM5 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "RequestIndex" &lt;BR&gt;strMemDefType = "SHORT"&lt;BR&gt;strDefVal = "0" 
&lt;P&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal, strAggrExp 
&lt;P&gt;'-- MEM6 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "UriKey" &lt;BR&gt;strMemDefType = "INT64"&lt;BR&gt;strDefVal = "0" 
&lt;P&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal, strAggrExp 
&lt;P&gt;'-- MEM7 : create non key member&lt;BR&gt;lMemFlags = fGenerateColDef + fHasDefaultVal&lt;BR&gt;strMemDef = "UserKey" &lt;BR&gt;strMemDefType = "INT64"&lt;BR&gt;strDefVal = "0" 
&lt;P&gt;CreateMemberDef objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags, strDefVal, strAggrExp 
&lt;P&gt;strChildClassName = strClsDef&lt;BR&gt;iRelType = 5 'indicating virtual relationship for performance&lt;BR&gt;'reasons 
&lt;P&gt;'-- Rel1 : create virtual relationship to uri&lt;BR&gt;strParentClassName = "URI"&lt;BR&gt;strRelDefName = strParentClassName &amp;amp; strChildClassName &amp;amp; "Rel"&lt;BR&gt;strParentClassKey = strParentClassName &amp;amp; "Key" 
&lt;P&gt;CreateRelDef objConn, strRelDefName, strParentClassName, _&lt;BR&gt;strChildClassName, strParentClassKey, iRelType 
&lt;P&gt;'-- Rel2 : create virtual relationship to loguser&lt;BR&gt;strParentClassName = "LogUser"&lt;BR&gt;strRelDefName = strParentClassName &amp;amp; strChildClassName &amp;amp; "Rel"&lt;BR&gt;strParentClassKey = strParentClassName &amp;amp; "Key" 
&lt;P&gt;CreateRelDef objConn, strRelDefName, strParentClassName, _&lt;BR&gt;strChildClassName, strParentClassKey, iRelType 
&lt;P&gt;iRelType = 2 'indicating real relattionship 
&lt;P&gt;'-- Rel3 : create relationship to Registereduser&lt;BR&gt;strParentClassName = "RegisteredUser"&lt;BR&gt;strRelDefName = strParentClassName &amp;amp; strChildClassName &amp;amp; "Rel"&lt;BR&gt;strParentClassKey = strParentClassName &amp;amp; "Key" 
&lt;P&gt;CreateRelDef objConn, strRelDefName, strParentClassName, _&lt;BR&gt;strChildClassName, strParentClassKey, iRelType 
&lt;P&gt;'-- Rel4 : create relationship to Site&lt;BR&gt;strParentClassName = "Site"&lt;BR&gt;strRelDefName = strParentClassName &amp;amp; strChildClassName &amp;amp; "Rel"&lt;BR&gt;strParentClassKey = strParentClassName &amp;amp; "Key" 
&lt;P&gt;CreateRelDef objConn, strRelDefName, strParentClassName, _&lt;BR&gt;strChildClassName, strParentClassKey, iRelType 
&lt;P&gt;'-- Rel5 : create relationship to TaskHistory&lt;BR&gt;strParentClassName = "TaskHistory"&lt;BR&gt;strRelDefName = strParentClassName &amp;amp; strChildClassName &amp;amp; "Rel"&lt;BR&gt;strParentClassKey = strParentClassName &amp;amp; "Key" 
&lt;P&gt;CreateRelDef objConn, strRelDefName, strParentClassName, _&lt;BR&gt;strChildClassName, strParentClassKey, iRelType 
&lt;P&gt;'------------------------------------------------&lt;BR&gt;' Commit Schema&lt;BR&gt;'------------------------------------------------&lt;BR&gt;cmdCommand.CommandText = "CommitSchema"&lt;BR&gt;cmdCommand.Execute 
&lt;P&gt;'Turn on "Schema Change" mode&lt;BR&gt;cmdCommand.CommandText = "SchemaMode=0"&lt;BR&gt;cmdCommand.Execute 
&lt;P&gt;End Sub 
&lt;P&gt;'----------------------------------------------------------------------&lt;BR&gt;' Procedure : CreateClassDef&lt;BR&gt;' Parameters : objConn&lt;BR&gt;' strClsDef - name of classdef to be created&lt;BR&gt;' strCatalog - catalog in which we want to create&lt;BR&gt;' strSrcDef - source definition name&lt;BR&gt;' strBaseClsName - this is useful for aggregations&lt;BR&gt;' simple classes can pass ""&lt;BR&gt;' bGenKeyDef = true - generate key definition &lt;BR&gt;' automatically&lt;BR&gt;' Notes : The schema change mode should have been set to true prior&lt;BR&gt;' to calling this function.&lt;BR&gt;' &lt;BR&gt;'----------------------------------------------------------------------&lt;BR&gt;Sub CreateClassDef(objConn, strClsDef, strCatalog, strSrcDef, _&lt;BR&gt;strBaseClsName, bGenKeyDef) 
&lt;P&gt;WScript.Echo "DBG: Class : " &amp;amp; strClsDef&lt;BR&gt;Dim rec&lt;BR&gt;Set rec = CreateObject("ADODB.Record")&lt;BR&gt;rec.Open "Class/" &amp;amp; strClsDef, objConn, 3, adCreateOverwrite&lt;BR&gt;rec("IsPersistent") = 1&lt;BR&gt;rec("ClassDefName") = strClsDef&lt;BR&gt;rec("SourceDefName") = strSrcDef&lt;BR&gt;rec("GeneratePartitionDef") = 1&lt;BR&gt;rec("GenerateTableDef") = 1&lt;BR&gt;If bGenKeyDef Then&lt;BR&gt;rec("GenerateKeyDef") = 1&lt;BR&gt;Else&lt;BR&gt;rec("GenerateKeyDef") = 0&lt;BR&gt;End If&lt;BR&gt;'to create an aggregate class --&lt;BR&gt;If strBaseClsName &amp;lt;&amp;gt; "" Then&lt;BR&gt;rec("BaseClassName") = strBaseClsName&lt;BR&gt;End If&lt;BR&gt;rec("GenerateIdentity") = 1&lt;BR&gt;rec("__Commit") = 1&lt;BR&gt;rec.Fields.Update&lt;BR&gt;rec.Close&lt;BR&gt;End Sub 
&lt;P&gt;'----------------------------------------------------------------------&lt;BR&gt;' Procedure : CreateMemberDef&lt;BR&gt;' Purpose : Utility to create members&lt;BR&gt;' Parameters : objConn&lt;BR&gt;' strClsDef - name of classdef&lt;BR&gt;' strMemDef - name of member&lt;BR&gt;' strMemDefType - type of the memberdef&lt;BR&gt;' lMemFlags - MemberDef Creation flags &lt;BR&gt;'&lt;BR&gt;' Notes : User is supposed to set the schema mode to updatable and&lt;BR&gt;' reset after the member is created.&lt;BR&gt;'----------------------------------------------------------------------&lt;BR&gt;Sub CreateMemberDef(objConn, strClsDef, strMemDef, strMemDefType, _&lt;BR&gt;lMemFlags , strDefVal,strAggrExp )&lt;BR&gt;Dim rec &lt;BR&gt;' On Error Resume Next&lt;BR&gt;WScript.Echo "DBG: Mem : " &amp;amp; strMemDef&lt;BR&gt;set rec = CreateObject("ADODB.Record")&lt;BR&gt;rec.Open "Member/" &amp;amp; strClsDef &amp;amp; "/" &amp;amp; strMemDef, objConn, _&lt;BR&gt;adModeReadWrite, adCreateOverwrite&lt;BR&gt;rec("MemberDefName") = strMemDef&lt;BR&gt;If (lMemFlags And fGenerateColDef) &amp;gt; 0 Then 'default case&lt;BR&gt;rec("GenerateColumnDef") = 1&lt;BR&gt;End If&lt;BR&gt;If (lMemFlags And fPrimaryKey) &amp;gt; 0 Then&lt;BR&gt;rec("IsPrimaryKey") = 1&lt;BR&gt;End If&lt;BR&gt;If (lMemFlags And fMultiValued) &amp;gt; 0 Then&lt;BR&gt;rec("IsMultiValued") = 1&lt;BR&gt;End If&lt;BR&gt;If (lMemFlags And fHasDefaultVal) &amp;gt; 0 Then&lt;BR&gt;rec("DefaultValueAsStr") = strDefVal&lt;BR&gt;End If&lt;BR&gt;If (lMemFlags And fIsUniqueKey) &amp;gt; 0 Then&lt;BR&gt;rec("IsUniqueKey") = 1&lt;BR&gt;End If&lt;BR&gt;If (lMemFlags And fIsIdentityMember) &amp;gt; 0 Then&lt;BR&gt;rec("IsIsIdentityMember") = 1&lt;BR&gt;End If 
&lt;P&gt;'Aggregate member, then set the aggregate expressions. &lt;BR&gt;if (lMemFlags And fHasAggrExp) &amp;gt; 0 then&lt;BR&gt;rec("ExpressionStr") = strAggrExp&lt;BR&gt;End if&lt;BR&gt;if (lMemFlags And fIsDimension) &amp;gt; 0 then&lt;BR&gt;rec("IsDimension") =1&lt;BR&gt;End if&lt;BR&gt;if (lMemFlags And fIsMeasure ) &amp;gt; 0 then&lt;BR&gt;rec("IsMeasure") = 1&lt;BR&gt;End if&lt;BR&gt;rec("TypeName") = strMemDefType&lt;BR&gt;rec("__Commit") = 1&lt;BR&gt;rec.Fields.Update&lt;BR&gt;rec.Close&lt;BR&gt;End Sub 
&lt;P&gt;'----------------------------------------------------------------------&lt;BR&gt;' Procedure: CreateRelationDef&lt;BR&gt;' Purpose: Create a Relation Definition&lt;BR&gt;' Notes : The classes that the parent and child referred to must&lt;BR&gt;' exist. The Keydefinition for the parent must exist &lt;BR&gt;' (1-M).&lt;BR&gt;'&lt;BR&gt;'----------------------------------------------------------------------&lt;BR&gt;Sub CreateRelDef(objConn, strRelName, strClsParent, strClsChild, _&lt;BR&gt;strKeyParent, iRelType)&lt;BR&gt;Dim rec &lt;BR&gt;'On Error Resume Next&lt;BR&gt;WScript.Echo "DBG: Rel : " &amp;amp; strRelName&lt;BR&gt;set rec = CreateObject("ADODB.Record")&lt;BR&gt;rec.Open "Relation/" &amp;amp; strRelName, objConn, adModeWrite, _&lt;BR&gt;adCreateOverwrite&lt;BR&gt;rec("ParentClassName") = strClsParent&lt;BR&gt;rec("ParentClasskey") = strKeyParent&lt;BR&gt;rec("ChildClassName") = strClsChild&lt;BR&gt;rec("RelType") = iRelType&lt;BR&gt;rec("__Commit") = 1&lt;BR&gt;rec.Fields.Update 
&lt;P&gt;rec.Close&lt;BR&gt;Set rec = Nothing&lt;BR&gt;End Sub&lt;/P&gt;&lt;/UL&gt;
&lt;LI&gt;Now that we have the event class in the Data Warehouse, you will notice that the Data Warehouse database has&amp;nbsp;a new&amp;nbsp;table created, which is the following:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;MusicDownload&amp;nbsp;&amp;nbsp;&amp;nbsp; - This is where the events will be stored.&amp;nbsp; The events are parsed from the IIS logs, resolved, processed and added to this table.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Now we need to add the event information to the CommerceEvent table, we do this by running the below Sql commands.&amp;nbsp; You can modify these commands for your specific event and database.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;INSERT INTO [Startersite_datawarehouse].[dbo].[CommerceEvent]([CommerceEventID], [CommerceEventClassName], [CommerceEventInternalFlag], [CommerceEventMemberName], [StorageClassName], [StorageMemberName])&lt;BR&gt;VALUES(0x000000001000, 'MusicDownload', 0, 'Artist', 'MusicDownload', 'Artist')&lt;BR&gt;INSERT INTO [Startersite_datawarehouse].[dbo].[CommerceEvent]([CommerceEventID], [CommerceEventClassName], [CommerceEventInternalFlag], [CommerceEventMemberName], [StorageClassName], [StorageMemberName])&lt;BR&gt;VALUES(0x000000001001, 'MusicDownload', 0, 'Album', 'MusicDownload', 'Album')&lt;BR&gt;INSERT INTO [Startersite_datawarehouse].[dbo].[CommerceEvent]([CommerceEventID], [CommerceEventClassName], [CommerceEventInternalFlag], [CommerceEventMemberName], [StorageClassName], [StorageMemberName])&lt;BR&gt;VALUES(0x000000001002, 'MusicDownload', 0, 'Title', 'MusicDownload', 'Title') &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to see the sample project and also the scripts used, I have uploaded the project as a zip file in our GotDotNet Workspace located &lt;A href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=77487df3-96dc-41de-9ca0-b7f284a8c113" mce_href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=77487df3-96dc-41de-9ca0-b7f284a8c113"&gt;here&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For our next part of the series, I will show you how to create a new report that utilizes the MusicDownload event.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Hope this helps!&lt;/P&gt;
&lt;P&gt;Alan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=904965" width="1" height="1"&gt;</description></item><item><title>Why is my Hits Count the same for all pages in Sql Server 2005?</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/10/02/Why-is-my-Hits-Count-the-same-for-all-pages_3F00_.aspx</link><pubDate>Tue, 03 Oct 2006 04:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:783553</guid><dc:creator>akfaulkner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/783553.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=783553</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=783553</wfw:comment><description>&lt;P&gt;So you are seeing that your Hits Count on your Top Requested Pages report indicating that all pages have the same exact hit count?&amp;nbsp; We have identified that this&amp;nbsp;a problem which is traced to the Page Usage cube definition in Sql Server 2005.&amp;nbsp; This&amp;nbsp;does NOT affect Sql Server 2000 cube definitions.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here is how to fix this issue:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Open Sql Server Management Studio &lt;/LI&gt;
&lt;LI&gt;Connect to the Analysis Server that contains the Commerce Server Analysis database.&lt;/LI&gt;
&lt;LI&gt;In the Page Usage Cube - And use the Create To Scripting option to output the cube create script to a file (or output window).&lt;/LI&gt;
&lt;LI&gt;Add the below snippet to the cube definition script:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;The code addition begins with &amp;lt;Dimension xsi:type="RegularMeasureGroupDimension"&amp;gt; &lt;/LI&gt;
&lt;P&gt;&amp;lt;Cube xmlns:xsd="&lt;A href="http://www.w3.org/2001/XMLSchema%22" mce_href='http://www.w3.org/2001/XMLSchema"'&gt;http://www.w3.org/2001/XMLSchema"&lt;/A&gt; xmlns:xsi="&lt;A href="http://www.w3.org/2001/XMLSchema-instance%22" mce_href='http://www.w3.org/2001/XMLSchema-instance"'&gt;http://www.w3.org/2001/XMLSchema-instance"&lt;/A&gt;&amp;gt;&lt;BR&gt;&amp;lt;ID&amp;gt;Page Usage&amp;lt;/ID&amp;gt; 
&lt;P&gt;.... 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;MeasureGroups&amp;gt;&lt;BR&gt;&amp;lt;MeasureGroup&amp;gt;&lt;BR&gt;...&lt;BR&gt;&amp;lt;Dimensions&amp;gt;&lt;BR&gt;... &lt;BR&gt;&amp;lt;Dimension xsi:type="RegularMeasureGroupDimension"&amp;gt;&lt;BR&gt;&amp;lt;CubeDimensionID&amp;gt;Uri&amp;lt;/CubeDimensionID&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;lt;Attributes&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Attribute&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;lt;AttributeID&amp;gt;Uri attribute&amp;lt;/AttributeID&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;lt;KeyColumns&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;lt;KeyColumn&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DataType&amp;gt;BigInt&amp;lt;/DataType&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Source xsi:type="ColumnBinding"&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;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;TableID&amp;gt;HitsInfo&amp;lt;/TableID&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;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;ColumnID&amp;gt;uriKey&amp;lt;/ColumnID&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Source&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;lt;/KeyColumn&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;lt;/KeyColumns&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;lt;Type&amp;gt;Granularity&amp;lt;/Type&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Attribute&amp;gt;&lt;BR&gt;&amp;lt;/Attributes&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/Dimension&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/UL&gt;
&lt;LI&gt;Delete the existing Page Usage Cube&lt;/LI&gt;
&lt;LI&gt;Create the new Page Usage cube using the updated create script.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;That's it - you should see updated hits count for your requested pages in Commerce Server reports.&lt;/P&gt;
&lt;P&gt;Hope this helps!&lt;/P&gt;
&lt;P&gt;Alan&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=783553" width="1" height="1"&gt;</description></item><item><title>Importing Web Logs from different sources in a Web Farm Scenario</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/09/20/763996.aspx</link><pubDate>Thu, 21 Sep 2006 03:47:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:763996</guid><dc:creator>akfaulkner</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/763996.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=763996</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=763996</wfw:comment><description>&lt;p&gt;Consider the scenario where you have multiple web log sources (let's say you have mulitple web servers for your site) and you want to import those web logs in parallel.&amp;nbsp; This allows requests by a single user served by different sources be counted in a single user's visit.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Here is a sample vb script that illustrates how to invoke the web log import across multiple data sources.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Note:&amp;nbsp; You need to get your data source names from the ServerGroup table in your data warehouse.&lt;/p&gt; &lt;p&gt;(A special thanks to Brian Blum for the script content)&lt;/p&gt; &lt;p&gt;Dim ImportObj 'As Object  &lt;p&gt;Dim error  &lt;p&gt;Dim Shell  &lt;p&gt;set Shell = WScript.CreateObject("WScript.Shell")  &lt;p&gt;Dim ProcEnv  &lt;p&gt;set ProcEnv = Shell.Environment("Process")  &lt;p&gt;Dim localDbServer  &lt;p&gt;localDbServer = ProcEnv("ComputerName")  &lt;p&gt;'Import tracing flags - Not required. &lt;p&gt;ProcEnv("TraceParseHits")&amp;nbsp; = "true"  &lt;p&gt;ProcEnv("TraceParseCookie")&amp;nbsp; = "false"  &lt;p&gt;ProcEnv("TraceParserStats")&amp;nbsp; = "true"  &lt;p&gt;ProcEnv("TraceInferenceSteps")&amp;nbsp; = "false"  &lt;p&gt;ProcEnv("TraceIEStatistics")&amp;nbsp; = "false"  &lt;p&gt;ProcEnv("TraceFilters")&amp;nbsp; = "false"  &lt;p&gt;ProcEnv("TraceHitStructureOnFilter")&amp;nbsp; = "false"  &lt;p&gt;ProcEnv("TraceIEJobCreate") = "false"  &lt;p&gt;ProcEnv("TraceMaxHits") = "false"  &lt;p&gt;ProcEnv("TraceOpenUserVisits")&amp;nbsp; = "false"  &lt;p&gt;ProcEnv("TraceOverlapTime") = "True"  &lt;p&gt;ProcEnv("BenchMarkParser") = "false"&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;p&gt;ProcEnv("BenchMarkIE") = "false"  &lt;p&gt;Dim LogDataSource(1)  &lt;p&gt;LogDataSource(0) = "Log Data Source 1"&amp;nbsp;&amp;nbsp; ' Data Source name from the ServerGroup table &lt;p&gt;LogDataSource(1) = "Log Data Source 2"&amp;nbsp;&amp;nbsp; ' Data Source name from the ServerGroup table &lt;p&gt;Set ImportObj = WScript.CreateObject("Commerce.PrivateDTSWebLogImport")  &lt;p&gt;On Error Resume next  &lt;p&gt;error = ImportObj.Init(localDbServer, localDbServer, "startersite_datawarehouse", "dwschema", "", "", "StarterSite")  &lt;p&gt;ReDim LogFiles(1) 'As String  &lt;p&gt;LogFiles(0) = "D:\Logs\S120060901.log"  &lt;p&gt;LogFiles(1) = "D:\Logs\S220060901.log"  &lt;p&gt;error = ImportObj.AddLogDataSource(LogDataSource(0), LogFiles(0), 1)  &lt;p&gt;error = ImportObj.AddLogDataSource(LogDataSource(1), LogFiles(1), 1)  &lt;p&gt;error = ImportObj.Run()  &lt;p&gt;WScript.DisconnectObject ImportObj  &lt;p&gt;Set ImportObj = Nothing  &lt;p&gt;&amp;nbsp; &lt;p&gt;Hope this helps! &lt;p&gt;-Alan &lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=763996" width="1" height="1"&gt;</description></item><item><title>How to Debug the Data Warehouse</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/09/20/763967.aspx</link><pubDate>Thu, 21 Sep 2006 01:34:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:763967</guid><dc:creator>akfaulkner</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/763967.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=763967</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=763967</wfw:comment><description>&lt;p&gt;Some of you might wonder, how do I debug the Data&amp;nbsp; Warehouse Import Tasks?&amp;nbsp; There are two options:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Perform a Sql Trace against the Data Warehouse database.&lt;/li&gt; &lt;li&gt;Run the Data Warehouse&amp;nbsp;debug server.&amp;nbsp; The debug server is a utility which allows you to see trace output from the OLE DB provider for Commerce Server.&amp;nbsp; &lt;/li&gt; &lt;ol&gt; &lt;li&gt;To run the debug server, open the command prompt window and navigate to "C:\Program Files\Common Files\Microsoft Shared\Enterprise Servers\Commerce Server\" and execute: "CSDWDbgSrv.exe -f traceoutput".&amp;nbsp; This will create a text&amp;nbsp;file name with "traceoutput" as a prefix and a time stamp as the suffix.&amp;nbsp; &lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;Hope this helps!&lt;/p&gt; &lt;p&gt;-Alan&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=763967" width="1" height="1"&gt;</description></item><item><title>Where is the Data Warehouse Documentation?</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/09/12/751089.aspx</link><pubDate>Tue, 12 Sep 2006 23:45:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:751089</guid><dc:creator>akfaulkner</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/751089.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=751089</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=751089</wfw:comment><description>&lt;p&gt;Many of you might wonder where the Data Warehouse documentation is located.&amp;nbsp; It's not bundled with the product documentation but rather, thanks to our hard working Program&amp;nbsp;Writers,&amp;nbsp;available &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CS07Default/html/2c2eb730-998a-4bd4-ab75-a85084cce352.asp?frame=true"&gt;online&lt;/a&gt;&amp;nbsp;as of today!&amp;nbsp; Further,&amp;nbsp;you will soon be able to download the documentation so that you can have the content on your local Commerce Server installation.&lt;/p&gt; &lt;p&gt;We are refining and updating our documentation so expect more content to come!&lt;/p&gt; &lt;p&gt;Enjoy and hope this helps!&lt;/p&gt; &lt;p&gt;-Alan&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=751089" width="1" height="1"&gt;</description></item><item><title>How to extend the Data Warehouse to include a custom Commerce Server event (Part 1)</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/09/08/746956.aspx</link><pubDate>Sat, 09 Sep 2006 01:33:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:746956</guid><dc:creator>akfaulkner</dc:creator><slash:comments>27</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/746956.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=746956</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=746956</wfw:comment><description>&lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p&gt;Here I am going to show you how to write your own custom Commerce Server event and utilize it in the&amp;nbsp;Data Warehouse for reporting purposes.&amp;nbsp; In this case, we are going to create a fictitious MusicDownload event, which, if you have a music Commerce Server site, can record an event on every music download.&amp;nbsp; This event will keep track of the Artist, Album, and Title.&amp;nbsp; This will be a two part series where the first part focuses on the custom event and part 2 focuses on extending the Data Warehouse.&amp;nbsp; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Let's create a new DLL C# project.&amp;nbsp; We need to Add a Reference to the Microsoft.CommerceServer.Runtime dll.&amp;nbsp; You can find this dll in the C:\Program Files\Microsoft Commerce Server 2007\Assemblies\ directory.  &lt;li&gt;So now we create the Class MusicDownloadEvent.&amp;nbsp; To have a Commerce Server event, we need to extend the BaseCommerceEvent, thus overriding the Validate Method.&amp;nbsp; Here is the entire class with comments below:&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 using\cf0  System;\par ??\cf2 using\cf0  System.Collections.Generic;\par ??\cf2 using\cf0  System.Text;\par ??\cf2 using\cf0  Microsoft.CommerceServer.Runtime;\par ??\par ??\cf2 namespace\cf0  CompanyName.Project.MusicDownloads\par ??\{\par ??    [\cf10 CommerceEvent\cf0 (\cf13 "MusicDownload"\cf0 )]\par ??    \cf2 public\cf0  \cf2 class\cf0  \cf10 MusicDownloadEvent\cf0  : \cf10 BaseCommerceEvent\par ??\cf0     \{\par ??\cf2         #region\cf0  Members\par ??        \cf2 string\cf0  _title;\par ??        \cf2 string\cf0  _artist;\par ??        \cf2 string\cf0  _album;      \par ??\cf2         #endregion\par ??\par ??\cf0         \cf15 ///\cf11  \cf15 &amp;lt;summary&amp;gt;\par ??\cf0         \cf15 ///\cf11  Default Constructor\par ??\cf0         \cf15 ///\cf11  \cf15 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf2 public\cf0  MusicDownloadEvent()\par ??            : \cf2 base\cf0 ()\par ??        \{\par ??\par ??        \}\par ??\par ??        \cf2 public\cf0  MusicDownloadEvent(\cf2 string\cf0  title, \cf2 string\cf0  artist, \cf2 string\cf0  album)\par ??        \{\par ??            _title = title;\par ??            _artist = artist;\par ??            _album = album;\par ??\par ??        \}\par ??\par ??        [\cf10 CommerceEventMember\cf0 (\cf13 "Artist"\cf0 )]\par ??        \cf2 public\cf0  \cf2 string\cf0  Artist\par ??        \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _artist; \}\par ??            \cf2 set\cf0  \{ _artist = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        [\cf10 CommerceEventMember\cf0 (\cf13 "Album"\cf0 )]\par ??        \cf2 public\cf0  \cf2 string\cf0  Album\par ??        \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _album; \}\par ??            \cf2 set\cf0  \{ _album = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        [\cf10 CommerceEventMember\cf0 (\cf13 "Title"\cf0 )]\par ??        \cf2 public\cf0  \cf2 string\cf0  Title\par ??        \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _title; \}\par ??            \cf2 set\cf0  \{ _title = \cf2 value\cf0 ; \}\par ??        \}\par ??\par ??        \cf15 ///\cf11  \cf15 &amp;lt;summary&amp;gt;\par ??\cf0         \cf15 ///\cf11  Validates that this is a valid Event\par ??\cf0         \cf15 ///\cf11  \cf15 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf15 ///\cf11  \cf15 &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;\par ??\cf0         \cf2 public\cf0  \cf2 override\cf0  \cf2 bool\cf0  Validate()\par ??        \{\par ??            \cf2 if\cf0  (\cf2 string\cf0 .IsNullOrEmpty(_title) ||\par ??                \cf2 string\cf0 .IsNullOrEmpty(_artist) ||\par ??                \cf2 string\cf0 .IsNullOrEmpty(_album))\par ??            \{\par ??                \cf2 return\cf0  \cf2 false\cf0 ;\par ??            \}\par ??            \cf2 return\cf0  \cf2 base\cf0 .Validate();\par ??        \}\par ??    \}\par ??\}\par ??}
--&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; CompanyName.Project.MusicDownloads&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal"&gt;CommerceEvent&lt;/span&gt;(&lt;span style="color: maroon"&gt;"MusicDownload"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: teal"&gt;MusicDownloadEvent&lt;/span&gt; : &lt;span style="color: teal"&gt;BaseCommerceEvent&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Members&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; _title;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; _artist;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; _album;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Default Constructor&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; MusicDownloadEvent()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color: blue"&gt;base&lt;/span&gt;()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; MusicDownloadEvent(&lt;span style="color: blue"&gt;string&lt;/span&gt; title, &lt;span style="color: blue"&gt;string&lt;/span&gt; artist, &lt;span style="color: blue"&gt;string&lt;/span&gt; album)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _title = title;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _artist = artist;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _album = album;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal"&gt;CommerceEventMember&lt;/span&gt;(&lt;span style="color: maroon"&gt;"Artist"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Artist&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _artist; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _artist = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal"&gt;CommerceEventMember&lt;/span&gt;(&lt;span style="color: maroon"&gt;"Album"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Album&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _album; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _album = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: teal"&gt;CommerceEventMember&lt;/span&gt;(&lt;span style="color: maroon"&gt;"Title"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Title&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _title; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _title = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Validates that this is a valid Event&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; Validate()&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(_title) ||&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&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;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(_artist) ||&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&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;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(_album))&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&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;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;base&lt;/span&gt;.Validate();&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;You notice that we had to apply attributes to the class indicating that this is a Commerce Event with the name "MusicDownload".&amp;nbsp; This is required.&amp;nbsp;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20  [\cf10 CommerceEvent\cf0 (\cf13 "MusicDownload"\cf0 )]\par ??    \cf2 public\cf0  \cf2 class\cf0  \cf10 MusicDownloadEvent\cf0  : \cf10 BaseCommerceEvent}
--&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp;[&lt;span style="color: teal"&gt;CommerceEvent&lt;/span&gt;(&lt;span style="color: maroon"&gt;"MusicDownload"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: teal"&gt;MusicDownloadEvent&lt;/span&gt; : &lt;span style="color: teal"&gt;BaseCommerceEvent&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: teal"&gt;&lt;font color="#000000"&gt;You also notice that each&amp;nbsp;property that we want to include in the event must have the attribute CommerceEventMember, with the event name as a parameter, as illustrated below: &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20  [\cf10 CommerceEventMember\cf0 (\cf13 "Artist"\cf0 )]\par ??        \cf2 public\cf0  \cf2 string\cf0  Artist\par ??        \{\par ??            \cf2 get\cf0  \{ \cf2 return\cf0  _artist; \}\par ??            \cf2 set\cf0  \{ _artist = \cf2 value\cf0 ; \}\par ??        \}}
--&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;[&lt;span style="color: teal"&gt;CommerceEventMember&lt;/span&gt;(&lt;span style="color: maroon"&gt;"Artist"&lt;/span&gt;)]&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Artist&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _artist; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _artist = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;Once you compile and sign this dll, you need to add the DLL as a&amp;nbsp;reference in&amp;nbsp;the site's Visual Studio project.&amp;nbsp; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;Next, you need to add the entry for the event in your web.config file.&amp;nbsp; It's important to note that the assembly name must be fully qualified.&amp;nbsp; Here is what our MusicDownloadEvent looks like in the web.config file:&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&amp;lt;add className="CompanyName.Project.MusicDownloads.MusicDownloadEvent, CompanyName.Project.MusicDownloads, Version=1.0.0.0, Culture=neutral" id="MusicDownload" loggingEnabled="true"/&amp;gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt; &lt;div style="margin: 0px"&gt;Now, let's create a very simplistic Aspx page that uses this event, here it is below:&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof1252\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0??;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;??\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;??\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;??\red192\green192\blue192;}??\fs20 \cf2 using\cf0  System;\par ??\cf2 using\cf0  System.Data;\par ??\cf2 using\cf0  System.Configuration;\par ??\cf2 using\cf0  System.Collections;\par ??\cf2 using\cf0  System.Web;\par ??\cf2 using\cf0  System.Web.Security;\par ??\cf2 using\cf0  System.Web.UI;\par ??\cf2 using\cf0  System.Web.UI.WebControls;\par ??\cf2 using\cf0  System.Web.UI.WebControls.WebParts;\par ??\cf2 using\cf0  System.Web.UI.HtmlControls;\par ??\cf2 using\cf0  CompanyName.Project.MusicDownloads;\par ??\cf2 using\cf0  Microsoft.CommerceServer.Runtime;\par ??\par ??\par ??\cf2 public\cf0  \cf2 partial\cf0  \cf2 class\cf0  \cf10 MusicDownload\cf0  : System.Web.UI.Page\par ??\{\par ??    \cf2 protected\cf0  \cf2 void\cf0  Page_Load(\cf2 object\cf0  sender, \cf10 EventArgs\cf0  e)\par ??    \{\par ??        \cf10 MusicDownloadEvent\cf0  evt = \cf2 new\cf0  \cf10 MusicDownloadEvent\cf0 (\cf13 "Back in black"\cf0 , \cf13 "AC/DC"\cf0 , \cf13 "Unknown"\cf0 );\par ??        \cf10 CommerceContext\cf0 .LogCommerceEvent(evt);\par ??\par ??    \}\par ??\}\par ??}
--&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Data;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Configuration;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Collections;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.Security;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI.WebControls.WebParts;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.UI.HtmlControls;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; CompanyName.Project.MusicDownloads;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.CommerceServer.Runtime;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: teal"&gt;MusicDownload&lt;/span&gt; : System.Web.UI.Page&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;{&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: teal"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;MusicDownloadEvent&lt;/span&gt; evt = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;MusicDownloadEvent&lt;/span&gt;(&lt;span style="color: maroon"&gt;"Back in black"&lt;/span&gt;, &lt;span style="color: maroon"&gt;"AC/DC"&lt;/span&gt;, &lt;span style="color: maroon"&gt;"Unknown"&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal"&gt;CommerceContext&lt;/span&gt;.LogCommerceEvent(evt);&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;}&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;li&gt; &lt;div style="margin: 0px"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;Next Step is to Extend the Data Warehouse to include this event.&amp;nbsp; This will be covered in Part 2, where I hope to have some utilities that will make it easy for you to extend!&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p style="margin: 0px"&gt; &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;Hope this helps!&lt;/p&gt; &lt;p style="margin: 0px"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin: 0px"&gt;-Alan&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=746956" width="1" height="1"&gt;</description></item><item><title>Commerce Server 2007 Startersite CTP Now Available!</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/08/25/724597.aspx</link><pubDate>Sat, 26 Aug 2006 01:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:724597</guid><dc:creator>akfaulkner</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/724597.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=724597</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=724597</wfw:comment><description>&lt;p&gt;We are pleased to announce that the CS2007 Startersite CTP is now available through our Microsoft Connect &lt;a href="http://connect.microsoft.com/"&gt;site&lt;/a&gt;.&amp;nbsp; For more details, see Ryan Donovan's Post &lt;a href="http://blogs.msdn.com/rdonovan/archive/2006/08/25/724510.aspx"&gt;here&lt;/a&gt;!&lt;/p&gt; &lt;p&gt;Enjoy and please &lt;strong&gt;give feedback&lt;/strong&gt; through the Newsgroups (good or bad - seriously!).&amp;nbsp; &lt;/p&gt; &lt;p&gt;-Alan&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=724597" width="1" height="1"&gt;</description></item><item><title>Orders Adapter Purchase Order Update and Welcome Max Akbar to Commerce Server blogging!</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/08/25/724255.aspx</link><pubDate>Fri, 25 Aug 2006 19:22:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:724255</guid><dc:creator>akfaulkner</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/724255.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=724255</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=724255</wfw:comment><description>&lt;p&gt;There have been a lot of questions on whether you can use the Biztalk Orders Adapter on an extended Orders system for Purchase Order updates.&amp;nbsp; The answer is a yes....but, for updates, you can &lt;strong&gt;only&lt;/strong&gt; update Strongly Typed Properties (STP).&amp;nbsp; The Orders Adapter will &lt;strong&gt;not&lt;/strong&gt; update Weakly Typed Properties (WTP), regardless of whether they are mapped to storage or not.&amp;nbsp; It will also not update WTP on the base Orders system as well.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;I would also like to welcome a colleague of mine to the world of Commerce Server blogging, it's &lt;a href="http://blogs.msdn.com/maxakbar/default.aspx"&gt;Max Akbar&lt;/a&gt;.&amp;nbsp; He already&amp;nbsp;has posted&amp;nbsp;some very valuable post:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/maxakbar/archive/2006/08/23/715405.aspx"&gt;Commerce Server and Windows Sharepoint Services&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/maxakbar/archive/2006/08/17/705473.aspx"&gt;Everything you ever wanted to know about pipelines but were afraid to ask (Part I).&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I expect some great information from Max's blog.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps!&lt;/p&gt; &lt;p&gt;Alan&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=724255" width="1" height="1"&gt;</description></item><item><title>Why aren't my Profile objects copied to the Data Warehouse?</title><link>http://blogs.msdn.com/akfaulkner/archive/2006/08/24/719638.aspx</link><pubDate>Fri, 25 Aug 2006 04:31:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:719638</guid><dc:creator>akfaulkner</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/akfaulkner/comments/719638.aspx</comments><wfw:commentRss>http://blogs.msdn.com/akfaulkner/commentrss.aspx?PostID=719638</wfw:commentRss><wfw:comment>http://blogs.msdn.com/akfaulkner/rsscomments.aspx?PostID=719638</wfw:comment><description>&lt;p&gt;In Commerce Server 2007, using our profile system to create Users (UserObjects), Addresses and Currency objects that you would like to transfer (via DTS Import) to a site level Data Warehouse, you must remember the following:&lt;/p&gt; &lt;p&gt;On &lt;strong&gt;all&lt;/strong&gt; Guid values in a profile, you must include a bracket before and after the Guid in order for the DTS Import to successfully import the profile object.&amp;nbsp; For instance, here is example of&amp;nbsp;a Guid which would &lt;strong&gt;NOT&lt;/strong&gt; work with our Data&amp;nbsp;Warehouse.&amp;nbsp; This is a&amp;nbsp;Guid&amp;nbsp;from the&amp;nbsp;u_address_id, which is part of the Address schema:&lt;/p&gt; &lt;p&gt;000025df-2143-4e09-b2db-05bc8f873e34&lt;/p&gt; &lt;p&gt;In order for that Address cooresponding to the above Guid to be successfully imported, it &lt;strong&gt;must&lt;/strong&gt; be modified/created like this:&lt;/p&gt; &lt;p&gt;{000025df-2143-4e09-b2db-05bc8f873e34}&lt;/p&gt; &lt;p&gt;It's imperative that your Commerce Server site code take this into account if you plan on integrating your Commerce data into a Data Warehouse!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Hope this helps!&lt;/p&gt; &lt;p&gt;Alan&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=719638" width="1" height="1"&gt;</description></item></channel></rss>