<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Gilles' WebLog : BizTalk 2004</title><link>http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx</link><description>Tags: BizTalk 2004</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>BizTalk Decompiler for Reflector 5 on CodePlex</title><link>http://blogs.msdn.com/gzunino/archive/2007/06/27/biztalk-decompiler-for-reflector-5-on-codeplex.aspx</link><pubDate>Thu, 28 Jun 2007 01:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3571246</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/3571246.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=3571246</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=3571246</wfw:comment><description>My BizTalk Decompiler only works with Reflector 4. The updated version for Reflector 5 has been available for a while on CodePlex: http://www.codeplex.com/reflectoraddins...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2007/06/27/biztalk-decompiler-for-reflector-5-on-codeplex.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3571246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/Code/default.aspx">Code</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>Date/Time tracked with BAM must be expressed in Universal Coordinated Time (UTC)</title><link>http://blogs.msdn.com/gzunino/archive/2006/07/18/670317.aspx</link><pubDate>Wed, 19 Jul 2006 02:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:670317</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/670317.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=670317</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=670317</wfw:comment><description>All date/time tracked by BAM must be expressed in UTC. BAM depends on this to provide accurate durations, among many other things. This is clearly explained here . It was also the case for BizTalk 2004 even if the documentation gave subtle hints instead...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/07/18/670317.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=670317" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BAM Query Service: What is it and how can I use it?</title><link>http://blogs.msdn.com/gzunino/archive/2006/05/31/bam-query-service-what-is-it-and-how-can-i-use-it.aspx</link><pubDate>Thu, 01 Jun 2006 00:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:612294</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/612294.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=612294</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=612294</wfw:comment><description>If you have installed BAM (BizTalk Server 2004 or BizTalk Server 2006), you may have noticed that a web service called the "BAM Query Service" got installed. As its name hints, this web service allows the BAM Portal to retrieve BAM instance data without...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/05/31/bam-query-service-what-is-it-and-how-can-i-use-it.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=612294" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BizTalk Server Team Product Management has a Blog!</title><link>http://blogs.msdn.com/gzunino/archive/2006/03/21/557290.aspx</link><pubDate>Wed, 22 Mar 2006 01:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:557290</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/557290.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=557290</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=557290</wfw:comment><description>Visit it here . Kris, Steve, Michael and Mark share product updates, links to training materials and even employment opportunities ! I subscribed to their RSS feed....(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/03/21/557290.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=557290" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BizTalk BAM Portal 2006: Activity Search</title><link>http://blogs.msdn.com/gzunino/archive/2005/06/15/429609.aspx</link><pubDate>Thu, 16 Jun 2005 06:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:429609</guid><dc:creator>gzunino</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/429609.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=429609</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=429609</wfw:comment><description>&lt;P&gt;In a previous &lt;a href="http://blogs.msdn.com/gzunino/archive/2005/06/14/428808.aspx"&gt;&lt;STRONG&gt;post&lt;/STRONG&gt;&lt;/A&gt;, I described the home page of the new BAM Portal. Today, let's take a look at the Instance Search feature. The instance search allows you to search BAM data&amp;nbsp;for a particular activity instance:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_SearchEmpty.jpg"&gt;&lt;IMG alt="BAM Portal Activity Search" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_SearchEmpty.jpg" width=700 align=baseline border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;You can add / remove clauses using the "Add" / "Remove" buttons. You can also build a query and save it locally as an XML file&amp;nbsp;for future use. Opening a query is done by clicking the "Open" button. Let take the Search for a test drive, shall we?&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_SearchResults.jpg"&gt;&lt;IMG alt="BAM Portal Search with results" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_SearchResults.jpg" width=700 align=baseline border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;After selecting the business data you would like to see in the column chooser, I am looking for all purchase orders with an amount of $500. There is only one purchase order matching in my system. I can see the details of this activity by clickin on the row of interest:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_Details.jpg"&gt;&lt;IMG alt="BAM Portal Activity Details" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_Details.jpg" width=700 align=baseline border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;Users can see all business data associated with this activity instance. Milestones appear sorted from the oldest one to the newest one. Any related document or related activity would appear in their respective sections.&lt;/P&gt;
&lt;P align=left&gt;Finally, the "Technical Assistance" can be used to open a technical assistance ticket. The subject / description entered below will be posted to the event log of the server, along with references to engine artifacts (messages / orchestrations) related to this activity.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_TechAssist.jpg"&gt;&lt;IMG alt="BAM Portal Technical Assistance" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_TechAssist.jpg" align=baseline border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;Tomorow, I'll show how one can view aggregated data and create alerts when specific condition happen.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=429609" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>BizTalk Server 2006: What is new with Business Activity Monitoring?</title><link>http://blogs.msdn.com/gzunino/archive/2005/06/14/428808.aspx</link><pubDate>Tue, 14 Jun 2005 10:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:428808</guid><dc:creator>gzunino</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/428808.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=428808</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=428808</wfw:comment><description>&lt;P&gt;You probably&amp;nbsp;already read &lt;A href="https://blogs.msdn.com/scottwoo/archive/2005/05/24/421443.aspx"&gt;&lt;STRONG&gt;Scott's document on what is new in Business Activity Monitoring 2006&lt;/STRONG&gt;&lt;/A&gt;.Today, I'll shed some light on the brand new "out of the box" portal. All information are based on the CTP build you might have picked up at TechEd 2005. Keep in mind that the BAM Portal may (and probably will) change before its final version is released.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_Main.jpg"&gt;&lt;IMG title="BAM Portal Home Page (Click on picture to enlarge)" height=500 alt="BAM Portal Home Page" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_Main.jpg" align=baseline border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=left&gt;There are three main zones:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;the header. This is the location users can customize for branding purposes,&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;the navigation bar (on the left on a light blue background) which displays all views and activities. This is the entry point to most features of the portal,&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;the content where users will interact with data. The main page displays a quick summary of importan BAM concepts.&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;H3 align=left&gt;The header:&lt;/H3&gt;
&lt;P align=left&gt;The header displays branding information (which can be customized for your company), &amp;nbsp;the&amp;nbsp;contextual&amp;nbsp;help link and the current location. On the screenshot below, I am on the Home page. You can always come back to the home page by clicking on the "Home" icon at the left of the header.&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG alt="BAM Portal Header" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_Header.jpg" width=700 align=baseline border=0&gt;&lt;/P&gt;
&lt;H3 align=left&gt;The navigation bar:&lt;/H3&gt;
&lt;P align=left&gt;The navigation bar displays all views / activities which can be accessed by the current user. On the picture below, I have access to one view (SalesManagerView) under which there is currently one activity ("PurchaseOrder").&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG alt="Navigation Bar" src="http://frenchgilles.members.winisp.net/blog/BAMPortal/BAMPortal_NavBar.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=left&gt;I can search for instances of activity&amp;nbsp;"PurchaseOrder" by clicking on&amp;nbsp;"PurchaseOrder" under "Activity Search". I can view aggregated data by clicking on one of the entries under "Aggregations". Finally, I can manage alerts by clicking on "PurchaseOrder" under the "Alert Manager" node. The navigation bar is the main entry point to most BAM Portal features. It will always be displayed on the left of the window.&lt;/P&gt;
&lt;P align=left&gt;Join me tomorow as I explore the Activity Search, Aggregations and the Alert Manager.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=428808" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>Get ready for TechEd 2005 in Orlando!</title><link>http://blogs.msdn.com/gzunino/archive/2005/06/04/425222.aspx</link><pubDate>Sat, 04 Jun 2005 22:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:425222</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/425222.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=425222</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=425222</wfw:comment><description>&lt;P&gt;Make sure you &lt;a href="https://blogs.msdn.com:443/scottwoo/archive/2005/06/02/424428.aspx"&gt;&lt;STRONG&gt;pick up a copy of BizTalk Server 2006 CTP (Community Technology Preview)&lt;/STRONG&gt;&lt;/A&gt;. Starting next week, I will start a serie of deep dive posts on some of the new BAM (Business Activity Monitoring) features ... Staty tuned!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=425222" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>Download BizTalk 2004 Service Pack 1 today!</title><link>http://blogs.msdn.com/gzunino/archive/2005/01/26/361167.aspx</link><pubDate>Thu, 27 Jan 2005 02:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:361167</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/361167.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=361167</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=361167</wfw:comment><description>&lt;P&gt;BizTalk Server 2004 Service Pack 1 was released today. You can download it at &lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=f4a5ab9e-d599-4cc8-abdf-ae6ae68bac3d"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=f4a5ab9e-d599-4cc8-abdf-ae6ae68bac3d&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=361167" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>Is BizTalk supported when running under Virtual PC / Virtual Server?</title><link>http://blogs.msdn.com/gzunino/archive/2004/09/28/235525.aspx</link><pubDate>Wed, 29 Sep 2004 00:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:235525</guid><dc:creator>gzunino</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/235525.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=235525</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=235525</wfw:comment><description>&lt;P&gt;Since Virtual Server has been released, I got asked the question several times so I figured I'd put the answer here where everybody can find it.&amp;nbsp;&lt;STRONG&gt;&lt;A href="http://support.microsoft.com/?id=842301"&gt;Knowledge Base Article 842301&lt;/A&gt;&lt;/STRONG&gt; says something like:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Current released versions of BizTalk (2000, 2002 ,2004) in any flavor (Enterprise,&amp;nbsp;Developer ...) are "best effort support" on virtual machines (Virtual PC and Virtual Server). Any case opened with Microsoft Support will be supported on a best effort basis and you may be asked to reproduce the problem on physical hardware during the course of troubleshooting the issue.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Not supported does not mean that it will not run: it may very well run fine or you may run into subtle issues. Not long ago a Microsoft Technology Specialist attempted to run BizTalk on a three weeks development project. According to him, this is not worth wasting the effort again. They ran into issues and none of them reproduced on real hardware. I am sure we can find individuals who have been running BizTalk on Virtual PC / Virtual Server&amp;nbsp;without any problem so far. It probably depends on what you are doing.&lt;/P&gt;
&lt;P&gt;If you feel lucky and want to try it out by yourself, this &lt;STRONG&gt;&lt;A href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;threadm=OkmKY%23ZGEHA.3984%40TK2MSFTNGP10.phx.gbl&amp;rnum=3&amp;prev=/groups%3Fq%3Dbiztalk%2Bon%2Bvirtual%2Bpc%26hl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3DOkmKY%2523ZGEHA.3984%2540TK2MSFTNGP10.phx.gbl%26rnum%3D3"&gt;thread&lt;/A&gt;&lt;/STRONG&gt; (chosen among many others) discusses some tips that might help you. While running&amp;nbsp;a BizTalk server on a virtual machine for development purposes&amp;nbsp;might be fine, I would definitely advise against running a production server under a virtual machine.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=235525" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>[KB838454] Access tracked messages in the BizTalk 2004 message box</title><link>http://blogs.msdn.com/gzunino/archive/2004/09/28/235299.aspx</link><pubDate>Tue, 28 Sep 2004 17:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:235299</guid><dc:creator>gzunino</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/235299.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=235299</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=235299</wfw:comment><description>&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;838454"&gt;Knowledge Base Article 838454&lt;/A&gt;&lt;/STRONG&gt; describes the new &lt;FONT face="Courier New"&gt;Microsoft.BizTalk.MessageBoxOM.MessageArchive&lt;/FONT&gt; object that was added to &lt;FONT face="Courier New"&gt;Microsoft.BizTalk.MessageBoxOM.dll&lt;/FONT&gt;. Currently, the package is only available through Microsoft Support.&lt;/P&gt;
&lt;P&gt;There are a few things that this KB Article does not describe: remember that the &lt;FONT face="Courier New"&gt;Microsoft.BizTalk.MessageBoxOM.dll&lt;/FONT&gt; file is in the GAC. Currently, Visual Studio.NET 2003 does not allow you to add references to components in the GAC. To get past this, you can choose one alternative between these two solutions:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1 - Extract the dll from the GAC to a place where you can add reference to it (perhaps C:\&amp;lt;yourprojectdirectory&amp;gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In a DOS prompt, run the following command:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;copy %systemroot%\assembly\GAC\Microsoft.BizTalk.MessageBoxOM\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.MessageBoxOM.dll &amp;lt;destination_path&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Where &amp;lt;destination_path&amp;gt; has been replaced by the path to your BizTalk project's directory (for instance C:\MyProject)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2 - Manually edit the Visual Studio Project file (.csproj, .btsproj, .etc)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To add a reference to this assembly you must edit the project file (.csproj, .btproj, .etc) in a text editor. The following code snippet shows the code that must be added to the reference element of the project file to reference the assembly:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;Reference&lt;BR&gt;&amp;nbsp;&amp;nbsp; Name = "Microsoft.BizTalk.MessageBoxOM"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AssemblyName = "Microsoft.BizTalk.MessageBoxOM"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HintPath = "&amp;lt;SystemRoot&amp;gt;\assembly\GAC\Microsoft.BizTalk.MessageBoxOM\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.MessageBoxOM.dll"&lt;BR&gt;/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=235299" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>How do I work around "Empty choice is unsatisfiable if minOccurs not equal to 0. An error occured at file://[some path to XSD]"?</title><link>http://blogs.msdn.com/gzunino/archive/2004/09/24/234083.aspx</link><pubDate>Fri, 24 Sep 2004 22:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:234083</guid><dc:creator>gzunino</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/234083.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=234083</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=234083</wfw:comment><description>&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;frame=right&amp;th=3f6271d93bd4923c&amp;seekm=u3L7sIHWEHA.3788%40cpmsftngxa10.phx.gbl#s"&gt;You might have received this error message&lt;/A&gt;&lt;/STRONG&gt; if you followed these steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Install BizTalk 2004 on a clean machine with Visual Studio .NET 2003,&lt;/LI&gt;
&lt;LI&gt;Start Visual Studio and Create a new C# project (Windows Application for instance),&lt;/LI&gt;
&lt;LI&gt;Save the solution/Project,&lt;/LI&gt;
&lt;LI&gt;Right click on the project name in the solution explorer and select "Add-&amp;gt; New Item ...",&lt;/LI&gt;
&lt;LI&gt;Click "Data Set" and press "OK",&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;You see the following error message (the path under the white box is the path to the XSD that has been created when you inserted the DataSet):&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://frenchgilles.members.winisp.net/blog/DataSetError.JPG"&gt;&lt;/CENTER&gt;
&lt;CENTER&gt;&amp;nbsp;&lt;/CENTER&gt;
&lt;P&gt;When you install BizTalk, there is a component called "BizTalk developer tools". This component contains all the logic to integrate with Visual Studio .NET 2003: pipeline designer, BizTalk Explorer and among many other things, a schema editor. &lt;/P&gt;
&lt;P&gt;The error you are seeing is because the BizTalk Editor is trying to edit a DataSet schema and got confused. To workaround this, you have to ensure that DataSet schemas are opened with the Visual Studio Schema Editor and not the BizTalk Schema Editor. Here are two different&amp;nbsp;workarounds:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Bypass the BizTalk Schema Editor &amp;nbsp;when editing the schema (works around the problem once)&lt;/LI&gt;
&lt;LI&gt;Reset the default editor to the Visual Studio Schema Editor instead of the BizTalk Schema editor (puts the Visual Studio Schema Editor back as the default XSD editor)&lt;/LI&gt;&lt;/OL&gt;&lt;STRONG&gt;Bypass the BizTalk Schema Editor when editing the DataSet:&lt;/STRONG&gt; 
&lt;OL&gt;
&lt;LI&gt;Open the solution in VS.NET 2003&lt;/LI&gt;
&lt;LI&gt;Insert the DataSet as explained above (steps 4 and 5). You see the error, but you also see that the DataSet item was created and added to the solution explorer&lt;/LI&gt;
&lt;LI&gt;Click "OK" to close the error box&lt;/LI&gt;
&lt;LI&gt;In the solution explorer, locate the schema and right click on it&lt;/LI&gt;
&lt;LI&gt;Select "Open With ..."&lt;/LI&gt;
&lt;LI&gt;In the dialog box, select "XML Schema editor" and click "Open"&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;STRONG&gt;Set the Visual Studio Schema Editor back to default editor:&lt;/STRONG&gt; 
&lt;OL&gt;
&lt;LI&gt;Follow the steps 1 to 5 above&lt;/LI&gt;
&lt;LI&gt;In the "Select XML Schema Editor" dialog box, select "XML Schema Editor" and click "Set as default".&lt;/LI&gt;
&lt;LI&gt;Press OK to open the DataSet&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ravi, I hope this page helped you in case &lt;STRONG&gt;&lt;A href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;frame=right&amp;th=3f6271d93bd4923c&amp;seekm=u3L7sIHWEHA.3788%40cpmsftngxa10.phx.gbl#s"&gt;you missed&lt;/A&gt;&lt;/STRONG&gt; my &lt;STRONG&gt;&lt;A href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;frame=right&amp;th=7d5e8dc960ed05f7&amp;seekm=94E5D640-7194-442C-87A7-5D2DFD9EB61D%40microsoft.com#s"&gt;answer in another group&lt;/A&gt;&lt;/STRONG&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=234083" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>Why does BizTalk display "Status unavailable" for Isolated Hosts?</title><link>http://blogs.msdn.com/gzunino/archive/2004/09/23/233445.aspx</link><pubDate>Thu, 23 Sep 2004 16:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:233445</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/233445.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=233445</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=233445</wfw:comment><description>&lt;P&gt;Yet another frequently asked question. When using the BizTalk 2004 Administration Console, isolated hosts always report "Status unavailable" (see below).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://frenchgilles.members.winisp.net/blog/StatusUnavail.JPG"&gt;&lt;/CENTER&gt;
&lt;CENTER&gt;&amp;nbsp;&lt;/CENTER&gt;
&lt;DIV align=left&gt;BizTalk Server 2004 offers two kind of hosts: In-Process Hosts and Isolated Hosts. In-Process Hosts run in the same process as BizTalk and can be used to run orchestrations, run any send adapter and run the MSMQ or FILE receive adapters. Isolated Hosts can only run HTTP/HTTPS/SOAP receive adapters. From a pragmatic point of view, an Isolated Host is essentially an ISAPI extension running under the control of IIS. In BizTalk 2004, this ISAPI is called &lt;STRONG&gt;BTSHTTPReceive.dll&lt;/STRONG&gt;. The documentation page&amp;nbsp;"&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/operations/htm/ebiz_ops_hosts_fxzx.asp"&gt;&lt;STRONG&gt;About Hosts&lt;/STRONG&gt;&lt;/A&gt;" explains:&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;EM&gt;Isolated hosts primarily host adapters that must run outside of the normal BizTalk Server runtime process. For example, you use isolated hosts to host adapters for external processes such as ISAPI extensions and ASP.NET.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;[...]&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The status of an isolated host is always &lt;B&gt;Status Unavailable&lt;/B&gt;. BizTalk Server does not access the status information for external processes. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV align=left&gt;So it is absolutely normal for an isolated host to report "Status unavailable". It should not happen for an in-process host.&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=233445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>Format of BizTalk 2004 assemblies: Pipelines</title><link>http://blogs.msdn.com/gzunino/archive/2004/09/22/232886.aspx</link><pubDate>Wed, 22 Sep 2004 16:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232886</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/232886.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=232886</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=232886</wfw:comment><description>&lt;P&gt;Today, we continue our deep dive&amp;nbsp;into&amp;nbsp;the undocumented and unsupported bowels of the BizTalk artifacts compiler and examine how pipelines get compiled to .NET assemblies. &lt;A href="http://msdn.microsoft.com/library/en-us/introduction/htm/ebiz_intro_story_fqna.asp?frame=true"&gt;&lt;STRONG&gt;Pipelines&lt;/STRONG&gt;&lt;/A&gt; allow to adjust the format of inbound messages to something that is suitable for processing.&amp;nbsp;There are two kind of pipelines: Send Pipelines or Receive Pipelines.&amp;nbsp;The following picture shows a&amp;nbsp;composite picture with a receive pipeline (left) and a send pipeline (right) being edited in Visual Studio. &lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://frenchgilles.members.winisp.net/blog/PipelineFormat/Pipelines.JPG"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is time to dive a little deeper into the generated class.&amp;nbsp;Compiling any Send or Receive Pipeline and loading it into&amp;nbsp;the excellent &lt;STRONG&gt;&lt;A href="http://www.aisto.com/roeder/dotnet"&gt;Lutz Roeder's .NET Reflector&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;shows the following:&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG src="http://frenchgilles.members.winisp.net/blog/PipelineFormat/PipelineReflector.JPG"&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We already know that when a BizTalk project is compiled, &lt;A href="http://weblogs.asp.net/gzunino/archive/2004/09/20/232003.aspx"&gt;&lt;STRONG&gt;Pipelines are compiled to a public sealed class type&amp;nbsp;into a&amp;nbsp;.NET assembly&lt;/STRONG&gt;&lt;/A&gt;. The class inherits from &lt;FONT face="Courier New"&gt;Microsoft.XLANGs.BaseTypes.PipelineBase&lt;/FONT&gt; (contained in &lt;FONT face="Courier New"&gt;Microsoft.XLANGs.BaseTypes.dll&lt;/FONT&gt;, available in &lt;FONT face="Courier New"&gt;&amp;lt;BTS Installation Directory&amp;gt;). &lt;/FONT&gt;This class is &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/sdk/htm/ebiz_sdk_undocumented_syni.asp?frame=true"&gt;not supported as explained by this page&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;(look at the bottom of the page). To compile a Pipeline, BizTalk generates and compiles a class close to the following C# class:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;namespace&lt;/FONT&gt; &lt;STRONG&gt;&lt;U&gt;&amp;lt;projectName&amp;gt;&lt;/U&gt;&lt;/STRONG&gt; {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;sealed&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;class&lt;/FONT&gt; &lt;U&gt;&lt;STRONG&gt;&amp;lt;nameOfPipelineFile&amp;gt;&lt;/STRONG&gt;&lt;/U&gt; : Microsoft.XLANGs.BaseTypes.PipelineBase {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;nameOfPipelineFile&amp;gt;() { }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;override&lt;/FONT&gt; Guid&amp;nbsp;&amp;nbsp; VersionDependantGuid&amp;nbsp;&amp;nbsp; { get { &lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; Guid(&lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"&lt;U&gt;&lt;STRONG&gt;&amp;lt;someGuid&amp;gt;&lt;/STRONG&gt;&lt;/U&gt;"&lt;/FONT&gt;); }&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;override&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt; XmlContent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { get { &lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; &lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"&lt;STRONG&gt;&lt;U&gt;&amp;lt;contentOfBTPFile&amp;gt;&lt;/U&gt;&lt;/STRONG&gt;"&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // --------------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt;// Private const properties not shown go here&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // --------------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;To simplify, I have omitted the private constant members of the class. All the bold underlined words surrounded by angle brackets are placeholders that have to be replaced by an actual string adequate for the pipeline being compiled. Let look at the properties a little more closely:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;VersionDependentGuid&lt;/STRONG&gt;: Guid of the Pipeline, dependent of the version of the Pipeline.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;XmlContent&lt;/STRONG&gt;: The actual Pipeline definition, as an XML string. This is the content of the .btp file that was produced by the pipeline editor.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The base class &lt;FONT face="Courier New"&gt;Microsoft.XLANGs.BaseTypes.PipelineBase&lt;/FONT&gt; is abstract&amp;nbsp;and contains only&amp;nbsp;the properties outlined above. Alert readers have probably already noticed that the property "XmlContent" appears also on &lt;STRONG&gt;&lt;A href="http://weblogs.asp.net/gzunino/archive/2004/09/21/232429.aspx"&gt;Maps as shown in my previous post&lt;/A&gt;&lt;/STRONG&gt;. This is not a coincidence. It is used by the &lt;A href="http://weblogs.asp.net/gzunino/archive/2004/06/13/154808.aspx"&gt;&lt;STRONG&gt;BizTalk assembly viewer&lt;/STRONG&gt;&lt;/A&gt; and other tools to get a representation of the artifact in XML.&lt;/P&gt;
&lt;P&gt;Remember that this post contains mostly undocumented, unsupported information. This content is provided "AS IS" and&amp;nbsp;for entertainment purpose only. Further versions of BizTalk may change the ways things&amp;nbsp;get compiled and relying on low&amp;nbsp;level details like the ones outlined before will cause your application to break.&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=232886" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>How do I reuse BizTalk 2004 maps outside of BizTalk?</title><link>http://blogs.msdn.com/gzunino/archive/2004/09/21/232629.aspx</link><pubDate>Wed, 22 Sep 2004 01:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232629</guid><dc:creator>gzunino</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/232629.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=232629</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=232629</wfw:comment><description>&lt;P&gt;Recently, I shed some light on &lt;STRONG&gt;&lt;A href="http://weblogs.asp.net/gzunino/archive/2004/09/21/232429.aspx"&gt;how Maps are compiled to .NET assemblies&lt;/A&gt;&lt;/STRONG&gt;. Perhaps one of the most asked question on microsoft.public.biztalk.* is "&lt;A href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;frame=right&amp;th=fa36974001223cdb&amp;seekm=270F56F1-D1EF-4FCA-BF9A-233B79CAE4B3%40microsoft.com#s"&gt;&lt;STRONG&gt;Calling a map from C# or VB.NET?&lt;/STRONG&gt;&lt;/A&gt;". This post attempts to answer that question and clarifies a few things.&lt;/P&gt;
&lt;P&gt;It is possible to run a map produced by the BizTalk 2004 mapper outside of BizTalk and it is even possible; under certain conditions; to run the map on a machine that does not have BizTalk installed. The steps required for using a map outside of BizTalk are outlined below:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Extract the XSL document produced by the mapper,&lt;/LI&gt;
&lt;LI&gt;If the map uses &lt;A href="http://msdn.microsoft.com/library/en-us/sdk/htm/ebiz_prog_map_djtt.asp?frame=true"&gt;&lt;STRONG&gt;functoids&lt;/STRONG&gt;&lt;/A&gt; (out of the box or custom functoids), you will need to extract the Xsl Transformation arguments,&lt;/LI&gt;
&lt;LI&gt;Create a .NET &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemxmlxslxsltransformclasstopic.asp?frame=true"&gt;System.Xml.Xsl.XslTransfom()&lt;/A&gt;&lt;/STRONG&gt; object,&lt;/LI&gt;
&lt;LI&gt;Create a .NET &lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemxmlxslxsltargumentlistclasstopic.asp?frame=true"&gt;&lt;STRONG&gt;System.Xml.Xsl.XsltArgumentList()&lt;/STRONG&gt;&lt;/A&gt; if there were any functoids in the map and instantiate appropriate objects,&lt;/LI&gt;
&lt;LI&gt;Call &lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemxmlxslxsltransformclasstransformtopic.asp?frame=true"&gt;&lt;STRONG&gt;Transform()&lt;/STRONG&gt;&lt;/A&gt; on the XSL and optionally, the XsltArgumentList.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;In the list of steps above&amp;nbsp;3, parts of 4 and 5 have nothing to do with BizTalk: these are just plain .NET programming. Creating the XsltArgumentList requires us to understand how the mapper saves functoids.&lt;/P&gt;
&lt;P&gt;Extracting the XSL and the extension objects (if any) can be achieved by at least three different methods:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;If you have the map file (.btm) and can open it in Visual Studio 2003, you can right click on the map file in the solution explorer and select "Validate Map". The output window will give you the path(s) to the XSL and the extension Object XML. The links can be shift-clicked to retrieve the files,&lt;/LI&gt;
&lt;LI&gt;If you only have the compiled assembly, you can use the excellent Lutz Roeder's .NET Reflector to &lt;STRONG&gt;&lt;A href="http://weblogs.asp.net/gzunino/archive/2004/09/21/232429.aspx"&gt;extract the required information as strings&lt;/A&gt;&lt;/STRONG&gt;,&lt;/LI&gt;
&lt;LI&gt;If you&amp;nbsp;only&amp;nbsp;have the compiled assembly, you can write some code that loads the assembly, creates an instance of the&amp;nbsp;map object and calls the appropriate members.&amp;nbsp;See &lt;STRONG&gt;&lt;A href="http://weblogs.asp.net/gzunino/archive/2004/09/21/232429.aspx"&gt;the format of maps assemblies&lt;/A&gt;&lt;/STRONG&gt;.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;The only speed bump is the format of the Extension Object XML document. I have extracted the extension associated with the map &lt;FONT face="Courier New"&gt;Scriptor_CallExternalAssembly&lt;/FONT&gt; from the "&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/sdk/htm/ebiz_sdk_samples_xmltools_eprq.asp?frame=true"&gt;ExtendingMapper&lt;/A&gt;&lt;/STRONG&gt;" SDK sample and formatted it:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;ExtensionObjects&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ExtensionObject Namespace="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/BizTalk/2003/ScriptNS0"&gt;&lt;FONT face="Courier New"&gt;http://schemas.microsoft.com/BizTalk/2003/ScriptNS0&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New"&gt;"&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AssemblyName="Microsoft.Samples.BizTalk.ExtendingMapper.MapperClassLibrary,&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Version=1.0.0.0, Culture=neutral,&amp;nbsp;PublicKeyToken=f2aaad746c3d94f5"&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ClassName="Microsoft.Samples.BizTalk.ExtendingMapper.MapperHelper" /&amp;gt;&amp;nbsp;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&amp;lt;/ExtensionObjects&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Creating the extension objects is now very simple. For each "ExtensionObject" node, we need to load the assembly, create an instance of the given class and add the object along with its namespace to the XsltArgumentList. Of course, the map will only run if all needed assemblies are available. This is true for custom assemblies as well as out of the box functoids. The code below does exactly this and the full solution can be downloaded &lt;STRONG&gt;&lt;A href="http://frenchgilles.members.winisp.net/blog/Files/MapReuser/MapReuser.zip"&gt;here&lt;/A&gt;&lt;/STRONG&gt;:&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;using&lt;/FONT&gt; System;
&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;using&lt;/FONT&gt; System.Reflection;
&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;using&lt;/FONT&gt; System.Xml;
&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;using&lt;/FONT&gt; System.Xml.Xsl;
&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;using&lt;/FONT&gt; System.IO;
&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;using&lt;/FONT&gt; System.Text;


&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;namespace&lt;/FONT&gt; MapReuser
{
	&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
	&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Transforms XML instances using a BizTalk map.&lt;/FONT&gt;
	&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
	&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;class&lt;/FONT&gt; BizTalkMap
	{
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Caches the XSLT stream.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;private&lt;/FONT&gt; Stream xsltStream;

		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Caches the XSLT Arguments stream.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;private&lt;/FONT&gt; Stream xsltArguments;
		

		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Cache the XslTransform.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;private&lt;/FONT&gt; XslTransform     xslTransform;

		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Caches the XSltArgumentList.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;private&lt;/FONT&gt; XsltArgumentList xslArgumentList;




		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Constructor.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;param name="XsltStream"&amp;gt;Stream of XSLT as XML.&amp;lt;/param&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;param name="XsltArguments"&amp;gt;Stream of Extension Objects as XML.&amp;lt;/param&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; BizTalkMap(Stream XsltStream, Stream XsltArguments)
		{
			xsltStream    = XsltStream;
			xsltArguments = XsltArguments;
		}

		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Transforms the given instance and returns the result as a stream.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;param name="inXml"&amp;gt;Stream of the instance to transform (XML)&amp;lt;/param&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;returns&amp;gt;Stream of the transformed XML.&amp;lt;/returns&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; Stream TransformInstance(Stream inXml)
		{
			XslTransform transform   = Transform;
			XmlDocument  xmlInputDoc = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; XmlDocument();

			&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Make sure we do not destroy the formatting&lt;/FONT&gt;
			xmlInputDoc.Load(inXml);

			&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Output stream&lt;/FONT&gt;
			MemoryStream  outStream = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; MemoryStream();
			XmlTextWriter xmlWriter = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; XmlTextWriter(outStream, System.Text.Encoding.UTF8);

			&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Formatting options&lt;/FONT&gt;
			xmlWriter.Formatting  = Formatting.Indented;
			xmlWriter.Indentation = 2;
			
			&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Perform transformation - We do not specify a resolver&lt;/FONT&gt;
			transform.Transform(xmlInputDoc, TransformArgs, xmlWriter, &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;);

			&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Prepare the output stream&lt;/FONT&gt;
			outStream.Seek(0, SeekOrigin.Begin);

			&lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; outStream;
		}

		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Gets an instance of XslTransform for the given XSL/Extension objects.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;private&lt;/FONT&gt; XslTransform Transform
		{
			get
			{
				&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (xslTransform == &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;)
				{
					&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Create a new transform&lt;/FONT&gt;
					XmlTextReader xsltReader = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; XmlTextReader(xsltStream);
					XslTransform transformTemp = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; XslTransform();
					transformTemp.Load(xsltReader, (XmlResolver) &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;, GetType().Assembly.Evidence);
					
					&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Cache the transform&lt;/FONT&gt;
					xslTransform = transformTemp;
				}
				&lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; xslTransform;
			}
		}

		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// Gets a XsltArgumentList from a BizTalk Extension Object XML.&lt;/FONT&gt;
		&lt;FONT color=silver family="Microsoft Sans Serif"&gt;/// &amp;lt;/summary&amp;gt;&lt;/FONT&gt;
		&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;private&lt;/FONT&gt; XsltArgumentList TransformArgs
		{
			get
			{
				&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (xslArgumentList == &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;)
				{
					XmlDocument      xmlExtension = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; XmlDocument();
					XsltArgumentList xslArgList   = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; XsltArgumentList();

					&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (xsltArguments != &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;)
					{
						&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Load the argument list and create all the needed instances&lt;/FONT&gt;
						xmlExtension.Load(xsltArguments);
						XmlNodeList xmlExtensionNodes = xmlExtension.SelectNodes(&lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"//ExtensionObjects/ExtensionObject"&lt;/FONT&gt;);
						&lt;FONT color=blue family="Microsoft Sans Serif"&gt;foreach&lt;/FONT&gt; (XmlNode extObjNode &lt;FONT color=blue family="Microsoft Sans Serif"&gt;in&lt;/FONT&gt; xmlExtensionNodes)
						{
							XmlAttributeCollection extAttributes = extObjNode.Attributes;

							XmlNode  namespaceNode = extAttributes.GetNamedItem(&lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"Namespace"&lt;/FONT&gt;);
							XmlNode  assemblyNode  = extAttributes.GetNamedItem(&lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"AssemblyName"&lt;/FONT&gt;);
							XmlNode  classNode     = extAttributes.GetNamedItem(&lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"ClassName"&lt;/FONT&gt;);
							Assembly extAssembly   = Assembly.Load(assemblyNode.Value);
							&lt;FONT color=blue family="Microsoft Sans Serif"&gt;object&lt;/FONT&gt;   extObj        = extAssembly.CreateInstance(classNode.Value);
							xslArgList.AddExtensionObject(namespaceNode.Value, extObj);
						}
					}
					&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Cache the list&lt;/FONT&gt;
					xslArgumentList = xslArgList;
				}
				&lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; xslArgumentList;
			}
		}
	}
}&lt;/PRE&gt;&lt;BR&gt;This class can be used as follows:&lt;BR&gt;&lt;BR&gt;&lt;PRE&gt;FileStream fsXslt       = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;;
FileStream fsInput      = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;;
FileStream fsExtensions = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;;
FileStream outStream    = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;;

&lt;FONT color=blue family="Microsoft Sans Serif"&gt;try&lt;/FONT&gt;
{
	&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Transform&lt;/FONT&gt;
	fsXslt         = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; FileStream(xsltPath, FileMode.Open, FileAccess.Read);
	fsInput        = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; FileStream(instancePath, FileMode.Open, FileAccess.Read);
	fsExtensions   = (extensionPath != &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;) &amp;amp;&amp;amp; (extensionPath.Length &amp;gt; 0) ? &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; FileStream(extensionPath, FileMode.Open, FileAccess.Read) : &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;;
	BizTalkMap map = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; BizTalkMap(fsXslt, fsExtensions);

	Stream sOut = map.TransformInstance(fsInput);

	&lt;FONT color=green family="Microsoft Sans Serif"&gt;// Save stream to a file&lt;/FONT&gt;
	&lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt; destPath = Path.Combine(Path.GetDirectoryName(instancePath), Path.GetFileName(instancePath) + &lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;".trans.xml"&lt;/FONT&gt;);
	outStream = &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; FileStream(destPath, FileMode.Create, FileAccess.Write);
	outStream.Write(((MemoryStream) sOut).ToArray(), 0, (&lt;FONT color=darkviolet family="Microsoft Sans Serif"&gt;int&lt;/FONT&gt;) sOut.Length);
}
&lt;FONT color=blue family="Microsoft Sans Serif"&gt;finally&lt;/FONT&gt;
{
	&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (fsXslt       != &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;) fsXslt.Close();
	&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (fsInput      != &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;) fsInput.Close(); 
	&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (fsExtensions != &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;) fsExtensions.Close();
	&lt;FONT color=blue family="Microsoft Sans Serif"&gt;if&lt;/FONT&gt; (outStream    != &lt;FONT color=blue family="Microsoft Sans Serif"&gt;null&lt;/FONT&gt;) outStream.Close(); 
}&lt;/PRE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=232629" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item><item><title>Format of BizTalk 2004 assemblies: Maps    </title><link>http://blogs.msdn.com/gzunino/archive/2004/09/21/232429.aspx</link><pubDate>Tue, 21 Sep 2004 15:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:232429</guid><dc:creator>gzunino</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/232429.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=232429</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=232429</wfw:comment><description>&lt;P&gt;Today, we dive deeply into&amp;nbsp;the undocumented and unsupported bowels of the BizTalk artifacts compiler and examine how maps get compiled to .NET assemblies. The &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/introduction/htm/ebiz_intro_story_jgtg.asp?frame=true"&gt;BizTalk 2004&amp;nbsp;Mapper&lt;/A&gt;&lt;/STRONG&gt; allows to graphically build a transformation between an XML instance of&amp;nbsp;an input schema&amp;nbsp;to another XML instance conforming to an output schema. Today, we explore some undocumented (and therefore not supported) internal parts&amp;nbsp;of BizTalk 2004.&lt;/P&gt;
&lt;P&gt;The BizTalk mapper allows complex transformations between fields. On the map below, &lt;FONT face="Courier New"&gt;Field1&lt;/FONT&gt; in the destination instance is set to &lt;FONT face="Courier New"&gt;Field1 + Field2&lt;/FONT&gt; from the input schema:&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://frenchgilles.members.winisp.net/blog/Mapper/MapExample.JPG"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We already know that when a BizTalk project is compiled, &lt;A href="http://weblogs.asp.net/gzunino/archive/2004/09/20/232003.aspx"&gt;&lt;STRONG&gt;Maps&amp;nbsp;are compiled to a public sealed class type&amp;nbsp;into a&amp;nbsp;.NET assembly&lt;/STRONG&gt;&lt;/A&gt;. The class inherits from &lt;FONT face="Courier New"&gt;Microsoft.XLANGs.BaseTypes.TransformBase&lt;/FONT&gt; (contained in &lt;FONT face="Courier New"&gt;Microsoft.XLANGs.BaseTypes.dll&lt;/FONT&gt;, available in &lt;FONT face="Courier New"&gt;&amp;lt;BTS Installation Directory&amp;gt;). &lt;/FONT&gt;This class is &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/sdk/htm/ebiz_sdk_undocumented_syni.asp?frame=true"&gt;not supported as explained by this page&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;(look at the bottom of the page).&lt;/P&gt;
&lt;P&gt;It is time to dive a little deeper into the generated class.&amp;nbsp;Compiling the &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/library/en-us/sdk/htm/ebiz_sdk_samples_xmltools_eprq.asp?frame=true"&gt;ExtendingMapper BizTalk 2004 SDK sample&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;and loading it into&amp;nbsp;the excellent &lt;STRONG&gt;&lt;A href="http://www.aisto.com/roeder/dotnet"&gt;Lutz Roeder's .NET Reflector&lt;/A&gt;&lt;/STRONG&gt;&amp;nbsp;shows the following:&lt;/P&gt;
&lt;CENTER&gt;&lt;IMG src="http://frenchgilles.members.winisp.net/blog/Mapper/MapInReflector.JPG"&gt;&lt;/CENTER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let's concentrate on one map: &lt;FONT face="Courier New"&gt;CBRSample.CBRInput2CANMap&lt;/FONT&gt;. The class has a default constructor and few properties, mostly strings or array of strings. There are also a few private constant&amp;nbsp;members (the blue entries with a little lock). When BizTalk compiles a map, it essentially creates and compiles a class close to the following C# class:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=lightcoral family="Microsoft Sans Serif"&gt;namespace&lt;/FONT&gt; &lt;STRONG&gt;&lt;U&gt;&amp;lt;projectName&amp;gt;&lt;/U&gt;&lt;/STRONG&gt; {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;&amp;nbsp; public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;sealed&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;class&lt;/FONT&gt; &lt;STRONG&gt;&amp;lt;nameOfMapFile&amp;gt;&lt;/STRONG&gt; : Microsoft.XLANGs.BaseTypes.TransformBase {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/FONT&gt; &lt;STRONG&gt;&lt;U&gt;&amp;lt;nameOfMapFile&amp;gt;&lt;/U&gt;&lt;/STRONG&gt;() { }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;override&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt;[] SourceSchemas {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt;[1] { &lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"&lt;STRONG&gt;&lt;U&gt;&amp;lt;nameOfInputSchema&amp;gt;&lt;/U&gt;&lt;/STRONG&gt;"&lt;/FONT&gt; }; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;override&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt;[] TargetSchemas {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;new&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt;[1] { &lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"&lt;STRONG&gt;&lt;U&gt;&amp;lt;nameOfTargetSchema&amp;gt;&lt;/U&gt;&lt;/STRONG&gt;"&lt;/FONT&gt; }; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;override&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt; XmlContent {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; &lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"&lt;STRONG&gt;&lt;U&gt;&amp;lt;XsltContent&amp;gt;&lt;/U&gt;&lt;/STRONG&gt;"&lt;/FONT&gt;; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;public&lt;/FONT&gt; &lt;FONT color=lightseagreen family="Microsoft Sans Serif"&gt;override&lt;/FONT&gt; &lt;FONT color=blue family="Microsoft Sans Serif"&gt;string&lt;/FONT&gt;[] XsltArgumentListContent {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=green family="Microsoft Sans Serif"&gt;// XsltArgument content. If no argument, returns "&amp;lt;ExtensionObjects /&amp;gt;\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;get { &lt;FONT color=blue family="Microsoft Sans Serif"&gt;return&lt;/FONT&gt; &lt;FONT color=hotpink family="Microsoft Sans Serif"&gt;"&lt;STRONG&gt;&lt;U&gt;&amp;lt;XsltArgumentContent&amp;gt;&lt;/U&gt;&lt;/STRONG&gt;"&lt;/FONT&gt;; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// --------------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#008000&gt;// Private const properties not shown go here&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // --------------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To simplify, I have omitted the private constant members of the class. All the bold underlined words surrounded by angle brackets are placeholders that have to be replaced by an actual string adequate for the map being compiled. Let look at the properties a little more closely:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;SourceSchemas&lt;/STRONG&gt;: The source schema(s) names, as strings.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;TargetSchemas&lt;/STRONG&gt;:&amp;nbsp; The target schema(s) names, as strings.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;XmlContent&lt;/STRONG&gt;: The actual Xslt used to perform the transformation.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;XsltArgumentListContent&lt;/STRONG&gt;: Xstl Argument(s) list, if any. These are the extension objects needed to run maps with complex transformations features like "&lt;A href="http://msdn.microsoft.com/library/en-us/sdk/htm/ebiz_prog_map_djtt.asp?frame=true"&gt;&lt;STRONG&gt;Functoids&lt;/STRONG&gt;&lt;/A&gt;" (small functions that can be used to extend the capabilities of the mapper). They are essentially implemented as extension objects in Xslt.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The base class &lt;FONT face="Courier New"&gt;Microsoft.XLANGs.BaseTypes.TransformBase&lt;/FONT&gt; is abstract&amp;nbsp;and contains all the properties outlined above plus a few more interesting ones:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#20b2aa&gt;public&lt;/FONT&gt; &lt;FONT color=#808000&gt;&lt;STRONG&gt;XslTransform&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;Transform&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { get { /* Implementation omitted */&amp;nbsp;}; }&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#20b2aa&gt;public&lt;/FONT&gt; &lt;FONT color=#808000&gt;&lt;STRONG&gt;XsltArgumentList&lt;/STRONG&gt;&lt;/FONT&gt; TransformArgs { get { /* Implementation omitted */ }; }&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These members are used to get a &lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemxmlxslxsltransformclasstopic.asp?frame=true"&gt;&lt;STRONG&gt;System.Xml.Xsl.XslTansform&lt;/STRONG&gt;&lt;/A&gt; and/or a &lt;A href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemxmlxslxsltargumentlistclasstopic.asp?frame=true"&gt;&lt;STRONG&gt;System.Xml.Xsl.XsltArgumentList&lt;/STRONG&gt;&lt;/A&gt; suitable to execute the map. Armed with this information,&amp;nbsp;one could build a library that executes BizTalk 2004 maps outside of the BizTalk messaging engine. This is a frequently asked question in microsoft.public.biztalk.* newsgroups.&lt;/P&gt;
&lt;P&gt;There are also a few things that may not be immediately obvious if you are looking at the output&amp;nbsp;in Reflector. If the input schema or the output schema is not contained in the same assembly as the map, the compiler will emit a dummy member variable. This variable will have the type of the foreign schema(s). This forces a reference to the schema(s) assembly(ies) to be added to the manifest&amp;nbsp;of the map's assembly. There are also two &lt;FONT face="Courier New"&gt;SchemaReferenceAttribute&lt;/FONT&gt; added to the class to facilitate discovering the input and output schema without creating an instance of the map object.&lt;/P&gt;
&lt;P&gt;Remember that this post contains mostly undocumented, unsupported information. This content is provided "AS IS" and&amp;nbsp;for entertainment purpose only. Further versions of BizTalk may change the ways things&amp;nbsp;get compiled and relying on low&amp;nbsp;level details like the ones outlined before will cause your application to break.&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=232429" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category></item></channel></rss>