<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BizTalk Blog</title>
	<atom:link href="http://blog.biztalk-info.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.biztalk-info.com</link>
	<description>My experiences with BizTalk and other stuff</description>
	<lastBuildDate>Wed, 07 Dec 2011 17:02:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Find schemas deployed in BTS 2004</title>
		<link>http://blog.biztalk-info.com/2011/06/find_schemas_deployed_in_bts_2004/</link>
		<comments>http://blog.biztalk-info.com/2011/06/find_schemas_deployed_in_bts_2004/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 18:30:13 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/06/03/Find_schemas_deployed_in_BTS_2004.aspx</guid>
		<description><![CDATA[If you need to find the schemas that are deployed and their unique root node names you can run this query. Yes BTS 2004 still exists. use biztalkmgmtdb select msgtype as [Schema NameSpace#RootNode], clr_namespace as [Assembly Name], clr_typename as [Schema TypeName], docspec_name as [Schema Namespace.TypeName] from bt_DocumentSpec order by msgtype]]></description>
			<content:encoded><![CDATA[<p>If you need to find the schemas that are deployed and their unique root node names you can run this query.</p>
<p>Yes BTS 2004 still exists.</p>
<p>use biztalkmgmtdb    <br />select msgtype as [Schema NameSpace#RootNode],     <br />clr_namespace as [Assembly Name],     <br />clr_typename as [Schema TypeName],     <br />docspec_name as [Schema Namespace.TypeName]    <br />from bt_DocumentSpec     <br />order by msgtype </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/06/find_schemas_deployed_in_bts_2004/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft SQL Server 2008 Data Transformation Services (DTS) for BAM Archiving is not installed on the local machine.</title>
		<link>http://blog.biztalk-info.com/2011/05/bam_tools_configuration_for_biztalk_2010_with_remote_sql_server/</link>
		<comments>http://blog.biztalk-info.com/2011/05/bam_tools_configuration_for_biztalk_2010_with_remote_sql_server/#comments</comments>
		<pubDate>Sat, 28 May 2011 21:47:47 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[12]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/05/28/BAM_Tools_configuration_for_BizTalk_2010_with_remote_SQL_server.aspx</guid>
		<description><![CDATA[If you get the following error when configuring BAM tools for BizTalk 2010: Microsoft SQL Server 2008 Data Transformation Services (DTS) for BAM Archiving is not installed on the local machine.  Please install Microsoft SQL Server 2008 Integration Services. (Microsoft.BizTalk.Bam.CfgExtHelper.ToolsHelper) For help, click: http://go.microsoft.com/fwlink/events.asp?ProdName=Microsoft+BizTalk+Server+2009&#38;ProdVer=3.8.368.0&#38;EvtSrc=Microsoft.BizTalk.Bam.CfgExtHelper.ToolsHelper&#38;EvtID=error_DTS2008Archive —————————— ADDITIONAL INFORMATION: Could not load file or assembly ‘Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, <a href='http://blog.biztalk-info.com/2011/05/bam_tools_configuration_for_biztalk_2010_with_remote_sql_server/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>If you get the following error when configuring BAM tools for BizTalk 2010:</p>
<p>Microsoft SQL Server 2008 Data Transformation Services (DTS) for BAM Archiving is not installed on the local machine.  Please install Microsoft SQL Server 2008 Integration Services. (Microsoft.BizTalk.Bam.CfgExtHelper.ToolsHelper)   <br />For help, click: <a href="http://go.microsoft.com/fwlink/events.asp?ProdName=Microsoft+BizTalk+Server+2009&amp;ProdVer=3.8.368.0&amp;EvtSrc=Microsoft.BizTalk.Bam.CfgExtHelper.ToolsHelper&amp;EvtID=error_DTS2008Archive">http://go.microsoft.com/fwlink/events.asp?ProdName=Microsoft+BizTalk+Server+2009&amp;ProdVer=3.8.368.0&amp;EvtSrc=Microsoft.BizTalk.Bam.CfgExtHelper.ToolsHelper&amp;EvtID=error_DTS2008Archive</a>    <br />——————————    <br />ADDITIONAL INFORMATION:    <br />Could not load file or assembly ‘Microsoft.SqlServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91′ or one of its dependencies. The system cannot find the file specified. (Microsoft.BizTalk.Bam.CfgExtHelper)</p>
<p>It has to do with installing BizTalk 2010 with a remote SQL 2008 server.  Here’s the fix.</p>
<p>Install the Management Tools (Basic &amp; Complete) SQL 2008 features as shown in the screenshot onto the BizTalk 2010 server:</p>
<p><a href="http://blog.biztalk-info.com/images/BAM-Tools-on_EBB3/image.png" rel="lightbox"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.biztalk-info.com/images/BAM-Tools-on_EBB3/image_thumb.png" width="550" height="456" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/05/bam_tools_configuration_for_biztalk_2010_with_remote_sql_server/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Catching Web Service Exceptions in BizTalk orchestration</title>
		<link>http://blog.biztalk-info.com/2011/04/catching_web_service_exceptions_in_biztalk_orchestration/</link>
		<comments>http://blog.biztalk-info.com/2011/04/catching_web_service_exceptions_in_biztalk_orchestration/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 03:33:16 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/04/09/Catching_Web_Service_Exceptions_in_BizTalk_orchestration.aspx</guid>
		<description><![CDATA[I had a business requirement to catch all web service exceptions and include them in an email. Here’s how to do it: Put the Web Service Call and Response inside a scope with an Exception Handler.  You don’t have to make it transactional.  You won’t be able to put both the send and receive shapes <a href='http://blog.biztalk-info.com/2011/04/catching_web_service_exceptions_in_biztalk_orchestration/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I had a business requirement to catch all web service exceptions and include them in an email.</p>
<p>Here’s how to do it:</p>
<p>Put the Web Service Call and Response inside a scope with an Exception Handler.  You don’t have to make it transactional.  You won’t be able to put both the send and receive shapes in an atomic scope.  I left it as “None”. You’ll need to add a reference to System.Web.Services.dll assembly to your project. Right-click on your scope and select Add New Exception Handler.   <br />Select the exception handler you just added and open the properties window. </p>
<p>Configure the following properties:   <br />Property    Value    <br />Exception Object Type    System.Web.Services.Protocols.SoapException    <br />Exception Object Name    ex_MyException</p>
<p>Inside of the exception handler you can do what you need by accessing ex_MyException.Details.  Be careful about terminating the orchestration inside of the exception handler, as it might cause zombies.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/04/catching_web_service_exceptions_in_biztalk_orchestration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Replacing string within Regular Expressions Match</title>
		<link>http://blog.biztalk-info.com/2011/04/replacing_string_within_regular_expressions_match/</link>
		<comments>http://blog.biztalk-info.com/2011/04/replacing_string_within_regular_expressions_match/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 21:28:29 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[12]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/04/04/Replacing_string_within_Regular_Expressions_Match.aspx</guid>
		<description><![CDATA[I have a trading partner who sends in invalid characters within a REF03 in an X12 850.  In the following example, my element separator is *, and the customer is sending in a * within the REF03.  I’m wanting to remove that invalid character before it hits the EDI pipeline component. Example X12 850: DTM*010*20110329~ <a href='http://blog.biztalk-info.com/2011/04/replacing_string_within_regular_expressions_match/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have a trading partner who sends in invalid characters within a REF03 in an X12 850.  In the following example, my element separator is *, and the customer is sending in a * within the REF03.  I’m wanting to remove that invalid character before it hits the EDI pipeline component.</p>
<p>Example X12 850:</p>
<p>DTM*010*20110329~    <br />PO1*10547090*1*EA*67.5**BP*PG7058SP&#8212;-~     <br />PID*F****LDY FAITH INDIVIDUAL IRON~     <br />REF*TC**HEREISMYINVALIDCHARACTER*~</p>
<p>I first captured all the TC Qualified Ref Segments into named groups (pre, text, and post) with the following Regular Expression.</p>
<p>@&#8221;(?&lt;pre&gt;REF\*TC\*\*)(?&lt;text&gt;.*?)(?&lt;post&gt;~)&#8221;</p>
<p>Using a method I am able to capture all the REF*TC segments, evaluate each one, and within each “text” group replace the errant * with “ “.  Note the use of the MatchEvaluator delegate within the Replace method.</p>
<p>private string myGoodString(string strBadString, string strSegmentTerminator)    <br />        {     <br />            string strRegex = @&#8221;(?&lt;pre&gt;REF\*TC\*\*)(?&lt;text&gt;.*?)(?&lt;post&gt;&#8221;+strSegmentTerminator+&#8221;)&#8221;;     <br />            RegexOptions myRegexOptions = RegexOptions.None;     <br />            Regex myRegex = new Regex(strRegex, myRegexOptions);</p>
<p>            string result = myRegex.Replace(strBadString, delegate(Match m)    <br />            {     <br />                return String.Join(String.Empty, new String[]{     <br />                m.Groups["pre"].Value,     <br />                m.Groups["text"].Value.Replace(&#8220;*&#8221;,&#8221; &#8220;),     <br />                m.Groups["post"].Value     <br />            });</p>
<p>            });    <br />            return result;     <br />        }</p>
<p>Here is the resulting X12 850 snippet.</p>
<p>DTM*010*20110329~    <br />PO1*10547090*1*EA*67.5**BP*PG7058SP&#8212;-~     <br />PID*F****LDY FAITH INDIVIDUAL IRON~     <br />REF*TC**HEREISMYINVALIDCHARACTER~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/04/replacing_string_within_regular_expressions_match/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reallocating partition space in Virtual Machine</title>
		<link>http://blog.biztalk-info.com/2011/03/reallocating_partition_space_in_virtual_machine/</link>
		<comments>http://blog.biztalk-info.com/2011/03/reallocating_partition_space_in_virtual_machine/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 19:10:50 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/03/23/Reallocating_partition_space_in_Virtual_Machine.aspx</guid>
		<description><![CDATA[If you expand a VM and the Windows OS recognizes the new space as unallocated space, there is a quick fix: Download a freeware program called Easeus Partition Master &#8211; http://download.cnet.com/Easeus-Partition-Master-Home-Edition/3000-2248_4-10863346.html?tag=mncol%3bpop&#38;cdlPid=10982635.  Run this on the Windows VM and it should show 2 drives.  Highlight the one you want to expand, click on (expand/resize), drag divider <a href='http://blog.biztalk-info.com/2011/03/reallocating_partition_space_in_virtual_machine/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>If you expand a VM and the Windows OS recognizes the new space as unallocated space, there is a quick fix:</p>
<p>Download a freeware program called Easeus Partition Master &#8211; <a href="http://download.cnet.com/Easeus-Partition-Master-Home-Edition/3000-2248_4-10863346.html?tag=mncol%3bpop&amp;cdlPid=10982635">http://download.cnet.com/Easeus-Partition-Master-Home-Edition/3000-2248_4-10863346.html?tag=mncol%3bpop&amp;cdlPid=10982635</a>.  Run this on the Windows VM and it should show 2 drives.  Highlight the one you want to expand, click on (expand/resize), drag divider out to full size of HD  and then &#8220;apply&#8221;. Reboot and it should be fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/03/reallocating_partition_space_in_virtual_machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The remote server returned an error: (411) Length Required.</title>
		<link>http://blog.biztalk-info.com/2011/03/the_remote_server_returned_an_error_411_length_required/</link>
		<comments>http://blog.biztalk-info.com/2011/03/the_remote_server_returned_an_error_411_length_required/#comments</comments>
		<pubDate>Fri, 11 Mar 2011 18:42:04 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[12]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/03/11/The_remote_server_returned_an_error_411_Length_Required.aspx</guid>
		<description><![CDATA[I received this message in BizTalk 2006 R2 when transmitting an AS2 message.  The fix was to disable the “Enable chunked encoding” on the HTTP send port configuration.]]></description>
			<content:encoded><![CDATA[<p>I received this message in BizTalk 2006 R2 when transmitting an AS2 message.  The fix was to disable the “Enable chunked encoding” on the HTTP send port configuration.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/03/the_remote_server_returned_an_error_411_length_required/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My first SSO implementation</title>
		<link>http://blog.biztalk-info.com/2011/02/my_first_sso_implementation/</link>
		<comments>http://blog.biztalk-info.com/2011/02/my_first_sso_implementation/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 16:10:23 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/02/03/My_first_SSO_implementation.aspx</guid>
		<description><![CDATA[Okay, I admit it, I have never spent the time to learn the intricacies of Enterprise Single Sign On. I guess I had a hard time seeing the value when the only description I heard for quite a long time is that it is where BizTalk stores credentials. I finally sat down and created a <a href='http://blog.biztalk-info.com/2011/02/my_first_sso_implementation/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Okay, I admit it, I have never spent the time to learn the intricacies of Enterprise Single Sign On. I guess I had a hard time seeing the value when the only description I heard for quite a long time is that it is where BizTalk stores credentials. </p>
<p>I finally sat down and created a sample application that I could see would be useful.</p>
<p>I want to create a generic pipeline that interrogates the target namespace of the xml document in the decode stage, and applies a map. I actually have this requirement where I need to change the document into a different xml document that I can actually apply an envelope schema to.</p>
<p><font color="#0000ff">&lt;</font><font color="#c0504d">Rant</font><font color="#0000ff">&gt;</font></p>
<p>I have always seen tutorials about how easy it is to create an envelope schema, reference a document schema and viola, BizTalk is splitting documents like crazy! I watched the podcasts, seen the demos eleventeen times and so I was tasked with doing it. I thought, hey, this is going to be easy!</p>
<p><strong>NOT SO</strong></p>
<p>This is a representation of what the order came in as</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">orders</span> <span style="color: #ff0000">xmlns</span>=<span style="color: #0000ff">"http://WebSiteVendor"</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">order</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Header</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Stuff
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Header</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Crap
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Details</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Even More Crap
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Details</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">order</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">order</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Header</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      More Stuff
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Header</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Yes, Even More Crap
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">Details</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Hard to believe, but yes, More Crap
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Details</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">order</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">orders</span><span style="color: #0000ff">&gt;</span></pre>
</pre>
<p>How am I supposed to create an envelope schema with a document node out of this type of document? I can’t go back to the Website Vendor and have them change it.</p>
<p>However, for the DASM, I <em>require</em> an xml document that looks like this:</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">ns0</span>:<span style="color: #ff0000">orders</span> <span style="color: #ff0000">xmlns</span>:<span style="color: #ff0000">ns0</span>=<span style="color: #0000ff">"http://WebSiteVendor"</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">order</span> <span style="color: #ff0000">xmlns</span>:<span style="color: #ff0000">ns1</span>=<span style="color: #0000ff">"http://WebSiteVendorOrder"</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">Header</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Stuff
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span>:Header<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Crap
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> etail<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Even More Crap
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> etail<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> rder<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">order</span> <span style="color: #ff0000">xmlns</span>:<span style="color: #ff0000">ns1</span>=<span style="color: #0000ff">"http://WebSiteVendorOrder"</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">Header</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      More Stuff
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span>:Header<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Yes, Even More Crap
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> etail<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">ns1</span>:<span style="color: #ff0000">Detail</span><span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">      Hard to believe, but yes, More Crap
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> etail<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns1</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> rder<span style="color: #0000ff">&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ns0</span> <img src='http://blog.biztalk-info.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> rders<span style="color: #0000ff">&gt;</span></pre>
</pre>
<p>Probably the worst thing is that a resolution (how to split this type of document up) has not been explained very well, if at all anywhere on the web.</p>
<p><font color="#0000ff">&lt;/</font><font color="#c0504d">Rant</font><font color="#0000ff">&gt;</font></p>
<p>After exploring all sorts of ways I can prep the data by removing name spaces, adding them back in, etc&#8230;, I started feeling like Thomas Edison. When Thomas Edison was interviewed by a young reporter who boldly asked Mr. Edison if he felt like a failure and if he thought he should just give up by now. Perplexed, Edison replied, &#8220;Young man, why would I feel like a failure? And why would I ever give up? I now know definitively over 9,000 ways that an electric light bulb will not work. Success is almost in my grasp.&#8221; And shortly after that, and over 10,000 attempts, Edison invented the light bulb.</p>
<p>Finally it dawned on me, that if I simply had a map that would execute in the Decode stage, I could then use the XML Disassembler to break up the ‘modified’ message into individual orders. I had created the envelope schema and imported the ‘document’ schema and made it a child.</p>
<p>Oddly enough, what is not terribly documented well is that the Body Xpath attribute needs to be pointing to the ‘parent’ of the document that you want to split up. (What is that about?)</p>
<p>So I looked around and <i>voilà</i>: there is a pipeline component in the SDK that does EXACTLY what I need. (SDK\Samples\Pipelines\XslTransformComponent)</p>
<p>So here is what I wanted to do:</p>
<ol>
<li>I wanted it to be on the receive side, in the decode stage. </li>
<li>I wanted it to be dynamic so that if multiple messages came in, it would be able to figure out what the correct map was and invoke it. </li>
</ol>
<p>So I decided that the SSO would be the perfect place to store the following key values:</p>
<table border="2" cellspacing="1" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="200">Key</td>
<td valign="top" width="200">Value</td>
</tr>
<tr>
<td valign="top" width="200"><a href="http://targetnamespace.com#node">http://targetnamespace.com#node</a></td>
<td valign="top" width="200">c:\{path}\map.xsl</td>
</tr>
</tbody>
</table>
<p>Obvious, that this table would increase as more and more documents started to be processed by this splitting component.</p>
<p>The first thing I did was download the Enterprise Single Sign On application to allow you to put key value pairs in the SSO Database. You can download the <a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=94e07de1-1d33-4245-b430-9216979cd587" target="_blank">SSO Configuration Application MMC Snap-In</a>. When you install it, it creates a new menu in your Start Menu. You have to register it, but then you can start placing key value pairs.</p>
<p>I created an application called DecodeTransformations. and here is what my dictionary looks like:</p>
<p><a href="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/61611fbf964c_5E2F/image_2.png" rel="lightbox"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/61611fbf964c_5E2F/image_thumb.png" width="808" height="195" /></a></p>
<p>So now I have to take the existing code and have it use ESSO to resolve the xslt instead of hard coding it in the properties of the pipeline.</p>
<p>As part of the download, Microsoft in their kindness, included sample code on how to retrieve values. You have to supply two values:</p>
<ol>
<li>Application Name (DecodeTransformations) </li>
<li>Key ({targetnamespace}) </li>
</ol>
<p>I included the class and referenced it in the primary class. Instead of giving you bits and pieces, I am going to tell you what lines I modified, and then show the resulting code (so you can use it yourself).</p>
<ol>
<li></li>
<li>I  changed the property bag to get the SSOApplication (line 151) </li>
<li>I commented out the code to ensure that there was value during build (line 248) </li>
<li>Instead of loading the xsl first, I wanted to load the xml document up so I can determine what is its namespace. (line 91) </li>
<li>I then determined what the document schema is it, by calling the ReturnTargetNamespace method. (line 94 –&gt; 257) </li>
<li>Now that I had the namespace, I then passed the Application in from the pipeline properties along with the targetnamespace to return the xsl path and returned the xsl path. (line 95) </li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  1: <span style="color: #0000ff">using</span> System;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  2: <span style="color: #0000ff">using</span> System.IO;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  3: <span style="color: #0000ff">using</span> System.Xml;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  4: <span style="color: #0000ff">using</span> System.Xml.Xsl;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  5: <span style="color: #0000ff">using</span> System.Xml.Linq;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  6: <span style="color: #0000ff">using</span> System.ComponentModel;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  7: <span style="color: #0000ff">using</span> System.Collections;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  8: <span style="color: #0000ff">using</span> Microsoft.BizTalk.Message.Interop;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">  9: <span style="color: #0000ff">using</span> Microsoft.BizTalk.Component.Interop;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 10: <span style="color: #0000ff">using</span> Microsoft.Win32;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 11: <span style="color: #0000ff">using</span> SSO.Utility;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 12:
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 13: <span style="color: #0000ff">namespace</span> Microsoft.BizTalk.SDKSamples.Pipelines.XslTransformComponent
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 14: {
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 15: 	<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 16: 	<span style="color: #808080">/// Implements a pipeline component that applies Xsl Transformations to XML messages</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 17: 	<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 18: 	<span style="color: #808080">/// &lt;remarks&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 19: 	<span style="color: #808080">/// XslTransformer class implements pipeline components that can be used in send pipelines</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 20: 	<span style="color: #808080">/// to convert XML messages to HTML format for sending using SMTP transport. Component can</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 21: 	<span style="color: #808080">/// be placed only in Encoding stage of send pipeline</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 22: 	<span style="color: #808080">/// &lt;/remarks&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 23: 	[ComponentCategory(CategoryTypes.CATID_PipelineComponent)]
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 24: 	[ComponentCategory(CategoryTypes.CATID_Decoder)]
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 25: 	[System.Runtime.InteropServices.Guid("<span style="color: #8b0000">FA7F9C55-6E8E-4855-8DAC-FA1BC8A499E2</span>")]
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 26: 	<span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> XslTransformer		: Microsoft.BizTalk.Component.Interop.IBaseComponent,
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 27: 									  Microsoft.BizTalk.Component.Interop.IComponent,
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 28: 									  Microsoft.BizTalk.Component.Interop.IPersistPropertyBag,
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 29: 									  Microsoft.BizTalk.Component.Interop.IComponentUI
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 30: 	{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 31: 		#region IBaseComponent
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 32: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 33: 		<span style="color: #808080">/// Name of the component.</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 34: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 35: 		[Browsable(<span style="color: #0000ff">false</span>)]
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 36: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Name
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 37: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 38: 			<span style="color: #0000ff">get</span> {	<span style="color: #0000ff">return</span> "<span style="color: #8b0000">XSL Transform Component</span>";	}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 39: 		}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 40: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 41: 		<span style="color: #808080">/// Version of the component.</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 42: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 43: 		[Browsable(<span style="color: #0000ff">false</span>)]
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 44: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Version
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 45: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 46: 			<span style="color: #0000ff">get</span>	{	<span style="color: #0000ff">return</span> "<span style="color: #8b0000">1.0</span>";	}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 47: 		}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 48: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 49: 		<span style="color: #808080">/// Description of the component.</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 50: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 51:         [Browsable(<span style="color: #0000ff">false</span>)]
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 52:         <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Description
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 53:         {
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 54:             <span style="color: #0000ff">get</span> { <span style="color: #0000ff">return</span> "<span style="color: #8b0000">XSL Transform Pipeline Component</span>"; }
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 55:         }
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 56: 		#endregion
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 57: 		#region IComponent
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 58: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 59: 		<span style="color: #808080">/// Implements IComponent.Execute method.</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 60: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 61: 		<span style="color: #808080">/// &lt;param name="pc"&gt;Pipeline context&lt;/param&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 62: 		<span style="color: #808080">/// &lt;param name="inmsg"&gt;Input message.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 63: 		<span style="color: #808080">/// &lt;returns&gt;Converted to HTML input message.&lt;/returns&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 64: 		<span style="color: #808080">/// &lt;remarks&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 65: 		<span style="color: #808080">/// IComponent.Execute method is used to convert XML messages</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 66: 		<span style="color: #808080">/// to HTML messages using provided Xslt file.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 67: 		<span style="color: #808080">/// It also sets the content type of the message part to be "text/html"</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 68: 		<span style="color: #808080">/// which is necessary for client mail applications to correctly render</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 69: 		<span style="color: #808080">/// the message</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 70: 		<span style="color: #808080">/// &lt;/remarks&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 71: 		<span style="color: #0000ff">public</span> IBaseMessage Execute(IPipelineContext pc, IBaseMessage inmsg)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 72: 		{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 73: 			inmsg.BodyPart.Data = TransformMessage(inmsg.BodyPart.Data);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 74: 			inmsg.BodyPart.ContentType = "<span style="color: #8b0000">text/html</span>";
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 75: 			<span style="color: #0000ff">return</span> inmsg;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 76: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 77: 		#endregion
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 78: 		#region Helper function
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 79: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 80: 		<span style="color: #808080">/// Transforms XML message in input stream to xml message</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 81: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 82: 		<span style="color: #808080">/// &lt;param name="stm"&gt;Stream with input XML message&lt;/param&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 83: 		<span style="color: #808080">/// &lt;returns&gt;Stream with output xml message&lt;/returns&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 84: 		<span style="color: #0000ff">private</span> Stream TransformMessage(Stream stm)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 85: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 86: 			MemoryStream ms = <span style="color: #0000ff">null</span>;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 87: 			<span style="color: #0000ff">string</span> validXsltPath = <span style="color: #0000ff">null</span>;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 88: 			<span style="color: #0000ff">try</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 89: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 90: 				<span style="color: #008000">//Load Xml stream in XmlDocument.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 91: 				XmlDocument doc = <span style="color: #0000ff">new</span> XmlDocument();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 92: 				doc.Load(stm);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 93:                 <span style="color: #008000">// Get the target name space</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 94:                 <span style="color: #0000ff">string</span> tns = ReturnTargetNamespace(doc);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 95:                 <span style="color: #0000ff">string</span> xsltPath = SSOClientHelper.Read(<span style="color: #0000ff">this</span>.SSOApplication, tns);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 96: 				<span style="color: #008000">// Get the full path to the Xslt file</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 97: 				validXsltPath = GetValidXsltPath(xsltPath);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 98:                 <span style="color: #008000">//Create memory stream to hold transformed data.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 99:                 ms = <span style="color: #0000ff">new</span> MemoryStream();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">100: 				<span style="color: #008000">// Load transform</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">101: 				XslTransform transform = <span style="color: #0000ff">new</span> XslTransform();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">102: 				transform.Load(validXsltPath);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">103: 				<span style="color: #008000">//Preform transform</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">104: 				transform.Transform(doc, <span style="color: #0000ff">null</span>, ms, <span style="color: #0000ff">null</span>);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">105: 				ms.Seek(0, SeekOrigin.Begin);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">106: 			}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">107: 			<span style="color: #0000ff">catch</span>(Exception e)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">108: 			{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">109: 				System.Diagnostics.Trace.WriteLine(e.Message);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">110: 				System.Diagnostics.Trace.WriteLine(e.StackTrace);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">111: 				<span style="color: #0000ff">throw</span> e;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">112: 			}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">113: 			<span style="color: #0000ff">return</span> ms;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">114: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">115: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">116: 		<span style="color: #808080">/// Get a valid full path to a Xslt file</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">117: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">118: 		<span style="color: #808080">/// &lt;param name="path"&gt;Path provided by user in Pipeline Designer&lt;/param&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">119: 		<span style="color: #808080">/// &lt;returns&gt;The full path&lt;/returns&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">120: 		<span style="color: #808080">/// &lt;remarks&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">121: 		<span style="color: #808080">/// If user provides absolute path then it is used as long as the file can be opened there</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">122: 		<span style="color: #808080">/// If user provides just a name of file or relative path then we try to open a file in </span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">123: 		<span style="color: #808080">/// [Install foder]\Pipeline Components</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">124: 		<span style="color: #808080">/// &lt;/remarks&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">125: 		<span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> GetValidXsltPath(<span style="color: #0000ff">string</span> path)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">126: 		{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">127: 			<span style="color: #0000ff">string</span> validPath = path;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">128: 			<span style="color: #0000ff">if</span> (!System.IO.File.Exists(path))
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">129: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">130: 						RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"<span style="color: #8b0000">SOFTWARE\Microsoft\BizTalk Server\3.0</span>");
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">131: 						<span style="color: #0000ff">string</span> InstallPath = <span style="color: #0000ff">string</span>.Empty;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">132:
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">133: 						<span style="color: #0000ff">if</span> (<span style="color: #0000ff">null</span> != rk)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">134: 					InstallPath = (String)rk.GetValue("<span style="color: #8b0000">InstallPath</span>");
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">135:
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">136: 						validPath = InstallPath + @"<span style="color: #8b0000">Pipeline Components\</span>" + path;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">137: 				<span style="color: #0000ff">if</span> (!System.IO.File.Exists(validPath))
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">138: 				{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">139: 					<span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> ArgumentException("<span style="color: #8b0000">The XSL transformation file </span>" + path + "<span style="color: #8b0000"> can not be found</span>");
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">140: 				}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">141: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">142: 			<span style="color: #0000ff">return</span> validPath;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">143: 		}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">144: 		<span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> GetXSLPathFromSSO(<span style="color: #0000ff">string</span> Application,<span style="color: #0000ff">string</span> MessageType)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">145: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">146: 			<span style="color: #0000ff">string</span> MapName = SSOClientHelper.Read(Application, MessageType);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">147: 			<span style="color: #0000ff">return</span> MapName;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">148: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">149: 		#endregion
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">150: 		#region IPersistPropertyBag
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">151: 		<span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> _SSOApplication;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">152: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> SSOApplication
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">153: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">154: 			<span style="color: #0000ff">get</span> { <span style="color: #0000ff">return</span> _SSOApplication; }
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">155: 			<span style="color: #0000ff">set</span> { _SSOApplication = <span style="color: #0000ff">value</span>; }
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">156: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">157: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">158: 		<span style="color: #808080">/// Gets class ID of component for usage from unmanaged code.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">159: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">160: 		<span style="color: #808080">/// &lt;param name="classid"&gt;Class ID of the component.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">161: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> GetClassID(<span style="color: #0000ff">out</span> Guid classid)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">162: 		{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">163: 			classid = <span style="color: #0000ff">new</span> System.Guid("<span style="color: #8b0000">FA7F9C55-6E8E-4855-8DAC-FA1BC8A499E2</span>");
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">164: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">165: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">166: 		<span style="color: #808080">/// Not implemented.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">167: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">168: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> InitNew()
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">169: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">170: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">171: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> Load(Microsoft.BizTalk.Component.Interop.IPropertyBag pb, Int32 errlog)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">172: 		{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">173: 			<span style="color: #0000ff">string</span> val = (<span style="color: #0000ff">string</span>)ReadPropertyBag(pb, "<span style="color: #8b0000">SSOApplication</span>");
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">174: 			<span style="color: #0000ff">if</span> (val != <span style="color: #0000ff">null</span>) SSOApplication = val;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">175: 		}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">176: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">177: 		<span style="color: #808080">/// Saves the current component configuration into the property bag.</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">178: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">179: 		<span style="color: #808080">/// &lt;param name="pb"&gt;Configuration property bag.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">180: 		<span style="color: #808080">/// &lt;param name="fClearDirty"&gt;Not used.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">181: 		<span style="color: #808080">/// &lt;param name="fSaveAllProperties"&gt;Not used.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">182: 		<span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> Save(Microsoft.BizTalk.Component.Interop.IPropertyBag pb, Boolean fClearDirty, Boolean fSaveAllProperties)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">183: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">184: 			<span style="color: #0000ff">object</span> val = (<span style="color: #0000ff">object</span>) SSOApplication;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">185: 			WritePropertyBag(pb, "<span style="color: #8b0000">SSOApplication</span>", val);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">186: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">187: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">188: 		<span style="color: #808080">/// Reads property value from property bag.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">189: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">190: 		<span style="color: #808080">/// &lt;param name="pb"&gt;Property bag.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">191: 		<span style="color: #808080">/// &lt;param name="propName"&gt;Name of property.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">192: 		<span style="color: #808080">/// &lt;returns&gt;Value of the property.&lt;/returns&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">193: 		<span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">object</span> ReadPropertyBag(Microsoft.BizTalk.Component.Interop.IPropertyBag pb, <span style="color: #0000ff">string</span> propName)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">194: 		{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">195: 			<span style="color: #0000ff">object</span> val = <span style="color: #0000ff">null</span>;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">196: 			<span style="color: #0000ff">try</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">197: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">198: 				pb.Read(propName,<span style="color: #0000ff">out</span> val,0);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">199: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">200: 			<span style="color: #0000ff">catch</span>(System.ArgumentException)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">201: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">202: 				<span style="color: #0000ff">return</span> val;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">203: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">204: 			<span style="color: #0000ff">catch</span>(Exception ex)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">205: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">206: 				<span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> ApplicationException( ex.Message);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">207: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">208: 			<span style="color: #0000ff">return</span> val;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">209: 		}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">210: 		<span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> WritePropertyBag(Microsoft.BizTalk.Component.Interop.IPropertyBag pb, <span style="color: #0000ff">string</span> propName, <span style="color: #0000ff">object</span> val)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">211: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">212: 			<span style="color: #0000ff">try</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">213: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">214: 				pb.Write(propName, <span style="color: #0000ff">ref</span> val);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">215: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">216: 			<span style="color: #0000ff">catch</span>(Exception ex)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">217: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">218: 				<span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> ApplicationException( ex.Message);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">219: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">220: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">221: 		#endregion
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">222: 		#region IComponentUI
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">223: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">224: 		<span style="color: #808080">/// Component icon to use in BizTalk Editor.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">225: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">226: 		[Browsable(<span style="color: #0000ff">false</span>)]
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">227: 		<span style="color: #0000ff">public</span> IntPtr Icon
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">228: 		{
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">229: 			<span style="color: #0000ff">get</span>	{	<span style="color: #0000ff">return</span> IntPtr.Zero;	}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">230: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">231: 		<span style="color: #808080">/// &lt;summary&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">232: 		<span style="color: #808080">/// The Validate method is called by the BizTalk Editor during the build </span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">233: 		<span style="color: #808080">/// of a BizTalk project.</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">234: 		<span style="color: #808080">/// &lt;/summary&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">235: 		<span style="color: #808080">/// &lt;param name="obj"&gt;Project system.&lt;/param&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">236: 		<span style="color: #808080">/// &lt;returns&gt;</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">237: 		<span style="color: #808080">/// A list of error and/or warning messages encounter during validation</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">238: 		<span style="color: #808080">/// of this component.</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">239: 		<span style="color: #808080">/// &lt;/returns&gt;</span>
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">240: 		<span style="color: #0000ff">public</span> IEnumerator Validate(<span style="color: #0000ff">object</span> projectSystem)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">241: 		{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">242: 			<span style="color: #0000ff">if</span> (projectSystem==<span style="color: #0000ff">null</span>)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">243: 				<span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> System.ArgumentNullException("<span style="color: #8b0000">No project system</span>");
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">244: 			IEnumerator enumerator = <span style="color: #0000ff">null</span>;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">245: 			ArrayList   strList  = <span style="color: #0000ff">new</span> ArrayList();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">246: 			<span style="color: #0000ff">try</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">247: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">248: 				<span style="color: #008000">//GetValidXsltPath(SSOApplication);</span>
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">249: 			}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">250: 			<span style="color: #0000ff">catch</span>(Exception e)
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">251: 			{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">252: 				strList.Add(e.Message);
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">253: 				enumerator = strList.GetEnumerator();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">254: 			}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">255: 			<span style="color: #0000ff">return</span> enumerator;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">256: 		}
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">257:         <span style="color: #0000ff">private</span> <span style="color: #0000ff">string</span> ReturnTargetNamespace(XmlDocument xdoc)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">258:         {
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">259:             XmlNodeReader xmlndRdr = <span style="color: #0000ff">new</span> XmlNodeReader(xdoc);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">260:             <span style="color: #0000ff">string</span> TargetNamespace = XElement.Load(xmlndRdr).GetDefaultNamespace().ToString();
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">261:             TargetNamespace = TargetNamespace + "<span style="color: #8b0000">#</span>" + xdoc.DocumentElement.Name;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">262:             <span style="color: #0000ff">return</span> TargetNamespace;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">263:         }
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">264: 		#endregion
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">265: 	}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">266: }
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">267: </pre>
</pre>
<p>Once that is completed, simply place the dll in the pipeline components folder.</p>
<p>I created the pipeline that has the XSLTransform pipeline component and the XML Disassembler pipeline component and it works like a charm!</p>
<p>Now I can use the same component in multiple locations and can receive multiple messages in the same location and based on the application deployed to SSO, it will resolve where the xsl lives and transform it. Unlike the ESB dispatcher pipeline component, I actually don’t even need to deploy the map, I simply need to place it somewhere and I am ready to go.</p>
<p>Here is what the pipeline looks like</p>
<p><a href="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/61611fbf964c_5E2F/image_4.png" rel="lightbox"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/61611fbf964c_5E2F/image_thumb_1.png" width="385" height="422" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/02/my_first_sso_implementation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error Message: The database &quot;.:BizTalkRuleEngineDb&quot; associated with the deployment driver does not match the database &quot;.:BizTalkRuleEngineDb&quot; specified during product configuration.</title>
		<link>http://blog.biztalk-info.com/2011/02/error_message_the_database_quot-biztalkruleenginedbquot_associated_with_the_deployment_driver/</link>
		<comments>http://blog.biztalk-info.com/2011/02/error_message_the_database_quot-biztalkruleenginedbquot_associated_with_the_deployment_driver/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 04:43:40 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/02/02/Error_Message_The_database_quot.BizTalkRuleEngineDbquot_associated_with_the_deployment_driver.aspx</guid>
		<description><![CDATA[So I created a script that created a silent install of BizTalk from a server that had SQL server installed to having BizTalk, UDDI, and ESB installed. I figured I was pretty ‘tricky’ by using the dot as the database server name. However, when I went to deploy a rule from within the Business Rule <a href='http://blog.biztalk-info.com/2011/02/error_message_the_database_quot-biztalkruleenginedbquot_associated_with_the_deployment_driver/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>So I created a script that created a silent install of BizTalk from a server that had SQL server installed to having BizTalk, UDDI, and ESB installed. I figured I was pretty ‘tricky’ by using the dot as the database server name.</p>
<p>However, when I went to deploy a rule from within the Business Rule Engine, I received the following error: <strong>Error Message: The database &#8220;.:BizTalkRuleEngineDb&#8221; associated with the deployment driver does not match the database &#8220;.:BizTalkRuleEngineDb&#8221; specified during product configuration</strong></p>
<p>I looked over a few blog entries, where the registry needed to be altered:</p>
<p>Open the Registry Editor (regedit) and locate the following key:</p>
<p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BusinessRules\3.0</p>
<p>If you have installed the rule processing components on a 64-bit version of Windows, they key will be at:</p>
<p>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\BusinessRules\3.0</p>
<p>Change the following keys DeploymentDriverAssembly and DeploymentDriverClass values under the key.   </p>
<ul>
<pre><font face="Arial">Microsoft.BizTalk.RuleEngineExtensions, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35    </font></pre>
</ul>
<p><font face="Arial">Microsoft.RuleEngine.RuleSetDeploymentDriver </font></p>
<p>NADA</p>
<p>The ultimate solution was to go into the adm_Group table and change the server name</p>
<p><a href="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/Error-Message-The-database-172.16.0.152_10C7A/image_2.png" rel="lightbox"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/Error-Message-The-database-172.16.0.152_10C7A/image_thumb.png" width="1038" height="133" /></a></p>
<p>There are two other databases that also refer the DB Server for the rules engine:</p>
<ol>
<li>adm_OtherDatabases </li>
<li>adm_OtherBackupDatabases </li>
</ol>
<p><em>Don’t bother changing them;it does not matter.</em></p>
<p>Once I made that single entry, I could deploy policies again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/02/error_message_the_database_quot-biztalkruleenginedbquot_associated_with_the_deployment_driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISO image mounting for Server 2008</title>
		<link>http://blog.biztalk-info.com/2011/01/iso_image_mounting_for_server_2008/</link>
		<comments>http://blog.biztalk-info.com/2011/01/iso_image_mounting_for_server_2008/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 21:18:16 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[12]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/01/28/ISO_image_mounting_for_Server_2008.aspx</guid>
		<description><![CDATA[Here’s a good ISO image mounter that works on Server 2008 http://static.slysoft.com/SetupVirtualCloneDrive.exe]]></description>
			<content:encoded><![CDATA[<p>Here’s a good ISO image mounter that works on Server 2008</p>
<p><a title="http://static.slysoft.com/SetupVirtualCloneDrive.exe" href="http://static.slysoft.com/SetupVirtualCloneDrive.exe">http://static.slysoft.com/SetupVirtualCloneDrive.exe</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/01/iso_image_mounting_for_server_2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The black hole called Dell Customer Support</title>
		<link>http://blog.biztalk-info.com/2011/01/the_black_hole_called_dell_customer_support/</link>
		<comments>http://blog.biztalk-info.com/2011/01/the_black_hole_called_dell_customer_support/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 06:06:53 +0000</pubDate>
		<dc:creator>stottc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.biztalk-info.com/archive/2011/01/17/The_black_hole_called_Dell_Customer_Support.aspx</guid>
		<description><![CDATA[“Total Satisfaction Return Policy” Total Satisfaction I was in need of a second power adapter for my laptop, a couple of days ago I went into Best Buy and they immediately told me, that for high end laptops, I really should contact the manufacturer to get the proper adapter, as any variation in wattage/voltage could <a href='http://blog.biztalk-info.com/2011/01/the_black_hole_called_dell_customer_support/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>“Total Satisfaction Return Policy”</p>
<p><strong>Total Satisfaction</strong></p>
<p>I was in need of a second power adapter for my laptop, a couple of days ago I went into Best Buy and they immediately told me, that for high end laptops, I really should contact the manufacturer to get the proper adapter, as any variation in wattage/voltage could potentially ruin the motherboard.</p>
<p>So I called up Alienware to order a second adapter for my Alienware laptop. Alienware was purchased by Dell, so I was directed to Dell Sales to make the purchase. I gave them my information they confirmed that I had a Alienware M15X, and told them I wanted a second power adapter. They were happy to take my credit card and for a price, shipped it as fast as they could to me.</p>
<p>Today I received the package. I did not think much to open it up and look at it, until my son kept bugging me to open it up. The shape of the converter was <em>much</em> smaller, and so I thought, great, less load on my back as I travel!</p>
<p>However just by looking at it, I noticed that this adapter was not going to work for me:</p>
<p><a href="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/The-black-hole-called_12985/Adapter_2.png" rel="lightbox"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Adapter" border="0" alt="Adapter" src="http://blog.biztalk-info.com/images/blog_biztalk-info_com/Windows-Live-Writer/The-black-hole-called_12985/Adapter_thumb.png" width="640" height="383" /></a></p>
<p>This should be a breeze, <a href="http://en.wikipedia.org/wiki/Dell" target="_blank">Dell has documented taking great strides to improve customer support</a>:</p>
<p>In 2006, Dell acknowledged that it had problems with customer service. Issues included call-transfers<sup><a href="http://en.wikipedia.org/wiki/Dell#cite_note-75">[76]</a></sup> of more than 45% of calls and long wait-times.<a href="http://www.direct2dell.com/">Dell&#8217;s blog</a> detailed the response: &#8220;We&#8217;re spending more than a $100 million — and a lot of blood, sweat and tears of talented people — to fix this.&#8221;<sup><a href="http://en.wikipedia.org/wiki/Dell#cite_note-76">[77]</a></sup>Later in the year, the company increased its spending on customer service to $150 million.<sup><a href="http://en.wikipedia.org/wiki/Dell#cite_note-77">[78]</a></sup></p>
<p>I called up Alienware support at 6:30pm and told them my situation. Technical support listened to my story and said, that they could not help me and that they would transfer me to customer support. “okay” I thought: they would be able to resolve this situation, it was a mistake, they can send me the correct adapter and give me a return slip for this one that doesn’t work. I then talked to someone at customer service, and they stated that the adapter that was sent to me was for the second generation M15X and that I owned the first generation M15X. <font color="#ff0000">“<em><strong>WHAT!”</strong></em>  Didn’t I call up Dell (who now owns Alienware) who confirmed with me my computer in their system and sent me the correct adapter?! </font></p>
<p><font color="#000000">They then told me that they could not help me with exchanging this, as this order was generated in the sales department, and only they could rectify the problem. They then transferred me to sales.</font></p>
<p>Sales then listened to me explain: AGAIN the issue and then said that they could not help me, that I was talking to Dell Sales, and I needed to talk to Alienware, and gave me Alienwares phone number. I told them that the number they had just given me <em>was</em> the number I had called. I asked repeatedly to be transferred to this person’s manager, as I wanted to talk to someone who could help me. He then told me that his manager was on a call. “Fine, I will sit on the phone and listen to you breath until your manager gets off the phone to talk to me” He then proceeded to tell me that he gets paid based on how many calls he gets in a shift and that they manager was taking calls!</p>
<p>I told him, that I knew that, I had once upon a long time ago, worked in a call center myself, but I needed to talk to someone that could help me and follow this issue through to completion. He then told me that he could not help me and that the only people that could help me was customer support, and that the <em>only thing he could do was transfer me</em>. </p>
<p>He then transferred me to customer support. The time was 7:35 MST, which is 9:35 EST. By this time customer support is closed.</p>
<p>So I am here with a power chord that doesn’t fit my computer, that I paid handsomely to get, and NO ONE AT DELL/ALIENWARE can help me with.</p>
<p>Does anyone have any hints at who can help me? I don’t have 3 hours per day to dedicate to this, is there a customer advocate at Dell/Alienware that can champion an issue like this through the maze that Michael Dell has put in place to ensure <strong>no return customers (at least not me now)</strong>, all in the name of <em>Total Satisfaction</em>?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.biztalk-info.com/2011/01/the_black_hole_called_dell_customer_support/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

