<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 Wishlist</title>
        <link>http://geekswithblogs.net/michaelstephenson/category/8087.aspx</link>
        <description>BizTalk Wishlist</description>
        <language>en-GB</language>
        <copyright>Michael Stephenson</copyright>
        <managingEditor>michael_stephensonuk@yahoo.co.uk</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Another one for the BizTalk Wish List</title>
            <link>http://geekswithblogs.net/michaelstephenson/archive/2008/05/04/121886.aspx</link>
            <description>&lt;p&gt;I think it would be useful if maps could be applied at Receive Location level.  I was working on a demo scenario the other day where I had an orchestration that was exposed to two different receive locations through a port.&lt;/p&gt;
&lt;p&gt;The message formats coming in were different as well as the transport.  Inbound it was easy I could apply 2 maps to the port and map the different requests to a common schema for the orchestration to work with.&lt;/p&gt;
&lt;p&gt;The problem came because it was a synchronous service and when the orchestration returns a common response there is no way to work out which outbound map should be applied as both maps would have the same source document.&lt;/p&gt;
&lt;p&gt;If the map could be applied at receive location level then this problem would be resolved as each location in this scenario would be working with its specific message format.&lt;/p&gt;
&lt;p&gt;I would imagine this isnt that uncommon a scenario.&lt;/p&gt;
&lt;p&gt;UPDATE:&lt;/p&gt;
&lt;p&gt;Following feedback from Jason ive added this update to try and ensure I have explained this correctly as its a little awkward to describe.&lt;/p&gt;
&lt;p&gt;As mentioned the process is synchronous request response.  The following diagram illustrates what happens on the inbound part of this process:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/michaelstephenson/8089/o_Inbound.png" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see the both locations pass in different message formats which are processed and then mapped in the port (using a different map for each) to a common schema.  This common message is what hits the message box and is then processed by an orchestration.  The two different maps are applied because they each accept a different message input type and the map which should be used can easily be resolved.&lt;/p&gt;
&lt;p&gt;The next diagram shows what happens on the response side of this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/michaelstephenson/8089/o_Outbound.png" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see when the common schema for the response message is returned to the message box from the orchestration and picked up by the port for processing the 2 maps which are used to map the response back to the sender specific response message will both have the same input schema.  This wont work as the map to use can not be resolved correctly.&lt;/p&gt;
&lt;p&gt;As Jason mentioned you can work around this and infact what I did in my sample scenario was to implement a pipeline component which could execute BizTalk maps (ill discuss this in another article) this ment the mapping was in the pipeline rather than the port so the problem did not occur.&lt;/p&gt;
&lt;p&gt;The point of this article is that the scenario here is potentially fairly common and while you can work around this problem the solution is a bit of a pain in the butt to implement so it would be nice if in future versions it was easier.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121886"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121886" 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/michaelstephenson/aggbug/121886.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>michael stephenson</dc:creator>
            <guid>http://geekswithblogs.net/michaelstephenson/archive/2008/05/04/121886.aspx</guid>
            <pubDate>Sun, 04 May 2008 15:36:31 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/michaelstephenson/comments/121886.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/michaelstephenson/archive/2008/05/04/121886.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/michaelstephenson/comments/commentRss/121886.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/michaelstephenson/services/trackbacks/121886.aspx</trackback:ping>
        </item>
        <item>
            <title>BizTalk 2006 vNext Wishlist</title>
            <link>http://geekswithblogs.net/michaelstephenson/archive/2008/04/27/121686.aspx</link>
            <description>&lt;p&gt;In issue 3 of BizTalk HotRod magazine I was asked to provide a profile about myself, and also 5 things about BizTalk that I would like to see improved in the future.  Ive decided to have this post where I will keep a list of similar things, things that make life more difficult and also ideas for features etc.  Ill keep adding things to this and hopefully some of it might get spotted by the people who might be able to adpot the ideas for future versions.&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;&lt;u&gt;Record the user who terminates an instance&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;If one of your administrators terminates an instance it would be nice if the user identity of that person was recorded.  In HAT it displays the fact that it was terminated by a user.  This would be much more useful for auditing purposes if it showed which user.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Tracking execution across the BizTalk Group with HAT&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Unless ive completely missed this, HAT does not show which server instances execute on within a group.  It would be really useful to see for message flow which servers the ports or orchestration shapes run on.  You can get scenarios where say a retry would succeed or a shape only faily intermittently and this ability would help with troubleshooting as you could confirm if it is a potential machine related issue.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Expose Maps as providers&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Generally you hear mixed opinions about BizTalk mapping (some like it and some dont).  Ive worked on projects before where a third party mapping tool was used and this was used.  What would be a nice feature would be if maps were implemented in BizTalk using a provider style pattern.  This would allow you to develop custom mapping components which could implement the same interface and then be loaded into BizTalk and used as if they were a normal BizTalk map.&lt;/p&gt;
&lt;p&gt;At present when you use a third party or custom component you usually end up having to implement a custom pipeline component to call the mapping component.  If a pattern as im suggesting was available it would allow these external map providers to implement their mapping capabilities in a way that would keep your BizTalk map implementations consistent&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Do we really need the pipeline designer?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As we have per instance pipeline features I think the value of the pipeline designer is now limited.  An interesting discussion is should we just get rid of the pipeline artifact and its designer.  The alternative would be that the bindings would contain the list of pipeline components which would be used for a pipeline.  This would mean you could at runtime add a new pipeline component without having to redeploy your pipeline.&lt;/p&gt;
&lt;p&gt;I thought about this as an idea when using the Pipeline Component Test Library which can create a pipeline in code on the fly and then execute it.  This is essentially what im saying here, you would specify the make up of the pipeline on a per instance basis in the port configuration which then create a  pipeline at runtime as you specify and execute it.&lt;/p&gt;
&lt;p&gt;Be interested in anyones thoughts on this - maybe ill try and knock up a sample pipeline component which could demonstrate the concept of this by executing a pipeline within a pipeline :-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Nested artifacts in BizTalk projects&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have a BizTalk project and add a folder in it then add a BizTalk artifact to the folder.  The artifact does not include the folder name in its namespace (the way classes would in a C# project).  I think it would be very useful if it did.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Solicit Response and Errors&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I think the development pattern for consuming a solicit response port and being able to handle errors in an orchestration is overly complicated.  In most cases you want to do the following scenarios:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Call a service, if it gets an error log it (with some custom details) and then return a an appropriate error out of the orchestration &lt;/li&gt;
    &lt;li&gt;Call a service, if you get an error log it (with custom details) and then stop to allow manual resumption by an administrator where the service call will be replayed &lt;/li&gt;
    &lt;li&gt;And a few others &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The basic problems are as follows:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;If you need to resume the call because the errored response is associated with the orchestration it often just suspends straightaway without actually calling the service again (see the following thread for more info: &lt;font face="Arial"&gt;&lt;a href="http://www.microsoft.com/communities/newsgroups/list/en-us/default.aspx?dg=microsoft.public.biztalk.orchestration&amp;amp;tid=e66f9f24-a412-4ac1-ac7f-fefd7bfe08a2&amp;amp;cat=&amp;amp;lang=&amp;amp;cr=&amp;amp;sloc=&amp;amp;p=1"&gt;http://www.microsoft.com/communities/newsgroups/list/en-us/default.aspx?dg=microsoft.public.biztalk.orchestration&amp;amp;tid=e66f9f24-a412-4ac1-ac7f-fefd7bfe08a2&amp;amp;cat=&amp;amp;lang=&amp;amp;cr=&amp;amp;sloc=&amp;amp;p=1&lt;/a&gt;)&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;You end up with scope shapes and decision shapes making the logic look much more complicated than it should so you can get it to compile without having all sorts of compilation error messages such as "cant send before you receive" etc &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To be honest I think you just end up with an orchestration which looks a bit of a hack for a process flow which should be fairly simple&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Adapter generated schemas create an orchestration&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;When you use the adapter metadata generation wizards to produce a schema to call your service (WCF, SQL, SOAP, etc) they always produce an emply orchestration file (which im guessing someone who has never done a BizTalk project thought would be very cool).  This really annoys me because any real project is going to probably have orchestrations in a different assembly anyway.  If it atleast contained a half implemented orchestration it might be useful but everyone I know just deletes them, so it would be useful if they just werent produced in the first place.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Passwords in BizTalk Admin Console/Exported Bindings&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;It would be really useful if you were in the BizTalk Administrator Group and you were viewing a ports configuration if you could have an option to see password type values in clear text.  As you are the administrator you will have entered these credentials anyway but it allows you to confirm you have entered it correctly.&lt;/p&gt;
&lt;p&gt;The same also applies to an administrator wanting to export the bindings, by default it should be as is, but I should have an option (if im in the BizTalk admin group) to be able to have the password type values in clear text.  This saves me ages in having to go and manually change the file which I might get wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;These are the off the top of my head list of things for now.  As things come up ill add more later.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121686"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121686" 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/michaelstephenson/aggbug/121686.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>michael stephenson</dc:creator>
            <guid>http://geekswithblogs.net/michaelstephenson/archive/2008/04/27/121686.aspx</guid>
            <pubDate>Sun, 27 Apr 2008 15:52:52 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/michaelstephenson/comments/121686.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/michaelstephenson/archive/2008/04/27/121686.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/michaelstephenson/comments/commentRss/121686.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/michaelstephenson/services/trackbacks/121686.aspx</trackback:ping>
        </item>
    </channel>
</rss>