<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>BizTalk</title>
        <link>http://geekswithblogs.net/PsudoKnowledgeBase/category/8987.aspx</link>
        <description>BizTalk</description>
        <language>en-CA</language>
        <copyright>Geordie</copyright>
        <managingEditor>Martin.palmer@mjpalmer.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>BizTalk DB Log File Explosion Due to Corrupt Index</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/06/17/biztalk-db-log-file-explosion-due-to-corrupt-index.aspx</link>
            <description>&lt;p&gt;&lt;font face=""&gt;I have just encounted an unusual database problem.  My dev BizTalk server suddenly ran out of space.  Initially I thought it was the transaction logs.  No luck there they were well within normal limits.  I did check the size ot the &lt;br /&gt;
'Microsoft SQL Server' directory.  It was over 8GB.  The volume was traced to the LOG directory.  SQL was pumping out 4 MB of error log every 10 seconds. After fighting with the server to free up some disk space, I checked out the error files.  The parts appear to be:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;  ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump7243.txt              &lt;br /&gt;
  * *******************************************************************************                                &lt;br /&gt;
  *                                                                                                                &lt;br /&gt;
  * BEGIN STACK DUMP:                                                                                              &lt;br /&gt;
  *   06/17/09 15:52:15 spid 54                                                                                    &lt;br /&gt;
  *                                                                                                                &lt;br /&gt;
  * CPerIndexMetaQS::ErrorAbort - Index corruption                                                                 &lt;br /&gt;
  *                                                                                                                &lt;br /&gt;
  * Input Buffer 510 bytes -                                                                                       &lt;br /&gt;
  *             EXECUTE msdb.dbo.sp_sqlagent_log_jobhistory @job_id = 0xBE810                                      &lt;br /&gt;
  *  129F3D1574AA4EB72EE897A6CCC, @step_id = 0, @sql_message_id = 0, @sql_sev                                      &lt;br /&gt;
  *  erity = 0, @run_status = 1, @run_date = 20090617, @run_time = 155201, @r                                      &lt;br /&gt;
  *  un_duration = 3, @operator_id_emailed = 0, @operator_id_netsent = 0, @op                                      &lt;br /&gt;
  *  erator_id_paged = 0, @retries_attempted = 0, @session_id = 65, @message                                       &lt;br /&gt;
  *  = N'The job succeeded.  The Job was invoked by Schedule 4 (Schedule).  T                                      &lt;br /&gt;
  *  he last step to run was step 1 (Purge).'                                                                      &lt;/font&gt;&lt;/p&gt;
&lt;font face=""&gt;
&lt;p&gt;&lt;br /&gt;
And&lt;/p&gt;
&lt;p&gt;  2009-06-17 15:52:14.55 spid56      Error: 8646, Severity: 21, State: 1. &lt;br /&gt;
  2009-06-17 15:52:14.55 spid56      Unable to find index entry in index ID 1, of table &lt;br /&gt;
  117575457, in database 'msdb'. The indicated index is corrupt or there is a &lt;br /&gt;
  problem with the current update plan. Run DBCC CHECKDB or DBCC CHECKTABLE. If &lt;br /&gt;
  the problem persists, contact product support. &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54 Using 'dbghelp.dll' version '4.0.5' &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      **Dump thread - spid = 54, PSS = 0x0DDD32D0, EC = 0x0DDD32D8 &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      ***Stack Dump being sent to C:\Program Files\Microsoft SQL &lt;br /&gt;
  Server\MSSQL.1\MSSQL\LOG\SQLDump7243.txt &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      * ******************************************************************************* &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      * &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      * BEGIN STACK DUMP: &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      *   06/17/09 15:52:15 spid 54 &lt;br /&gt;
  2009-06-17 15:52:15.24 spid54      * 2009-06-17 15:52:15.24 spid54      * CPerIndexMetaQS::ErrorAbort - Index corruption&lt;/p&gt;
&lt;p&gt;Searching for 'CPerIndexMetaQS::ErrorAbort - Index corruption' online led me to a post that suggested running the following SQL script from SQL Server Manager on the local machine.&lt;/p&gt;
&lt;p&gt;  DECLARE  tempcursor&lt;br /&gt;
  CURSOR&lt;br /&gt;
  READ_ONLY&lt;br /&gt;
  FOR &lt;br /&gt;
        select spid From master..sysprocesses&lt;br /&gt;
        where dbid = (select database_id from sys.databases where name = 'msdb')&lt;br /&gt;
  &lt;br /&gt;
  DECLARE @name int&lt;br /&gt;
  OPEN tempcursor&lt;br /&gt;
  &lt;br /&gt;
  FETCH NEXT FROM tempcursor INTO @name&lt;br /&gt;
  WHILE (@@fetch_status &amp;lt;&amp;gt; -1)&lt;br /&gt;
  BEGIN&lt;br /&gt;
        exec('kill ' + @name)&lt;br /&gt;
  &lt;br /&gt;
        FETCH NEXT FROM tempcursor INTO @name&lt;br /&gt;
  END&lt;br /&gt;
  &lt;br /&gt;
  Use msdb&lt;br /&gt;
  Go&lt;br /&gt;
  sp_dboption 'msdb', 'single_user', 'true'&lt;br /&gt;
  GO&lt;br /&gt;
  DBCC CHECKDB('msdb', REPAIR_REBUILD) &lt;br /&gt;
  go&lt;br /&gt;
  sp_dboption 'msdb', 'single_user', 'false'&lt;br /&gt;
  &lt;br /&gt;
  CLOSE tempcursor&lt;br /&gt;
  DEALLOCATE tempcursor&lt;/p&gt;
&lt;p&gt;The script found and repaired the corrupt index, as shown below.&lt;/p&gt;
&lt;p&gt;  DBCC results for 'sysdownloadlist'.&lt;br /&gt;
  There are 0 rows in 0 pages for object "sysdownloadlist".&lt;br /&gt;
&lt;font color="#ff0000"&gt;  DBCC results for 'sysjobhistory'.&lt;br /&gt;
  Repair:  Successfully deleted row in index "dbo.sysjobhistory, nc1" in database "msdb".&lt;br /&gt;
  Msg 8952, Level 16, State 1, Line 1&lt;br /&gt;
  Table error: table 'sysjobhistory' (ID 117575457). Index row in index 'nc1' (ID 2) does not match any data row. Possible extra or invalid keys for:&lt;br /&gt;
          The error has been repaired.&lt;br /&gt;
  Msg 8956, Level 16, State 1, Line 1&lt;br /&gt;
  Index row (1:1141:114) with values (job_id = '89F8A96E-AF2B-4BE9-B5E4-FEF3B8C94EC5' and instance_id = 466459) pointing to the data row identified by (instance_id = 466459).&lt;br /&gt;
&lt;/font&gt;  There are 6640 rows in 459 pages for object "sysjobhistory".&lt;br /&gt;
  CHECKDB found 0 allocation errors and 1 consistency errors in table 'sysjobhistory' (object ID 117575457).&lt;br /&gt;
  CHECKDB fixed 0 allocation errors and 1 consistency errors in table 'sysjobhistory' (object ID 117575457).&lt;/p&gt;
&lt;p&gt;The log file generation has stopped and the server appears to be back to normal.&lt;/p&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132890"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132890" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/132890.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/06/17/biztalk-db-log-file-explosion-due-to-corrupt-index.aspx</guid>
            <pubDate>Wed, 17 Jun 2009 23:24:19 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/132890.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/06/17/biztalk-db-log-file-explosion-due-to-corrupt-index.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/132890.aspx</wfw:commentRss>
        </item>
        <item>
            <title>How to Map the Selection of the First Item in a Collection to the Final Document</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/05/13/how-to-map-the-selection-of-the-first-item-in.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;I recently came across a new mapping problem.  I needed to make sure that the final document only had one address for a paper mill to satisfy the requirement of a standard documentation format (PAPINet).  Usually the product is all made to order but every so often paper may be available from stock that was made in a different mill.  The SAP system providing the information contains information on both mills.  The challenge here was to remove the additional mills and only include the mill data for the first mill.  In this case the mill information is not important as the ID for the paper (TAPI) includes a character that identifies the producing mill.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;My first attempt was to limit the number of occurrences of the Mill element.  BizTalk ignored the limit.&lt;/font&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="402" alt="Tried to limit the number of occurances using the schema.  Unsuccessful" width="523" src="/images/geekswithblogs_net/PsudoKnowledgeBase/Mill Attribute Limit Occurances.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
I then tried to use the 'Data Flattening' functoids with an 'Iteration' functoid.  I set the 'Equal' functoid to receive the value from the 'Iteration' functiod and added a constant value of 1 (BizTalk must use 1 base in it's iterations).  When the 'Iteration' functoid equals 1 it will resolve to true allowing the 'Data Flattening' functoids to only process the first occurrence of the Mill attribute.&lt;/p&gt;
&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #ffff00"&gt;&lt;img height="250" alt="Using the iteration functoid to limit the number of occurances" width="687" src="/images/geekswithblogs_net/PsudoKnowledgeBase/Iteration limiting occuances.JPG" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
The overall solution is a complex mapping from SAP to PAPINet.  It uses a canonical structure to assist in the transformation.  This problem was greatly simplified by using the canonical to canonical mapping (added to allow some complex calculations to be preformed). &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132090"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132090" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/132090.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/05/13/how-to-map-the-selection-of-the-first-item-in.aspx</guid>
            <pubDate>Wed, 13 May 2009 16:04:57 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/132090.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/05/13/how-to-map-the-selection-of-the-first-item-in.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/132090.aspx</wfw:commentRss>
        </item>
        <item>
            <title>How to block the creation of parent nodes when using the data flattening functoid</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/03/12/how-to-block-the-creation-of-parent-nodes-when-using.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;I've had a few BizTalk maps that have caused me to stop and think as to how to get over the problem of suppressing nodes when the child node has no data.  The issue arises if you use Data flattening shape to block the creation of an element. The child node is suppressed but the parent node is still created.  I just found out how to block the parent node from being created so I’m posting it here so I can find it again the next time I need it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;img height="362" alt="Suppressing parent nodes" width="887" src="/images/geekswithblogs_net/PsudoKnowledgeBase/BizTalkSuppressNodeMapping.JPG" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;By connecting the parent nodes to the functoid that provides the condition to the data flattening functoids the parent nodes will be suppressed.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;span id="ctl00_plcHolder_Main_dlistSections_ctl00_lblCategoryHeading"&gt;&lt;a href="http://blogs.digitaldeposit.net/saravana/post/2007/05/18/BizTalk-Map-Suppress-Element-if-Attribute-is-not-required.aspx"&gt;Saravana Kumar&lt;/a&gt;&lt;/span&gt; for posting the answer on his blog.&lt;/p&gt;
&lt;p&gt;Geordie&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130048"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130048" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/130048.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/03/12/how-to-block-the-creation-of-parent-nodes-when-using.aspx</guid>
            <pubDate>Thu, 12 Mar 2009 20:17:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/130048.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/03/12/how-to-block-the-creation-of-parent-nodes-when-using.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/130048.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Installing custom functoids</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/01/21/installing-custom-functoids.aspx</link>
            <description>&lt;p&gt;I just got bit by this one a second time.  So it is time to store the information here to avoid a third occurrence.&lt;/p&gt;
&lt;p&gt;If you get an exception that the functoid was not found.&lt;/p&gt;
&lt;pre&gt;For example:- 'Exception Caught: Functoid not found:
guid({5DE500CC-45BC-454b-A23D-24449899042C})  funcid(6123)'&lt;/pre&gt;
&lt;p&gt;Check that the dll is installed in the mapper extension folder '&lt;font face="Arial"&gt;C:\Program Files\Microsoft BizTalk Server 2006\Developer Tools\Mapper Extensions&lt;/font&gt;' as well as the GAC.&lt;/p&gt;
&lt;p&gt;Geordie&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128875"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128875" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/128875.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/01/21/installing-custom-functoids.aspx</guid>
            <pubDate>Wed, 21 Jan 2009 22:46:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/128875.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/01/21/installing-custom-functoids.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/128875.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Problems receiving a Multi Part Message via a HTTP vs File Adaptor</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/01/13/problems-receiving-a-multi-part-message-via-a-http-vs.aspx</link>
            <description>&lt;p&gt;I recently built a recieve location that used used a File adaptor to test the recieve and Orchestration for a new multipart message.  It all went well until I converted the recieve port to a HTTP adaptor.  At that point my custom component in the recieve pipeline raised a&lt;font size="2"&gt; '&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;method not implemented' error&lt;/font&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face="Arial" size="2"&gt;After several tests I was sure that the error was specific to HTTP adaptor and was not a problem with the installation of the custom component.  One theory that I had was that an aditional method(s) may be required when implementing a custom components in a HTTP recieve pipeline hence the error.  This was proven to be wrong.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face="Arial" size="2"&gt;In fact the issue was due to less methods being implemented in the HTTP adapter API.  In this case I was calling a property setter that was implemented in the File adaptor API but not in the HTTP adaptor API.  Specifically I was calling msg.BodyPart.Data getter.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face="Arial" size="2"&gt;To overcome this problem we used the get OriginalDataStream method to retieve the message stream as shown in the code below.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;        public IBaseMessage Execute(IPipelineContext pc, IBaseMessage inmsg)&lt;br /&gt;
        {&lt;br /&gt;
            //Convert Stream to a string&lt;br /&gt;
            Stream s = null;&lt;br /&gt;
            IBaseMessagePart bodyPart = inmsg.BodyPart;&lt;br /&gt;
            &lt;br /&gt;
            // NOTE inmsg.BodyPart.Data is implemented only as a setter in the http adapter API and a&lt;br /&gt;
            //getter and setter for the file adapter.  Use GetOriginalDataStream to get data instead.&lt;br /&gt;
            if (bodyPart != null)&lt;br /&gt;
                s = bodyPart.GetOriginalDataStream();&lt;/p&gt;
&lt;p&gt;            byte[] bytes = new byte[s.Length];&lt;br /&gt;
            int n = s.Read(bytes, 0, (int)s.Length);&lt;br /&gt;
            string msg = new ASCIIEncoding().GetString(bytes).TrimEnd(null);&lt;br /&gt;
            //Get boundry value from first line of code&lt;br /&gt;
            string boundry = msg.Substring(2, msg.IndexOf("\r\n")-2);&lt;br /&gt;
            //Create new start to message with MIME requirements.&lt;br /&gt;
            msg = "MIME-Version: 1.0\r\nContent-Type: multipart/related; boundary=\"" + boundry + "\"\r\n" + msg;&lt;br /&gt;
            //Convert back to stram and set to Data property&lt;br /&gt;
            inmsg.BodyPart.Data = new MemoryStream(Encoding.UTF8.GetBytes(msg)); ;&lt;/p&gt;
&lt;p&gt;            //reset the position of the stream to zero&lt;br /&gt;
            inmsg.BodyPart.Data.Position = 0;&lt;br /&gt;
            return inmsg;&lt;br /&gt;
        }&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;font face="Arial" size="2"&gt;(Note: to debug the custom code in the HTTP recieve pipeline attach to the w3wp.exe process)&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128633"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128633" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/128633.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/01/13/problems-receiving-a-multi-part-message-via-a-http-vs.aspx</guid>
            <pubDate>Tue, 13 Jan 2009 19:06:01 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/128633.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2009/01/13/problems-receiving-a-multi-part-message-via-a-http-vs.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/128633.aspx</wfw:commentRss>
        </item>
        <item>
            <title>XTransformationFailureException: encountered while executing the transform…</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/12/02/xtransformationfailureexception-encountered-while-executing-the-transform.aspx</link>
            <description>&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;I recently encounter this error. It took a little bit of head scratching to work out why we were getting the error. The possible causes were quite high as we are using dynamically assigned maps (see code below).&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;strong&gt;&lt;u&gt;Message Assignment Shape Code&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;table cellspacing="1" cellpadding="1" width="80%" align="left" summary="" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;           &lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;SapOrderMapType = System.Type.GetType(SapOrdersMapName);&lt;/font&gt;
            &lt;p&gt;//transform(MyOutputMsg) = MyMapType(MyInputMsg);&lt;/p&gt;
            &lt;p&gt;transform (SapOrder) = SapOrderMapType(CanonicalPO);&lt;/p&gt;
            &lt;p&gt;System.Diagnostics.Trace.WriteLineIf(TraceEnabled, "Transform to SAP schema complete.", TraceCategory);&lt;/p&gt;
            &lt;p&gt;SapOrder(FILE.ReceivedFileName) = "PO_" + CustomerNumber + "_" + PONumber + "_";&lt;/p&gt;
            &lt;p&gt;System.Diagnostics.Trace.WriteLineIf(TraceEnabled, "SAP Order Msg Created", TraceCategory);&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The error information identifies the transform as the problem but not what the problem is. The inner exception is no additional help- ‘Value cannot be null. Parameter name: extension Exception type: ArgumentNullException’.&lt;/p&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;The problem was eventually tracked down to the custom functoids. In the last map a new functoid was added to convert standard BizTalk dates into standard SAP dates. When the project was deployed the custom functoid dll was not updated.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Interestingly this error might occur intermittently as the functiod may not be needed every time the map is used.&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127545"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127545" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/127545.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/12/02/xtransformationfailureexception-encountered-while-executing-the-transform.aspx</guid>
            <pubDate>Wed, 03 Dec 2008 04:00:49 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/127545.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/12/02/xtransformationfailureexception-encountered-while-executing-the-transform.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/127545.aspx</wfw:commentRss>
        </item>
        <item>
            <title>BizTalk: Receiving Multi Part Messages</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/27/biztalk-receiving-multi-part-messages.aspx</link>
            <description>&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;I have been working on a BizTalk project for a while now and after a bumpy start all has been going well. The current message that we are dealing with is the receipt and processing of a Purchase Order. The processing and mapping of the purchase order to the SAP orders schema went well and all I need to do was to receive the document from the customer. After a bit of a delay in getting an accurate sample message, I set to work on creating a process for receiving a PO from a Ponton server. On examining the sample message I found I was going to need to deal with receiving a Multi Part message.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;So I looked at the SDK and searched online but found very little guidance. The samples and discussion where mainly about receiving messages from the POP3 adapter. In our scenario the message will be received by HTTP then dropped to a file. It will then be archived and processed.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;How difficult can it be! 4 days latter I can answer the question. It is not easy if you have not dealt with this type of message before. So here is my guidance on this issue.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;First I have created a sample project (the files 'BizTalk - Receiving.zip' can be downloaded from &lt;a href="http://cid-96aebf00cffa01bd.skydrive.live.com/browse.aspx/.Public/Blog%20Posts"&gt;http://&lt;font face=""&gt;cid-96aebf00cffa01bd.skydrive.live.com/browse.aspx/.Public/Blog%20Posts&lt;/font&gt;) . The code, schemas, sample message, and binding file are all included. This should give you a good starting point to work out what you need to do for your project.&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt"&gt;&lt;span&gt;1.&lt;span style="FONT: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;Sample messages. As mentioned the samples that I found were email messages. I was not sure if these samples were relevant to my project. With respect to the message it appears that BizTalk cares about the MIME 1.0, boundary and description declarations. As it happens the message I was receiving was missing all these parts. Also check out this post from Doug - &lt;a href="http://www.tech-archive.net/Archive/BizTalk/microsoft.public.biztalk.general/2006-07/msg00134.html"&gt;http://www.tech-archive.net/Archive/BizTalk/microsoft.public.biztalk.general/2006-07/msg00134.html&lt;/a&gt;. Unfortunately the final solution was not posted but it helped me get closer to a solution.&lt;/div&gt;
&lt;div style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt"&gt;&lt;span&gt;2.&lt;span style="FONT: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;You will need to make a Multi Part message in your orchestration. This is well covered in blogs and documentation. It is also straight forward. But here is the kicker. When are receiving multi part messages, the order you create the message parts matters!! &lt;a href="http://www.stottcreations.com/blog/inner-exception-multi-part-message-has-body-part-bodysegments-expected-body-part-mshsegment/"&gt;Eric&lt;/a&gt; did a good job of documenting this ‘undocumented’ feature.  &lt;br /&gt;
To summarize Eric’s post: The order of the message parts in displayed in VS is alphabetical, but creation order matters and may be different from what is displayed in VS. The message parts need to be created in the order they appear after the message has been split into its parts by the pipeline. The only way to determine the order of creation is to view the orchestration file in a text editor. You can find the message part order by examining the failed message in BizTalk Manager. Drill into the error, go the message tab and double click the message. The message parts should be listed on the left hand side.&lt;br /&gt;
If you are getting an &lt;a href="http://www.stottcreations.com/blog/inner-exception-multi-part-message-has-body-part-bodysegments-expected-body-part-mshsegment/"&gt;&lt;span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"&gt;Inner exception: ‘Wrong BodyPartException …’ and ‘Multi-part message has body part ‘XXXXX’, expected body part ‘YYYYYY’&lt;/span&gt;&lt;/a&gt;, and everything appears to be correct, check this as a possible cause. I lost over a day trying to resolve this issue!&lt;br /&gt;
The sample application contains 2 Multi Part messages only the second one works even though they look the same in VS.&lt;/div&gt;
&lt;div style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt"&gt;&lt;span&gt;3.&lt;span style="FONT: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;You will need a custom pipeline. BizTalk uses the MIME component to process multi part messages. Even if the message is not a MIME message it can be processed by setting the ‘allow non MIME message’ property to true. The body part content type field is optional. Valid values are ‘text/xml ‘, ‘application/xml’… etc. The ‘Body part index’ is a 0 based index that identifies the body part by location in the message.  It took me a while to discover that I also needed to add an XML dissembler in the pipeline as well. All the message part schemas are added to the ‘Document schemas’ collection.&lt;br /&gt;
        &lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt 36pt"&gt; &lt;img alt="" width="500" height="224" src="/images/geekswithblogs_net/PsudoKnowledgeBase/MIME and XML Property.JPG" /&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Tricks that might help:&lt;/div&gt;
&lt;div style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 36pt"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;Initially type the Multi Part message parts as System.Xml.XmlDocument. This will remove at least one area of possible error. This will allow you to identify other problems and resolve them one at a time.&lt;/div&gt;
&lt;div style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 36pt"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;         &lt;/span&gt;&lt;/span&gt;View the orchestration file in Notepad. Look for the definition of the multi part message. The order the parts are listed in the XML are the order the message parts were created. Remember creation order matters.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;strong&gt;&lt;u&gt;Sample Message&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;MIME-Version: 1.0&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Content-Type: multipart/related; type="text/xml";&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;                boundary="_968002A2-AAE4-43E0-90D3-83461FE91020_"&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt; --_968002A2-AAE4-43E0-90D3-83461FE91020_&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;MIME-Version: 1.0&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Content-Transfer-Encoding: binary&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Content-Description: Header&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt; &amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;soapenv:Header&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;eb:MessageHeader xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" eb:version="2.0" soapenv:mustUnderstand="1"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;... Rest of the Header Message....&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;/soapenv:Body&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;--_968002A2-AAE4-43E0-90D3-83461FE91020_&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;MIME-Version: 1.0&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Content-Transfer-Encoding: binary&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Content-Description: POMsg&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt; &amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PurchaseOrderV2R30" PurchaseOrderStatusType="Original" PurchaseOrderType="StandardOrder"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;... Rest of the Purchase Order Message....&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&amp;lt;/PurchaseOrder&amp;gt;&lt;/div&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-SIZE: 11pt"&gt;--_968002A2-AAE4-43E0-90D3-83461FE91020_--&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127428"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127428" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/127428.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/27/biztalk-receiving-multi-part-messages.aspx</guid>
            <pubDate>Fri, 28 Nov 2008 04:10:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/127428.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/27/biztalk-receiving-multi-part-messages.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/127428.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Notes on Resolving BizTalk Connectivity Issues with Ponton clients</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/14/notes-on-resolving-biztalk-connectivity-issues-with-ponton-clients.aspx</link>
            <description>&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Notes on Resolving Connectivity Issues&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;During the first stage of the Integration project a number of challenges were encountered. Some of these obstacles could have been avoided but we chose to resolve them so that we would have a solid solution for further development.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Challenges Encountered&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;Server 500 error when posting messages to customer with a static port configuration and document that worked for other customers.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;Ponton responds with an ‘Internal Storage’ Error.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt 36pt; TEXT-INDENT: -18pt"&gt;&lt;span&gt;·&lt;span style="FONT: 7pt 'Times New Roman'"&gt;         &lt;/span&gt;&lt;/span&gt;The dynamic port fails with either a 500 server error or a 204 (StatusDescription=No Content) server error.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;strong&gt;&lt;u&gt;Issue 1&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;After a lot of work and Microsoft’s help we tracked the first error down to the customer’s server being unable to process HTTP 1.1 messages. The customer is currently running iPlanet 6 SP 10 on a Solaris 8 with a Ponton application server running WebLogic 8.1 SP6 also running on Solaris 8. &lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;HTTP 1.1 includes chunking of messages at the HTTP level. In this case the customer’s server could not recombine the chunked message and failed with a 500 error. By default the HTTP chunking is turned on when a new static HTTP port is created in BizTalk. To turn this off click on the Configuration button in the Transport section of the Send Port’s General Property page. Under the Destination URL field there is a check box labeled ‘Enable chunked encoding’. By clearing this check box the HTTP 1.1 chunking feature will be disabled.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;NOTE:  While we were trying to resolve this issue the Microsoft tech ask me to run Microsoft Network Monitor 3.0 (NetMon) to capture the traffic so that we could determine if there was an obvious message problem. Due to the process used by NetMon it could not capture the HTTP traffic. It could however capture the HTTPS traffic. I’ve not sure why this is but it is worth noting.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;strong&gt;&lt;u&gt;Issue 2&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;The second issue was resolved with the assistance of Ponton. Our current customers use older versions of Ponton . Our new customer uses the 2.4 version of this product. It turned out that the use of the ‘Content-Disposition: attachment; filename="=?utf-8?B?QXR0YWNobWVudDF=?="’ property in the document header changed in the newer version. Older versions ignored this property. When we deleted this line from the header the ‘internal storage’ error was no longer raised by the Ponton server.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;strong&gt;&lt;u&gt;Issue 3&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;Finally when we tried to move the solution to a more dynamic design the customers server started to respond with 500 server errors again. Since the integration with our customer is over an SSL connection we contacted Ponton to see if they had a test server that uses HTTP for our analysis. When we connected with this server (Apache running on Linux) we received 204 server errors. If we tested the dynamic port with the same message against a BizTalk server running on a windows 2003 server it processed successfully.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;The Microsoft Tech again tried to use NetMon to monitor the traffic with the same results. As a result several other techniques where used to capture the traffic to understand the differences in the messages.&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;By adding the following XML to the BTSNTSvc.exe.config file and running Sysinternals &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx"&gt;Debug Viewer&lt;/a&gt; we were able to monitor the traffic as it was generated in BizTalk.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&amp;lt;configuration&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;    &amp;lt;system.diagnostics&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;        &amp;lt;trace autoflush="true" /&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;                &amp;lt;sources&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;source name="System.Net"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;listeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                                &amp;lt;add name="System.Net"/&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;/listeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;/source&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;source name="System.Net.HttpListener"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;listeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;/listeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;/source&amp;gt;&lt;/div&gt;
&lt;div style="TEXT-INDENT: 36pt; LINE-HEIGHT: normal"&gt;               &amp;lt;source name="System.Net.Sockets"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;listeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;/listeners&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;                &amp;lt;/source&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;                               &amp;lt;source name="System.Net.Cache"&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;listeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                        &amp;lt;/listeners&amp;gt;&lt;/div&gt;
&lt;div style="TEXT-INDENT: 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;/source&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;                &amp;lt;/sources&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;   &amp;lt;sharedListeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                &amp;lt;add&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                 name="System.Net"&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                 type="System.Diagnostics.TextWriterTraceListener"&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                  initializeData="System.Net.trace.log"&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                 traceOutputOptions = "DateTime"&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;                /&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;    &amp;lt;/sharedListeners&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;    &amp;lt;switches&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;        &amp;lt;add name="System.Net" value="Verbose" /&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;        &amp;lt;add name="System.Net.Sockets" value="Verbose" /&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;        &amp;lt;add name="System.Net.Cache" value="Verbose" /&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;        &amp;lt;add name="System.Net.HttpListener" value="Verbose" /&amp;gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 0pt 36pt; LINE-HEIGHT: normal"&gt;    &amp;lt;/switches&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;    &amp;lt;/system.diagnostics&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&amp;lt;/configuration&amp;gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;The first thing that was determined through this process was the default settings for a HTTP static port are not the same as those of the dynamic port. These settings were modified in an orchestration message assignment shape with the code shown below.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;font size="2"&gt;
&lt;p&gt;PontonMessage(HTTP.EnableChunkedEncoding) = false;&lt;br /&gt;
PontonMessage(HTTP.ContentType) = "multipart/related; type=\"text/xml\"; start=ebxml-header; boundary=\"_00000000-0000-0000-0000-000000000000_\"";&lt;br /&gt;
PontonMessage(HTTP.UseHandlerProxySettings) = true;&lt;br /&gt;
PontonMessage(HTTP.AuthenticationScheme) = "Anonymous";&lt;/p&gt;
&lt;/font&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;Addressing these differences was the first place that we tried to resolve the issue. Unfortunately this did not resolve the problem.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;The final test we did was to use a network sniffer called 'WireShark' to monitor the traffic. This allowed the text comparison of a static and a dynamic message. From this comparison the only differences were the date stamps, unique ID and the quotes around the content type parameters as shown below.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;Dynamic Message:&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;Content-Type: multipart/related; type=’text/xml’; start=ebxml-header; boundary=’_00000000-0000-0000-0000-000000000000_’&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;The non Windows server required the quotes to be double quotes and could not process the message if single quotes were used. As a result the code int the Orchestration expression shape was changed as shown below.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;From:&lt;br /&gt;
PontonMessage(HTTP.ContentType) = “multipart/related; type=’text/xml’; start=ebxml-header; boundary=’_00000000-0000-0000-0000-000000000000_’”;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;To:&lt;br /&gt;
PontonMessage(HTTP.ContentType) = "multipart/related; type=\"text/xml\"; start=ebxml-header; boundary=\"_00000000-0000-0000-0000-000000000000_\"";&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;I hope this helps other people.  This has been an interesting ride for me.  Integration with non Microsoft systems can result in some unexpected problems.&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127040"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127040" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/127040.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/14/notes-on-resolving-biztalk-connectivity-issues-with-ponton-clients.aspx</guid>
            <pubDate>Fri, 14 Nov 2008 19:00:14 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/127040.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/14/notes-on-resolving-biztalk-connectivity-issues-with-ponton-clients.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/127040.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Getting Document Values from Repeating Nodes in BizTalk</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/13/getting-document-values-from-repeating-nodes-in-biztalk.aspx</link>
            <description>&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;To access a variable in a document in BizTalk is quite easy. First you go to the schema of the document and right click on the value you want to promote. Select Promote -&amp;gt; Show Promotions. To promote the variable as a distinguished property simply click the add button. If you messages are in a separate project make sure you build the solution before continuing. Accessing the promoted property in the orchestration is a simple process. Typing the message name, that represents the schema, in an expression shape. Intellisense will then guide you the rest of the way.&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;Now try that if the document variable that you require can have multiple values. As soon as you try to promote the field BizTalk will refuse to continue displaying the following dialog.&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;img height="103" width="628" alt="" src="/images/geekswithblogs_net/PsudoKnowledgeBase/BTMultiNodeMsg.JPG" /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;Currently I’m in the situation where I need that variable to start my mapping process. To get over this problem I have written a helper function is C#. The class is easily accesses from the orchestration. Simply reference the helper class project in the project that contains the orchestration. &lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Collections.Generic;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Text;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Xml;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; Microsoft.XLANGs.BaseTypes;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.Configuration;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; System.IO;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt; &lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;namespace&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; CustomerIntegration2.PAPINET.MessagingSupport&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Helper&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;… &lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;In an expression shape reference the helper class as shown below&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;CustomerNumber = CustomerIntegration2.PAPINET.MessagingSupport.Helper.GetCustomerID()&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;font face="Arial"&gt;To allow the method to do its work it needs the message data.  To achieve this I’m using an XPath query to grab the section of the message I need to process.  In this case I’m also passing in mapping data as I need to convert the value to a customer ID.  ‘BuyerDoc’ is a declared variable, of type System.Xml.XmlDocument, in the orchestration.&lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;font face="Arial"&gt;BuyerDoc = xpath(PAPINetPO, "/*[local-name()='PurchaseOrder']/*[local-name()='PurchaseOrderHeader']/*[local-name()='BuyerParty']");&lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127011"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127011" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/127011.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Geordie</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/13/getting-document-values-from-repeating-nodes-in-biztalk.aspx</guid>
            <pubDate>Thu, 13 Nov 2008 23:48:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/127011.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/13/getting-document-values-from-repeating-nodes-in-biztalk.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/127011.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Debugging in BizTalk</title>
            <link>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/03/debugging-in-biztalk.aspx</link>
            <description>&lt;p&gt;I recently opened a ticket with Microsoft due to a connectivity issue with a customer.  The problem was ultimatly resolved by turning off the message chunking feature in the HTTP adapter configuration.  It turns out that HTTP chunking is a HTTP 1.1 version feature and our customers servers still use HTTP 1.0.&lt;/p&gt;
&lt;p&gt;While trying to resolve this issue the Microsoft technician asked me to add some XML to the BizTalk configuration file.  The XML turns on the .Net Tracing feature that is built into the System.Net, System.Net.HttpListener, System.Net.Sockets and System.Net.Cache framework code.  By adding the XML a file is generated in the same folder as the configuration file.  The debug information can also be captured and viewed as it is generated using Debug Viewer by Sysinternals.&lt;/p&gt;
&lt;p&gt;N.B. this was run with BizTalk 2006&lt;/p&gt;
&lt;p&gt;XML&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;&amp;lt;configuration&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt; &amp;lt;system.diagnostics&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;trace autoflush="true" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;sources&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;source name="System.Net"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;/listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;/source&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;source name="System.Net.HttpListener"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;/listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;/source&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;source name="System.Net.Sockets"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;/listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;/source&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;source name="System.Net.Cache"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;add name="System.Net"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                        &amp;lt;/listeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;/source&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;/sources&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;sharedListeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                &amp;lt;add&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                 name="System.Net"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                 type="System.Diagnostics.TextWriterTraceListener"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                  initializeData="System.Net.trace.log"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                 traceOutputOptions = "DateTime"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;                /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;/sharedListeners&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;    &amp;lt;switches&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;add name="System.Net" value="Verbose" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;add name="System.Net.Sockets" value="Verbose" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;add name="System.Net.Cache" value="Verbose" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;        &amp;lt;add name="System.Net.HttpListener" value="Verbose" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;    &amp;lt;/switches&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;    &amp;lt;/system.diagnostics&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt;&amp;lt;/configuration&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126595"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126595" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/PsudoKnowledgeBase/aggbug/126595.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>PsudoKnowledgeBase</dc:creator>
            <guid>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/03/debugging-in-biztalk.aspx</guid>
            <pubDate>Tue, 04 Nov 2008 05:15:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/PsudoKnowledgeBase/comments/126595.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/PsudoKnowledgeBase/archive/2008/11/03/debugging-in-biztalk.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/PsudoKnowledgeBase/comments/commentRss/126595.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>