<?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>The dot before the Net : Biztalk</title><link>http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx</link><description>Tags: Biztalk</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Required NTFS permissions for BizTalk File Adapter connecting to network share</title><link>http://blogs.msdn.com/sanket/archive/2009/06/06/required-ntfs-permissions-for-biztalk-file-adapter-connecting-to-network-share.aspx</link><pubDate>Sat, 06 Jun 2009 05:38:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9702450</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/sanket/comments/9702450.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=9702450</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=9702450</wfw:comment><description>&lt;p&gt;When connecting to a network file share using BizTalk File adapter, you might've noticed that just specifying "Modify" rights is not sufficient. In simple configuration terms, you would need to have a minimum of "Full Control" or the BizTalk Host Service Account. Obviously this would not gel well with the system administrators. 
&lt;/p&gt;&lt;p&gt;Tom Canter (&lt;a href="http://blogs.neudesic.com/blogs/enterprise_integration/archive/2007/02/22/4260.aspx"&gt;http://blogs.neudesic.com/blogs/enterprise_integration/archive/2007/02/22/4260.aspx&lt;/a&gt;) has put down the exact permissions that you would require for the FILE adapter that would help alleviate some of the concerns for the admins. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Overall, here is what it boils down to – 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;For the FILE Receive Adapter 
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;After you provide "Modify" rights, Click on "Advanced" button and on the Advanced Security Dialog, edit the permission entries for the BizTalk Service Account
&lt;/li&gt;&lt;li&gt;Here you will notice that the "Delete Sub Folders and Files" option is not given by default. This is exactly the missing link for the receive adapter.
&lt;/li&gt;&lt;li&gt;Simply set this property and you are good to go without "Full Control"
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="text-decoration:underline"&gt;&lt;strong&gt;For the FILE Send Adapter
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div&gt;If you are NOT USING the "use temporary file while writing" attribute on your send port, only the following permissions are required on the permissions entry dialog
&lt;/div&gt;&lt;ul style="margin-left: 72pt"&gt;&lt;li&gt;&lt;div&gt;Create Files / Write Data
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;If you are using the "use temporary file while writing" attribute on your send port, the following permissions are required on the permissions entry dialog
&lt;/div&gt;&lt;ul style="margin-left: 72pt"&gt;&lt;li&gt;Create Files / Write Data
&lt;/li&gt;&lt;li&gt;Delete Files
&lt;/li&gt;&lt;li&gt;Delete Sub Folders and Files
&lt;/li&gt;&lt;li&gt;Read Permissions
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9702450" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogs.msdn.com/sanket/archive/tags/FILE+Adapter/default.aspx">FILE Adapter</category></item><item><title>Trouble setting the BizTalk Backup Job?</title><link>http://blogs.msdn.com/sanket/archive/2009/06/06/trouble-setting-the-biztalk-backup-job.aspx</link><pubDate>Sat, 06 Jun 2009 05:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9702443</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/sanket/comments/9702443.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=9702443</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=9702443</wfw:comment><description>&lt;P&gt;Recently, I faced some of the issues below when configuring BizTalk Disaster Recovery at one of my customers. The BizTalk solution was implemented on HyperV and since earlier clustering was not supported for SQL 2005 (BTW, it is supported now), we had to separate the Message Box database and the Management, SSO &amp;amp; Tracking databases to ensure better solution performance. The overall configuration looked as below – &lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 360px; HEIGHT: 217px" align=left src="http://blogs.msdn.com/photos/sanket/images/9702444/original.aspx" width=426 height=221 mce_src="http://blogs.msdn.com/photos/sanket/images/9702444/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Due to this configuration, there were some minor complications that kicked in when setting up the backup jobs. &lt;/P&gt;
&lt;P&gt;When configuring BizTalk with the above topology, the BizTalk configuration will create a SQL Linked Server between the Management database and the Message Box database. The backup jobs resides on the management database and the linked server is supposed to help communication with message box server and facilitate the backups. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;When we first started with testing the backups job, we ran into the following issue – &lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&amp;lt;Msgbox DB Server Name&amp;gt; is not configured for RPC. SQLSTATE 42000. Error 7411 &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As the error message points out, the first suspect is usually to check if the RPC service is working on the message box SQL Server. If BizTalk is performing its required tasks, then chances are that the issue is elsewhere. Since DTC requires RPC. And BizTalk cannot live without DTC. &lt;/P&gt;
&lt;P&gt;The second step is to check the Linked Server properties and ensure that the "RPC Out" property is enabled. Enabling this allows RPC communication between the servers. &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;Secondly, if both the SQL Servers are configured to use different service accounts, make sure that both the service accounts should have access to the network share that creates the backup and log files. In the above case, the service account that was configured for the message box server did not had access to the network share. The BizTalk backup job in turn "instructs" the message box database server to perform the backup. Hence, the actual writing of the backup file happens with the SQL service account configured on the message box server. If you do not have this setup right, chances are that you will see the familiar "Access is denied" error message and the Backup job will fail. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Hopefully these experiences might save some time the next time you run into this configuration. &lt;/P&gt;
&lt;P&gt;--Sanket&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9702443" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogs.msdn.com/sanket/archive/tags/Backup+Jobs/default.aspx">Backup Jobs</category><category domain="http://blogs.msdn.com/sanket/archive/tags/Disaster+Recovery/default.aspx">Disaster Recovery</category></item><item><title>Consuming webservices from within BizTalk</title><link>http://blogs.msdn.com/sanket/archive/2007/03/31/consuming-webservices-from-within-biztalk.aspx</link><pubDate>Sat, 31 Mar 2007 16:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2000076</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/sanket/comments/2000076.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=2000076</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=2000076</wfw:comment><description>&lt;P&gt;BizTalk 2006 allows some really good interacting with webservices. If it is a simple webservice, we can very well consume it by adding a reference to it and then consuming it using the orchestrations.&amp;nbsp;Here are&amp;nbsp;some interesting scenarios that I encountered when dealing with webservices. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;Can I consume the service?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Although Biztalk offers fairly good support for consuming webservices, there are&amp;nbsp;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa561724.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa561724.aspx"&gt;some considerations&lt;/A&gt; that might affect the way these interactions are developed.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For instance, the Add Web Reference feature in BizTalk does not understand the import element in the WSDL.&amp;nbsp;Multi dimensional arrays are not supported from within BizTalk &amp;amp; so on.&amp;nbsp;An elabortate list of these considerations can be&amp;nbsp;&amp;nbsp;found &lt;A href="http://msdn2.microsoft.com/en-us/library/aa561724.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa561724.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;In some cases, you might run into one of these limitations - most probably when using non .net webservices. There can be a couple of ways in which we can deal with this scenario. This webservice call can be either wrapped within a .Net component or a webservice that can in turn be consumed by BizTalk. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;Using SOAP Headers when consuming the webservice&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;When consuming a webservice with SOAP headers, the headers need to be written to the context of the web request message. In order to consume these webservices from within an orchestration We need to promote a property with same name as the SOAP Header &amp;amp; assign it to the message context. To achieve this, create a new property schema with target namespace as &lt;EM&gt;http://schemas.microsoft.com/BizTalk/2003/SOAPHeader&lt;/EM&gt;. Each root element in this schema must match the name in the defined SOAP Header. Also, each root element that corresponds to the SOAP header should have its "&lt;EM&gt;Property Schema Base&lt;/EM&gt;" property set to "&lt;EM&gt;MessageContextPropertyBase&lt;/EM&gt;". Setting this property ensures that the element is visible in the list of elements in the message context.&lt;/P&gt;
&lt;P&gt;Once done, then this property can be used in the expression editor to set the property on the request message as - &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;myWebserviceRequestMsg(MyPropSchemaName.MyHeaderName) = "&amp;lt;?xml version='1.0'?&amp;gt; &amp;lt;MySOAPHeaderName xmlns='http://SOAPHeaderSchemas.MyHeader'&amp;gt; &amp;lt;HeaderInfo&amp;gt;abcxyz&amp;lt;/HeaderInfo&amp;gt;&amp;lt;/MySOAPHeaderName&amp;gt;"&lt;/EM&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The myWebserviceRequestMsg can now be sent directly to the webservice along with the associated SOAP Header. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;Using Webservice request &amp;amp; response messages in Mapper&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Most of the times, you need to resort to transformation either for the request message - before sending to the webservice or the response message after recieving from the service. In atrading sceanrio, where the trader hosts the suppliers catalog, the orchestration would need to get the catalog from the webservice &amp;amp; then use the transformation to include catalog in the traders database. However, if you are thinking of creating the map directly by adding a new map, the mapper UI does not allow specifying the webmessages as source or desctination parameters.&lt;/P&gt;
&lt;P&gt;To overcome this, we can simply use the transform shape to create a new map for us. Specifying the web response message as the input to the transform shape allows it to create a new map with the web response schema. So instead of creating a new map, just drop a transform shape in the orchestration, create two message - one with the web response schema &amp;amp; other of your destination schema. Open the transformation configuration page &amp;amp; just select new map option there. After specifying your source &amp;amp; destination message, a new map will be created by using those schemas.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this alleviates some blues for anyone trying to deal with webservices from BizTalk.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;--Sanket&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2000076" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Creating public orchestrations</title><link>http://blogs.msdn.com/sanket/archive/2007/02/19/creating-public-orchestrations.aspx</link><pubDate>Mon, 19 Feb 2007 10:41:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1712734</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1712734.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1712734</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1712734</wfw:comment><description>&lt;p&gt;I am currently working on one of the Biztalk projects that contains a lot of lengthy orchestrations. In order to split them in manageable chunks, we are&amp;nbsp;making intensive use of the call orchestration and start orchestration shapes. As long as the orchestrations remain in&amp;nbsp;a single assembly, it works great. However, for complex solutions, it makes great sense to split these orchestrations into separate deployable assemblies - probably spanning across several BizTalk applications.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;In such cases, orchestrations in an assembly are by default not visible to orchestrations in another assembly. This is due to the default type modifier for the orchestration. The Type Modified for the orchestration is similar to the access qualifier of C#. By default this is set to "Internal". Obviously, with Internal, the orchestration is not visible outside the assembly within which it is coded. So if you are trying to call this orchestration from some other assembly which has referenced this assembly, you would need to explicitly make the orchestration "visible" outside the assembly. This can be done by setting the Type Modifier as "public". &lt;/p&gt;  &lt;p&gt;This helps a lot in componentization of the orchestrations in a complex Biztalk solution. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1712734" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Adding Environment Specific Binding Files from Command Prompt</title><link>http://blogs.msdn.com/sanket/archive/2007/02/13/adding-environment-specific-binding-files-from-command-prompt.aspx</link><pubDate>Tue, 13 Feb 2007 19:41:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1670036</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1670036.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1670036</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1670036</wfw:comment><description>&lt;p&gt;Biztalk 2006 provides the btstask utility to carry out most of the deployment operations from command prompt. However, the help available at the command prompt does not talk anything about adding environment specific binding files.&amp;nbsp;&lt;/p&gt;  &lt;p&gt;You can get elaborate information about it on MSDN at &lt;a href="http://msdn2.microsoft.com/en-us/library/aa560620.aspx" target="_blank"&gt;this location&lt;/a&gt;.- &lt;/p&gt;  &lt;p&gt;In order to add the environment specific binding files, you need to run btstask.exe with the &lt;font face="Courier New"&gt;-P:TargetEnvironment&lt;/font&gt; parameter as- &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;btstask AddResource -ApplicationName:MyBTSAppName -Type:System.BizTalk:BizTalkBinding -Overwrite -Source:"MyProductionBindingFile.xml" -P:TargetEnvironment="PRODUCTION"&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; --Sanket&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1670036" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>What to and what not to do with your MessageBox database server.</title><link>http://blogs.msdn.com/sanket/archive/2007/01/12/what-to-and-what-not-to-do-with-your-messagebox-database-server.aspx</link><pubDate>Fri, 12 Jan 2007 23:41:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1457083</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1457083.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1457083</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1457083</wfw:comment><description>&lt;p&gt;The BizTalk Core Engine Team has compiled an excellent &lt;a href="http://blogs.msdn.com/biztalk_core_engine/archive/2007/01/04/what-you-can-and-can-t-do-with-the-messagebox-database-server.aspx" target="_blank"&gt;list of things that you can or cannot do on your BizTalk Message Box SQL Server&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I am sure this will be the most sought after thing by all the database administrators trying to "maintain" the Biztalk databases.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1457083" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Publishing Biztalk Orchestrations as webservices</title><link>http://blogs.msdn.com/sanket/archive/2007/01/02/publishing-biztalk-orchestrations-as-webservices.aspx</link><pubDate>Tue, 02 Jan 2007 15:06:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1398488</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1398488.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1398488</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1398488</wfw:comment><description>&lt;p&gt;When developing Biztalk applications that are exposed as webservices, it becomes quite a tedious job to expose them as webservices everytime there is a change in the orchestration.&amp;nbsp;Even though&amp;nbsp;Visual Studio integrates the BizTalk Web Service Publishing Wizard, it is definitely a cumbersome tool to use everytime. &lt;/p&gt;  &lt;p&gt;To minimize the efforts, we can have a simple batch file that can do the job for us. Biztalk comes with a command line utility - btswebsvcpub.exe&lt;/p&gt;  &lt;p&gt;Here is an example of how you can achieve this on the command prompt - &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;btswebsvcpub "C:\TestOrchSolution\TestOrch \bin\Deployment\MyTestOrch.dll" -Overwrite -Anonymous -TargetNamespace:http://testorch /service -ReceiveLocation -ApplicationName:MyTestApp&lt;/font&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt; Furthermore, you can also use this trick for quickly deploying your assemblies from one environment to the other.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1398488" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Biztalk Assembly Deployment goof-up</title><link>http://blogs.msdn.com/sanket/archive/2006/12/26/biztalk-assembly-deployment-goof-up.aspx</link><pubDate>Tue, 26 Dec 2006 16:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1364976</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1364976.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1364976</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1364976</wfw:comment><description>&lt;p&gt;This, to me, seems a rare scenario that you might encounter. &lt;img height="576" src="http://blogs.msdn.com/photos/sanket/images/1364946/original.aspx" width="768" align="right"&gt;&lt;/p&gt;  &lt;p&gt;But if you are using the "ReDeploy" feature in the Biztalk project (from Visual Studio) you might bump into this sometimes. When debugging your orchestration with HAT, you might encounter some strange behaviour - Biztalk simply skips some steps when performing the execution. You might notice something similar to &lt;a href="http://blogs.msdn.com/photos/sanket/images/1364946/original.aspx" target="_blank"&gt;this&lt;/a&gt; in the HAT - &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;The problem here is quite simple. When deploying a Biztalk artifact it is deployed in the GAC and also in one of the Biztalk database. The assembly in the GAC is used by the Biztalk&amp;nbsp;host instance to perform the actual execution. The one in the Biztalk database&amp;nbsp;is used for the tracking purpose so that it can be shown in the HAT. Now, lets say you add something to the orchestration (like I did with the Call shape immediately after the Decide) and when deploying this assembly you somehow missed the update in the database. In this case, the Biztalk Host instance does excute the newly added step and reports it to the database. However, when looking at it from the HAT, Biztalk is not aware of this step. Hence, it is shown as a blank and not executed. &lt;/p&gt;  &lt;p&gt;I relied on the "Redeploy" property of the Biztalk project which states that it &lt;em&gt;overwrites&lt;/em&gt; the current deployment with the new artifacts. However, it seems that redeploy does sometimes miss out the the updates either to the GAC or to the database. (Not sure of the reason why). &lt;/p&gt;  &lt;p&gt;The best way to get out of this is to undeploy the Biztalk assemblies and also remove them from the GAC. I also realized that when I delete&amp;nbsp;my&amp;nbsp;Biztalk Application from the Administration Console, it does not remove the assemblies from the GAC. I had to manually remove the assemblies there.&amp;nbsp;&lt;/p&gt;  &lt;p&gt; Simply re-deploy the application after undeploying and removing the assemblies from the GAC and you will be good to go. Hope this helps solve some confusion when you see something like this happening with your Biztalk project. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1364976" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Resolving "Unknown Errors" when working with Commerce Server Profile Adapter</title><link>http://blogs.msdn.com/sanket/archive/2006/12/09/resolving-unknown-errors-when-working-with-commerce-server-profile-adapter.aspx</link><pubDate>Sat, 09 Dec 2006 13:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1245246</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1245246.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1245246</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1245246</wfw:comment><description>&lt;P&gt;Most of the times, when you encounter an error interacting with Commerce Server Profiles Adapter, the Adapter will give you back an error with a proper description of what might've went wrong. However, there are certain cases when the adapter simply emits a warning in the event log that mentions about an error with "&lt;EM&gt;Unknown Error Description&lt;/EM&gt;".&lt;/P&gt;
&lt;P&gt;This one seems quite tough to solve at the first instance, given that we do not have any further information about this. However, most of the times, as I noticed it this is more to do with some missing values in the message or some mis-configured properties on your send port. &lt;/P&gt;
&lt;P&gt;To get the actual description of the error that has occured, you can do the following - &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;On the commerce server, create a new Profiles Webservice by inheriting from &lt;FONT face="Courier New"&gt;Microsoft.CommerceServer.Profiles.WebService.ProfilesWebService&lt;/FONT&gt;.&lt;/LI&gt;
&lt;LI&gt;Now simply override the ImportProfile and UpdateProfile methods and call the base methods in them. &lt;/LI&gt;
&lt;LI&gt;On the Biztalk Server, instead of pointing to the default Commerce Server Profile Webservice, point to your newly created webservice. &lt;/LI&gt;
&lt;LI&gt;Then in this webservice, you can put a break-point and see why it fails. The actual exception information will be provided here for all the "Unknown Error Description" issues. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Once you know the reason, then it would definitely be quite easy to deal with it. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1245246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogs.msdn.com/sanket/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Associating Multiple Credit Cards when creating Commerce Server Profile using the Commerce Server Profile Adapter for BizTalk</title><link>http://blogs.msdn.com/sanket/archive/2006/12/09/associating-multiple-credit-cards-when-creating-commerce-server-profile-using-the-commerce-server-profile-adapter-for-biztalk.aspx</link><pubDate>Sat, 09 Dec 2006 13:44:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1245216</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1245216.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1245216</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1245216</wfw:comment><description>&lt;p&gt;When dealing with Commerce Server integration with BizTalk 2006, one of the requirements that I faced was to create multiple credit cards for a single profile and then link all those credit cards to that profile.    &lt;br /&gt;To achieve this, is a two step process. The first step involves creating the actual credit cards on the Commerce Server. This has to be done by independant calls to the Profile Adapter for each credit card. These calls are made with the "EndPoint Message Type" set as "Import Profiles" on the Send Port (either Static or Dynamic). &lt;/p&gt;  &lt;p&gt;Once all the credit cards are created, then the profile create message needs to have the list of ids for all the credit cards created. These ids are stored in the Commerce Server SQL database in the following format - &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;2;&amp;lt;creditcardid1&amp;gt;;&amp;lt;creditcardid2&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where the creditcard Ids are nothing but GUIDs corresponding to the keys of the actual credit card objects. &lt;/p&gt;  &lt;p&gt;Now to send it from the Biztalk Adapter, it should be sent as multiple nodes of the &amp;lt;credit_card_list&amp;gt; type. So in the actual profile create request instead of having a list of credit cards separated by a semi-colon (;) (as might seem from the value stored in the database), each individual credit card Id should be sent as a separate node. &lt;/p&gt;  &lt;p&gt;So the create profile request looks similar to this - &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;ProfileDocument&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;UserObject&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;GeneralInfo&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;user_id&amp;gt;fc32ccb8-0672-4457-a99d-6ac01c497912&amp;lt;/user_id&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;user_name&amp;gt;sanket&amp;lt;/user_name&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;email_address&amp;gt;s@b.com&amp;lt;/email_address&amp;gt;&lt;/p&gt;    &lt;p&gt;......&lt;/p&gt;    &lt;p&gt;&amp;lt;credit_card_list&amp;gt;ab3299c1-3d57-44e9-a99d-63451c49340e&amp;lt;/credit_card_list&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;credit_card_list&amp;gt;e40234ed-ab7e-1a5c-a99d-6cbe1c49ba91&amp;lt;/credit_card_list&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;GeneralInfo&amp;gt;&lt;/p&gt;    &lt;p&gt;......................&lt;/p&gt;    &lt;p&gt;&amp;lt;/UserObject&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/ProfileDocument&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt; Hope this helps you save some time when dealing with this feature. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1245216" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogs.msdn.com/sanket/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Correction: "Updates Overwrite" property of Commerce Server Profiles Adapter</title><link>http://blogs.msdn.com/sanket/archive/2006/12/09/correction-updates-overwrite-property-of-commerce-server-profiles-adapter.aspx</link><pubDate>Sat, 09 Dec 2006 13:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1245187</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1245187.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1245187</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1245187</wfw:comment><description>&lt;P&gt;A couple of days ago, I had blogged &lt;A href="http://blogs.msdn.com/sanket/archive/2006/11/13/error-with-commerce-server-profile-adapter.aspx" target=_blank mce_href="http://blogs.msdn.com/sanket/archive/2006/11/13/error-with-commerce-server-profile-adapter.aspx"&gt;here&lt;/A&gt; about an error on the Commerce Server Profiles adapter.&lt;/P&gt;
&lt;P&gt;When trying out an update to the Profile, the Commerce Server Adapter returns back the following error message - &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;?xml version="1.0"?&amp;gt; &lt;BR&gt;&amp;lt;CommerceServerProfilesUpdateResponse&amp;gt; &lt;BR&gt;&amp;lt;InvalidProfileUpdateMessage&amp;gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;EM&gt;&lt;U&gt;The message body received by the send adapter is not valid for the CommerceServerProfilesUpdate API call. Message ID: 529029a6-5954-4446-bdd3-a5b4c5051cbb. Detail: There has been an optimistic locking conflict. The object could not be saved. This occurs when someone else makes a change to the object after you have loaded the object but before you have saved the object. To force overwriting of the other user's change, set the overwriteOnConflict flag to true. Profile Name = 'Address'. Primary Key Value = '{f8ec6880-9a9a-4059-9e10-1bb1712687ba}'.&lt;/U&gt; &lt;BR&gt;&lt;/EM&gt;&amp;lt;/InvalidProfileUpdateMessage&amp;gt; &lt;BR&gt;&amp;lt;/CommerceServerProfilesUpdateResponse&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The solution that I had suggested was to set the "Updates Overwrite" property on the adapter to "&lt;EM&gt;true&lt;/EM&gt;". However, on exploring the avenue further, I came to know that setting this property to "&lt;EM&gt;true&lt;/EM&gt;" would actually cause the Commerce Server to update all the properties for&amp;nbsp;the related profile. If it is not specified as an input, then it is marked as null. This behaviour might not be desirable in most of the cases where you would not like to pass all the information. Only information that is updatable should be updated. &lt;/P&gt;
&lt;P&gt;The "Updates Overwrite" property allows doing that by setting it to "&lt;EM&gt;false&lt;/EM&gt;". However, when this propery is set to "&lt;EM&gt;false&lt;/EM&gt;", the Commerce Server Webservices checks for the update timestamp on the incoming message. If the timestamp is not available or if it's value is greater than the last updated timestamp in the database, then the adapter returns back with the above error message. &lt;/P&gt;
&lt;P&gt;To take care of this issue, all you have to do is set the "date_last_changed" &amp;amp; "csadapter_date_last_changed" fields in your update request message to the Commerce Server to the current datetime. This can be done by simply using the date &amp;amp; time functoid in the map or by distinguishing these properties and then assigning them in expression shape as - &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;updateRequestMessage.UserObject.ProfileSystem.date_Last_changed = System.DateTime.Now().ToString();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;updateRequestMessage.UserObject.ProfileSystem.csadapter_date_Last_changed = System.DateTime.Now().ToString();&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This will now allow you to update the profile without sending the additional information that need not be updated. &lt;/P&gt;
&lt;P&gt;One thing that I noticed with this is that even after doing this, If I go ahead to update the profile without specifying my existing credit cards, it then deletes all the credit card links in my profile. To overcome this I have to pass the credit card ids (GUIDs) along with my user profile update message. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1245187" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogs.msdn.com/sanket/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Solving the error when updating Commerce Server using the Profile Adapter</title><link>http://blogs.msdn.com/sanket/archive/2006/11/13/error-with-commerce-server-profile-adapter.aspx</link><pubDate>Mon, 13 Nov 2006 12:50:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1067362</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1067362.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1067362</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1067362</wfw:comment><description>&lt;p&gt;When dealing with Commerce Server Adapters for BizTalk, you might face an issue where the Profile Adapter returns this&amp;nbsp;message&amp;nbsp;on update - &lt;/p&gt;  &lt;p&gt;&amp;lt;?xml version="1.0"?&amp;gt;   &lt;br /&gt;&amp;lt;CommerceServerProfilesUpdateResponse&amp;gt;    &lt;br /&gt;&amp;lt;InvalidProfileUpdateMessage&amp;gt;    &lt;br /&gt;&lt;em&gt;&lt;u&gt;The message body received by the send adapter is not valid for the CommerceServerProfilesUpdate API call. Message ID: 529029a6-5954-4446-bdd3-a5b4c5051cbb. Detail: There has been an optimistic locking conflict. The object could not be saved. This occurs when someone else makes a change to the object after you have loaded the object but before you have saved the object. To force overwriting of the other user's change, set the overwriteOnConflict flag to true. Profile Name = 'Address'. Primary Key Value = '{f8ec6880-9a9a-4059-9e10-1bb1712687ba}'.&lt;/u&gt;      &lt;br /&gt;&lt;/em&gt;&amp;lt;/InvalidProfileUpdateMessage&amp;gt;    &lt;br /&gt;&amp;lt;/CommerceServerProfilesUpdateResponse&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;To solve this issue, simply go to the adapter configuration on your send Port and &lt;em&gt;&lt;u&gt;set the "Updates Overwrite" property of the adapter to true&lt;/u&gt;&lt;/em&gt;. If this property is set, the adapter is allowed to overwrite the existing properties on the profile and hence the error is taken care of.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1067362" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category><category domain="http://blogs.msdn.com/sanket/archive/tags/Commerce+Server/default.aspx">Commerce Server</category></item><item><title>Understanding Persistence Points in Biztalk Orchestration</title><link>http://blogs.msdn.com/sanket/archive/2006/11/12/understanding-persistence-points-in-biztalk-orchestration.aspx</link><pubDate>Sun, 12 Nov 2006 12:07:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1062098</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/sanket/comments/1062098.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=1062098</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=1062098</wfw:comment><description>&lt;p&gt;Often ignored, but a really important point when designing orchestrations is of course the persistence points. Understanding of the persistence points becomes really an important factor if you are dealing with orchestration performance.&amp;nbsp;Lets take a glance at what they are and&amp;nbsp;how we can take care of them. &amp;nbsp;&lt;/p&gt;  &lt;p&gt;The SQL Server does bulk of the job at the backend to keep the BizTalk server running.&amp;nbsp; BizTalk has this inherent behavior of saving the orchestration state to the SQL Server so as to quickly and easily recover from any failures. Persistence points are those points in the orchestration that save the orchestration state to the database. &lt;/p&gt;  &lt;p&gt;However, this behavior induces latency in the execution of the orchestration because of several database trips that are needed when executing the them. Although its quite difficult to avoid the persistence points when designing the orchestration, understanding them and using appropriate shapes and patterns can ensure that you keep them to minimum. For example, the orchestration persists its state after end of every transaction, at the end of orchestration, after every send shape etc. However, if the Send shapes are enclosed within atomic transactions, they do not persist the state. Instead, the state is then persisted at the end of the atomic transaction. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;In a usual scenario, the persistence in the orchestrations occur at the following points - &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;End of a transactional scope (atomic or long running)&lt;/li&gt;    &lt;li&gt;At the execution of other orchestrations through the Start Orchestration shape&lt;/li&gt;    &lt;li&gt;At the Send shape (except in an atomic transaction)&lt;/li&gt;    &lt;li&gt;At the end of the orchestration&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Apart from that, the engine might decide to persist the orchestration in the following cases - &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;When an Orchestration Instance is suspended&lt;/li&gt;    &lt;li&gt;When the system shutdowns in a controlled manner&lt;/li&gt;    &lt;li&gt;When the engine determines it wants to dehydrate&lt;/li&gt;    &lt;li&gt;When an orchestration instance is finished&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Persistence can also occur&amp;nbsp;at debugging breakpoints when the orchestration debugger is being run. &lt;/p&gt;  &lt;p&gt;Lets just illustrate&amp;nbsp;with a simple example how persistence points can increase the latency during the execution of the orchestration.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;Consider orchestration scenario that has 2 send shapes sending messages to two different systems.&lt;/p&gt;  &lt;p&gt;This can be implemented in the following ways - &lt;/p&gt;  &lt;p&gt;A.&amp;nbsp;A parallel branch that has two Send shapes. &lt;/p&gt;  &lt;p&gt;B. Two send shapes being executed sequentially in the orchestration.&lt;/p&gt;  &lt;p&gt;C. Two send shapes being executed sequentially in the atomic shape.&lt;/p&gt;  &lt;p&gt;Question: Now which of these do you think would work the fastest?   &lt;br /&gt;Of course the (B) scenario is out of question. The two Send shapes will have their persistence points. If the Send shape is the last shape in the orchestration, then the&amp;nbsp;persistence point of the Send shape and the end of the&amp;nbsp;orchestration will be batched together to result in a single persistence point instead of two. &lt;/p&gt;  &lt;p&gt;With scenario (A) even we have&amp;nbsp;the parallel branches in place, Biztalk by nature executes them in a sequential manner. Parallel branches do not necessarily mean they are executed on separate threads. Hence, even in this case, it results in sequential execution with two persistence points. Infact, in this case, the persistence point will not be batched with end of the orchestration and hence it results in the slowest of the three. &lt;/p&gt;  &lt;p&gt;The scenario (C) takes the fastest position of the three. The send shapes are enclosed in the atomic shape and hence the state is persisted only at the end of the atomic shape.&amp;nbsp;Again, if it is at the end of the orchestration, the persistence point will be batched with the persistence point at the&amp;nbsp;end of the orchestration. Hence resulting in a single persistence point. &lt;/p&gt;  &lt;p&gt; Hence, when designing the orchestration from the performance perspective, it is imperative to take a look at what points the orchestration will be persisting the data.&amp;nbsp;Reducing the database trips helps increase the performance of the orchestration. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1062098" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Supporting mixed content messages with BizTalk</title><link>http://blogs.msdn.com/sanket/archive/2006/11/02/supporting-mixed-content-messages-with-biztalk.aspx</link><pubDate>Thu, 02 Nov 2006 06:18:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:928095</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sanket/comments/928095.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=928095</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=928095</wfw:comment><description>&lt;p&gt;Ocassionally, when dealing with Xml messages from third party systems, your Biztalk solution might need to deal with mixed content. A classic example of the mixed content is&amp;nbsp;the HTML as in - &lt;/p&gt;  &lt;p&gt;&amp;lt;P&amp;gt;Here goes some &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; text&amp;lt;/P&amp;gt;&lt;/p&gt;  &lt;p&gt;Biztalk allows handling these kind of messages when defining the schemas. To do this, all your have to do is set the mixed attribute of the Record to &lt;em&gt;true&lt;/em&gt;. Setting this attribute ensures that the record can contain text as well as any child nodes within it.&lt;/p&gt;  &lt;p&gt;Explanation about the mixed property can be found &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/BTS06CoreDocs/html/a7823467-992e-40cf-9f82-2fba22a157c9.asp" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=928095" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item><item><title>Naming the lines in a Biztalk map</title><link>http://blogs.msdn.com/sanket/archive/2006/11/01/naming-the-lines-in-a-biztalk-map.aspx</link><pubDate>Wed, 01 Nov 2006 16:03:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:921915</guid><dc:creator>Sanket Bakshi</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sanket/comments/921915.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanket/commentrss.aspx?PostID=921915</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sanket/rsscomments.aspx?PostID=921915</wfw:comment><description>&lt;p&gt;When using the Biztalk mapper, most often than not you would need to resort to functoids. When connecting the functoid inputs from the fields in the Source schema, we simply stretch a line from the field to the functiod. However, when we open the functoid to check the input parameter, it shows up as a long xpath string. When dealing with large maps this can very easily become cumbersome. &lt;/p&gt;  &lt;p&gt;Alternatively, a&amp;nbsp;better&amp;nbsp;way is to&amp;nbsp;label the line that you stretch to the functoid. So whenever you draw a line from any source field to the functoid. Just click the line and enter a meanigful name in the Label property in the Properties window. The next time you open the Input Parameters window for the functiod, you will see the line label instead of the cryptic xpath. &lt;/p&gt;  &lt;p&gt; This surely will make life a bit easier when dealing with huge maps. Also, this can be one of the good coding practices.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=921915" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanket/archive/tags/Biztalk/default.aspx">Biztalk</category></item></channel></rss>