<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Sathish's world of technology</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/sathishcg/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/sathishcg/feed.xml</link>
    <description>Finding a way to make software quality nearer to surgical doctor&amp;#039;s work quality :)</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:50:03 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Using ImportWebPart method in internet facing SharePoint WCM Site</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/using-importwebpart-method-in-internet-facing-sharepoint-wcm-site</link>
      <pubDate>Wed, 22 Sep 2010 00:28:04 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2010/09/22/using-importwebpart-method-in-internet-facing-sharepoint-wcm-site/</guid>
      <description><![CDATA[&#160;  Introduction    In many instances we use ImportWebPart method of the WebpartManager class to...]]></description>
      <content:encoded><![CDATA[<p align="justify">&#160;</p>  <h1>Introduction</h1>  <p align="justify"></p>  <p align="justify">In many instances we use <strong>ImportWebPart</strong> method of the <strong>WebpartManager</strong> class to import web parts in runtime. If you are using this method to render dynamic content in an anonymous internet facing site using SharePoint there are few points to be noted. Out of the box <strong>WebpartManager </strong>class expects certain permissions to successfully import a Web part in anonymous mode and the same has been implemented using Code Access Security. Permissions required will not be available in anonymous mode. Following article articulates a design to handle this. Keep reading…. </p>  <h1>What happens if you use out of the box WebPartManager Class? </h1>  <p align="justify">Out of the box WebpartManager class works as expected in authenticated mode. If you have the site extended to anonymous mode you can notice that the pages hosting a web part or user control which dynamically hosts another web part instance using <strong>ImportWebPart</strong> Method will start challenging for credentials. First suspect for this might be to check whether you have published version of the page. After few hours of trouble shooting you may find that all pre-requisites are met and still the pages challenges for credentials. This is due to the fact that the out of box <strong>WebPartManager</strong> class expects certain permissions in runtime and the same is not available in anonymous mode. Next step is to run the code with Elevated privileges. This will not help the WebPartManager to get the needed permissions. </p>  <h1>What’s going on in WebPartManager Class?</h1>  <p align="justify">As per <a href="https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpartmanager.aspx">MSDN</a>&#160; documentation WebPartManger class of SharePoint is designed to be used only in authenticated mode. But the design does not restrict us to extend the same based on our custom requirements. Important sections from the MSDN article.</p>  <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/71/59/metablogapi/4011.image_4CD1B077.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-71-59-metablogapi/4011.image_5F00_4CD1B077.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/71/59/metablogapi/7585.image_thumb_2DB3B4F9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-71-59-metablogapi/7585.image_5F00_thumb_5F00_2DB3B4F9.png" width="639" height="165" /></a> </p>  <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/71/59/metablogapi/6082.image_47AA05CC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-71-59-metablogapi/6082.image_5F00_47AA05CC.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/71/59/metablogapi/4061.image_thumb_793A94C3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-71-59-metablogapi/4061.image_5F00_thumb_5F00_793A94C3.png" width="648" height="123" /></a> </p>  <h1>What's the solution to use this in Anonymous mode?</h1>  <p></p>  <p></p>  <p></p>  <p>To overcome the above mentioned limitation we need to create a custom WebPartManager with custom set of permissions. Below mentioned code snippet can be used directly to create the class. I have tested this in a big WCM site and the code has no bugs :) </p>  <h2>Custom Web part Manager and Personalization class</h2>  <div id="codeSnippetWrapper">   <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">     <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>    <span style="color: #008000">/// Personalization class</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>    <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> CustomWebPartPersonalization : WebPartPersonalization</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>    {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>        <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>        <span style="color: #008000">///  Importing bool property</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>        <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>        <span style="color: #0000ff">internal</span> <span style="color: #0000ff">bool</span> Importing;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>        <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>        <span style="color: #008000">/// Initializes a new instance of the CustomWebPartPersonalization class</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>        <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>        <span style="color: #008000">/// &lt;param name=&quot;owner&quot;&gt;constructor default&lt;/param&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>        <span style="color: #0000ff">public</span> CustomWebPartPersonalization(WebPartManager owner)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>            : <span style="color: #0000ff">base</span>(owner)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span>        {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span>        }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum20">  20:</span>        <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum21">  21:</span>        <span style="color: #008000">/// User Capabilities</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum22">  22:</span>        <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum23">  23:</span>        <span style="color: #0000ff">protected</span> <span style="color: #0000ff">override</span> IDictionary UserCapabilities</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum24">  24:</span>        {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum25">  25:</span>            get</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum26">  26:</span>            {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum27">  27:</span>                IDictionary userCapabilities = <span style="color: #0000ff">base</span>.UserCapabilities;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum28">  28:</span>                <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.Importing)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum29">  29:</span>                {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum30">  30:</span>                    userCapabilities[WebPartPersonalization.ModifyStateUserCapability] =</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum31">  31:</span>                        WebPartPersonalization.ModifyStateUserCapability;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum32">  32:</span>                }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum33">  33:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum34">  34:</span>                <span style="color: #0000ff">return</span> userCapabilities;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum35">  35:</span>            }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum36">  36:</span>        }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum37">  37:</span>    }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum38">  38:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum39">  39:</span>    <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum40">  40:</span>    <span style="color: #008000">/// Custom Web part manager</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum41">  41:</span>    <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum42">  42:</span>    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> CustomWebPartManager : WebPartManager</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum43">  43:</span>    {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum44">  44:</span>        <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum45">  45:</span>        <span style="color: #008000">///  Import web part</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum46">  46:</span>        <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum47">  47:</span>        <span style="color: #008000">/// &lt;param name=&quot;reader&quot;&gt;reader object&lt;/param&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum48">  48:</span>        <span style="color: #008000">/// &lt;param name=&quot;errorMessage&quot;&gt;error message&lt;/param&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum49">  49:</span>        <span style="color: #008000">/// &lt;returns&gt;web part returned&lt;/returns&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum50">  50:</span>        <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> System.Web.UI.WebControls.WebParts.WebPart ImportWebPart(System.Xml.XmlReader reader, <span style="color: #0000ff">out</span> <span style="color: #0000ff">string</span> errorMessage)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum51">  51:</span>        {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum52">  52:</span>            ((CustomWebPartPersonalization)Personalization).Importing = <span style="color: #0000ff">true</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum53">  53:</span>            System.Web.UI.WebControls.WebParts.WebPart webPart = <span style="color: #0000ff">base</span>.ImportWebPart(reader, <span style="color: #0000ff">out</span> errorMessage);</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum54">  54:</span>            ((CustomWebPartPersonalization)Personalization).Importing = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum55">  55:</span>            <span style="color: #0000ff">return</span> webPart;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum56">  56:</span>        }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum57">  57:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum58">  58:</span>        <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum59">  59:</span>        <span style="color: #008000">///  Create Personalization</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum60">  60:</span>        <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum61">  61:</span>        <span style="color: #008000">/// &lt;returns&gt;web part returned&lt;/returns&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum62">  62:</span>        <span style="color: #0000ff">protected</span> <span style="color: #0000ff">override</span> WebPartPersonalization CreatePersonalization()</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum63">  63:</span>        {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum64">  64:</span>            WebPartPersonalization obj = <span style="color: #0000ff">base</span>.CreatePersonalization();</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum65">  65:</span>            <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> CustomWebPartPersonalization(<span style="color: #0000ff">this</span>);</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum66">  66:</span>        }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum67">  67:</span>    }</pre>
<!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></div>
</div>

<h2>&#160;</h2>

<h2>Implementation or Usage Code</h2>

<div id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #008000">/// Method to get the webpart instance based on the web part xml string. XML string passed </span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> <span style="color: #008000">/// to the method should adhere to the schema of the xml used in .webpart file. </span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> <span style="color: #008000">/// &lt;param name=&quot;webPartXml&quot;&gt;The web part XML.&lt;/param&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> <span style="color: #008000">/// &lt;returns&gt;WebPart Instance&lt;/returns&gt;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> System.Web.UI.WebControls.WebParts.WebPart GetWebPartInstance(<span style="color: #0000ff">string</span> webPartXml)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span> {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>     StringReader stringReader = <span style="color: #0000ff">new</span> StringReader(webPartXml);</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>     XmlReader xmlReader = XmlReader.Create(stringReader);</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>     <span style="color: #0000ff">string</span> errorMessage;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>     <span style="color: #008000">//// Use webpart manager to instantiate the webpart using xml</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>     <span style="color: #008000">//// System.Web.UI.WebControls.WebParts.WebPart wp = WebPartManager.ImportWebPart(xmlReader, out errorMessage);</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>     <span style="color: #008000">//// Using custom web part manager with needed permissions to import the web part in anonymous mode.</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span>&#160; </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span>     CustomWebPartManager webPartManager = <span style="color: #0000ff">new</span> CustomWebPartManager();</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span>     System.Web.UI.WebControls.WebParts.WebPart wp = webPartManager.ImportWebPart(xmlReader, <span style="color: #0000ff">out</span> errorMessage);</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum20">  20:</span>     <span style="color: #008000">//// Set the properties on webpart</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum21">  21:</span>     wp.AllowClose = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum22">  22:</span>     wp.AllowEdit = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum23">  23:</span>     wp.AllowMinimize = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum24">  24:</span>     wp.AllowZoneChange = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum25">  25:</span>     wp.AllowConnect = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum26">  26:</span>     wp.AllowHide = <span style="color: #0000ff">false</span>;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum27">  27:</span>     wp.ExportMode = WebPartExportMode.None;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum28">  28:</span>     wp.ChromeType = PartChromeType.None;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum29">  29:</span>     <span style="color: #008000">//// Return the webpart</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum30">  30:</span>     <span style="color: #0000ff">return</span> wp;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum31">  31:</span> }</pre>
<!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></!--crlf--></div>
</div>

<p></p>

<p>Happing coding :)</p>

<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:df92912a-b3b6-476a-84c3-26c4afdca47f" class="wlWriterEditableSmartContent">Technorati Tags: <a href="https://technorati.com/tags/Sharepoint" rel="tag">Sharepoint</a>,<a href="https://technorati.com/tags/Webparts" rel="tag">Webparts</a>,<a href="https://technorati.com/tags/WebPartManager" rel="tag">WebPartManager</a>,<a href="https://technorati.com/tags/ImportWebPart" rel="tag">ImportWebPart</a></div>]]></content:encoded>
    </item>
    <item>
      <title>White Paper – Commerce Server Profiles</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/white-paper-commerce-server-profiles</link>
      <pubDate>Wed, 25 Nov 2009 00:39:53 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2009/11/25/white-paper-commerce-server-profiles/</guid>
      <description><![CDATA[New white paper on integrating commerce server profiles with external data stores has been...]]></description>
      <content:encoded><![CDATA[<p>New white paper on integrating commerce server profiles with external data stores has been published. </p>  <p><a title="https://www.microsoft.com/commerceserver/en/us/white-papers.aspx" href="https://www.microsoft.com/commerceserver/en/us/white-papers.aspx">https://www.microsoft.com/commerceserver/en/us/white-papers.aspx</a></p>  <p>Direct Link - <a title="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=ce5629ad-2473-4c25-8f89-91c8530cd764" href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=ce5629ad-2473-4c25-8f89-91c8530cd764">https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=ce5629ad-2473-4c25-8f89-91c8530cd764</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Commerce Server Order Schema Manager- Tool to manage OrderObjectMapping.xml</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/commerce-server-order-schema-manager-tool-to-manage-orderobjectmapping-xml</link>
      <pubDate>Wed, 03 Sep 2008 04:38:00 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2008/09/03/commerce-server-order-schema-manager-tool-to-manage-orderobjectmapping-xml/</guid>
      <description><![CDATA[Introduction 
Order schema manager is a custom tool to extend Commerce Server Order Schema....]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-SIZE: 18pt"><STRONG>Introduction </STRONG></SPAN></P>
<P style="TEXT-ALIGN: justify">Order schema manager is a custom tool to extend Commerce Server Order Schema. Commerce Server order schema is represented through an xml file name OrderObjectMapping.xml. Extending the schema is accomplished by modifying the xml file manually. I thought of automating the process and end up developing the schema manager tool. I use this for extending order schema and found it very useful. </P>
<P><SPAN style="FONT-SIZE: 18pt"><STRONG>How does the tool work? </STRONG></SPAN></P>
<P style="TEXT-ALIGN: justify">Schema manager works on the schema file and allows the developer to extend the default schema. It also allows the developer to compile the schema file to generate the database script file. It internally uses the <STRONG>OrderMapping.exe </STRONG>to compile the schema file. The tool works on some initialization parameters to compile the schema. Initialization parameters are stored in the application configuration file and the same can be modified by the developers in the compiler page. Following are the details about the initialization parameters and its usage. </P>
<DIV>
<TABLE class="" style="BORDER-COLLAPSE: collapse" border=0>
<COLGROUP>
<COL style="WIDTH: 319px">
<COL style="WIDTH: 319px"></COLGROUP>
<TBODY vAlign=top>
<TR>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid">
<P style="TEXT-ALIGN: center">Parameter Name</P></TD>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid">
<P style="TEXT-ALIGN: center">Description</P></TD></TR>
<TR>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid">
<P>OrderMappingFilePath</P></TD>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid">
<P>Path of the OrderMapping.exe tool. </P></TD></TR>
<TR>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid">
<P>TempDirectory</P></TD>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid">
<P>Temporary directory to do the compilation at runtime.</P></TD></TR>
<TR>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid">
<P>DependentAssembliesPath</P></TD>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid">
<P>Path of the order extension assemblies. Accepts multiple folder paths, delimited by ";".</P></TD></TR>
<TR>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid">
<P>SupportedSQLTypes</P></TD>
<TD class="" style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: medium none; PADDING-LEFT: 7px; BORDER-LEFT: medium none; BORDER-BOTTOM: black 0.5pt solid">
<P>SQL types supported by Commerce Server 2007. SQL data types delimited by ";". Values specified in the key is used to populate the data type combo box in the table definitions tab.</P></TD></TR></TBODY></TABLE>Tool copies the following files to the temporary directory and compiles the schema file. </DIV>
<UL>
<LI>
<DIV style="TEXT-ALIGN: justify">OrderMapping.exe </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Dependent assemblies. </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Web.config </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">OrderObjectmapping.xml </DIV></LI></UL>
<P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 18pt"><STRONG>Supported Features </STRONG></SPAN></P>
<P style="TEXT-ALIGN: justify"><SPAN style="TEXT-DECORATION: underline"><STRONG>Managing table definitions </STRONG></SPAN></P>
<UL>
<LI>
<DIV style="TEXT-ALIGN: justify">Creating new tables </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Creating new columns </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Managing Foreign and Primary key constraints </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Adding marshaled data column </DIV></LI></UL>
<P style="TEXT-ALIGN: justify"><SPAN style="TEXT-DECORATION: underline"><STRONG>Managing Classes /Types </STRONG></SPAN></P>
<UL>
<LI>
<DIV style="TEXT-ALIGN: justify">Creating a new class. </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Changing an existing class to a new one and updating the related information. </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Managing Collection relationships. </DIV></LI></UL>
<P style="TEXT-ALIGN: justify"><SPAN style="TEXT-DECORATION: underline"><STRONG>Managing Table-Class Mapping </STRONG></SPAN></P>
<UL>
<LI>
<DIV style="TEXT-ALIGN: justify">Create new mapping </DIV></LI>
<LI>
<DIV style="TEXT-ALIGN: justify">Delete existing mapping </DIV></LI></UL>
<P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 18pt"><STRONG>Note </STRONG></SPAN></P>
<P style="TEXT-ALIGN: justify">Commerce Server order schema is represented in a tree view and all the operations are initiated through context menus. Right clicking on the nodes will show appropriate menus. Context menus are activated only through mouse clicks and not through key board shortcuts. Current version of the tool doesn't provide an option to manage OrderPipelineMapping.xml (part of order schema). </P>
<P style="TEXT-ALIGN: justify">Happing coding <SPAN style="FONT-FAMILY: Wingdings">J</SPAN></P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/08/92/16/40/OrderSchemaManager.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-08-92-16-40/OrderSchemaManager.zip">OrderSchemaManager.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Commerce Server 2007 Ramp up</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/commerce-server-2007-ramp-up</link>
      <pubDate>Wed, 14 Nov 2007 04:31:11 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2007/11/14/commerce-server-2007-ramp-up/</guid>
      <description><![CDATA[I will be writing Hand's on Labs to enable developers to ramp up in Commerce Server 2007. The main...]]></description>
      <content:encoded><![CDATA[<p>I will be writing Hand's on Labs to enable developers to ramp up in Commerce Server 2007. The main objective of the HOL is to give step by step instructions to build a basic e-commerce site. Stay tuned <span style="font-family:Wingdings"></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Importing Commerce server Profiles – Deployment utility</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/importing-commerce-server-profiles-deployment-utility</link>
      <pubDate>Fri, 05 Oct 2007 06:30:00 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2007/10/05/importing-commerce-server-profiles-deployment-utility/</guid>
      <description><![CDATA[Introduction 
Deploying commerce server profiles is a repetitive task / requirement in many...]]></description>
      <content:encoded><![CDATA[<P><STRONG>Introduction </STRONG></P>
<P style="TEXT-ALIGN: justify">Deploying commerce server profiles is a repetitive task / requirement in many commerce server engagements. Commerce server profile system is extensible and supports various data bases as data stores. Every engagement takes this advantage and extends the profiles based on the project requirement. Question about <STRONG>profile deployment</STRONG> is very common in all the commerce server engagements with some differing profile implementations. Some projects use SQL server as data source and some of them use the combination of SQL &amp; AD. In all these cases, deploying commerce server profiles still stands as a common requirement. While thinking about this, I got the idea of developing a generic deployment tool which can be used across engagements with the support of extensibility to deal with project specifics. Common solutions across implementations <SPAN style="FONT-FAMILY: Wingdings"></SPAN> , good old concept of <STRONG>Design Patterns</STRONG> strikes my mind. Very powerful and difficult concept to convince people….. Let's target the problem with design patterns… </P>
<P style="TEXT-ALIGN: justify"><STRONG>Problem statement </STRONG></P>
<P style="TEXT-ALIGN: justify">Commerce server represents profiles in xml format and provides options to export and import profiles of commerce site. In the development environment we use Commerce Server manager to import or export profiles. Automating this will be great value add in the development life cycle. The tool will also play a very vital role in defining the automated build and deploy process for engagements. Commerce server runtime provides api's to import and export profiles programmatically. The code is very simple and doesn't take much time to implement specific to an engagement. The main idea of this tool is not to deal with the project specifics; instead it should be generalized tool which can be adopted in any commerce server engagements with the provision of extensibility. Let' dive in to the technical specification of the requirement. </P>
<P style="TEXT-ALIGN: justify"><STRONG>Technical Specification </STRONG></P>
<P style="TEXT-ALIGN: justify">Exporting a profile is very generic and doesn't need any specific code to make it generic. It just expects a site name and output file name. The logic can be directly burned in the tool by getting the above specified parameters. Importing profile is little tricky. Commerce runtime API takes Profile/Bizdata connection string and the profile xml as the input to perform the process of import. The first parameter can be parameterized easily. Second parameter takes the profile xml file path. Every engagement would have implemented different profile data stores in commerce server profiles. Every data source expects certain parameters like connection string, Active directory credentials etc. Basically the xml file content needs to be updated with project specific implementation and then the same needs to be passed to commerce server runtime api's. </P>
<P style="TEXT-ALIGN: justify">I have tailored the observer <STRONG>design pattern</STRONG> to achieve the same. Profile import tool has an initialization file named <STRONG>InitData.xml</STRONG>. Initdata xml represents the initialization data / parameters used by the tool to perform the process of import and export. The xml file also allows the users to specify handler's information. Handlers are nothing but <STRONG>Assembly &amp; Type</STRONG> combination information stored in the initialization file. Before starting the process of import / export, the tool looks into the configured handlers and instantiates the same through reflection and call appropriate interface methods to parse the xml document. I also expect the configured <STRONG>Type</STRONG> to implement the <STRONG><EM>IProfileDocumentHandler </EM></STRONG>interface. Handlers are specific to a partition or data source defined in the profile schema. One Data source can map to multiple handlers. <STRONG>Import tool identifies all the data sources defined in the profile document and searches for the handlers in the initialization file (InitData.xml) and calls the appropriate handlers to modify the xml document</STRONG>. Code to modify the profile xml document is implemented in the handler implementation. This gives us a clean way to isolate import process and project specific information processing. It also gives chance to the implementers to customize the tool to their requirements. Initialization file also allow the users to specify custom initialization or configurable parameters. </P>
<P style="TEXT-ALIGN: justify"><STRONG>Initialization File Format </STRONG></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&lt;?</SPAN><SPAN style="COLOR: #a31515">xml</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">version</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">1.0</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">encoding</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">utf-8</SPAN>"<SPAN style="COLOR: blue"> ?&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: #a31515">InitData</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; &lt;SiteConnection&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;SiteName&gt;Commerce Site Name&lt;/SiteName&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BizConnectionString&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Profile resouce connection string </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/BizConnectionString&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;UserName&gt; future use.&lt;/UserName &gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Password&gt;&lt;/Password&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/SiteConnection&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;--&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">SiteConnection</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">SiteName</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Framework<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">SiteName</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">BizConnectionString</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Provider=SQLOLEDB;Data Source=local-CS;Initial Catalog=Framework_profiles;Integrated Security=SSPI;Network Library=;<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">BizConnectionString</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">UserName</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: #a31515">UserName</SPAN><SPAN style="COLOR: blue"> &gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">Password</SPAN><SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: #a31515">Password</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">SiteConnection</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--</SPAN><SPAN style="COLOR: green"> </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; &lt;DataSources&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Partition name="Commerce User Profile PartitionName"&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User can have there own inititalization paramterd under partition node. </STRONG></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New"><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same will be passed to the handlers in runtime. </STRONG></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;connectionString&gt;Target Connection String&lt;/connectionString&gt;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Partition&gt; </SPAN></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DataSources&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: green">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">--&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">DataSources</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">Partition</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">UserObjectDS</SPAN>"<SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">connectionString</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=site_profiles;<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">connectionString</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">Partition</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">Partition</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">DataSource1</SPAN>"<SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">connectionString</SPAN><SPAN style="COLOR: blue">&gt;</SPAN> Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=site_profiles;<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">connectionString</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">Partition</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">DataSources</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--</SPAN><SPAN style="COLOR: green"> </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; &lt;Handlers&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Handler partitionName="Commerce User Profile PartitionName"&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;assembly path ="Assembly Path" type="TypeName" enable="1"&gt;&lt;/assembly&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Handler&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Handler partitionName="Commerce User Profile PartitionName"&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;assembly path ="Assembly Path" type="TypeName" enable="1"&gt;&lt;/assembly&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Handler&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Handlers&gt; </SPAN></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;</P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Partition Name configured in handlers section should match with the partition name </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; in the data sources section. </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;--&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">Handlers</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">Handler</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">partitionName</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue"> UserObjectDS</SPAN>"<SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">assembly</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">path</SPAN><SPAN style="COLOR: blue"> =</SPAN>"<SPAN style="COLOR: blue">&lt;fullpath&gt;Handlers.dll</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">type</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">Microsoft.Commerce.ProfileManager.Handlers.ConnectionStringHandler</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">enable</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">1</SPAN>"<SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: #a31515">assembly</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">Handler</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">Handler</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">partitionName</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue"> DataSource1</SPAN>"<SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">assembly</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">path</SPAN><SPAN style="COLOR: blue"> =</SPAN>"<SPAN style="COLOR: blue">&lt;fullpath&gt;Handlers.dll</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">type</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">Microsoft.Commerce.ProfileManager.Handlers.ConnectionStringHandler</SPAN>"<SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">enable</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">1</SPAN>"<SPAN style="COLOR: blue">&gt;&lt;/</SPAN><SPAN style="COLOR: #a31515">assembly</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">Handler</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">Handlers</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P style="TEXT-ALIGN: justify"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">InitData</SPAN><SPAN style="COLOR: blue">&gt;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN> </P>
<P style="TEXT-ALIGN: justify"><STRONG>SQL Connection String Handler implementation </STRONG></P>
<P style="TEXT-ALIGN: justify">Connection string handler can be used to handle any data sources which has SQL server as the data store. Handler expects connection string information in the following location in the initdata.xml. </P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: #a31515">DataSources</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&lt;</SPAN><SPAN style="COLOR: #a31515">Partition</SPAN><SPAN style="COLOR: blue"> </SPAN><SPAN style="COLOR: red">name</SPAN><SPAN style="COLOR: blue">=</SPAN>"<SPAN style="COLOR: blue">UserObjectDS</SPAN>"<SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</SPAN><SPAN style="COLOR: #a31515">connectionString</SPAN><SPAN style="COLOR: blue">&gt;</SPAN>Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=site_profiles;<SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">connectionString</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</SPAN><SPAN style="COLOR: #a31515">Partition</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"><SPAN style="COLOR: blue">&lt;/</SPAN><SPAN style="COLOR: #a31515">DataSources</SPAN><SPAN style="COLOR: blue">&gt; </SPAN></SPAN></P>
<P style="TEXT-ALIGN: justify">Handler uses this information to update the connection string information in the specified partition name in the profile document. </P>
<P style="TEXT-ALIGN: justify"><STRONG>Profile Import Tool Usage </STRONG></P>
<P style="TEXT-ALIGN: justify">CSProfileManager import &lt;Init data file Path&gt; &lt;Profile definition file path&gt; </P>
<P style="TEXT-ALIGN: justify">CSProfileManager export &lt;Init data file Path&gt; &lt;xml file path to export&gt; </P>
<P style="TEXT-ALIGN: justify"><STRONG>Conclusion </STRONG></P>
<P>Profile import tool can be customized with little dev effort to suit the requirement of a project. Tool provides extensibility based on observer pattern. Created SQL Connection String handler to handle to SQL based data sources. Similarly we can create handlers to handle other data stores like AD etc. </P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/05/29/08/65/CSProfileManager.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-05-29-08-65/CSProfileManager.zip">CSProfileManager.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Packaging and Unpacking Commerce Server Sites through PUP Package</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/packaging-and-unpacking-commerce-server-sites-through-pup-package</link>
      <pubDate>Tue, 28 Aug 2007 04:49:00 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2007/08/28/packaging-and-unpacking-commerce-server-sites-through-pup-package/</guid>
      <description><![CDATA[Introduction 
	    Commerce server provides PUP.exe to automate the process of packing and...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction </strong>
	</p><p style="text-align: justify">    Commerce server provides PUP.exe to automate the process of packing and un-packing a commerce site. Tool has its existence from the days of <strong>Site Server</strong>. Complete Meta data of a commerce site is managed by pup package. Using the pup package in GUI mode is straight forward and it's quite simple. Every commerce server engagement demands for an automated process to pack and un-pack a commerce server site in an unattended mode. I tried the same in one of my commerce server engagement and tried pup.exe to automate the above process. I faced many hurdles while automating the process and got good support from Commerce Server PSS team in overcoming the hurdles. I would like to share my learning's in this article. 
</p><p><strong>Configuration files </strong>
	</p><p style="text-align: justify">    PUP package can be executed in <strong>un-attended / silent</strong> mode through a configuration file. Configuration file has complete information about the site to be unpacked. The configuration file doesn't play any role in the process of packing the site.PUP.exe packs the entire site content configured in commerce server manager. Profile resource is driven through an additional configuration file which has the information about the profile schema and profile SQL definition. Following are the list of configuration files expected by pup.exe to run in unattended mode. 
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:133px"/><col style="width:505px"/></colgroup><tbody valign="top"><tr><td colspan="2" vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: center">File Name</p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>Comment</p></td></tr><tr><td colspan="2" vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>Site Configuration file </p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>Used only in the process of unpacking a site and instructs pup.exe with the information about the site resources to be unpacked. Configuration file should adhere to the format identified by the packaging tool and the same will be discussed later in the article.</p></td></tr><tr><td colspan="2" vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>BizData.ini – Profile specific configuration file</p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p style="text-align: justify">Used to provide information specific to the profiles (Global resource). Configuration file contains information's like profile schema definition, SQL schema definition, Site Terms definition xml etc. To achieve un-attended process we need to place this file in the commerce server installation directory <strong>(C:\Program Files\Microsoft Commerce Server 2007) </strong>and in the executing directory of pup.exe<strong>. </strong>Pup package tries to locate the profile information from this file and expects the file to be in the directories. If the file is not available, pup.exe pops up a UI to locate the same. </p></td></tr></tbody></table></div><p>
 </p><p><strong>Site Configuration File </strong>
	</p><p style="text-align: justify">Site configuration file instructs the packager about the resources and applications needs to be unpacked. Following configuration file can be used to unpack the <strong>EmpySite</strong> in command line. The same file can be modified to unpack any commerce site through command line. Connection strings specified in the below configuration should be in the same format. PUP.exe expects the connection string only in that format. 
</p><p style="text-align: justify"> 
 </p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[General] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">SiteName=GameServiceSetup1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Description=Silent CSharpSite Install with Windows Authentication </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">NumOfResources= 7 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">NumOfApplications= 5 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource0=Product Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource1=Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource2=Transaction Config </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource3=Biz Data Service </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource4=Site CS Authentication </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource5=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Resource6=Inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Application0=CatalogWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Application1=CSharpSite </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Application2=MarketingWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Application3=OrdersWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Application4=ProfilesWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">NumOfConnStrs= 7 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[ConnStrs] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName0=Product Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName0=connstr_db_Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName0=Product Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName0=connstr_db_Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue0=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_ProductCatalog;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName1=Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName1=connstr_db_Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName1=Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName1=connstr_db_Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue1=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_Transactions;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName2=Transaction Config </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName2=connstr_db_TransactionConfig </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName2=Transaction Config </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName2=connstr_db_TransactionConfig </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue2=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_Transactionconfig;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName3=Biz Data Service </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName3=connstr_db_bds </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName3=Profiles </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName3=connstr_db_bds </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue3=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_Profiles;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName4=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName4=connstr_db_Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName4=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName4=connstr_db_Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue4=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_Marketing;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName5=Inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName5=connstr_db_inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName5=Inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName5=connstr_db_inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue5=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_ProductCatalog;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrResourceName6=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrPropertyName6=connstr_db_Lists </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyResourceName6=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrFriendlyPropertyName6=connstr_db_Lists </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ConnStrValue6=Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=CSharpSite_Marketing_Lists;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Product Catalog] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=2 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.CatalogPUP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Product Catalog </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Transactions] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=2 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.OrdersPup </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Transactions </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Transaction Config] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=2 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.OrdersPup </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=TransactionConfig </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Transaction Config </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Biz Data Service] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=7 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.UPMPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=BizDataStore </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Profiles </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">GlobalResourceName= (Add new global resource) </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Site CS Authentication] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=3 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.AuthPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=AuthManager </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=CS Authentication </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">GlobalResourceName= (Add new global resource) </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Inventory] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=2 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.CatalogPUP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Inventory </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[Marketing] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=2 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.MarketingPup </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Marketing </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[CatalogWebService] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=5130 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.AddressPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AccessFlags=513 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AuthFlags=4 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AppIsolated=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AspCodePage=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">VRoot=CatalogWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">CSAppName=CatalogWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Website=Default Web Site </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Machine=localhost </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[CSharpSite] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=10 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.AddressPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AccessFlags=513 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AuthFlags=7 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AppIsolated=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AspCodePage=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">VRoot=CSharpSite </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">CSAppName=CSharpSite </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Website=Default Web Site </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Machine=localhost </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[MarketingWebService] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=9226 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.AddressPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AccessFlags=513 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AuthFlags=4 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AppIsolated=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AspCodePage=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">VRoot=MarketingWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">CSAppName=MarketingWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Website=Default Web Site </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Machine=localhost </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[OrdersWebService] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=3082 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.AddressPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AccessFlags=513 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AuthFlags=4 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AppIsolated=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AspCodePage=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">VRoot=OrdersWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">CSAppName=OrdersWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Website=Default Web Site </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Machine=localhost </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[ProfilesWebService] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceFlags=17418 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">PupFlags=1 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProgidPUP=Commerce.AddressPuP </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ResourceType=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">FriendlyName=Address </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AccessFlags=513 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AuthFlags=4 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AppIsolated=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">AspCodePage=0 </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">VRoot=ProfilesWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">CSAppName=ProfilesWebService </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Website=Default Web Site </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">Machine=localhost </span>
	</p><p> 
 </p><p><strong>BizData.ini – Profile specific configuration file </strong>
	</p><p>This file needs to be placed in the commerce server installation directory and in the executing directory of pup.exe. 
</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[BizDataSchema] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">catalogSchema=catalogSchema.sql </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">expressionSchema=es_create.sql     </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">expressionSprocs=es_stored_procs.sql </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">profileDefs=ProfileSQL_Starter.xml </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">siteTermDefs=SiteTerms.xml </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">expressionDefs=ExpressionDefinition.xml </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[BizDataStoreFlags] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">IsSilentMode=True </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">[UPM_SQLSource.SQLSource] </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">IsBizDataStore=True </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">ProviderString=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=StarterSite_Profiles;Data Source=localhost; </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">schemaDefs=ProfileSQL_Starter.sql </span>
	</p><p style="margin-left: 108pt"><span style="font-family:Tahoma; font-size:8pt">dataDefs= </span>
	</p><p><strong>PUP Log File </strong>
	</p><p style="text-align: justify">Pup.exe creates a log file named pup.log in C drive and logs information to the file during the process of packing and unpacking a commerce site. The information in the file will be of great use for troubleshooting. 
</p><p><strong>Packing a commerce site </strong>
	</p><p style="text-align: justify">Following command should be used to pack a commerce site in command prompt. Execute the below command in Commerce Server Command prompt. 
</p><p><strong>PUP.exe /p /f:&lt;valid siten ame&gt;/i:Config.ini /s:&lt;SiteName&gt; </strong>
	</p><p style="text-align: justify">Config.ini is of no use in the process of packing a commerce site. Pup.exe packs the entire site content. If we are not using the /i: parameter, pup.exe will pop up the UI. To make the packing process silent, we need to use /i: option <span style="font-family:Wingdings">J</span>
	</p><p><strong>Unpacking a Commerce Site </strong>
	</p><p style="text-align: justify">Following command should be used to un-pack a commerce site in command prompt. Execute the below command in Commerce Server Tools Command prompt. 
</p><p><strong>PUP.exe /u /f:&lt;pup package path&gt; /i:&lt;Full path of the configuration file&gt;/s:&lt;New Site Name&gt; </strong>
	</p><p><strong>Sample Automation Tool </strong>
	</p><p style="text-align: justify">I have created a sample automation tool to automate the process of packing and unpacking commerce site. The Batch file takes parameters needed by pup.exe and calls the pup.exe with appropriate parameters. Following are the details about the tool. Automation tool has the configuration file in the <strong>Master Template folder </strong>with needed place holders. For every environment I have created a separated folder (Test, Staging etc) which contains the following files. 
</p><div><table style="border-collapse:collapse" border="0"><colgroup><col style="width:135px"/><col style="width:503px"/></colgroup><tbody valign="top"><tr><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>File Name</p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>Comments</p></td></tr><tr><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>FindAndReplace.exe</p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>.Net console app used to do replacement in the configuration file based on the parameters passed. Can be replaced with some dos commands <span style="font-family:Wingdings">J</span>
						</p></td></tr><tr><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>InsallCommerce.bat</p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>Unpacks a commerce site. Takes site name as a parameter. Other parameters like pup package file path are hard coded in the batch file. Can be parameterized based on the requirement. Bat file does the following tasks. 
</p><ol><li>Resets IIS 
</li><li>Copies all the files to the executing folder from master template folder. 
</li><li>Copies bizdata.ini to C:\Program Files\Microsoft Commerce Server 2007 folder. 
</li><li>Replaces ~SiteName~ place holder with the appropriate site name. 
</li><li>Executes pup.exe with appropriate parameter for unpacking a commerce site. 
</li></ol><p>Currently the tool unpacks <strong>empty.pup</strong> and can be modified to unpack any valid commerce server sites. </p></td></tr><tr><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>PackCommerce.bat</p></td><td vAlign="middle" style="padding-top: 1px; padding-left: 7px; padding-bottom: 1px; padding-right: 7px; border-top:  none; border-left:  none; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt"><p>Takes existing commerce server site name as parameter and packs the site through pup.exe</p></td></tr></tbody></table></div><p><strong>Using Automation Tool </strong>
	</p><ol><li><div style="text-align: justify">Download <strong>PUP Automation.zip </strong>. 
</div></li><li><div style="text-align: justify">Extract the file content to a directory. 
</div></li><li><div style="text-align: justify">Exaction process will create the following directories. 
</div><ol><li><div style="text-align: justify">Master Template &amp; 
</div></li><li><div style="text-align: justify">Test 
</div></li></ol></li><li><div style="text-align: justify">Use Commerce Server Tools prompt to execute installcommerce.bat with site name as parameter. (Batch file is located in the test directory). 
</div></li><li><div style="text-align: justify">Above command will a new commerce site using <strong>empty.pup</strong>. 
</div></li></ol><p><strong>Packaging tool limitation </strong>
	</p><p>PUP.exe cannot be used to unpack a commerce server site in silent mode which has <strong>AD integration</strong> in profiles. The same is supported in GUI mode. It's a limitation in the tool. 
</p><p><strong>Conclusion </strong>
	</p><p>PUP.exe is the not recommended way to deploy commerce sites in production environment. We need to use staging for the same. This can be used only to setup the initial site and further updates should be done through staging. To set-up the base commerce site pup package is the only option and can be automated with the command line options. Development stage of commerce server engagement demands for the above automation. The above process should be used only in the stage of development. </p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/04/60/73/99/PUP%20Automation.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-04-60-73-99/PUP-Automation.zip">PUP Automation.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Commerce Server 2007 - Data Migration</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/commerce-server-2007-data-migration</link>
      <pubDate>Thu, 26 Jul 2007 05:48:00 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2007/07/26/commerce-server-2007-data-migration/</guid>
      <description><![CDATA[Introduction:- 
In this article I will be discussing about various challenges we face during data...]]></description>
      <content:encoded><![CDATA[<P><STRONG>Introduction</STRONG>:- </P>
<P>In this article I will be discussing about various challenges we face during data migration from CS 2000 to CS 2007. Before getting into the issues let's discuss the basic process involved in the process of data migration. This article covers transactions data migration. </P>
<P><STRONG>Commerce Server 2007 Migration Wizard</STRONG>:- </P>
<P style="TEXT-ALIGN: justify">Commerce server 2007 comes with a migration wizard to migrate previous versions of commerce server to CS 2007. Commerce server 2007 underwent various design changes in the product. Previous versions of commerce are COM based. Most of the sub-systems in Commerce 2007 have been re-written in managed code. Commerce Server 2007 provides and extensible architecture to extent various sub systems. Commerce Server 2007 wizard works very similar to the runtime architecture. Entire order system of the site has been represented through OrderObjectMapping.xml and OrderPipeLineMapping.xml. Commerce server 2007 wizard follows the same structure to migrate the data from previous version of commerce server. </P>
<P><STRONG>Various parts of Upgrade wizard:- </STRONG></P>
<P style="TEXT-ALIGN: justify">Upgrade wizard is a .Net win form application and work based on the configuration files for various configurations. Configuration file stores information very similar to the web.config of the runtime site. It stores information like Order System assemblies and adapter mapping information. Application configuration file store the path of the Storage Mapping File path and Order Migration mapping file. Order Migration mapping file is very similar to the Pipeline mapping file. Migration mapping file maps information between the order Type properties and keys of the legacy system marshaled data. </P>
<P><STRONG>Migrating Discounts Applied:- </STRONG></P>
<P style="TEXT-ALIGN: justify">Commerce server 2007 stores various discounts applied information in a separate table. The wizard expects a separate list in the order form header marshaled data for applied discounts. Commerce Server 2000 and 2002 doesn't store information in a list, instead it stores the information in order form header in a flat hierarchy. Due to this design constraint, migration wizard doesn't provide out of box feature to migrate the same. One way to do the migration is through custom SQL migration. For this we need to grab the information from marshaled data to physical columns in the order form header table. </P>
<P>Following are the mapping information about in discounts in the migration mapping file. </P>
<P><SPAN style="FONT-SIZE: 8pt">&lt;Collection Name="ItemLevelDiscountsApplied" DictionaryKey="_itemlevel_discounts_applied" KeyType="SimpleList" ReferTo="DiscountApplicationRecord" /&gt; </SPAN></P>
<P><SPAN style="FONT-SIZE: 8pt">&lt;Collection Name="OrderLevelDiscountsApplied" DictionaryKey="_orderlevel_discounts_applied" KeyType="SimpleList" ReferTo="DiscountApplicationRecord" /&gt; </SPAN></P>
<P style="TEXT-ALIGN: justify">Migration wizard expects discounts information in the above specified keys and the same is not available in earlier versions. We need to find the discount related information in the legacy marshaled data and import the same to the SQL tables. Previous version of commerce server stores all the information in blob and also stores some information in tables. Legacy commerce runtime looks in to the keys and checks the same against the target table column list. If the table has mapping columns, runtime will store the data in the appropriate columns. We can use this flexibility to migrate the data from marshaled data to SQL tables. We can create a sample VB application to read the Orders information through commerce API's. After exploring the data through the application, we can create the needed columns in the legacy commerce tables like Order Group, Order Form Header etc. Loading and saving the order back to the system through <STRONG>SaveAsOrder </STRONG>method will force the runtime to do data persistence. After this we can do SQL migration to CS 2007 tables. </P>
<P style="TEXT-ALIGN: justify">Alternatively we can create appropriate lists in the legacy application marshaled data as expected by CS 2007 wizard through a sample VB application. </P>
<P style="TEXT-ALIGN: justify">The same issue is there for Payment methods as well. We need to follow the above steps to migrate the same to CS 2007 <SPAN style="FONT-FAMILY: Wingdings"></SPAN> </P>
<P style="TEXT-ALIGN: justify"><STRONG>Exploring Legacy marshaled data – CS 2000 PInvoke API </STRONG></P>
<P style="TEXT-ALIGN: justify">I have created a sample visual basic application to do the discounts and payment methods migration. This application will be very useful to tweak the data stored in the legacy systems. </P>
<P>&nbsp;&nbsp;</P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/04/05/95/34/Migration%20Helper.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-04-05-95-34/Migration-Helper.zip">Migration Helper.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Trouble shooting Commerce Server pipelines</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/trouble-shooting-commerce-server-pipelines</link>
      <pubDate>Tue, 24 Jul 2007 06:21:06 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2007/07/24/trouble-shooting-commerce-server-pipelines/</guid>
      <description><![CDATA[Good reference book on working and troubleshooting commerce server pipelines....]]></description>
      <content:encoded><![CDATA[<p>Good reference book on working and troubleshooting commerce server pipelines. 
</p><p><a href="https://msdn2.microsoft.com/en-us/library/ms959842.aspx">https://msdn2.microsoft.com/en-us/library/ms959842.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Secret Question Answer - UPM Membership Provider</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/secret-question-answer-upm-membership-provider</link>
      <pubDate>Tue, 09 Jan 2007 05:53:47 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2007/01/09/secret-question-answer-upm-membership-provider/</guid>
      <description><![CDATA[Commerce UPM Member ship provider always treats the security question answer&nbsp;as case...]]></description>
      <content:encoded><![CDATA[<p>Commerce UPM Member ship provider always treats the <strong>security question answer&nbsp;</strong>as case insensitive. While creating the user , UPM Membership provider&nbsp;does <strong>ToLower()&nbsp;</strong>&nbsp;of the provided secret question answer&nbsp;and also converts the supplied <strong>answer</strong>&nbsp;to lower case while doing comparison. If both <strong>Create and Forgot password</strong> functionality goes through the same UPM Provider, we will not face any issues. If we are creating the users through different API's like commerce runtime or web services, keep this as one of the design constraints.</p>]]></content:encoded>
    </item>
    <item>
      <title>Commerce Server 2007 Sub Systems - Unmanaged</title>
      <link>https://docs.microsoft.com/archive/blogs/sathishcg/commerce-server-2007-sub-systems-unmanaged</link>
      <pubDate>Sun, 24 Dec 2006 16:14:29 GMT</pubDate>
      <dc:creator><![CDATA[sathishcg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/sathishcg/2006/12/24/commerce-server-2007-sub-systems-unmanaged/</guid>
      <description><![CDATA[Commerce Server still runs unmanaged code in few of their sub-systems. Profiles, marketing and...]]></description>
      <content:encoded><![CDATA[<p>Commerce Server still runs unmanaged code in few of their sub-systems. Profiles, marketing and Pipelines&nbsp;are the sub-systems which are unmanaged.</p> <p>All other sub-systems are re-written in managed code. </p>]]></content:encoded>
    </item>
  </channel>
</rss>