<?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>Max Akbar : Orders System</title><link>http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx</link><description>Tags: Orders System</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Reach out and touch Messagemanager</title><link>http://blogs.msdn.com/maxakbar/archive/2008/05/10/reach-out-and-touch-messagemanager.aspx</link><pubDate>Sat, 10 May 2008 17:55:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8483858</guid><dc:creator>Max Akbar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/8483858.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=8483858</wfw:commentRss><description>&lt;p&gt;If you are creating your own pipeline components and your site is international and you need more than the four languages that is out of the box German, French, Japanese and US English for Commerce Server then you need to create your own resource for other languages. How to create a new resource is what this post is all about.&lt;/p&gt; &lt;h2&gt;What is Messagemanager?&lt;/h2&gt; &lt;p&gt;Messagemanager is an object that handling the localization of messages inside your pipeline competents. When you unpack the CSharpSite you will get CommerceMessageManager.dll and four folders representing a language mentioned above.&lt;/p&gt; &lt;p&gt;What are these messages that Messagemanager use? The table below has the messages that Commerce Server uses internally. If you introducing a new language then you need to localize this table.&lt;/p&gt; &lt;table cellspacing="1" cellpadding="1" width="100%" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;strong&gt;Message Key&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top"&gt;&lt;strong&gt;Message Value&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_discount_changed&lt;/td&gt; &lt;td valign="top"&gt;One or more discounts have changed.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badhandling&lt;/td&gt; &lt;td valign="top"&gt;Unable to complete order: cannot compute handling cost.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badsku&lt;/td&gt; &lt;td valign="top"&gt;Please note that one or more items were removed from your order because the product is no longer sold.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badtax&lt;/td&gt; &lt;td valign="top"&gt;Unable to complete order: cannot compute tax.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badplacedprice&lt;/td&gt; &lt;td valign="top"&gt;Please note that prices of products in your order have been updated.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badcc&lt;/td&gt; &lt;td valign="top"&gt;The credit-card number you provided is not valid. Please verify your payment information or use a different card.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badshipping&lt;/td&gt; &lt;td valign="top"&gt;Unable to complete order: cannot compute shipping cost.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;unknown_shipping_method&lt;/td&gt; &lt;td valign="top"&gt;The selected shipping method is not currently available.&amp;nbsp; Please choose another shipping method.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badpayment&lt;/td&gt; &lt;td valign="top"&gt;There was a problem authorizing your credit. Please verify your payment information or use a different card.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_out_of_stock&lt;/td&gt; &lt;td valign="top"&gt;At least one item is out of stock.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_noitems&lt;/td&gt; &lt;td valign="top"&gt;An order must have at least one item.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_badverify&lt;/td&gt; &lt;td valign="top"&gt;Changes to the data require your review. Please review and re-submit.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;pur_discount_removed&lt;/td&gt; &lt;td valign="top"&gt;One or more discounts no longer apply.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;L_Language_DisplayName&lt;/td&gt; &lt;td valign="top"&gt;English (en-US)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;OK I have localized the messages now what?&lt;/h2&gt; &lt;p&gt;You need to take the localized messages and create an assembly. There are many methods the following &lt;a href="http://msdn.microsoft.com/en-us/library/ms964360.aspx"&gt;help file link&lt;/a&gt; should help. Once you create an assembly then you need to add it into your bin folder, take care to create the language folder then add the assembly there.&lt;/p&gt; &lt;h2&gt;Can I add my own messages?&lt;/h2&gt; &lt;p&gt;Yes, but the help files do note that the messagemanager is obsolete (I wonder why then Commerce Server uses it? If you find the answer let me know :))?&lt;/p&gt; &lt;h2&gt;How to use Messagemanager inside of Pipeline Components?&lt;/h2&gt; &lt;p&gt;If you have created your own messages and want to use it inside your custom pipeline components the following code will accomplish that.&lt;/p&gt; &lt;table cellspacing="1" cellpadding="1" width="100%" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt; &lt;p&gt;// using message manager inside pipeline component&lt;br&gt;IMessageManager messageManager = null;&lt;br&gt;IDictionary dict = (IDictionary) pContext; &lt;br&gt;messageManager = (IMessageManager) dic["MessageManager"];&lt;br&gt;object message = messageManager.GetMessage("your string key", language);&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;In order for the pipeline to use the specific language you must execute the Pipeline by passing the language code in the PipelineInfo object. If the language parameter is not specified, or is &lt;b&gt;NULL&lt;/b&gt;, the message is returned for the message set identified by the DefaultLanguage property of the MessageManager object. This value is retrieved from the web.config under the messageManager element.&lt;/p&gt; &lt;h2&gt;Are we there yet?&lt;/h2&gt; &lt;p&gt;Once you have done all the above you will need to add the language in the web.config of your site. Why do I need to do this? We need to tell Commerce Server's Pipeline processor that we have a new language so when Commerce Server pipelines encounter an error they retrieve the message correctly. &lt;/p&gt; &lt;p&gt; &lt;table cellspacing="1" cellpadding="1" width="100%" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top"&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;messageManager&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;lt;cultures default="en-US" baseName="CommerceMessageManager" assembly="CommerceMessageManager"&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;lt;culture id="en-US"/&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;lt;culture id="fr-fr"/&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;lt;culture id="ja-JP"/&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;lt;culture id="de-DE"/&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; &lt;font color="#ff0000"&gt;&amp;lt;culture id="your new language"/&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cultures&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;lt;resources&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;lt;resource id="pur_badsku"/&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;lt;resource id="pur_badplacedprice"/&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;lt;resource id="pur_discount_changed"/&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;lt;resource id="pur_discount_removed"/&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;lt;resource id="pur_noitems"/&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;lt;resource id="pur_badshipping"/&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;lt;resource id="pur_badhandling"/&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;lt;resource id="pur_badtax"/&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;lt;resource id="pur_badcc"/&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;lt;resource id="pur_badpayment"/&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;lt;resource id="pur_badverify"/&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;lt;resource id="pur_out_of_stock"/&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;lt;resource id="unknown_shipping_method"/&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;lt;/resources&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/messageManager&amp;gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;Will my custom component also work automagically? No, see the code above about messagemanager and notice that we are passing the language and since you set this value in the PipelineInfo object it will be accessible through the pipeline via the context (pdispContext) parameter.&lt;/p&gt; &lt;p&gt;OK, I think we are done now.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8483858" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category></item><item><title>OrderForm Visualizer</title><link>http://blogs.msdn.com/maxakbar/archive/2008/04/28/orderform-visualizer.aspx</link><pubDate>Tue, 29 Apr 2008 06:52:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8436495</guid><dc:creator>Max Akbar</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/8436495.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=8436495</wfw:commentRss><description>&lt;p&gt;Have you developed a pipeline component and then started to debug it and found that you couldn't drill down the OrderForm, Dictionary and SimpleList objects? Well here is the solution. I created this Visualizer to help with the debugging process of pipeline components.&lt;/p&gt; &lt;h2&gt;What is a Visualizer?&lt;/h2&gt; &lt;p&gt;Visualizers allows the displays of a variable or object in a meaningful way. For example, if you have a DataSet visualizer interprets a DataSet object and displays the result in a DataGridview. So the OrderForm visualizer interprets Commerce Server OrderForm which inherits from Dictionary and SimpleList in a TreeView. After installing the OrderForm visualizer run your pipeline code and set a debug point bring your cursor on the object you wish you view noticed that now you have a Dictionary Visualizer.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/commerceserver/images/8436363/original.aspx"&gt;&lt;/p&gt; &lt;p&gt;After selecting the visualizer the data is rendered in a TreeView.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/commerceserver/images/8436364/original.aspx"&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;You can now visualize the data in a tree structure by viewing the key\pair value and the data type.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;strong&gt;&lt;em&gt;Note: The OrderForm visualizer does not allow modifying the underlying data.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;h2&gt;What Version of Visual Studio 2005 does this support?&lt;/h2&gt; &lt;p&gt; &lt;table width="50%"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;th&gt; &lt;p&gt;Edition &lt;/p&gt;&lt;/th&gt; &lt;th&gt; &lt;p&gt;Visual Basic &lt;/p&gt;&lt;/th&gt; &lt;th&gt; &lt;p&gt;C# &lt;/p&gt;&lt;/th&gt; &lt;th&gt; &lt;p&gt;C++ &lt;/p&gt;&lt;/th&gt; &lt;th&gt; &lt;p&gt;Web Developer &lt;/p&gt;&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;p&gt;Express &lt;/p&gt;&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt; &lt;p&gt;Managed only &lt;/p&gt;&lt;/td&gt; &lt;td&gt;X&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;p&gt;Standard &lt;/p&gt;&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt; &lt;p&gt;Managed only &lt;/p&gt;&lt;/td&gt; &lt;td&gt;X&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;p&gt;Pro and Team &lt;/p&gt;&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt;X&lt;/td&gt; &lt;td&gt; &lt;p&gt;Managed only &lt;/p&gt;&lt;/td&gt; &lt;td&gt;X&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;I haven't tested Visual Studio 2008 but I don't see any issues with using it.&lt;/p&gt; &lt;h2&gt;Where do I get the OrderForm Visualizer?&lt;/h2&gt; &lt;p&gt;&lt;a href="http://www.commerceservertraining.com/Commerce_Server_tools.html"&gt;Commerce Server Training, Inc.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8436495" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/SDK/default.aspx">SDK</category></item><item><title>PayPal is looking for a few good customers :)</title><link>http://blogs.msdn.com/maxakbar/archive/2008/02/06/paypal-is-looking-for-a-few-good-customers.aspx</link><pubDate>Thu, 07 Feb 2008 06:51:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7504963</guid><dc:creator>Max Akbar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/7504963.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=7504963</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;PayPal has just announced that they are looking for a few early adopters. If you want to test their component developed for&amp;nbsp;Commerce Server then follow&amp;nbsp;the instruction on their blog site.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.paypaldeveloper.com/pdn/blog/article?blog.id=devblog&amp;amp;message.id=523#M523"&gt;Do you use Microsoft Commerce Server 2007? - PayPal Developer Blog - PayPal Developer Community&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7504963" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category></item><item><title>Support for SQL replication of the profiles and of the transactions database</title><link>http://blogs.msdn.com/maxakbar/archive/2007/12/19/support-for-sql-replication-of-the-profiles-and-of-the-transactions-database.aspx</link><pubDate>Wed, 19 Dec 2007 19:38:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6807799</guid><dc:creator>Max Akbar</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/6807799.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=6807799</wfw:commentRss><description>&lt;p&gt;I wrote a blog a while ago that Commerce Server SP1 with SQL 2005 SP2&amp;nbsp;supported replication with Profiles and transaction database. Now I can confirm that this is a supported scenario here is the &lt;a href="http://support.microsoft.com/kb/943247"&gt;KB Article&lt;/a&gt;. I am disappointed that the KB article does not walk the user step by step and setting up your profiles and transactions database but at least you know it's supported scenario.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;What about replication of other Databases?&lt;/h2&gt; &lt;p&gt;Marketing, Product Catalog, Transaction Config&amp;nbsp;and Inventory is supported by use of Import\export APIs and\or using Commerce Server Staging.&lt;/p&gt; &lt;h2&gt;Why Use replication?&lt;/h2&gt; &lt;p&gt;Multiple data centers for backup and redundancy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6807799" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Profile+System/default.aspx">Profile System</category></item><item><title>How To Deal With Large Orders And Improve Checkout Performance</title><link>http://blogs.msdn.com/maxakbar/archive/2007/12/02/how-to-deal-with-large-orders-and-improve-checkout-performance.aspx</link><pubDate>Sun, 02 Dec 2007 22:54:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6644433</guid><dc:creator>Max Akbar</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/6644433.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=6644433</wfw:commentRss><description>&lt;p&gt;There are some scenarios were you need to handle 100 or more line items and performance becomes an issue. So in this post I hope to provide you with some ideas on how you can speed up the performance of the Checkout path.&lt;/p&gt; &lt;h2&gt;Checkout Path&lt;/h2&gt; &lt;p&gt;What is the checkout path? The checkout process starts from the moment the users enter the basket\cart&amp;nbsp;page. Then, they navigates to shipping and billing page.&amp;nbsp;This can either be one page or two. Next, they receives a confirmation page and finally, the users checks out and navigate to the receipt page.&lt;/p&gt; &lt;h3&gt;Basket Display&lt;/h3&gt; &lt;p&gt;This page shows the user what is in their basket. Usually the line item id, description, total line item cost, any discounts, total and subtotal. Bellow is an example:&lt;/p&gt; &lt;p&gt; &lt;table cellspacing="1" cellpadding="1" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Item ID&lt;/td&gt; &lt;td&gt;Description&lt;/td&gt; &lt;td&gt;Cost&lt;/td&gt; &lt;td&gt;Quantity&lt;/td&gt; &lt;td&gt;Discount&lt;/td&gt; &lt;td&gt;Total&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;123-ABC&lt;/td&gt; &lt;td&gt;My product description&lt;/td&gt; &lt;td&gt;$10.00&lt;/td&gt; &lt;td align="middle"&gt;1&lt;/td&gt; &lt;td&gt;$1.00&lt;/td&gt; &lt;td&gt;$9.00&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class="style2" align="right" colspan="5"&gt;Subtotal&lt;/td&gt; &lt;td&gt;9.00&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;You can also allow the user to enter promotion codes here if you site allows it. &lt;/p&gt; &lt;p&gt;The Basket pipeline file is executed in the page.&lt;/p&gt; &lt;h4&gt;Basket Pipeline File&lt;/h4&gt; &lt;p&gt;The Basket pipeline validates the line item product and removes any line items that does not validate again the Product Catalog System. Inventory is also checked. Pricing variables are initialized and used later on in the discount stage. Finally the subtotal is calculated.&lt;/p&gt; &lt;h3&gt;Billing and Shipping Information&lt;/h3&gt; &lt;p&gt;Some sites will have Billing and Shipping information on one page and some have it in two. These pages allows the user to select an address from their address book or enter a new one. The addresses can be used for shipping or shared as billing address. The billing section will also allow the user to enter a credit card.&lt;/p&gt; &lt;p&gt;This page executes the Basket and Total pipeline files.&lt;/p&gt; &lt;h4&gt;Total Pipeline File&lt;/h4&gt; &lt;p&gt;The Total pipeline computes the amount of an order and calculates Shipping, Handling, Tax, Order Total. This pipeline will also calculates any shipping discounts that need to be applied.  &lt;h3&gt;Confirmation Page&lt;/h3&gt; &lt;p&gt;The confirmation page allows the user to validate their order before accepting the purchase. This page displays the line items and addresses for shipping and billing, payment methods and discounts applied.&lt;/p&gt; &lt;p&gt;This page executes Basket and Total pipeline files.&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Receipt Page&lt;/h3&gt; &lt;p&gt;The receipt page is an exact duplicate page as the confirmation page that shows that the order has been purchased.&lt;/p&gt; &lt;p&gt;This page executes Basket, Total and Checkout pipeline files.&lt;/p&gt; &lt;h4&gt;Checkout Pipeline File&lt;/h4&gt; &lt;p&gt;The Checkout pipeline is responsible for redeeming promotion codes, decrement inventory, record Content Selection framework events, and finally the events are appended to the IIS log.&lt;/p&gt; &lt;h3&gt;What about Add to Basket\Cart?&lt;/h3&gt; &lt;p&gt;On some sites when the user adds an item to the basket they are redirected to the basket page like the Starter Site and some sites display a simple message that the item was added to the basket. The sites that don't redirect the user need to only validate the product against the Product Catalog System. To do this you only need to execute the Product pipeline&amp;nbsp;component.&lt;/p&gt; &lt;h4&gt;Product Pipeline File&lt;/h4&gt; &lt;p&gt;Product pipeline validates that the product is in synch with the Product Catalog System.&lt;/p&gt; &lt;h2&gt;Why are we executing the pipelines over and over?&lt;/h2&gt; &lt;p&gt;Because the user can wait indefinite time between pages and prices, products or discounts could be invalid we need to execute the pipelines to ensure the accuracy of the basket before converting it to purchase order.&lt;/p&gt; &lt;h2&gt;What happens when I execute a pipeline?&lt;/h2&gt; &lt;p&gt;Commerce Server basket has several entities such as OrderForm, LineItems, Addresses, Shipments to name a few. These objects are based on .NET. The Commerce Server Processing Pipeline is COM. When a pipeline is executed the managed objects in the basket need to be converted into a dictionary. Commerce Server does this for you before executing the pipeline file. When the execution of the pipeline is completed, the process is reversed. If you are interested in a detailed explanation of pipelines then I suggest you read the following &lt;a href="http://blogs.msdn.com/maxakbar/search.aspx?q=%22Everything+you+ever+wanted+to+know+about+pipelines+but+were+afraid+to+ask%22&amp;amp;p=1"&gt;posts&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;How to improve performance?&lt;/h2&gt; &lt;ol&gt; &lt;li&gt;Do not use&amp;nbsp;scriptor pipeline Components. Scriptor Component is good for quick and dirty proof of concept.  &lt;li&gt;When creating custom pipeline Components then enable pooling for your pipelines.  &lt;li&gt;Follow the basics of .NET performance coding techniques. Here is a couple of reads for you &lt;a title="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" href="http://msdn2.microsoft.com/en-us/library/ms998549.aspx"&gt;Improving ASP.NET Performance&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms998551.aspx"&gt;Improving Interop Performance&lt;/a&gt;&amp;nbsp;and &lt;a href="http://msdn2.microsoft.com/en-us/library/ms998547.aspx"&gt;Improving Managed Code Performance&lt;/a&gt;.  &lt;li&gt;Don't create Commerce Contexts inside your custom pipelines pass them as pipeline Context values.  &lt;li&gt;When adding items to the basket don't redirect the user to the basket page. Imagine if 25 percent of your users add more than one item to their basket, now you are executing the basket 25 more times then necessary.  &lt;li&gt;Don't iterate the lineitems object then get a Commerce product object, the lineitem is filled with all it's properties in the Product Info of basket pipeline&amp;nbsp;stage, try to use what's there.  &lt;li&gt;Remove unwanted pipeline components, for example if you are not using the Inventory System then remove the CheckInventory and Update Inventory.  &lt;li&gt;If you don't have or not using the data warehouse then you can remove the CSFRecordEvent and CSFIISAppendToLog.  &lt;li&gt;Create one pipeline component for each page, this will reduce the transformation of .NET object to COM and back. For example you would create a BillingShipping.pcf that has the combined basket and Total files and the same is true for the receipt page.  &lt;li&gt;Don't keep to many weakly types because most of your time will be spent in serialization when they are stored in the marshalled data field.  &lt;li&gt;Add business logic that if the lineitem collection is more than 50 or whatever your business requirements are then execute them offline. This would mean that you have to create an application that runs large orders for you.  &lt;li&gt;If your business can't support this scenario then keep one server available for large order scenario. When you detect large orders then redirect the checkout process to another server that does nothing but handle large orders.  &lt;li&gt;If your business allows then don't execute the basket pipeline stages during the shipping and billing only the Total as you will catch any issues when the users tries to complete the purchase.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;If you have additional ideas please post a comment for others.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6644433" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Architectural+and+Design/default.aspx">Architectural and Design</category></item><item><title>Do you have your eye on it CS2007 SP1</title><link>http://blogs.msdn.com/maxakbar/archive/2007/06/22/do-you-have-your-eye-on-it-cs2007-sp1.aspx</link><pubDate>Fri, 22 Jun 2007 10:13:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3454379</guid><dc:creator>Max Akbar</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/3454379.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=3454379</wfw:commentRss><description>&lt;p&gt;Commerce Server 2007 Service Pack 1 is due out end of June if all goes well :),&amp;nbsp;keep your eye on it. There are two things note worthy:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Replication of Orders and Profiles Database&lt;br&gt;&lt;br&gt;&lt;/strong&gt;This was a design change request that was introduced right after the product went live so a lot of testing wen into it. The replication will allow to have more than one Data Centers acting as active active. If one data center goes down the other can pick up the load. Should be interesting to read all the details on how to do this.&lt;br&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Using Tabular functions for Catalogs SetJoin API&lt;br&gt;&lt;/strong&gt;&lt;br&gt;I am very proud of this as I had a hand in it :). I had my hand in lots of cookie jars when I was at Microsoft, still do&amp;nbsp;;). Originally the product only supported tables and views to be joined with the Product object. Some scenarios made it impossible to use the SetJoin API. Imagine if you had dynamic pricing scenario, you could write a function that runs a select statement based on parameters you passed it and the product API would then return you some results that you could then perform validations and selecting the correct price. What if you needed to search a table before the join occurred? Well now you can. I am very eager to see how this is implemented and how people will use.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;And they say Microsoft doesn't listen to it's customers :). I am very proud to have been part of the product group developing such a great software. Make sure to read every little bit of what's new.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3454379" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Catalog+System/default.aspx">Catalog System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Profile+System/default.aspx">Profile System</category></item><item><title>PayPal: What's New and What's Next - PayPal Developer Blog - PayPal Developer Community</title><link>http://blogs.msdn.com/maxakbar/archive/2007/06/13/paypal-what-s-new-and-what-s-next-paypal-developer-blog-paypal-developer-community.aspx</link><pubDate>Thu, 14 Jun 2007 08:04:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3282707</guid><dc:creator>Max Akbar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/3282707.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=3282707</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here is some good news for those who are looking for PayPal integration. Apparently the PayPal team is looking to integrate with Commerce Server and are going to release something this fall for Commerce Server 2007 and 2002 for more information check out the PayPal developer blog.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;Payment Modules&lt;/b&gt; Coming this fall:  &lt;ul&gt; &lt;li&gt;Microsoft Commerce Server 2007 &amp;amp; 2002 versions&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://www.pdncommunity.com/pdn/blog/article?board.id=devblog&amp;amp;message.id=324#M324"&gt;PayPal: What's New and What's Next - PayPal Developer Blog - PayPal Developer Community&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3282707" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category></item><item><title>How to enable pipeline pooling</title><link>http://blogs.msdn.com/maxakbar/archive/2007/05/08/how-to-enable-pipeline-pooling.aspx</link><pubDate>Wed, 09 May 2007 00:14:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2487197</guid><dc:creator>Max Akbar</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/2487197.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=2487197</wfw:commentRss><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;I was asked by a few folks on how do you create poolable pipeline components? After talking with &lt;a href="http://blogs.msdn.com/davidme/"&gt;David Messner&lt;/a&gt;, I learned that all you need to do is create a category and mark it appropriately. We seem to document this “&lt;a href="http://msdn2.microsoft.com/en-us/library/aa544728.aspx"&gt;PooledPipeline Object&lt;/a&gt;” but missing a few key items. We are missing the C++ header file mspu_guids.h that has the guid for the CATID_MSCSPIPELINE_POOLABLE constant and we are missing the instruction on tagging the component poolable. After lots of investigation I figured out what the guid is by looking at Commerce Server 2002 mspu_guids.h file:  &lt;p&gt;//&amp;nbsp; 4cb33c86-58fa-4e10-97a8-f19aff3b81d9  &lt;p&gt;DEFINE_GUID( CATID_MSCSPIPELINE_POOLABLE,  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4cb33c86,0x58fa,0x4e10,0x97,0xa8,0xf1,0x9a,0xff,0x3b,0x81,0xd9);  &lt;p&gt;Next I searched Commerce Serve 2007 pipeline components registry values and we tag our pipeline components category with this guid.&lt;br&gt;&lt;br&gt;&lt;img height="236" src="http://blogs.msdn.com/photos/commerceserver/images/2486555/original.aspx" width="625" border="0"&gt;  &lt;p&gt;This has been entered as bug and we will document it better in the future, but if you want poolable components you need to add a registry entry under the Implemented Categories with the&amp;nbsp;guid stated above. Something else that may help in automating the registration process is a documentation &lt;a href="http://msdn2.microsoft.com/en-us/library/ms948902.aspx"&gt;Registering the ATL Component&lt;/a&gt; for Commerce Server 2002.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2487197" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category></item><item><title>Digonex Technologies Dynamic Pricing System to be Available to Microsoft Commerce Server Users Via an Adapter for BizTalk Server</title><link>http://blogs.msdn.com/maxakbar/archive/2007/04/09/digonex-technologies-dynamic-pricing-system-to-be-available-to-microsoft-commerce-server-users-via-an-adapter-for-biztalk-server.aspx</link><pubDate>Mon, 09 Apr 2007 18:12:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2061506</guid><dc:creator>Max Akbar</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/2061506.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=2061506</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&amp;amp;STORY=/www/story/04-09-2007/0004561370&amp;amp;EDATE="&gt;Link to Digonex Technologies Dynamic Pricing System to be Available to Microsoft Commerce Server Users Via an Adapter for BizTalk Server&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2061506" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Architectural+and+Design/default.aspx">Architectural and Design</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/CS2007+BizTalk+Adapters/default.aspx">CS2007 BizTalk Adapters</category></item><item><title>OrderForm Viewer 2007</title><link>http://blogs.msdn.com/maxakbar/archive/2006/09/23/768496.aspx</link><pubDate>Sun, 24 Sep 2006 01:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:768496</guid><dc:creator>Max Akbar</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/768496.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=768496</wfw:commentRss><description>&lt;P&gt;The long awaited OrderForm Viewer for Commerce Server 2007 is now released get your copy from &lt;A href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=77487df3-96dc-41de-9ca0-b7f284a8c113"&gt;GotDotNET&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/768494/original.aspx" border=0&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have fun,&lt;/P&gt;
&lt;P&gt;-Max&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=768496" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category></item><item><title>Everything you ever wanted to know about pipelines but were afraid to ask (Part IV)</title><link>http://blogs.msdn.com/maxakbar/archive/2006/09/20/764024.aspx</link><pubDate>Thu, 21 Sep 2006 07:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:764024</guid><dc:creator>Max Akbar</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/764024.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=764024</wfw:commentRss><description>&lt;P&gt;So far you if you have followed this on going Pipeline posts, you should be very familiar with how to work with pipelines how to configure them using Pipeline Editor, how to manage your pipelines in the web.config as well as creating your own custom pipelines. I also hinted that you can use some undocumented APIs to automate some administration tasks (of course since this is undocumented its not supported :p). You should also be very familiar with creating custom UIs for your custom pipeline components and saving it's data.&lt;BR&gt;As promised in this post I will show you how to debug your custom components and do how to test them and this will conclude the final post.&lt;/P&gt;
&lt;P&gt;Before we jump into this I would like to offer you some readings, the UE team for CS2007 have done a fantastic job at documenting this version of Commerce Server so in a very nice way I would like to say please take a moment and make sure that you "Read The Fine Manual" :). Should you not agree I encourage you to take a moment and send feedback using the help docs.&lt;/P&gt;
&lt;P&gt;There are two other great blog post that you should read &lt;A href="http://blogs.msdn.com/davidme/default.aspx"&gt;David Messner's&lt;/A&gt; &lt;A href="http://blogs.msdn.com/davidme/archive/2006/03/06/544193.aspx"&gt;Transactional pipeline components and error handling&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/nihitk/default.aspx"&gt;Nihit Kaul's&lt;/A&gt;&amp;nbsp; &lt;A href="http://blogs.msdn.com/nihitk/archive/2006/08/07/RunningPipelinesFromAConsoleApp.aspx"&gt;Running Pipelines in a Console Application&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Creating PropertyPages for your Pipeline Component&lt;/H2&gt;
&lt;P&gt;This is a bit off topic but if you are like me you want to know everything there is to know when developing and dealing with Pipelines. So I have been asked how do you create a property page for the pipeline components. The short answer is that you can not create a property page using .NET. You will have to develop with C++. Here is how:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;We are going to work with what you have created so far in the previous posts. So launch your Custom Pipeline Project. 
&lt;LI&gt;Now that you have &lt;STRONG&gt;Visual Studio &lt;/STRONG&gt;up and running with our project Select &lt;STRONG&gt;File &lt;/STRONG&gt;then &lt;STRONG&gt;Add &lt;/STRONG&gt;and next select &lt;STRONG&gt;New Project...&lt;/STRONG&gt; 
&lt;LI&gt;Form the &lt;STRONG&gt;Add New Project&lt;/STRONG&gt; dialog navigate and select &lt;STRONG&gt;C++ &lt;/STRONG&gt;then &lt;STRONG&gt;ATL &lt;/STRONG&gt;and in the right pane select &lt;STRONG&gt;ATL &lt;/STRONG&gt;P&lt;STRONG&gt;roject&lt;/STRONG&gt;.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=438 alt="" src="http://blogs.msdn.com/photos/commerceserver/images/769401/original.aspx" width=680&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;
&lt;LI&gt;Enter a descriptive name for the project then select &lt;STRONG&gt;OK.&lt;/STRONG&gt; 
&lt;LI&gt;From the &lt;STRONG&gt;ATL Project Wizard &lt;/STRONG&gt;dialog select &lt;STRONG&gt;Next&lt;/STRONG&gt;. 
&lt;LI&gt;From the &lt;STRONG&gt;ATL Project Wizard &lt;/STRONG&gt;dialog&lt;STRONG&gt; Application Settings &lt;/STRONG&gt;make sure that only &lt;STRONG&gt;Dynamic-Link Library (DLL)&lt;/STRONG&gt; radio button is selected and next select &lt;STRONG&gt;Finish&lt;/STRONG&gt;. 
&lt;LI&gt;The wizard will create two projects see image below.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=223 alt="" src="http://blogs.msdn.com/photos/commerceserver/images/769404/original.aspx" width=239&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;
&lt;LI&gt;Now you need to implement the &lt;STRONG&gt;ISpecifyPropertyPages&lt;/STRONG&gt; Interface. This interface has only one method you need to implement &lt;STRONG&gt;GetPages&lt;/STRONG&gt;. This interface is implemented in your custom pipeline component class.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Text;&lt;BR&gt;&lt;BR&gt;using System.Windows.Forms;&lt;BR&gt;using System.Runtime.InteropServices;&lt;BR&gt;using Microsoft.CommerceServer.Interop;&lt;BR&gt;using Microsoft.CommerceServer.Interop.Orders;&lt;BR&gt;using Microsoft.CommerceServer.Runtime;&lt;BR&gt;using Microsoft.CommerceServer.Runtime.Orders;&lt;BR&gt;using Microsoft.CommerceServer.Internal;&lt;BR&gt;&lt;BR&gt;namespace CustomPipeline&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ComVisible(true)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GuidAttribute ("5904C354-F1B8-485c-89DD-883D26BCE85D")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Class1 : IPipelineComponent, &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; IPipelineComponentAdmin, &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; IPersistDictionary, &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; ISpecifyPipelineComponentUI,&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; IPipelineComponentDescription,&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; ISpecifyPropertyPages&lt;BR&gt;&lt;BR&gt;//.......&lt;BR&gt;// code commented out for clarity&lt;BR&gt;//.......&lt;BR&gt;&lt;BR&gt;#region ISpecifyPropertyPages Members&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void GetPages(out tagCAUUID pPages)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("The method or operation is not implemented.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;#endregion&lt;BR&gt;&lt;BR&gt;//.......&lt;BR&gt;// code commented out for clarity&lt;BR&gt;//.......&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Select your ATL Project and right click then select &lt;STRONG&gt;Add &lt;/STRONG&gt;and next select &lt;STRONG&gt;Class&lt;/STRONG&gt;.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=314 alt="" src="http://blogs.msdn.com/photos/commerceserver/images/769403/original.aspx" width=546&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;
&lt;LI&gt;From the &lt;STRONG&gt;Add Class Wizard &lt;/STRONG&gt;navigate to &lt;STRONG&gt;ATL &lt;/STRONG&gt;then from the right pane select &lt;STRONG&gt;ATL Property Page &lt;/STRONG&gt;and select the &lt;STRONG&gt;Add &lt;/STRONG&gt;button. 
&lt;LI&gt;In the &lt;STRONG&gt;ATL Page Wizard &lt;/STRONG&gt;enter a descriptive name for your class then select &lt;STRONG&gt;Next&lt;/STRONG&gt;.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=430 alt="" src="http://blogs.msdn.com/photos/commerceserver/images/769400/original.aspx" width=611&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;
&lt;LI&gt;In the next page make sure that &lt;STRONG&gt;Apartment Threaded &lt;/STRONG&gt;for &lt;STRONG&gt;Thread Modeling&lt;/STRONG&gt; is selected and &lt;STRONG&gt;No &lt;/STRONG&gt;for &lt;STRONG&gt;Aggregation &lt;/STRONG&gt;then select &lt;STRONG&gt;Next &lt;/STRONG&gt;and finally select &lt;STRONG&gt;Finish&lt;/STRONG&gt;. 
&lt;LI&gt;The wizard will create a basic Property Page. 
&lt;LI&gt;In the ATL project Select the project resource file and double click. This will bring you the &lt;STRONG&gt;Resource View&lt;/STRONG&gt;. 
&lt;LI&gt;FrFrom the Resource View navigate to Dialog and double click our newly created property page.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=226 alt="" src="http://blogs.msdn.com/photos/commerceserver/images/769396/original.aspx" width=689&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;
&lt;LI&gt;Next drag and drop a text box and use the existing Static Text. 
&lt;LI&gt;Now we need to add some code to the &lt;STRONG&gt;GetPages &lt;/STRONG&gt;method to display our property page.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;public void GetPages(out tagCAUUID pPages)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPages = new tagCAUUID();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPages.cElems = 1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buffer1 = new Guid("{2879AC98-0A80-4F6B-AC0C-EE8A1E0391E3}").ToByteArray();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPages.pElems = Marshal.AllocCoTaskMem(buffer1.Length);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int num1 = 0; num1 &amp;lt; buffer1.Length; num1++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Marshal.WriteByte(pPages.pElems, num1, buffer1[num1]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;The GUID must be of that of your property page. You can get this by opening the .rgs file of your property page.&lt;BR&gt;&lt;BR&gt;&lt;IMG height=232 alt="" src="http://blogs.msdn.com/photos/commerceserver/images/769397/original.aspx" width=874&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;
&lt;LI&gt;Now build your solution. 
&lt;LI&gt;Run the steps for registering your custom component with pipereg.exe. 
&lt;LI&gt;TeTest your new Property Page in Pipeline Editor.&lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/769399/original.aspx" border=0&gt;&lt;BR&gt;&amp;nbsp; 
&lt;LI&gt;Congratulation you&amp;nbsp; have now created a new property page for you pipeline component.&lt;/LI&gt;&lt;/OL&gt;
&lt;H2&gt;How to Use MessageManager&lt;/H2&gt;
&lt;P&gt;Take a moment to read the following help topic &lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/db4ee169-4500-4435-b23e-416f4ac11cab.asp"&gt;How to Use MessageManager&lt;/A&gt;. This topic will help you localize your error messages.&lt;/P&gt;
&lt;H2&gt;Error Handling in Pipelines&lt;/H2&gt;
&lt;P&gt;Take a moment and read the following help topic &lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/d95b5e92-ded5-4e5b-845a-c4dfafc9628a.asp"&gt;Error Handling in Pipelines&lt;/A&gt;. . This will familiarize you with where to add errors so you can display it to the user.&lt;/P&gt;
&lt;H2&gt;Troubleshooting Pipelines&lt;/H2&gt;
&lt;H3&gt;Debug pipelines in ASP.NET&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;To debug your pipelines in ASP.NET unpackage the CSharp site and set the correct security permissions. 
&lt;LI&gt;Open the Custom Pipeline Solution. 
&lt;LI&gt;Right Click on your Solution and add a &lt;STRONG&gt;Existing Web Project &lt;/STRONG&gt;and select CSharpSite. 
&lt;LI&gt;Modify the CSharpSite's Web.config so you can execute the basket pipeline. 
&lt;LI&gt;Modify the basket pipeline and add your custom pipeline anywhere (make sure that you had compiled your code in debug mode). 
&lt;LI&gt;Now add code to the default.aspx page to execute your basket pipeline.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;Basket basket = CommerceContext.Current.OrderSystem.GetBasket(Guid.NewGuid());&lt;BR&gt;basket.OrderForms.Add(new OrderForm());&lt;BR&gt;&lt;BR&gt;PipelineInfo pipeinfo = new PipelineInfo("basket");&lt;BR&gt;&lt;BR&gt;PipelineExecutionResult pipeResult = basket.RunPipeline(pipeinfo);&lt;BR&gt;Response.Write(pipeResult.ToString());&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&amp;nbsp; &lt;BR&gt;&lt;STRONG&gt;Note: You should know how to do the above steps for a refresher please read the previous posts.&lt;BR&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;BR&gt;
&lt;LI&gt;Now add the custom pipeline dll and pdb files under the bin directory of your CSharp Site. 
&lt;LI&gt;Now go to your Custom Pipeline project and create a breakpoint anywhere under the Execute method. 
&lt;LI&gt;Check the web.config to make sure it's set for debugging:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;lt;application siteName="CSharpSite" debugLevel="Debug"/&amp;gt;&lt;BR&gt;&lt;BR&gt;and&lt;BR&gt;&lt;BR&gt;&amp;lt;compilation defaultLanguage="c#" debug="true"&amp;gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Launch Internet Explore and navigate to the CSharpSite default.aspx page (For the advanced folks you can do the next steps by adding the URL in the debug properties of your project). 
&lt;LI&gt;Now in your Visual Studio select the &lt;STRONG&gt;Debug&lt;/STRONG&gt; menu then select &lt;STRONG&gt;Attach to Process...&lt;/STRONG&gt; 
&lt;LI&gt;In the Attach to Process dialog find the w3wp.exe process and attach to it (your Visual Studio solution will now be in debug mode). 
&lt;LI&gt;Refresh your Internet Explorer. 
&lt;LI&gt;Notice that you now hit your breakpoint.&lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;Using the XMLTracer Pipeline Component &lt;/H3&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/davidme/default.aspx"&gt;David Messner &lt;/A&gt;originally wrote the &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CS2002_GB/htm/cs_troubleshootingpipelines_abstract_msdn_yodp.asp"&gt;Troubleshooting Commerce Server Pipelines&lt;/A&gt; and in that article he wrote the &lt;STRONG&gt;XMLTracer&lt;/STRONG&gt; that has now made it's way into the product. You can read more about the &lt;STRONG&gt;XMLTracer&lt;/STRONG&gt; &lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/072e42e6-b298-4ab6-a475-dd22b5492b81.asp"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;How to Debug the Scriptor Component&lt;/H3&gt;
&lt;P&gt;As a best practice never use the scriptor component for production use. You can however use the DumpOrder.vbs for debugging pruposes or only use the scriptor for proof of concept applications. Please read the documentation for &lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/f82ca6df-9757-42ac-9432-2336481127bf.asp"&gt;How to Use the Scriptor Component&lt;/A&gt;. To setup the scriptor debugging please read &lt;A href="http://blogs.msdn.com/davidme/default.aspx"&gt;David Messner's&lt;/A&gt; article &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/CS2002_GB/htm/cs_troubleshootingpipelines_abstract_msdn_yodp.asp"&gt;Troubleshooting Commerce Server Pipelines&lt;/A&gt; chapter 3.&lt;BR&gt;&lt;/P&gt;
&lt;H3&gt;Using Pipeline Logging &lt;/H3&gt;
&lt;P&gt;This section of the help files will guide you through &lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/0e71e8d4-68f2-48e9-832d-ee356dd0bbf5.asp"&gt;How to Use an Order Log&lt;/A&gt;.&lt;BR&gt;When you set the &lt;STRONG&gt;loggingEnabled&lt;/STRONG&gt; section of the pipeline make sure to create a folder under the pipeline folder called &lt;STRONG&gt;log&lt;/STRONG&gt; and give ASP.NET access to write\read\modify.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;lt;pipelines siteName="CSharpSite"&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;pipeline name="basket" path="pipelines\basket.pcf" transacted="true" type="OrderPipeline" loggingEnabled="true"/&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;/pipelines&amp;gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&amp;nbsp; &lt;BR&gt;&lt;/P&gt;
&lt;H3&gt;Using the Scriptor to dump pipeline values to a file&lt;/H3&gt;
&lt;P&gt;In my &lt;A href="http://blogs.msdn.com/maxakbar/archive/2006/09/02/736999.aspx"&gt;second post&lt;/A&gt; I mentioned the &lt;STRONG&gt;DumpOrder.vbs&lt;/STRONG&gt; file, you can also find more information about it &lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/6769a11e-55cd-40b0-a690-54abf95ec250.asp"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Test your Pipelines&lt;/H2&gt;
&lt;P&gt;Since you have written your pipeline component in .NET testing becomes very simple all you have to do is write a test that calls the execute method. Make sure to read &lt;A href="http://blogs.msdn.com/nihitk/default.aspx"&gt;Nihit Kaul's&lt;/A&gt;&amp;nbsp; &lt;A href="http://blogs.msdn.com/nihitk/archive/2006/08/07/RunningPipelinesFromAConsoleApp.aspx"&gt;Running Pipelines in a Console Application&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Pipeline Performance&lt;/H2&gt;
&lt;P&gt;The pipeline performance counters are used for performance monitoring and tuning. The object name for the performance counters is Commerce : Pipelines. Counter instances are created per site, per a pipeline and pipeline component (.pcf file) combination. You will first need to execute your pipeline before you can collect data.&lt;/P&gt;
&lt;H2&gt;Summary&lt;/H2&gt;
&lt;P&gt;Now you know all there is to know about pipelines, good luck.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=764024" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Training/default.aspx">Training</category></item><item><title>Everything you ever wanted to know about pipelines but were afraid to ask (Part III)</title><link>http://blogs.msdn.com/maxakbar/archive/2006/09/17/759555.aspx</link><pubDate>Sun, 17 Sep 2006 22:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:759555</guid><dc:creator>Max Akbar</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/759555.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=759555</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Calibri&gt;So far you should be comfortable working with pipeline files creating\modifying components and having a good understanding of basic concepts of creating a custom pipeline components and as promised lets dive deeper into advanced understanding of the pipeline interfaces.&lt;BR&gt;Then we will dive into the Order System and learn about the heart of pipelines &lt;STRONG&gt;OrderForms&lt;/STRONG&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd&gt;Pipeline Interfaces&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;In order to create pipeline components you need to implement one or more interfaces. You must always implement the &lt;FONT size=3&gt;IPipelineComponent &lt;/FONT&gt;Interface, without this Interface the pipeline component will not execute. All other Interfaces and exposes other functionality to fit into the Commerce Pipeline architecture.&lt;/FONT&gt;&lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;IPipelineComponent Interface&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;As have been noted this Interface must be implemented in order for the pipeline object to execute the component.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;The IPipelineComponent interface supports the following methods:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Execute&lt;/STRONG&gt; &lt;BR&gt;The entry point at which the pipeline begins executing the component.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;Execute&lt;/STRONG&gt; Method:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;int Execute(object pdispOrder, object pdispContext, int lFlags);&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;The Execute method contains three parameters:&lt;BR&gt;&lt;STRONG&gt;pdispOrder&lt;/STRONG&gt; - A pointer to the OrderForm object. &lt;BR&gt;&lt;STRONG&gt;pdispContext&lt;/STRONG&gt; - A pointer to the Context object. This is a Dictionary object that contains pointers to the MessageManager object, Content object, and language information. Values can be passed through this parameter using the PipelineInfo object.&lt;BR&gt;&lt;STRONG&gt;lFlags&lt;/STRONG&gt; - Reserved. This parameter should be zero (0).&lt;BR&gt;&lt;BR&gt;The Execute method also returns an integer parameter. A flag that indicates what level of errors is tolerated. &lt;BR&gt;&lt;STRONG&gt;1&lt;/STRONG&gt; Success. No errors, component executed successfully.&lt;BR&gt;&lt;STRONG&gt;2&lt;/STRONG&gt; Warning. Basket or purchase errors for this operation. &lt;BR&gt;&lt;STRONG&gt;3&lt;/STRONG&gt; Failure. Serious errors in execution of this component.&lt;BR&gt;&lt;BR&gt;The following sample shows how to pass Context values to the Pipeline object.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;Basket basket = CommerceContext.Current.OrderSystem.GetBasket(userID);&lt;BR&gt;PipelineInfo pipeinfo = new PipelineInfo("Basket");&lt;BR&gt;&lt;BR&gt;pipeinfo["OrderContext"] = CommerceContext.Current.OrderSystem;&lt;BR&gt;&lt;BR&gt;basket.RunPipeline(pipeinfo);&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;The following code shows how to retrieve the Context passed into the Pipeline.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Text;&lt;BR&gt;&lt;BR&gt;using System.Runtime.InteropServices;&lt;BR&gt;using Microsoft.CommerceServer.Interop;&lt;BR&gt;using Microsoft.CommerceServer.Runtime;&lt;BR&gt;using Microsoft.CommerceServer.Interop.Orders;&lt;BR&gt;using Microsoft.CommerceServer.Runtime.Orders;&lt;BR&gt;&lt;BR&gt;namespace CustomPipeline&lt;BR&gt;{&lt;BR&gt;[ComVisible(true)]&lt;BR&gt;[GuidAttribute ("5904C354-F1B8-485c-89DD-883D26BCE85D")]&lt;BR&gt;public class Class1 : IPipelineComponent&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Status codes for pipeline components&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusSuccess = 1; // success&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusWarning = 2; // warning&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusError = 3; // error&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPipelineComponent Members&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void EnableDesign(int fEnable){}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public int Execute(object pdispOrder, object pdispContext, int lFlags)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Int32 ReturnValue = StatusSuccess;&lt;BR&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; // How to get our Custom OrderContext&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IDictionary Context = (IDictionary)pdispContext;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OrderContext myOrderContext = (OrderContext)Context["OrderContext"];&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // How to get MessageManager Context&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IMessageManager MessageManager = (IMessageManager)Context["MessageManager"];&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return ReturnValue;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }}&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;A best practice is always put a try\catch in &lt;STRONG&gt;Execute&lt;/STRONG&gt; Method so when exceptions do occur you can set the correct return value, see the following sample (you may also want to log the exception):&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;public Int32 Execute(Object pdispOrder, Object pdispContext, Int32 Flags) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Int32 ReturnValue = StatusSuccess; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Status level for component execution &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // perform some logic &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // you also can set a warning&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ReturnValue = StatusWarning; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // an error has occured. Add the error message to the basket errors and &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set the "error" as the pipeline component error level &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((ISimpleList)Order["_Basket_Errors"]).Add(ref e.Message); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnValue = StatusError; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ReturnValue; &lt;BR&gt;}&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;EnableDesign&lt;/STRONG&gt; &lt;BR&gt;Sets the design mode on the component. Use this method to prepare the component for execution in one of two modes: design mode or execution mode. In design mode, which is useful for running the Pipeline Editor, errors are more easily tolerated. Execution mode (the default) is analogous to production mode. Although you have to Implement the &lt;STRONG&gt;EnableDesign&lt;/STRONG&gt; method you can leave it empty.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void EnableDesign([In] int fEnable);&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;IPipelineComponentAdmin Interface &lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;The &lt;STRONG&gt;IPipelineComponenetAdmin&lt;/STRONG&gt; Interface allows you to save configuration values at design time and they are read at runtime to perform some action based on your logic. For example in the &lt;STRONG&gt;MinMaxShipping&lt;/STRONG&gt; sample a UI is presented when editing the component in Pipeline Editor and you set thresholds of minimum shipping cost. Once this value is set during the design time and when the pipeline executes, this value can be used to make sure we don't fall below the shipping cost. In order to show the properties for &lt;STRONG&gt;MinMaxShipping&lt;/STRONG&gt; the sample uses a &lt;STRONG&gt;WinForm&lt;/STRONG&gt; that implements &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; Interface, this is an alternative to using the &lt;STRONG&gt;ISpecifyPropertyPages&lt;/STRONG&gt; Interface. After going over some concepts of the other Interfaces I will show you an example of how these Interfaces work together.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;IPipelineComponenetAdmin&lt;/STRONG&gt; Interface supports the following methods:&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;GetConfigData&lt;/STRONG&gt; &lt;BR&gt;Returns a Dictionary object that contains the configuration settings for a component.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;GetConfigData&lt;/STRONG&gt; &lt;STRONG&gt;&lt;BR&gt;&lt;/STRONG&gt;Method: &lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object GetConfigData(); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;The &lt;STRONG&gt;GetConfigData&lt;/STRONG&gt; method returns an object parameter. The object returned is actually an IDictionary pointer for the user interface to read the configuration data for the component.&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;SetConfigData&lt;/STRONG&gt; &lt;BR&gt;Sets the configuration settings on a component using the contents of a Dictionary object.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;SetConfigData.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void SetConfigData(object pDict); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;The &lt;STRONG&gt;SetConfigData&lt;/STRONG&gt; method contains one parameter:&lt;BR&gt;&lt;STRONG&gt;pDict&lt;/STRONG&gt; - An interface pointer to the object containing the configuration information. &lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;IPipelineComponentUI Interface &lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;The &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; Interface is implemented to allow a pipeline component to display a dialog box for configuration values. The interface is implemented by a separate Component Object Model (COM) object that displays the dialog box in .NET this can be a &lt;STRONG&gt;WinForm&lt;/STRONG&gt;. In order to display the &lt;STRONG&gt;WinForm&lt;/STRONG&gt; you must also implement the &lt;STRONG&gt;ISpecifyPipelineComponentUI&lt;/STRONG&gt;. The &lt;STRONG&gt;ISpecifyPipelineComponentUI &lt;/STRONG&gt;specifies the &lt;STRONG&gt;WinForm&lt;/STRONG&gt; to launch which executes the &lt;STRONG&gt;ShowProperties&lt;/STRONG&gt; method.&lt;BR&gt;&lt;BR&gt;The &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; interface supports the following method:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ShowProperties &lt;/STRONG&gt;&lt;BR&gt;Called by the Pipeline Editor to display the dialog box for the component.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;ShowProperties&lt;/STRONG&gt;:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void ShowProperties(object pdispComponent); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;The &lt;STRONG&gt;ShowProperties &lt;/STRONG&gt;method contains one parameter: &lt;STRONG&gt;&lt;BR&gt;pdispComponent&lt;/STRONG&gt; - A pointer to an &lt;STRONG&gt;IPipelineComponentAdmin&lt;/STRONG&gt; interface. &lt;/P&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;IPersistDictionary Interface&lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;The &lt;STRONG&gt;IPersistDictionary&lt;/STRONG&gt; Interface is implemented by an object that needs to read or write its data as a Dictionary object. When creating a UI for your pipeline may have need to save it's data if so then use the &lt;STRONG&gt;IPersistDictionary&lt;/STRONG&gt; Interface. The configuration data is saved within the Pipeline Configuration File.&lt;BR&gt;&lt;BR&gt;The &lt;STRONG&gt;IPersistDictionary&lt;/STRONG&gt; Interface supports the following methods.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;GetProgID &lt;/STRONG&gt;&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;GetProgID.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object GetProgID(); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;Returns the ProgID of the object.&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;InitNew &lt;BR&gt;&lt;/STRONG&gt;Allows the object to initialize values before saved values are loaded.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;InitNew.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void InitNew(object pDict); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;IsDirty &lt;BR&gt;&lt;/STRONG&gt;Indicates whether the values to be saved have changed since the last save.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;IsDirty.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void IsDirty(object pDict); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Load &lt;/STRONG&gt;&lt;BR&gt;Loads saved data from a Dictionary object.&lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;Load.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void Load(object pDict); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Save &lt;BR&gt;&lt;/STRONG&gt;&lt;FONT face=Calibri&gt;Saves data to a Dictionary object. &lt;BR&gt;The following is the method signature for the &lt;STRONG&gt;Save.&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;void Save(object pDict); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;IPipelineComponentDescription Interface &lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;The &lt;STRONG&gt;IPipelineComponentDescription&lt;/STRONG&gt; Interface makes it possible for pipeline components to identify the values that they read from the pipeline context, and the keys and values that they read from or write to the OrderForm object.&lt;BR&gt;&lt;BR&gt;Although pipeline components are not required to implement the &lt;STRONG&gt;IPipelineComponentDescription&lt;/STRONG&gt; Interface, implementing this interface makes it possible for the Pipeline Editor to identify and display the elements that your component reads or writes. This information can help developers who are troubleshooting a pipeline configuration.&lt;BR&gt;&lt;BR&gt;The &lt;STRONG&gt;IPipelineComponentDescription&lt;/STRONG&gt; interface supports the following methods.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;ContextValuesRead&lt;/STRONG&gt; &lt;BR&gt;Returns a SAFEARRAY VARIANT that identifies the pipeline context values that the component reads.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object ContextValuesRead(); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;ValuesRead&lt;/STRONG&gt; &lt;BR&gt;Returns a SAFEARRAY VARIANT that identifies the values that the component reads.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object ValuesRead(); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;ValuesWritten&lt;/STRONG&gt; &lt;BR&gt;Returns a SAFEARRAY VARIANT that identifies the values that the component writes.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object ValuesWritten(); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;An Example of how to write SAFEARRAY VARIANT in .NET to work with the Pipeline Component:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object ValuesWritten()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; object[] valuesWritten= new object[3];&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valuesWritten[0] = "myValue_1";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valuesWritten[1] = "item.myValue_2";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; valuesWritten[2] = "_myValue_3";&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return valuesWritten;&lt;BR&gt;} &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;ISpecifyPipelineComponentUI Interface&lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;The &lt;STRONG&gt;ISpecifyPipelineComponentUI&lt;/STRONG&gt; Interface is used by a pipeline component to specify the Component Object Model (COM) object that implements the &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; interface that gets and sets configuration values.&lt;BR&gt;&lt;BR&gt;The &lt;STRONG&gt;ISpecifyPipelineComponentUI&lt;/STRONG&gt; Interface supports the following method.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;GetPipelineComponentUIProgID&lt;/STRONG&gt; &lt;BR&gt;Used by the pipeline component to specify the component that displays the configuration dialog box by implementing the &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; Interface.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;object GetPipelineComponentUIProgID(); &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;Here is an example of the above method:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;public string GetPipelineComponentUIProgID() &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "CustomPipeline.Form1"; &lt;BR&gt;} &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;ISpecifyPropertyPages Interface &lt;/FONT&gt;&lt;/H3&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;The &lt;STRONG&gt;ISpecifyPropertyPages&lt;/STRONG&gt; Interface is a standard Win32 OLE interface. You implement this interface to allow the pipeline administration tool to invoke the property page user interface of the component. For more information about the &lt;STRONG&gt;ISpecifyPropertyPages&lt;/STRONG&gt; Interface, see the OLE Programmer's Reference.&lt;BR&gt;&lt;BR&gt;The &lt;STRONG&gt;ISpecifyPropertyPages&lt;/STRONG&gt; Interface supports the following method:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;GetPages &lt;/STRONG&gt;&lt;BR&gt;Fills in an array of class identifiers (CLSID) where each CLSID is the CLSID of a property page that can be displayed in the property sheet for this object.&lt;/LI&gt;&lt;/UL&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd&gt;Now let's put it all together with an example:&lt;/FONT&gt;&lt;/H2&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;We are going to work on the sample component created for the last post.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Launch Visual Studio 2005 
&lt;LI&gt;Open the CustomPipeline Project from our previous post 
&lt;LI&gt;Add a WinForm 
&lt;UL&gt;
&lt;LI&gt;Right Click on CustomPipeline Project and add a new Form&lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/759558/original.aspx" border=0&gt;&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;Name your Form something descriptive. 
&lt;LI&gt;Add two buttons, a Lable and a TextBox to the Form&lt;BR&gt;This form will be used to store custom data during the design time and extract during the runtime for processing.&lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/759562/original.aspx" border=0&gt;&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;Set Form properties:&lt;BR&gt;&lt;STRONG&gt;StartPosition=CenterScreen&lt;BR&gt;&lt;/STRONG&gt;&lt;STRONG&gt;FormBorderStyle=FixedDialog&lt;BR&gt;&lt;/STRONG&gt;&lt;STRONG&gt;MaximizeBox=False&lt;BR&gt;&lt;/STRONG&gt;&lt;STRONG&gt;MinimizeBox=False&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Add &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; Interface to WinForm and implement it's interface&lt;BR&gt;
&lt;LI&gt;Implement the &lt;FONT face=Calibri&gt;&lt;STRONG&gt;IPipelineComponentUI &lt;/STRONG&gt;Interface&lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/759563/original.aspx" border=0&gt;&lt;BR&gt;&lt;BR&gt;By selecting the &lt;STRONG&gt;Implement interface 'IPipelineComponentUI' &lt;/STRONG&gt;you will get the following code:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;#region IPipelineComponentUI Members &lt;BR&gt;&lt;BR&gt;public object ShowProperties(object pdispComponent)() &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("The method or operation is not implemented."); &lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;#endregion &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;LI&gt;Add a new variable to the Form&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;bool OK = false; &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Add details to OK and Cancel Button's Click Event&lt;BR&gt;When Clicking the OK Button we want to save the configuration else do not save the Sample Data.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;private void button2_Click(object sender, EventArgs e)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SamlpleData = this.textBox1.Text;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.OK = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Hide();&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;private void button1_Click(object sender, EventArgs e)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.OK = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Hide();&lt;BR&gt;}&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Now we need to add a property to the form.&lt;BR&gt;We need to get values out and in from the WinForm when values are entered.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;public string SamlpleData &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Convert.ToString(textBox1.Text); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textBox1.Text = value.ToString(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;} &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Add implementation details for &lt;STRONG&gt;IPipelineComponentUI's ShowProperties &lt;/STRONG&gt;method:&lt;BR&gt;In order to retrieve and save values during design time we need to add code to the &lt;STRONG&gt;ShowProperties&lt;/STRONG&gt; method.&lt;BR&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;try&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use IPipelineComponentAdmin Interface to get configuration information&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPipelineComponentAdmin pdispPCA = (IPipelineComponentAdmin)pdispComponent;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Populate a dictionary with component configuration&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.CommerceServer.Runtime.IDictionary dictConfig = (Microsoft.CommerceServer.Runtime.IDictionary)pdispPCA.GetConfigData();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Form1 frmPipeCompUIObj = new Form1();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the sample data&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; frmPipeCompUIObj.SamlpleData = (String)dictConfig["SampleData"];&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the properties for the user to editbr&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; frmPipeCompUIObj.ShowDialog();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(frmPipeCompUIObj.Ok)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Save entered values into the dictionary&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dictConfig["SampleData"] = frmPipeCompUIObj.SamlpleData;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Update the component with new configuration information&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pdispPCA.SetConfigData(dictConfig);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;catch(Exception e)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw(new Exception(e.Message));&lt;BR&gt;}&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Repeat Step 4 and 5 with &lt;STRONG&gt;IPersistDictionary &lt;/STRONG&gt;Interface for our Component (These Interfaces must be implemented in your component and not the form) 
&lt;LI&gt;&lt;FONT face=Calibri&gt;Repeat Step 4 and 5 with &lt;STRONG&gt;ISpecifyPipelineComponentUI&lt;/STRONG&gt; Interface Interface for our Component &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT face=Calibri&gt;Repeat Step 4 and 5 with &lt;STRONG&gt;IPipelineComponentDescription&lt;/STRONG&gt; Interface Interface for our Component &lt;/FONT&gt;&lt;BR&gt;
&lt;LI&gt;Now we need to add details to &lt;STRONG&gt;IPipelineComponentUI&lt;/STRONG&gt; Interface&lt;BR&gt;&lt;BR&gt;After implementing all of the methods your component should look like the code below:&lt;BR&gt;&lt;BR&gt;
&lt;TABLE width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT face="Courier New" size=2&gt;using System; &lt;BR&gt;using System.Collections.Generic; &lt;BR&gt;using System.Text; &lt;BR&gt;using System.Runtime.InteropServices; &lt;BR&gt;using Microsoft.CommerceServer.Interop; &lt;BR&gt;using Microsoft.CommerceServer.Interop.Orders; &lt;BR&gt;using Microsoft.CommerceServer.Runtime; &lt;BR&gt;using Microsoft.CommerceServer.Runtime.Orders; &lt;BR&gt;&lt;BR&gt;namespace CustomPipeline &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ComVisible(true)] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GuidAttribute ("5904C354-F1B8-485c-89DD-883D26BCE85D")] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Class1 : IPipelineComponent, &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; IPipelineComponentAdmin, &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; IPersistDictionary, &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; ISpecifyPipelineComponentUI,&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; IPipelineComponentDescription &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Status codes for pipeline components &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusSuccess = 1; // success &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusWarning = 2; // warning &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusError = 3;&amp;nbsp;&amp;nbsp; // error &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Sample Data &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sampleData = null; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool isDirty = false; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Class1() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; isDirty = false; &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; this.InitNew(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPipelineComponent Members &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void EnableDesign(int fEnable) { } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int Execute(object pdispOrder, object pdispContext, int lFlags) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; Int32 ReturnValue = StatusSuccess; &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; IDictionary Context = (IDictionary)pdispContext; &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; OrderContext myOrderContext = (OrderContext)Context["OrderContext"]; &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; return ReturnValue; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPipelineComponentAdmin Members &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object GetConfigData() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; IDictionary Dictionary = new Dictionary(); &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; this.Save(Dictionary, Convert.ToInt32(false)); &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; return Dictionary; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void SetConfigData(object pDict) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; IDictionary Dictionary = (IDictionary)pDict; &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; this.Load(Dictionary); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPersistDictionary Members &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string GetProgID() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; return "CustomPipeline.Class1"; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void InitNew() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; sampleData = ""; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int IsDirty() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; return Convert.ToInt32(isDirty); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Load(object pdispDict) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; IDictionary Dictionary = (IDictionary)pdispDict; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //If the expected dictionary values do not exist use the defaults &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Dictionary["SampleData"] != null &amp;amp;&amp;amp; Dictionary["SampleData"] != DBNull.Value)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sampleData = Convert.ToString(Dictionary["SampleData"]); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Save(object pdispDict, int fSameAsLoad) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; IDictionary Dictionary = (IDictionary)pdispDict; &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; Dictionary["SampleData"] = sampleData; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region ISpecifyPipelineComponentUI Members &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string GetPipelineComponentUIProgID() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; return "CustomPipeline.Form1"; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPipelineComponentDescription Members &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object ContextValuesRead() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; object[] contextValuesRead = new object[0]; &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; return contextValuesRead; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object ValuesRead() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; object[] valuesRead = new object[0]; &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; return valuesRead; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object ValuesWritten() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &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; object[] valuesWritten = new object[0]; &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; return valuesWritten; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;BR&gt;} &lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;LI&gt;Compile the sample 
&lt;LI&gt;Test the sample 
&lt;LI&gt;Congratulations you have successfully implemented a UI to your component. Notice that when you save the value in the form and open the form it remembers the value.&lt;/LI&gt;&lt;/OL&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd&gt;Debugging your .NET Form in Pipeline Editor&lt;/FONT&gt;&lt;/H2&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;I know I said that I would go over the Pipeline Debugging later on but this is the right place to go over how to debug your .NET Form inside the Pipeline Editor.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Launch the &lt;STRONG&gt;Pipeline Editor&lt;/STRONG&gt; 
&lt;LI&gt;From the &lt;STRONG&gt;File Menu &lt;/STRONG&gt;select &lt;STRONG&gt;New&lt;/STRONG&gt; 
&lt;LI&gt;From the &lt;STRONG&gt;Choose a Pipeline Template &lt;/STRONG&gt;select &lt;STRONG&gt;Empty.pct &lt;/STRONG&gt;then select &lt;STRONG&gt;OK&lt;/STRONG&gt; 
&lt;LI&gt;Right click on &lt;STRONG&gt;Empty Pipeline Template&lt;/STRONG&gt; and a new &lt;STRONG&gt;Stage&lt;/STRONG&gt; 
&lt;LI&gt;Right click on &lt;STRONG&gt;New Stage&lt;/STRONG&gt; and insert your custom pipeline you just created&lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/759560/original.aspx" border=0&gt;&lt;BR&gt;
&lt;LI&gt;Launch &lt;STRONG&gt;Visual Studio 2005 &lt;/STRONG&gt;and open your Custom Pipeline Project 
&lt;LI&gt;From Visual Studio select the &lt;STRONG&gt;Debug&lt;/STRONG&gt; menu then click &lt;STRONG&gt;Attach to Process...&lt;/STRONG&gt; 
&lt;LI&gt;From the &lt;STRONG&gt;Add to Process&lt;/STRONG&gt; dialog find &lt;STRONG&gt;pipeeditor.exe&lt;/STRONG&gt; process and attach to it 
&lt;LI&gt;Put a break point in the &lt;STRONG&gt;ShowProperties&lt;/STRONG&gt; method in your Form 
&lt;LI&gt;Next from the &lt;STRONG&gt;Pipeline Editor &lt;/STRONG&gt;right click on &lt;STRONG&gt;CustomPipeline.class1&lt;/STRONG&gt; component and select &lt;STRONG&gt;Properties...&lt;/STRONG&gt; 
&lt;LI&gt;From the &lt;STRONG&gt;Component Properties &lt;/STRONG&gt;dialog navigate to &lt;STRONG&gt;Custom Properties &lt;/STRONG&gt;tab and click &lt;STRONG&gt;Custom User Interface&lt;/STRONG&gt; 
&lt;LI&gt;Notice that the break point will be hit (if you had placed your break point before the show method of the form) 
&lt;LI&gt;Now Continue and add a value to the text box 
&lt;LI&gt;Close the form and save your pipeline 
&lt;LI&gt;Open &lt;STRONG&gt;Pipeline Editor &lt;/STRONG&gt;and navigate to your PCF file from step 14 and open it 
&lt;LI&gt;Open your form and noticed that the value you had save previously is now displayed&lt;BR&gt;&lt;BR&gt;A bit of explanation of the PCF file. The PCF file is a OLE Compound file which contain it's own file structure inside the file. The OLE Compound file has a root that is returned by OpenStorageFile method. The root may contain sub-storages or streams. I have a sample code on GotDotNET for Commerce Server called Pipeline Modifier. The methods used in the Pipeline Modifier is undocumented but if you search hard enough you can find information on it from Site Server. The Pipeline Modifier allows you to view the raw data of the PCF file and modified it on the fly. Since the Pipeline Editor does not allow you to use command lines to modify the PCF files I created this tool to help in the process of automating the daunting task of managing Pipelines manually. If you download this tool you will need to modify a few things. For example since Commerce Server 2007 has an interop for the Pipeline Interfaces you will need to reference this instead of PipeCompLib. Also you may encounter MDA warning which you can ignore. Now lets get back on track and learn about OrderForms.&lt;/LI&gt;&lt;/OL&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd&gt;OrderForms&lt;/FONT&gt;&lt;/H2&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;An &lt;STRONG&gt;OrderForm&lt;/STRONG&gt; represents a collection of items that a user placed in a shopping cart. Depending on how far the user has progressed through the purchasing process, an &lt;STRONG&gt;OrderForm&lt;/STRONG&gt; might also contain the locations to ship the products to, the discounts that apply to the &lt;STRONG&gt;OrderGroup&lt;/STRONG&gt;, and the ways that the user paid or will pay for the products.&lt;BR&gt;There are two types of OrderForms a .NET &lt;STRONG&gt;OrderForm&lt;/STRONG&gt; that is used during runtime and a COM &lt;STRONG&gt;OrderForm &lt;/STRONG&gt;that is used in the Pipelines. The Commerce Server 2007 has good documentation of how to extend the Order System and there is even an example under the &lt;STRONG&gt;SDK&lt;/STRONG&gt; folder &lt;STRONG&gt;OrdersExtensibility&lt;/STRONG&gt;. &lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Orders Pipeline Adapters&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;So what happens when you create a .NET &lt;STRONG&gt;OrderForm&lt;/STRONG&gt; then execute the basket Pipeline (or any other Pipeline)? Simply put the managed &lt;STRONG&gt;OrderForm&lt;/STRONG&gt; is run through the Pipeline Adapter and mapped into COM &lt;STRONG&gt;OrderForm&lt;/STRONG&gt; then the basket Pipeline is executed.&lt;BR&gt;&lt;BR&gt;The Orders Pipeline Adapter marshals data between the managed-code object model and legacy Dictionary instances in your Orders System. The Pipeline Adapter uses mapping contained in an XML file to map data between the managed code object and the legacy object. Dictionary class instances are simply hierarchical name-value pair collections. Managed classes can be viewed the same way, with strongly-typed properties as the name-value pairing. A mapping between the two models is achieved with an XML format that specifies the managed classes and properties to map, and the target Dictionary and SimpleList layout for those instances in unmanaged code.&lt;BR&gt;&lt;BR&gt;The default mapping file for the Orders System is called OrderPipelineMappings.xml. The default directory for OrderPipelineMappings.xml is %SystemDrive%\Inetpub\wwwroot\&amp;lt;ApplicationName&amp;gt;.&lt;/P&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd&gt;Summary&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;So you learned more about Pipeline Interfaces and should have an advanced understanding of them and how to use them as well as debugging the &lt;STRONG&gt;WinForm &lt;/STRONG&gt;UIs created.&lt;/P&gt;
&lt;P&gt;You also learned of the Pipeline Modifier tool to help you with automating the administration task of your PCF files.&lt;/P&gt;
&lt;P&gt;You now know how the managed OrderForm is mapped to COM OrdrForm and for more reading on this I would suggest that you work with the sample &lt;FONT face=Calibri&gt;&lt;STRONG&gt;OrdersExtensibility&lt;/STRONG&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;In the next on going post I will discuss how to debug your pipeline components as well as testing your components.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=759555" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Training/default.aspx">Training</category></item><item><title>Everything you ever wanted to know about pipelines but were afraid to ask (Part II)</title><link>http://blogs.msdn.com/maxakbar/archive/2006/09/02/736999.aspx</link><pubDate>Sat, 02 Sep 2006 22:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:736999</guid><dc:creator>Max Akbar</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/736999.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=736999</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Calibri&gt;In the previous post you learned some concepts of pipelines so by now you should have a good idea of what Pipelines are. In this part we are going to talk about creating\developing Pipeline components. Before doing this let cover some more basics.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Pipeline Editor&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Pipeline Editor is a GUI tool that allows you to modify and create new pipeline files for more details see links bellow in the Commerce Server help documentation.&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/a2ca29e5-47fb-4248-a59d-f411dcf7ab06.asp"&gt;How to Open an Existing Pipeline for Editing&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/7c9ba99a-996b-4557-8171-6956a8ad58cd.asp"&gt;How to Create a New Pipeline&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/6fff780b-0a8a-49e3-90ae-ce451415892e.asp"&gt;How to Add a Component to a Pipeline&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/878e44d1-1f50-483c-9880-46fd5e36104d.asp"&gt;How to Change the Order of Components in a Pipeline Stage&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/3f98f901-5e85-4838-846b-cfb77027f6b4.asp"&gt;How to Create a List of Values Read and Written by a Pipeline&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/7f8190c8-f763-48f8-aad2-b88e1dc4ab74.asp"&gt;How to Troubleshoot Errors When Editing a Pipeline&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2ca2153c-1809-4305-9500-d347cc1dba6a.asp"&gt;Pipeline Editor Property Pages&lt;/A&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/ccceaac9-15f8-444d-afea-dfef1f48199a.asp"&gt;How to Create a Custom Pipeline&lt;/A&gt; &lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Pipeline Register (PipeReg.exe)&lt;/FONT&gt;&lt;/H2&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;Commerce Server 2007 includes the Pipeline Component Registration Tool for efficient registration of creating custom pipeline components. Typically, registration would be done using the DllRegisterServer entry-point routine, as is done in C++. &lt;/P&gt;
&lt;P&gt;The Pipeline Component Registration Tool simplifies the registration process for none C++ componenets by registering pipeline components for stage affinity and then exporting the data to a Registry Script (.reg) file so it can be deployed on other servers.&lt;/P&gt;
&lt;P&gt;The PipeReg.exe tool is located under C:\Program Files\Microsoft Commerce Server 2007\Tools if you installed Commerce Server in its default location.&lt;/P&gt;
&lt;P&gt;We will go over this tool more once we start developing pipeline components using .NET.&lt;/P&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Commerce Server SDK and Pipelines&lt;/FONT&gt;&lt;/H2&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;Under the Commerce Server SDK folder you will find three folders of interest when developing pipelines.&lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;DumpOrder&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;A sample Microsoft Visual Basic script, DumpOrder.vbs, is supplied in the C:\Program Files\Microsoft Commerce Server 2007\Sdk\Samples\DumpOrder subdirectory if Commerce Server is installed in its default location. When it runs, the DumpOrder script writes the contents of the &lt;B&gt;OrderForm&lt;/B&gt; object to a file. You use the DumpOrder script for debugging purposes.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;To use the DumpOrder script&lt;/B&gt; &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Add the &lt;B&gt;Scriptor&lt;/B&gt; component to any stage in the pipeline. Double-click the &lt;B&gt;Scriptor&lt;/B&gt; component icon. In the resulting property page, click the &lt;B&gt;Scriptor&lt;/B&gt; tab, click &lt;B&gt;VBScript&lt;/B&gt; in the &lt;B&gt;Language&lt;/B&gt; drop-down list, and then click &lt;B&gt;File&lt;/B&gt;. 
&lt;LI&gt;In the &lt;B&gt;File&lt;/B&gt; box, type the path to the DumpOrder.vbs script (or click &lt;B&gt;Browse&lt;/B&gt; to find it). 
&lt;LI&gt;The DumpOrder.vbs script takes a file name as a parameter, so type the full path name of the output file in the &lt;B&gt;Config&lt;/B&gt; field. For example, &lt;B&gt;filename=c:\order.log&lt;/B&gt;. 
&lt;LI&gt;Click &lt;B&gt;OK&lt;/B&gt;, and then save the pipeline configuration file. 
&lt;LI&gt;Stop and restart Internet Information Services (IIS), or modify the web.config file to restart the application. The DumpOrder.vbs script will write a file with the name you specified as a parameter when the Order Processing pipeline runs. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;B&gt;Note:&lt;/B&gt; Make sure to give permissions to where the log file is generated to ASP.NET account or whatever account you use for the process. Also make sure to understand the security implications of giving write\modify to a directory or file.&lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;MinMaxShipping&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;The Commerce Server SDK includes a complete pipeline component developed in C#. It is called MinMaxShipping, and can be found in the following folder:&lt;/P&gt;
&lt;P&gt;C:\Program Files\Microsoft Commerce Server 2007\Sdk\Samples\MinMaxShipping if Commerce Server is installed in its default location.&lt;/P&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Pipeline Registration Tool Source Code&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;Pipeline Registration Tool Source Code under C:\Program Files\Microsoft Commerce Server 2007\Sdk\Samples\Pipeline Registration Tool Source Code folder if Commerce Server is installed in default location and constitute the source files for Pipeline Register (PipeReg.exe)&amp;nbsp; that helps you register pipeline components for stage affinity. It allows you to register the pipeline component on the computer on which the tool is being run, and it allows you to export the data to a registry script (.reg extension) for deployment to other servers.&lt;/P&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;A list of out of the box Commerce Server Pipeline Components&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;The following is a list of out of the box pipeline components that can be used to create custom pipeline files. Remember in the first part we went over some sample files that comes with Commerce Server and are to be used as references. Based on your business rules you can create your own custom pipelines.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;B&gt;Pipeline Component Name &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;B&gt;Description&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/92d435f0-7f12-4151-a220-22e240a23d74.asp"&gt;AddAttachments&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Adds attachments to a direct mail message.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2aeb69ad-c3f4-42ba-8d68-fc795c5e98ce.asp"&gt;CheckInventory&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Checks the inventory status for items in the customer's basket.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/dda79cc5-7633-413c-91ea-6ad8808a9296.asp"&gt;ComposeDMLMessage&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Creates the body of a direct mail message.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/4b33791a-2ef1-4a41-ab14-9dd76d2e2b79.asp"&gt;CreateUPMCookie&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Collects cookie data to pass to an Active Server Pages (ASP) page creating a personalized direct mail message.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/30a0de09-e129-4a44-bf89-7ca031c0ea4c.asp"&gt;CSFAdvertisingNeedOfDelivery&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Makes sure that advertisements are selected often enough to meet business commitments.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/c6572553-f2b6-4273-b775-00e0ef47824f.asp"&gt;CSFEvalTargetGroups&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Used to target particular groups for advertising, content selection, and discounts. This component evaluates a list of expressions for each item in a list and adjusts item selection scores.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/7854bcc9-3b42-4601-b579-ee9e92a7c6f8.asp"&gt;CSFFilterContent&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Applies provided filters to a content list in a Content Selection pipeline (CSP).&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/ae1354ba-56c5-471d-a930-9a128e42e2c6.asp"&gt;CSFFormatTemplate&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Merges data from selected items and their associated templates to form formatted strings. These are usually HTML strings ready for display on the page.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/73312c2d-f49a-4dee-a2b2-f2af9fb1ecc0.asp"&gt;CSFHistoryPenalty&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Applies penalties to content items based on how recently they have been selected.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/0caba73d-ca65-4105-b47f-fe597c4b8146.asp"&gt;CSFIISAppendToLog&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Records information about content selection results in the &lt;B&gt;QueryString&lt;/B&gt; field of the Internet Information Services (IIS) log file.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/c0858016-f14e-4d99-98db-e180f1bd9538.asp"&gt;CSFInitPipeline&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Used at the beginning of a Content Selection pipeline (CSP) to initialize the values needed in the rest of the pipeline.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/270ed62b-d403-477d-8b7b-a412ddab5c95.asp"&gt;CSFLoadAdvertisements&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Loads advertising data for the Content Selection Framework through the &lt;B&gt;CacheManager&lt;/B&gt; object.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/0bffcd15-24f3-4730-8c67-84a92c7519c6.asp"&gt;CSFLoadDiscounts&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Loads discount data for the Content Selection Framework through the &lt;B&gt;CacheManager&lt;/B&gt; object.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/c2ec823e-eb6d-4814-b63c-c00d5a4fc713.asp"&gt;CSFLoadHistory&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Retrieves a history string from a user profile, an item in the ASP session collection, or a cookie.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/95aaeb86-b2e3-4132-b35d-4a059b1d21d4.asp"&gt;CSFRecordEvent&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Records event delta counts for the selected content items (the winners) in the &lt;B&gt;Performance&lt;/B&gt; dictionary.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/fcd8d394-36f9-43d0-93aa-f3a18a4be126.asp"&gt;CSFRecordHistory&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Records the identifiers of the winning content items in the history list string.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/229df1a4-1b44-4737-8f4e-ecdff904edba.asp"&gt;CSFSaveHistory&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Records the history string in one of three locations: the &lt;B&gt;User Profile&lt;/B&gt; object, the Active Server Pages (ASP) session collection, or the Hypertext Transfer Protocol (HTTP) cookie.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2738f89d-0270-45cc-9f70-475944861637.asp"&gt;CSFScoreDiscounts&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Adjusts scores of discount items to promote discounts most relevant to the current user.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/4dbbf727-bbb0-491e-850b-3337edf658b0.asp"&gt;CSFSelectWinners&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Selects items based on their final scores in the Content Selection pipeline.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2c156d1a-6fb6-4f3e-9269-0f32ca0dbe31.asp"&gt;CSFWriteEvents&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Used with the &lt;B&gt;CacheManager&lt;/B&gt; object to log Content Selection Framework events.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/8f9fb38c-2abd-4ac2-95c0-bcbced5ba9c9.asp"&gt;DefaultHandlingCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Used as placeholder handling components. They initialize the total handling for the order to zero (0).&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2e7a508e-6e05-439f-be10-2448c8aee867.asp"&gt;DefaultItemPriceCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Set the regular price of an item to the list price returned by pipeline components such as &lt;B&gt;QueryCatalogInfo&lt;/B&gt; or &lt;B&gt;QueryProdInfoADO&lt;/B&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/9f11c474-1074-4bc2-a7ef-689759b6bbe0.asp"&gt;DefaultOrderSubTotalCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Calculates the subtotal for the order.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/aa4a9136-be46-48ea-b2af-abd279547e4b.asp"&gt;DefaultPayment&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Assigns a default value to the payment authorization code. This component is usually replaced by a third-party payment component.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/bab93a5a-c72e-4375-9b8d-d2cc87d67b10.asp"&gt;DefaultShippingCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Placeholder shipping components. They set the shipping cost to zero (0).&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/011bf995-7e97-4491-83ec-6c4f7b516f7e.asp"&gt;DefaultTaxCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Set the tax fields of the order to zero (0). These components are usually replaced by third-party tax components.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/bd161f8c-8919-43ad-a76a-b8d9b499844a.asp"&gt;DefaultTotalCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Calculates the order total from the subtotals.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/373b8d32-bd77-4346-b5fd-15c9f6452711.asp"&gt;OrderDiscount&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Applies discounts to the shopping basket.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/94205d14-0d10-4ffc-8117-b3159531e9d5.asp"&gt;OrderLevelDiscountApply&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Applies order-level subtotal discounts.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/155ab9f6-3bf1-4b4b-90df-cba85e2d073f.asp"&gt;PaymentMethodRouter&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Processes payments on an order.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/69967182-958b-4766-8fcd-6a95c58b2469.asp"&gt;POtoFile&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Sends a purchase order or other textual data to a file.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/79c2fca0-3e54-48f0-ae48-33170578dd4d.asp"&gt;QueryCatalogInfo&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Retrieves catalog information for every item in the order form.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/40c913b4-2ebf-4641-9ad3-026ffb7f2e46.asp"&gt;RecordPromoCodes&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Records the promotion codes that have been applied to the order and adds promotional discounts to the list of discounts for the order form. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2e2c78d0-6bc1-4616-90f3-0af15d051040.asp"&gt;RedeemPromoCodes&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Validates promotion codes and marks them as redeemed. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/ec485805-4906-40ad-99ce-1542d0fb4942.asp"&gt;RequiredHandlingCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that the handling total is present in the order.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/a1e74fca-d898-4062-9738-46966a3d9282.asp"&gt;RequiredItemAdjustPriceCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Ensures that the current price for each item in the order is set and that it has not been changed since the last time the basket was viewed.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/07dccdfc-0c32-4714-923f-47c817a8a301.asp"&gt;RequiredItemPriceCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that each item in the order form has a regular price assigned to it. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/737dd444-e3a6-4f74-b7d7-e162bc504138.asp"&gt;RequiredOrderAdjustPriceCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Adjusts the total cost of each item in the order after applying any discounts.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/dcd4b0ef-ce8a-4ecf-9268-d3fdfc190798.asp"&gt;RequiredOrderCheck&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that the order form contains at least one item.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/4ff5f73a-78e0-4ce4-9d84-ac7b311a32de.asp"&gt;RequiredOrderInitCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Initializes the payment authorization code, order ID, totals, and subtotals in the order form.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/b09d3427-c7b7-4801-ad94-0fb904adde61.asp"&gt;RequiredOrderSubtotalCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Ensures that a subtotal exists on the order form.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/d7dc474d-aefd-4515-b896-4a02de2763ea.asp"&gt;RequiredPayment&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that the payment authorization code exists in the order form (is not &lt;B&gt;NULL&lt;/B&gt;).&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/397ebd11-5fed-46c2-bba0-657a0ea2031d.asp"&gt;RequiredProdInfo&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Deletes items flagged for deletion by a previous Product Info stage component.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/d68837d9-2872-4d29-96fa-106d90f7d43e.asp"&gt;RequiredShippingCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that the shipping total has been set.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2200b53f-d79d-417f-9ba7-35b2c783d4fc.asp"&gt;RequiredTaxCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that the total tax and tax included appear in the order form.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/df6f6d29-4e8a-4a78-84b5-42b8d6c3cb66.asp"&gt;RequiredTotalCy&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Verifies that values on a page have not been tampered with or reset. The components compare values in the order against values in the &lt;B&gt;_Verify_With&lt;/B&gt; dictionary.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/33785788-221e-44ee-81c4-08daafab7c9b.asp"&gt;ReservePromoCodes&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Validates and reserves promotion codes. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/6dc90279-6966-4e49-86fc-ef337172ed79.asp"&gt;Scriptor&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Executes a script in a Microsoft ActiveX scripting language.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/22704eb3-6bae-4336-abf2-a0c08b2f1ce6.asp"&gt;SendPrecomposedMessage&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Sends a direct mail message composed in earlier stages in the pipeline.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/12bfc47d-2b8f-483c-a0e6-75641fe9c6c8.asp"&gt;SendSMTP&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Sends an e-mail message to a specified recipient.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/1730e7a1-8fef-4465-8a87-cddfd054363a.asp"&gt;ShippingDiscountAdjust&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Applies shipping discounts to the order.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/decf0e07-f621-4b73-bdf5-44c8c0b82a72.asp"&gt;ShippingMethodRouter&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;The &lt;B&gt;ShippingMethodRouter&lt;/B&gt; pipeline component looks up and runs the pipeline components that calculate shipping costs for individual shipments, and then calculates the shipping total for the entire order.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/45a24648-d7bb-4443-be8b-db9d9cd8a41f.asp"&gt;Splitter&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Divides the order into groups based on a list of item keys. Frequently used to divide the order into multiple shipments.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/7ab26e57-783a-4b88-aef3-106727210a3d.asp"&gt;StepwiseShipping&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Calculates shipping costs for shipments in the multiple-shipment shipping architecture. This component is never directly used in a pipeline; it is run by the &lt;B&gt;ShippingMethodRouter&lt;/B&gt; pipeline component.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/1dea54a7-d34d-4aa6-8344-0fcce541493c.asp"&gt;ThrottleDMLPerformance&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Controls the speed with which direct mail messages are processed by the pipeline.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/27c9fcaf-4173-4793-adbe-b106e6a5ddfb.asp"&gt;UpdateInventory&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Checks the inventory status for an array of stock-keeping units (SKUs) and updates the SKU quantities in the Inventory System. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/bcc8c44f-c7da-405a-8eed-b3530bc46617.asp"&gt;ValidateCCNumber&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Checks the expiration date of a credit card and performs a checksum test on the number.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/93d30fe8-44ff-40c3-93f9-b652f9f8d3a4.asp"&gt;VerifyMessageBody&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Checks the body of a direct mail message according to the user flags.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/8094dcfd-bae7-4830-a43a-a4742b2802c1.asp"&gt;VerifyRecipientData&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Checks the data about the recipient of a direct mail message.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/072e42e6-b298-4ab6-a475-dd22b5492b81.asp"&gt;XMLTracer&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;A troubleshooting and debugging tool that outputs the contents of the &lt;A href="http://msdn.microsoft.com/library/en-us/sdkmref/html/T_Microsoft_CommerceServer_Runtime_Orders_OrderForm.asp"&gt;OrderForm&lt;/A&gt; object to a log file during any stage of pipeline execution. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Developing a custom Pipeline Component&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Finally we can create pipeline components using Microsoft Visual C#, you can also create pipelines using Visual Basic 2005 and C++. So lets walk through a step by step guide for developing a custom pipeline component in this sample we will work with C#.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;OL&gt;
&lt;LI&gt;Start Visual Studio 2005. 
&lt;LI&gt;On the &lt;B&gt;File&lt;/B&gt; menu, click &lt;B&gt;New&lt;/B&gt;, and then click Project. The &lt;B&gt;New Project&lt;/B&gt; dialog box opens.&amp;nbsp; 
&lt;LI&gt;In the &lt;B&gt;New Project&lt;/B&gt; dialog box, in the &lt;B&gt;Project types&lt;/B&gt; pane, select the &lt;B&gt;Windows&lt;/B&gt; child within the &lt;B&gt;Visual C#&lt;/B&gt; branch of the tree, and then in the &lt;B&gt;Templates&lt;/B&gt; pane, select the &lt;B&gt;Class Library&lt;/B&gt; template.&amp;nbsp; 
&lt;LI&gt;In the &lt;B&gt;New Project&lt;/B&gt; dialog box, choose an appropriate project name, location, and solution name, and then click &lt;B&gt;OK&lt;/B&gt;. Your new class library project opens within Visual Studio 2005.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737249/original.aspx" border=0&gt;&amp;nbsp; 
&lt;LI&gt;Open the Solution Explorer. Right-click your new project and then click &lt;B&gt;Properties&lt;/B&gt;. The multi-tabbed project properties window opens in your workspace.&amp;nbsp; 
&lt;LI&gt;In the multi-tabbed project properties window, click the &lt;B&gt;Build&lt;/B&gt; tab. Then, in the &lt;B&gt;Output&lt;/B&gt; section, select the &lt;B&gt;Register for COM interop&lt;/B&gt; checkbox. With this setting, Visual Studio 2005 will automatically register your pipeline component with COM.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737386/original.aspx" border=0&gt;&amp;nbsp; 
&lt;LI&gt;In the multi-tabbed project properties window, click the&amp;nbsp;&lt;B&gt;Application&lt;/B&gt; tab. Then, in the &lt;B&gt;Output&lt;/B&gt; section, select the&amp;nbsp;&lt;B&gt;Assembly Information&lt;/B&gt; button. &lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737255/original.aspx" border=0&gt;&lt;BR&gt;From the &lt;STRONG&gt;Assebly Information &lt;/STRONG&gt;Dialog check &lt;STRONG&gt;Make assembly COM-Visable&lt;/STRONG&gt;. Specifies whether types within the assembly will be accessible to COM. Corresponds to &lt;A href="http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices.comvisibleattribute.aspx"&gt;ComVisibleAttribute&lt;/A&gt;.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737258/original.aspx" border=0&gt; 
&lt;LI&gt;In Solution Explorer, right-click your project and then click &lt;B&gt;Add Reference&lt;/B&gt;. The &lt;B&gt;Add Reference&lt;/B&gt; dialog box opens.&lt;BR&gt;&amp;nbsp;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737000/original.aspx" border=0&gt; 
&lt;LI&gt;In the &lt;B&gt;Add Reference&lt;/B&gt; dialog box, on the &lt;B&gt;.NET&lt;/B&gt; tab, scroll if necessary and select &lt;B&gt;Microsoft Commerce Server Interop Assembly&lt;/B&gt;, and then click &lt;B&gt;OK&lt;/B&gt;. Your project now includes a reference to Microsoft.CommerceServer.Interop. 
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;B&gt;Note &lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;Many pipeline components will also need to reference the assemblies &lt;B&gt;Microsoft Commerce Server .NET Application Framework&lt;/B&gt; and &lt;B&gt;Microsoft Commerce Server Shared Types Assembly&lt;/B&gt;. Repeat steps 7 and 8 as required.&lt;/P&gt;
&lt;P&gt;If you are passing Commerce Subsystem Context values or need to have access to .NET Commerce objects then you will use the &lt;FONT face=Calibri&gt;&lt;B&gt;Microsoft Commerce Server .NET Application Framework&lt;/B&gt;&lt;/FONT&gt; and &lt;FONT face=Calibri&gt;&lt;B&gt;Microsoft Commerce Server Shared Types Assembly&lt;/B&gt; to&lt;/FONT&gt; access Commerce resources. &lt;FONT face=Calibri&gt;&lt;B&gt;Microsoft Commerce Server Interop Assembly&lt;/B&gt; is required for the pipeline interfaces.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;LI&gt;In Solution Explorer, right-click the file &lt;B&gt;Class1.cs&lt;/B&gt; and then click &lt;B&gt;Rename&lt;/B&gt;. 
&lt;LI&gt;Type a more descriptive name for your C# source code file (make sure you retain the ".cs" file extension) and the press ENTER. When prompted about renaming all references to related code elements, click &lt;B&gt;Yes&lt;/B&gt;. The name of your pipeline class will change as specified within your renamed C# source code file. 
&lt;LI&gt;In your renamed C# source code file, add the following &lt;B&gt;using&lt;/B&gt; directives below the default &lt;B&gt;using&lt;/B&gt; directives: 
&lt;TABLE cellSpacing=1 cellPadding=1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;using System.Runtime.InteropServices; &lt;BR&gt;using Microsoft.CommerceServer.Runtime; &lt;BR&gt;using Microsoft.CommerceServer.Interop; &lt;BR&gt;using Microsoft.CommerceServer.Interop.Orders; &lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;To add the appropriate attributes to your pipeline component class&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;OL&gt;
&lt;LI&gt;In Visual Studio 2005, on the &lt;B&gt;Tools&lt;/B&gt; menu, click &lt;B&gt;Create GUID&lt;/B&gt;. The &lt;B&gt;Create GUID&lt;/B&gt; dialog box opens.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737269/original.aspx" border=0&gt; 
&lt;LI&gt;In the &lt;B&gt;Create GUID&lt;/B&gt; dialog box, choose the &lt;B&gt;Registry Format&lt;/B&gt;, click &lt;B&gt;Copy&lt;/B&gt; to create a GUID and copy it to the clipboard, and then click &lt;B&gt;Exit&lt;/B&gt; to dismiss the tool.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737272/original.aspx" border=0&gt; 
&lt;LI&gt;Add the following two bolded lines immediately above your pipeline class declaration in your C# source code file, pasting the GUID created in step 2 from the clipboard.&lt;FONT face=Calibri&gt;&amp;nbsp; 
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;STRONG&gt;Important&lt;/STRONG&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;The GUID shown below and throughout this topic is an example. You must replace it with a unique GUID of your own. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;
&lt;P&gt;[ComVisible(true)]&lt;/P&gt;
&lt;P&gt;[GuidAttribute("D452305E-50C9-4031-BC94-6839BE6066EE")]&lt;BR&gt;public class MyPipelineClass { }&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/FONT&gt;
&lt;H3&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;To implement your pipeline class&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Type the names of the interfaces from which you want your pipeline component to inherit. It must inherit the interface &lt;B&gt;IPipelineComponent&lt;/B&gt;, and optionally it may inherit one or both of the interfaces &lt;B&gt;IPipelineComponentAdmin&lt;/B&gt; and &lt;B&gt;IPipelineComponentDescription&lt;/B&gt;. For this example we are only going to implement the &lt;B&gt;IPipelineComponent&lt;/B&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;[ComVisible(true)] &lt;BR&gt;[GuidAttribute("D452305E-50C9-4031-BC94-6839BE6066EE")] &lt;BR&gt;public class MyPipelineClass : IPipelineComponent { } &lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;Your project should look something like bellow:&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=1 cellPadding=1 width="100%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.Text;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;using System.Runtime.InteropServices;&lt;BR&gt;using Microsoft.CommerceServer.Interop;&lt;BR&gt;using Microsoft.CommerceServer.Runtime;&lt;BR&gt;using Microsoft.CommerceServer.Interop.Orders;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;namespace CustomPipeline&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ComVisible(true)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GuidAttribute ("5904C354-F1B8-485c-89DD-883D26BCE85D")]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Class1 : IPipelineComponent&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Status codes for pipeline components&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusSuccess = 1;&amp;nbsp;// success&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusWarning = 2;&amp;nbsp;// warning&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private const Int32 StatusError = 3;&amp;nbsp;// error&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IPipelineComponent Members&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void IPipelineComponent.EnableDesign(int fEnable){}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 9.5pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int IPipelineComponent.Execute(object pdispOrder, object pdispContext, int lFlags)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; Int32 ReturnValue = StatusSuccess;&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; // TODO: add code for the pipeline&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; return ReturnValue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;FONT face=Calibri&gt;Compile your project and after a successful build we will register your new pipeline component.&lt;/FONT&gt; 
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Register your Pipeline&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;You use&amp;nbsp;&lt;B the use&gt;PipeReg.exe&lt;/B&gt; tool to register your newly created pipeline component. We discussed the tool earlier also the source code for the tool is available under the SDK folder. &lt;B&gt;PipeReg.exe &lt;/B&gt;can be located under c:\Program Files\Microsoft Commerce Server 2007\Tools\ if Commerce Server was installed in its default location.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;OL&gt;
&lt;LI&gt;Launch the &lt;B&gt;PipeReg.exe &lt;/B&gt;EXE.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737307/original.aspx" border=0&gt; 
&lt;LI&gt;From the &lt;B&gt;Pipeline Component Registration Wizard [Step 1 of 3]&lt;/B&gt; dialog Select &lt;B&gt;Select component Type Library&lt;/B&gt;. Next specify the path by selecting the Path button with ellipses. When you compiled your pipeline component Visual Studio generated a Type Library file be sure to select that file then Select &lt;B&gt;Next&lt;/B&gt;.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737308/original.aspx" border=0&gt; 
&lt;LI&gt;From the &lt;B&gt;Pipeline Component Registration Wizard [Step 2 of 3]&lt;/B&gt; dialog Select All Stages from &lt;B&gt;Available Categories&lt;/B&gt; List Box then Select the &lt;B&gt;&amp;gt;&lt;/B&gt; Button. This will add our newly component to the All Stages category. Here you can also create your own custom stages.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737309/original.aspx" border=0&gt; 
&lt;LI&gt;From the &lt;B&gt;Pipeline Component Registration Wizard [Step 2 of 3]&lt;/B&gt; dialog Select &lt;B&gt;Register and export data&lt;/B&gt;. Make sure to note the location and name of the reg file. Then Select &lt;B&gt;Next&lt;/B&gt;. Then Select &lt;B&gt;Close&lt;/B&gt; after viewing the summary page.&lt;/LI&gt;&lt;/OL&gt;&lt;/FONT&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Test your Pipeline&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;We will test our pipeline by loading it into a pcf file to make sure that the registration succeeded.&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT face=Calibri&gt;Launch the &lt;STRONG&gt;Pipeline Editor&lt;/STRONG&gt;.&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;From the &lt;STRONG&gt;File&lt;/STRONG&gt; menu Select &lt;STRONG&gt;New&lt;/STRONG&gt;. Then from the &lt;STRONG&gt;Choose a Pipeline Template &lt;/STRONG&gt;Select the &lt;STRONG&gt;OK&lt;/STRONG&gt; button to choose the default template.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737342/original.aspx" border=0&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;After the Pipeline Template has been loaded right click on any stage and then Select &lt;STRONG&gt;Insert Component&lt;/STRONG&gt;. &lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737343/original.aspx" border=0&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;From the &lt;STRONG&gt;Choose a Component&lt;/STRONG&gt; dialog Select &lt;STRONG&gt;All&lt;/STRONG&gt; from the Stages Drop Down. Then navigate until you find your component then Select &lt;STRONG&gt;OK&lt;/STRONG&gt;.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737358/original.aspx" border=0&gt;&lt;/FONT&gt; 
&lt;LI&gt;&lt;FONT face=Calibri&gt;Congratulations you have successfully created and tested your .NET pipeline component.&lt;BR&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/737341/original.aspx" border=0&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Making your component ready for production deployment&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;To deploy your new component Copy the assembly to the target computer and register the component using Regasm.exe. You must either deploy the component into the global assembly cache (GAC) by using Gacutil.exe or you may use Regasm.exe with the /codebase option to deploy your new pipeline component without putting it in the GAC. I would recommend your strongly sign your new component and add them into the GAC.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT face=Cambria color=#4f81bd size=5&gt;Summary&lt;/FONT&gt;&lt;/H2&gt;
&lt;P&gt;&lt;FONT face=Calibri&gt;In this part your learned some more concepts on how to work with Pipeline Editor and Pipeline Registration when creating a custom pipeline component. You also walked through a step by step guide of creating a C# pipeline component and testing it to make sure it works.&lt;BR&gt;In the next part of this ongoing post we will look deeper into the Interfaces of the pipeline components as well as way to debug your pipeline components. I will also show you how you can monitor the performance of your pipelines during execution.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=736999" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Training/default.aspx">Training</category></item><item><title>Everything you ever wanted to know about pipelines but were afraid to ask (Part I)</title><link>http://blogs.msdn.com/maxakbar/archive/2006/08/17/705473.aspx</link><pubDate>Fri, 18 Aug 2006 09:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:705473</guid><dc:creator>Max Akbar</dc:creator><slash:comments>22</slash:comments><comments>http://blogs.msdn.com/maxakbar/comments/705473.aspx</comments><wfw:commentRss>http://blogs.msdn.com/maxakbar/commentrss.aspx?PostID=705473</wfw:commentRss><description>&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;What are Pipelines&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Commerce Server pipeline is a framework that links one or more components and executes them in sequence. The Pipeline framework provides stages to abstract one or more categories of work. The Pipeline Stage also determine the sequence in which each category of work is performed. Each Pipeline Component is COM object that is put inserted into a stage and is executed in sequence by the Pipeline Object. Pipelines are linked and it’s configuration stored in files Pipeline configuration files (.pcf).&lt;/FONT&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Pipeline Execution&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The following diagram displays the Basket Pipeline and the execution starts with the Product Info Stage and continues down to the last Stage Order Subtotal. You can add or delete Stages as well as move the sequence of a particular Stage.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705424/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/705424/original.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt"&gt;&lt;STRONG&gt;&lt;FONT face=Calibri color=#4f81bd size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;1&lt;/SPAN&gt; Commerce Server Pipeline&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;H4 style="MARGIN: 10pt 0in 0pt"&gt;&lt;EM&gt;&lt;FONT face=Cambria color=#4f81bd&gt;Pipeline Properties&lt;/FONT&gt;&lt;/EM&gt;&lt;/H4&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Use the Pipeline Properties dialog box to change the name of the pipeline, to specify its transaction compatibility, to specify its currency mode, or to save notes about the pipeline.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705427/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/705427/original.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt"&gt;&lt;STRONG&gt;&lt;FONT face=Calibri color=#4f81bd size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;2&lt;/SPAN&gt; Pipeline Property&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The following is a description of each property for the UI above.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 border=1 white; BACKGROUND:&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;Use this &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;To do this&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Label&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Type the name that the Pipeline Editor displays for the pipeline.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Transaction&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Select which pipeline object that you can use the pipeline configuration file (.pcf) with. The valid options are as follows: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-add-space: auto; mso-list: l0 level1 lfo5"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Any pipeline.&lt;/B&gt; You can use the configuration file together with an OrderPipeline object.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-add-space: auto; mso-list: l0 level1 lfo5"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Requires transacted pipeline.&lt;/B&gt; You can use the configuration file together with transacted pipeline objects (PooledTxPipeline, MtsTxPipeline).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-add-space: auto; mso-list: l0 level1 lfo5"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Requires non-transacted pipeline.&lt;/B&gt; You can use the configuration file together with non-transacted pipeline objects (PooledPipeline, MtsPipeline).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Supply a currency LCID&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Specify a locale ID (LCID) for currency handling. A value of zero (0) indicates to use the default locale ID of the server. The default currency LCID is zero (0).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Supply the number of decimal places used for currency rounding&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Specify how many digits of precision to use for the currency. For example, you use two decimal places for United States pennies. Commerce Server uses this value for rounding purposes, and to determine the scaling factor to use in legacy currency keys.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Description&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Type descriptive comments about the pipeline.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H3 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Pipeline Stages&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The following diagram displays the Product Info Stage which consists of three Pipeline components. You can add or delete components using the Pipeline Editor. You can also move the individual components sequence.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705430/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/705430/original.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt"&gt;&lt;STRONG&gt;&lt;FONT face=Calibri color=#4f81bd size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;3&lt;/SPAN&gt; Product Info Stage&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Stage Properties&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Use the Stage Properties dialog box to change the properties assigned to a pipeline stage.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705432/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/705432/original.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt; tab-stops: 428.25pt"&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Calibri&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;4&lt;/SPAN&gt; Stage Properties&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;&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;&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; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The following is a description of each property for the UI above.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;Use this &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;To do this&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Label&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Specify the name that the Pipeline Editor displays for the stage.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Description&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Type descriptive comments about the stage.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;GUID&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;View the GUID that identifies the component on any computer. This ID never changes.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Mode&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;A value of zero (0) prevents the stage from running.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Error level&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Specify the error level for the stage.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 6; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Note&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;When any component in the stage generates an error above the level specified in the Error level box, the stage skips the remaining components in the stage, and logs the event in the log file.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;The pipeline maintains the maximum error level encountered by any component in the pipeline. It uses the Error Level setting on the stage to compare this maximum error level and only runs components in the stage if the current error level is less than or equal to the error level limit specified for the component.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H3 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Pipeline Component&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;A component is a Component Object Model (COM) object designed to perform some operation on a dictionary -- a collection of name/value pairs -- that is a different representation of a runtime object. This can be a dictionary that represents an &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/sdkmref/html/T_Microsoft_CommerceServer_Runtime_Orders_OrderForm.asp"&gt;&lt;FONT face=Calibri&gt;OrderForm&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; object or a dictionary that represents another type of object.&lt;/FONT&gt;&lt;/P&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/704904/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/704904/original.aspx" border=0&gt;&lt;/A&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt"&gt;&lt;STRONG&gt;&lt;FONT face=Calibri color=#4f81bd size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;5&lt;/SPAN&gt; Query Catalog Info Pipeline Component&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=3&gt;Components Properties&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Use the Component Properties dialog box to change the name of a pipeline component, to view the class ID or Program ID of a component, and to save notes about a component. Use the Component Properties dialog box, Values Read and Written tab, to view the values that the component reads from and writes to the order form and the values it reads from the Context dictionary object. For descriptions of each value read and written, access the corresponding component from the Pipeline Component Reference. These two “Component Properties” and “Values Read and Written” are common to all Pipeline components. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705423/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/705423/original.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt"&gt;&lt;STRONG&gt;&lt;FONT face=Calibri color=#4f81bd size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;6&lt;/SPAN&gt; Components Properties&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The following is a description of each property for the UI above.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;Use this &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;To do this&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Label&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Specify the name that the Pipeline Editor displays for the component.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Class ID&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;View the GUID that identifies the component on any computer. This ID never changes.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Program ID&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;View the easily recognizable ID for the component. This ID never changes.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Required&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Check to make sure that the pipeline component is not removed from the pipeline.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Description&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Type descriptive comments about the component.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705437/original.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/commerceserver/images/705437/original.aspx" border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 10pt"&gt;&lt;STRONG&gt;&lt;FONT face=Calibri color=#4f81bd size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;7&lt;/SPAN&gt; Component Values Read and Written&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The following is a description of each property for the UI above.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Note: &lt;/B&gt;The Pipeline Editor cannot display values read and written for components that do not support the IPipelineComponent Interface. We will discuss the Interfaces that the Pipeline components implement later on.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;Use this &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;To do this&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Values Read&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;View the values that the component reads from the order form before it performs its function.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Values Written&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;View the values that the component writes to the order form or other dictionaries after it completes its function.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Context Values Read&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;View the values that the component reads from the Context dictionary object. The Context dictionary object is passed as a parameter to the Execute method of the pipeline.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;There are however some out of the box components that need additional configuration or other information, this data is displayed on additional property pages.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 3.5pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; HEIGHT: 3.5pt; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1" vAlign=bottom width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;Properties Dialog Box Tab Name &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; HEIGHT: 3.5pt; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1" vAlign=bottom width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/a25514c9-9287-4a52-b5b3-157f1ff3391d.asp"&gt;&lt;FONT face=Calibri&gt;Eval Expressions Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/c6572553-f2b6-4273-b775-00e0ef47824f.asp"&gt;&lt;FONT face=Calibri&gt;CSFEvalTargetGroups&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component evaluates targeting expressions for advertising, content selection, and discounts.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/7dea9251-95ff-4ba1-bad7-ee6536b16e5d.asp"&gt;&lt;FONT face=Calibri&gt;Execution Mode Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/155ab9f6-3bf1-4b4b-90df-cba85e2d073f.asp"&gt;&lt;FONT face=Calibri&gt;PaymentMethodRouter&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component processes credit cards and whether to validate payment totals.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/2d17f099-1511-458c-95e3-ec5ebdd2c5a7.asp"&gt;&lt;FONT face=Calibri&gt;History Penalty Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/73312c2d-f49a-4dee-a2b2-f2af9fb1ecc0.asp"&gt;&lt;FONT face=Calibri&gt;CSFHistoryPenalty&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component applies penalties to content items based on how recently they have been selected.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/ff43acea-8307-4cf4-a817-b42cd6d54bf9.asp"&gt;&lt;FONT face=Calibri&gt;Load History Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines where the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/c2ec823e-eb6d-4814-b63c-c00d5a4fc713.asp"&gt;&lt;FONT face=Calibri&gt;CSFLoadHistory&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component retrieves the history string. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/1480d8ac-6267-4905-a11a-abe9ebdc93cd.asp"&gt;&lt;FONT face=Calibri&gt;Order Discount Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/373b8d32-bd77-4346-b5fd-15c9f6452711.asp"&gt;&lt;FONT face=Calibri&gt;OrderDiscount&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component applies discounts scheduled by the Marketing Manager to the shopping basket.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 6"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/318706f0-c2f6-40af-b107-8ca423a5757e.asp"&gt;&lt;FONT face=Calibri&gt;Order Level Discount Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/94205d14-0d10-4ffc-8117-b3159531e9d5.asp"&gt;&lt;FONT face=Calibri&gt;OrderLevelDiscountApply&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component applies order level subtotal discounts.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 7"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/e2369d8c-2180-4c42-b4a4-9673d4acf932.asp"&gt;&lt;FONT face=Calibri&gt;Payment Router Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determine the behavior of the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/155ab9f6-3bf1-4b4b-90df-cba85e2d073f.asp"&gt;&lt;FONT face=Calibri&gt;PaymentMethodRouter&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; pipeline component when processing credit cards and validating payment totals.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 8"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/fb858753-97fb-4502-9018-bee8b57276b5.asp"&gt;&lt;FONT face=Calibri&gt;PO to File Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/69967182-958b-4766-8fcd-6a95c58b2469.asp"&gt;&lt;FONT face=Calibri&gt;POtoFile&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component retrieves and sends a purchase order or other textual data to a file.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 9"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/8da122f2-114a-4943-8cbe-cb25ffcff022.asp"&gt;&lt;FONT face=Calibri&gt;Record History Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how many items the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/fcd8d394-36f9-43d0-93aa-f3a18a4be126.asp"&gt;&lt;FONT face=Calibri&gt;CSFRecordHistory&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component saves in the history list string, which is used to contain the identifiers of winning content items.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 10"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/e44beaad-ba47-41d7-bfab-3bd5a729455e.asp"&gt;&lt;FONT face=Calibri&gt;Save History Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines where the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/229df1a4-1b44-4737-8f4e-ecdff904edba.asp"&gt;&lt;FONT face=Calibri&gt;CSFSaveHistory&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component saves the history string. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 11"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/59fa4b32-48ec-4202-b6fe-625ef769f89f.asp"&gt;&lt;FONT face=Calibri&gt;Scriptor Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Stores the script to be run by the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/6dc90279-6966-4e49-86fc-ef337172ed79.asp"&gt;&lt;FONT face=Calibri&gt;Scriptor&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 12"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/cf506f2b-6d5f-44b7-9124-d0ab33d27798.asp"&gt;&lt;FONT face=Calibri&gt;Select Winners Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/4dbbf727-bbb0-491e-850b-3337edf658b0.asp"&gt;&lt;FONT face=Calibri&gt;CSFSelectWinners&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component displays house ads. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 13"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/418deb82-84b4-4bc1-ada5-c150c2085ae0.asp"&gt;&lt;FONT face=Calibri&gt;Send SMTP Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines where the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/12bfc47d-2b8f-483c-a0e6-75641fe9c6c8.asp"&gt;&lt;FONT face=Calibri&gt;SendSMTP&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component sends an e-mail message and the information sent.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 14"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/598963ba-906b-4271-bad9-62cc1d4f4ac6.asp"&gt;&lt;FONT face=Calibri&gt;Splitter Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Determines how the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/45a24648-d7bb-4443-be8b-db9d9cd8a41f.asp"&gt;&lt;FONT face=Calibri&gt;Splitter&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component divides an order into groups based on a list of item keys. &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 15; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/f31b574a-389d-4e46-abe4-14c760b50f16.asp"&gt;&lt;FONT face=Calibri&gt;Test SendSMTP Tab&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 239.4pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=319&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Tests the configuration of the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/CS07Default/html/12bfc47d-2b8f-483c-a0e6-75641fe9c6c8.asp"&gt;&lt;FONT face=Calibri&gt;SendSMTP&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; component by sending a test e-mail message.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Commerce Server&amp;nbsp;provides five objects to execute pipelines: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;MtsPipeline&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri&gt;Use this object to run a non-transacted Microsoft Commerce Server pipeline.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;MtsTxPipeline&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri&gt;Use this object to run a transacted Microsoft Commerce Server pipeline configuration.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;PooledPipeline&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri&gt;Use this object to run a Microsoft Commerce Server pipeline configuration file. The PooledPipeline object uses COM+ object pooling to greatly increase the loading speed of pipelines, where the contained pipeline components support object pooling.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;PooledTxPipeline&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri&gt;Use this object to execute a Microsoft Commerce Server pipeline. Use in place of the PooledPipeline object where you need transactions. The PooledTxPipeline object uses COM+ object pooling to increase the loading speed of pipelines.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;OrderPipeline&lt;/B&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri&gt;Use this object to run a Microsoft Commerce Server Content Selection pipeline. To create an Order Processing pipeline (OPP), use a PooledPipeline, PooledTxPipeline, MtxPipeline, or MtsTxPipeline object.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The &lt;B style="mso-bidi-font-weight: normal"&gt;MtsPipeline&lt;/B&gt; and &lt;B style="mso-bidi-font-weight: normal"&gt;MtxTxPipeline&lt;/B&gt; is recommended for development only. All other Pipelines are recommended for production. The reason for this is that the &lt;B style="mso-bidi-font-weight: normal"&gt;MtsPipeline&lt;/B&gt; and &lt;B style="mso-bidi-font-weight: normal"&gt;MtxTxPipeline &lt;/B&gt;objects do not load the configuration into memory and makes it easier to develop rather than stopping and starting IIS every time a change occurs. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Note:&lt;/B&gt; &lt;SPAN class=Bold&gt;&lt;STRONG&gt;MicroPipe is no longer supported in Commerce Server &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:metricconverter ProductID="2007. In" w:st="on"&gt;2007. In&lt;/st1:metricconverter&gt; earlier version of the Commerce Server you could only execute the Pipeline component.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;By default Commerce Server has the following&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Pipeline files:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Advertising.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Basket.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Chckout.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Discounts.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;DMLPipe.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;6.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Product.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;7.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;RecordEvent.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;8.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Total.pcf&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;When unpacking the CSharp site you will also get the above Pipeline files. These Pipeline files can be used as template to start a new Commerce Site.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Note: &lt;/B&gt;Commerce Server 2007 does not have Pipeline templates.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;Pipelines in a nutshell&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;So to summarize everything, Pipeline framework consists of COM objects that are linked and stored in pcf file format. You can further categorize pipelines into stages. Pipelines are executed by the Pipeline object and configured by Pipeline Editor. Pipelines can be executed transactional and be pooled for performance. Commerce Server has a dozen or more Pipeline components and several default pcf files containing one or more Pipeline components. You can also create your own Pipeline components.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;How are Pipelines used in Commerce Server&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Commerce Server has three types of Pipelines:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo3"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Order Processing &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri&gt;The Order Processing pipelines (OPP) are software infrastructures that link several components and run them in sequence on an OrderForm or Dictionary object. The Order processing Pipeline implement aspects of business-to-consumer and business-to-business checkout transactions such as discounts, Inventory checking, Product Catalog checking etc…&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo3"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Content Selection Framework &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT face=Calibri&gt;The Content Selection Framework (CSF) is a platform-level framework for building targeted content delivery applications on the Internet. The targeted advertising and discount features of Microsoft Commerce Server are built by using the CSF. The framework provides the means for building new types of content delivery applications and makes it easy to customize and extend the advertising and discount delivery systems.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo3"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Direct Mailer&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri&gt;The Direct Mailer pipeline runs components that screen recipients and personalize e-mail, and then sends the personalized e-mail.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;You can add third-party or custom components to the Commerce Server pipeline. Those components need implement only the standard pipeline component interfaces. They also, however, need to understand the dictionary keys that components in the pipeline use.&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;How Pipelines are executed&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;To execute a pipeline, you add the name of the pipe to the pipelines node for your site in the site Web.config file, see example bellow.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 6.65in; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1" vAlign=top width=638&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&amp;lt;pipelines siteName="CSharpSite"&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;pipeline name="basket" path="pipelines\basket.pcf" transacted="true" type="OrderPipeline" loggingEnabled="false"/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&amp;lt;/pipelines&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Each pipeline node must have the following attributes:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Name&lt;/B&gt; - The name that you will reference in your application when executing the pipeline.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Path&lt;/B&gt; - The relative path of the pipeline configuration file (.pcf).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Transacted&lt;/B&gt; - Set this attribute to true or false to indicate the pipeline’s transacted state.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Type&lt;/B&gt; - You can use either OrderPipeline or CSFPipeline for this attribute. You use an OrderPipeline to process orders and a CSFPipeline to display advertisements.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;LoggingEnabled&lt;/B&gt; - Set to true to enable logging. When you enable logging, the log file is created in the pipelines\log directory. You must also set appropriate permissions for the current w3wp.exe process to be able to create log files.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Sample code to execute a pipeline.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 6.65in; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1" vAlign=top width=638&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;PipelineInfo info1 = new PipelineInfo(pipelineName, OrderPipelineType.Basket)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Basket.RunPipeline(info1);&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Pipeline Types available.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 6.65in; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1" vAlign=top width=638&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;public enum OrderPipelineType&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Custom,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Product,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Basket,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Total,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Checkout,&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AcceptBasket&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;This enumerator provides pipeline type information to PipelineInfo to allow an object to tailor its behavior to the requirements of the particular pipeline in use, without relying on the name of the pipeline.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The AcceptBasket type is used by the LOB Adapter.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;When using the Custom type, the PipelineInfo constructor will not attempt to set up the pipeline context.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-shading: windowtext; mso-pattern: mso-border-alt: solid black 1.5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-insideh: 1.5pt solid black; mso-border-insideh-themecolor: text1; mso-border-insidev: 1.5pt solid black; mso-border-insidev-themecolor: text1" cellSpacing=0 cellPadding=0 border=1&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;Member name&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: black; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; mso-shading: windowtext; mso-pattern: solid auto; mso-border-themecolor: text1; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: white; mso-themecolor: background1"&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;AcceptBasket &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Indicates an AcceptBasket pipeline (e.g. AcceptBasket.pcf).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Basket &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Indicates a Basket pipeline (e.g. Basket.pcf).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Checkout &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Indicates a Checkout pipeline (e.g. Checkout.pcf).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Custom &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Indicates a custom pipeline type.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Product &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Indicates a Product pipeline (e.g. Product.pcf).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 6; mso-yfti-lastrow: yes"&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1.5pt solid; WIDTH: 94.1pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1" vAlign=top width=125&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Total &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: black 1.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #ebe9ed; WIDTH: 384.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid black 1.5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black 1.5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" vAlign=top width=513&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri&gt;Indicates a Total pipeline (e.g. Total.pcf).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;FONT face=Calibri&gt;
&lt;H2 style="MARGIN: 10pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;Summary&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;At this point you should have a good context of what Pipelines are and in the next part we will get a deeper understanding of Pipelines by developing and understanding Pipeline internals. Keep an eye out for part II of the “Everything you ever wanted to know about pipelines but were afraid to ask”.&lt;/P&gt;&lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705424/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705427/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705430/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705432/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/704904/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705423/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/commerceserver/images/705437/original.aspx" target=_blank&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=705473" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Orders+System/default.aspx">Orders System</category><category domain="http://blogs.msdn.com/maxakbar/archive/tags/Training/default.aspx">Training</category></item></channel></rss>