<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Victor Fehlberg's Tech Postings</title>
	<atom:link href="http://fehlberg.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fehlberg.wordpress.com</link>
	<description>Lessons learned in BizTalk Server, C# and Java</description>
	<lastBuildDate>Thu, 05 Jan 2012 07:58:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fehlberg.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Victor Fehlberg's Tech Postings</title>
		<link>http://fehlberg.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fehlberg.wordpress.com/osd.xml" title="Victor Fehlberg&#039;s Tech Postings" />
	<atom:link rel='hub' href='http://fehlberg.wordpress.com/?pushpress=hub'/>
		<item>
		<title>BizTalk Adapter 3.0 and Oracle Stored Procedures</title>
		<link>http://fehlberg.wordpress.com/2010/09/10/biztalk-adapter-3-0-and-oracle-stored-procedures/</link>
		<comments>http://fehlberg.wordpress.com/2010/09/10/biztalk-adapter-3-0-and-oracle-stored-procedures/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 15:37:14 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=120</guid>
		<description><![CDATA[13-Sep-2010 Update: After reading this post read Charles&#8217; comment &#8211; perhaps there&#8217;s just a mix-up on versions (although I haven&#8217;t verified this yet). I was helping advise another coworker on a project where we wanted to use a WCF Oracle receive location to pull data from a database.  The poll query looked something like select [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=120&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="color:#ff0000;"><strong>13-Sep-2010 Update</strong>: After reading this post read Charles&#8217; comment &#8211; perhaps there&#8217;s just a mix-up on versions (although I haven&#8217;t verified this yet).</span></p>
<p>I was helping advise another coworker on a project where we wanted to use a WCF Oracle receive location to pull data from a database.  The poll query looked something like <strong>select * from tablename where flag = &#8216;R&#8217;</strong> <strong>for update</strong> and the post-poll statement did something like <strong>update tablename set flag = &#8216;P&#8217;.</strong>  In order to avoid the possibility that additional &#8216;R&#8217; records would be written after the select statement but before the update statement (which would cause the also to be updated to &#8216;P&#8217; without being queried) I had chosen to use a <strong>serializable </strong>isolation level.  However, there was a concern that locking the whole table, even if for a short period, might cause a problem.  Instead we decided to use a stored procedure that would return the records for us and ensure that only the records returned would be updated.  Sounds simple enough, right?</p>
<p>Well, this is where I was thoroughly disappointed with the development team that worked on the BizTalk Adapter Pack 3.0.  I had found Microsoft articles, Microsoft code samples, etc. explaining how to call a stored procedure in a WCF Oracle receive location, but for some reason my coworker couldn&#8217;t get any of them to work (<a href="http://msdn.microsoft.com/en-us/library/dd788064(BTS.10).aspx">here&#8217;s an example</a> of one such Microsoft page).  I decided to slow down and take a look myself.   I was initially confused too, until I came across <a href="http://msdn.microsoft.com/en-us/library/cc185214%28BTS.10%29.aspx">this page</a> and read &#8220;the Oracle Database adapter does not support stored procedures in polling. To address this issue, the Oracle Database adapter enables clients to specify a polling query and a post poll query.&#8221;  Of course I had to laugh at this point because our reason for wanting to use a stored procedure was because the polling query and post poll statement was too limiting.</p>
<p>Microsoft has done something that they rarely do &#8211; they removed functionality in a newer version of the their product.  Whereas previously you could call a stored procedure in a WCF Oracle receive location, you no longer can.  I couldn&#8217;t believe it.  Undoubtedly it has something to do with a disagreement between Microsoft and Oracle on something or rather, but it&#8217;s still very disappointing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=120&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2010/09/10/biztalk-adapter-3-0-and-oracle-stored-procedures/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk Performance and DNS</title>
		<link>http://fehlberg.wordpress.com/2010/03/11/biztalk-performance-and-dns/</link>
		<comments>http://fehlberg.wordpress.com/2010/03/11/biztalk-performance-and-dns/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 19:04:31 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=117</guid>
		<description><![CDATA[We recently solved a performance problem that had been plaguing us for quite some time on one of our Test/QA BizTalk Application servers.  Even if you aren&#8217;t experiencing the problem to the full extent that we were, I&#8217;ll bet I can improve your performance too &#8211; want to try?  Here&#8217;s a brief summary of our problem: We [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=117&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We recently solved a performance problem that had been plaguing us for quite some time on one of our Test/QA BizTalk Application servers.  <strong>Even if you aren&#8217;t experiencing the problem to the full extent that we were, I&#8217;ll bet I can improve your performance too &#8211; want to try</strong>?  Here&#8217;s a brief summary of our problem:</p>
<p>We have two servers in this BizTalk group.  I&#8217;ll call them Primary and Secondary.  Primary is the SSO Server.  It was also the slow performing server.  We had our system admin folks look into the server to see if maybe we had some failing hardware.  They came back and said everything was fine.  As the problem continued we started to notice that it really only performed slow when contacting the database.  Primary and Secondary are in the same data center, so this seemed a little strange.  Since Secondary was performing well, we knew the problem wasn&#8217;t the database.  We then had the network engineers look into things.  I&#8217;m not sure exactly what they did but they came back and said that the network was fine.</p>
<p>We ran Microsoft Network Monitor 3.3 and found that Primary was contacting its secondary DNS server for lookups on the database name (which happened to reside in another state, which explains part of the performance problem).  To make a long story short, we eventually figured out that the primary DNS server had been entered slightly incorrectly on one of the two servers (Primary) &#8211; instead of a 220, there was a 200 somewhere in the IP address.</p>
<p>So what?  How can this help you?  Well, we found that even when the primary DNS server was corrected, there were still excessive DNS lookups taking place.  When we exported all bindings from our BizTalk Group using the Admin console, the operation took 40 seconds after the correction was made (previously it would take minutes).  We then added our database name to the hosts file in c:\windows\system32\drivers\etc\, something like this:</p>
<p>123.222.45.162  databasename<br />
123.222.45.162  databasename.full.domain.name</p>
<p>After doing this, the same export command took 20 seconds!  So, here&#8217;s my question to you (please add a comment): <strong>How long does it take for you to export the bindings for all your applications using the Admin Console?  If you add a hosts entry for your db server, what kind of performance gain (if any) do you see?</strong></p>
<p>As I thought about this, I think adding the entries to the host file makes a lot of sense.  After all, my db server&#8217;s IP address is static.  I would know about it should it ever need to change.  Is there really a point in making DNS lookups every X milliseconds?  I don&#8217;t think this would be needed if the DNS cache were being used; however, it seems the way the Admin Console was built it is ignoring the DNS cache.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=117&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2010/03/11/biztalk-performance-and-dns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
		<item>
		<title>SP1 and the Oracle Adapter in BizTalk Adapter Pack 2.0</title>
		<link>http://fehlberg.wordpress.com/2010/03/10/sp1-and-the-oracle-adapter-in-biztalk-adapter-pack-2-0/</link>
		<comments>http://fehlberg.wordpress.com/2010/03/10/sp1-and-the-oracle-adapter-in-biztalk-adapter-pack-2-0/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 16:28:22 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=109</guid>
		<description><![CDATA[I experienced the following problem the other day when trying to configure a WCF-Oracle send port after installing SP1 for BizTalk 2006 R2.  I believe the problem would show itself when using BizTalk Adapter Pack 1.0 as well, but I didn&#8217;t verify this. Here&#8217;s a text version of the error: &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; WCF-Oracle Transport Properties &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; Error [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=109&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I experienced the following problem the other day when trying to configure a WCF-Oracle send port after installing SP1 for BizTalk 2006 R2.  I believe the problem would show itself when using BizTalk Adapter Pack 1.0 as well, but I didn&#8217;t verify this.</p>
<p><a href="http://fehlberg.files.wordpress.com/2010/03/2010-03-10_oracle_error1.png"><img class="alignnone size-full wp-image-113" title="WCF-Oracle Error" src="http://fehlberg.files.wordpress.com/2010/03/2010-03-10_oracle_error1.png?w=600" alt=""   /></a></p>
<p>Here&#8217;s a text version of the error:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
WCF-Oracle Transport Properties<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Error loading properties.</p>
<p>(System.MissingMethodException) Method not found: &#8216;System.Configuration.ConfigurationElement Microsoft.BizTalk.Adapter.Wcf.Converters.BindingFactory.CreateBindingConfigurationElement(System.String, System.String)&#8217;.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>I know I&#8217;m not the first person to encounter this problem because I&#8217;ve seen <a href="http://blogs.msdn.com/biztalk_server_team_blog/archive/2010/01/29/biztalk-server-2006-r2-sp1-now-available.aspx">a comment posted elsewhere</a>, but I might be the first person to discuss it a little more in detail.   The problem apparently affects not only WCF-Oracle send ports but also WCF-SQL.  Viragg is correct in his comment that there was a breaking change done in Microsoft.BizTalk.Adapter.Wcf.Common.dll  to the method BindingFactory.CreateBindingConfigurationElement with Sp1. As he mentions, the SP1 version it takes 3 parameters while the pre-SP1 version only takes 2 parameters.</p>
<p>So what should you do?  Well, you can get away with just using the WCF-Custom adapter and using the appropriate binding type, e.g. oracleBinding or sqlBinding.</p>
<p>Admittedly, it&#8217;s kind of annoying that you have to do this, but it works.  Where it would really be a pain is if you were upgrading a production environment and had to do this reconfiguration, which might require your change control process to be used, etc.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=109&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2010/03/10/sp1-and-the-oracle-adapter-in-biztalk-adapter-pack-2-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2010/03/2010-03-10_oracle_error1.png" medium="image">
			<media:title type="html">WCF-Oracle Error</media:title>
		</media:content>
	</item>
		<item>
		<title>The Oracle Adapter in BizTalk Adapter Pack v2.0</title>
		<link>http://fehlberg.wordpress.com/2010/02/12/the-oracle-adapter-in-biztalk-adapter-pack-v2-0/</link>
		<comments>http://fehlberg.wordpress.com/2010/02/12/the-oracle-adapter-in-biztalk-adapter-pack-v2-0/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 23:17:03 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=103</guid>
		<description><![CDATA[Has anyone been successful creating schemas based off of an Oracle package using the new Oracle adapter (BAP v2.o)?  We had a Business Adapter Pack v1.0 send port that utilized an Oracle package.  When we upgraded to v2.0, it stopped working showing an error like this: Event Type: Warning Event Source: BizTalk Server 2006 Event Category: (1) Event [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=103&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Has anyone been successful creating schemas based off of an Oracle package using the new Oracle adapter (BAP v2.o)?  We had a Business Adapter Pack v1.0 send port that utilized an Oracle package.  When we upgraded to v2.0, it stopped working showing an error like this:</p>
<table border="0" bgcolor="#eeeeee">
<tbody>
<tr>
<td>Event Type: Warning<br />
Event Source: BizTalk Server 2006<br />
Event Category: (1)<br />
Event ID: 5743<br />
Date:  2/12/2010<br />
Time:  11:57:06 AM<br />
User:  N/A<br />
Computer: YOUR_SERVER<br />
Description:<br />
The adapter failed to transmit message going to send port &#8220;ProcessGSTUpsert.WCF&#8221; with URL &#8220;oracledb://oracle_server_name/&#8221;. It will be retransmitted after the retry interval specified for this Send Port. Details:&#8221;Microsoft.ServiceModel.Channels.Common.TargetSystemException: ORA-06550: line 2, column 1:<br />
PLS-00306: wrong number or types of arguments in call to &#8216;UPDATE_PROCEDURE&#8217;<br />
ORA-06550: line 2, column 1:<br />
PL/SQL: Statement ignored &#8212;&gt; Oracle.DataAccess.Client.OracleException ORA-06550: line 2, column 1:<br />
PLS-00306: wrong number or types of arguments in call to &#8216;UPDATE_PROCEDURE&#8217;<br />
ORA-06550: line 2, column 1:<br />
PL/SQL: Statement ignored    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)<br />
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src)<br />
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()<br />
at Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery(OracleCommand command, OracleCommonExecutionHelper executionHelper)<br />
&#8212; End of inner exception stack trace &#8212;<br />
&lt;Server stack trace:<br />
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)<br />
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)<br />
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)<br />
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)Exception rethrown at [0]:<br />
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)<br />
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp; msgData, Int32 type)<br />
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)<br />
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)&#8221;.</td>
</tr>
</tbody>
</table>
<p>I tried recreating the schema used by the Oracle adapter, but it complains as follows:</p>
<table border="0" bgcolor="#eeeeee">
<tbody>
<tr>
<td>The categories in the &#8216;Added categories and operations&#8217; list contain no operations for metadata generation.</td>
</tr>
</tbody>
</table>
<p>This worked before the upgrade.  Any ideas?</p>
<p><span style="color:#ff0000;">15-Feb-2010 Update:</span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;">See my reply to Antti &#8211; the runtime aspect of the problem was figured out.  I&#8217;ll see if I can find a solution to the schema-generation problem.</span><br />
</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=103&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2010/02/12/the-oracle-adapter-in-biztalk-adapter-pack-v2-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk Server 2006 R2 SP1 &#8211; Have you tried it?</title>
		<link>http://fehlberg.wordpress.com/2010/02/05/biztalk-server-2006-r2-sp1-have-you-tried-it/</link>
		<comments>http://fehlberg.wordpress.com/2010/02/05/biztalk-server-2006-r2-sp1-have-you-tried-it/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 16:43:07 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=95</guid>
		<description><![CDATA[As you may know, SP1 for BizTalk 2006 R2 was released about a week ago.  Reading the BizTalk Server Team blog, it sounds quite impressive &#8211; like an update I would surely want on my servers.  However, in troubleshooting with Microsoft a problem I have with performance on one of our servers, the gentleman I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=95&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As you may know, <a title="BizTalk 2006 R2 SP1" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=1768f7a3-d843-4f5b-aba7-b3d72892c16f">SP1 for BizTalk 2006 R2</a> was released about a week ago.  Reading the <a title="BizTalk Server Team Blog" href="http://blogs.msdn.com/biztalk_server_team_blog/archive/2010/01/29/biztalk-server-2006-r2-sp1-now-available.aspx"> BizTalk Server Team blog</a>, it sounds quite impressive &#8211; like an update I would surely want on my servers.  However, in troubleshooting with Microsoft a problem I have with performance on one of our servers, the gentleman I worked with recommended I not install it &#8211; at least not yet.  That puzzled me a bit.  He indicated that he had one customer who installed it, and after having a problem, was having trouble reversing (uninstalling) the service pack.</p>
<p>So I thought it&#8217;d be interesting to get your opinion on SP1.  Have you installed it?  Did you have any trouble?  Did you notice any of the benefits described by the product team?  Let me know how well your experience went.</p>
<p>[<span style="color:#ff0000;">Update as of 8-Feb-2010</span>]:</p>
<p>One of the Microsoft Escalation Engineers read my post and wanted me to feel certain that there aren&#8217;t any issues with the installation of SP1 for BizTalk 2006 R2.  Apparently the only &#8220;issue&#8221;, if you can call it that, is that the DB schema changes with SP1, so if a rollback was required, it is more complicated because the database needs to be restored to a time point pre-Sp1.  I guess I should add that the uninstallation is not supported by Microsoft either.  I&#8217;d certainly read through the SP1 Installation Guide though before starting the upgrade process.  There&#8217;s a lot to check before installing.</p>
<p>Because SP1 sounds like it has a lot of improvements I&#8217;m going to have SP1 installed on our servers soon &#8211; I&#8217;ll post an update once that happens (it will take a few weeks to get this into production).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=95&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2010/02/05/biztalk-server-2006-r2-sp1-have-you-tried-it/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk Disaster Recovery Planning</title>
		<link>http://fehlberg.wordpress.com/2010/01/05/biztalk-disaster-recovery-planning/</link>
		<comments>http://fehlberg.wordpress.com/2010/01/05/biztalk-disaster-recovery-planning/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 23:14:37 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=91</guid>
		<description><![CDATA[I agree with Nick Heppleston&#8217;s post entirely in that you had better test your DR plan in advance of the real disaster if you really want it to work!  I can speak from experience here &#8211; my company&#8217;s previous plan sounded perfectly fine to me when I worked on it.  In fact, when I discussed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=91&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I agree with <a href="http://www.modhul.com/2009/06/29/configuring-biztalk-for-disaster-recovery-part-1/">Nick Heppleston&#8217;s post</a> entirely in that you had better test your DR plan in advance of the real disaster if you really want it to work!  I can speak from experience here &#8211; my company&#8217;s previous plan sounded perfectly fine to me when I worked on it.  In fact, when I discussed the plan with Tim Wieman and Ewan Fairweather they also agreed that it sounded reasonable (to their credit they didn&#8217;t get to see a written plan <strong>and </strong>they both cautioned that I had better test things to be sure).  But, as you can probably already guess, when tested, the plan didn&#8217;t work.  In this post I&#8217;ll talk about what I did (that didn&#8217;t work) so that you can avoid doing the same thing, and then point out a shortcoming in the MSDN documentation, as I see it.</p>
<p>Here&#8217;s what I attempted to do.  Since our test/QA environment resides in another data center, far away from our production environment, we decided to use the test environment as our DR environment in the case of a lasting failure in the normal production site.  In a few words, <strong>we were planning for a scenario where we&#8217;d lose both the BizTalk application servers and the  SQL Server databases</strong>.  We thought this was reasonable since many disasters could easily prevent both sets of hardware to stop functioning for an extended period of time.</p>
<p>Here&#8217;s a high-level overview of the steps we had in place before the disaster:</p>
<ol>
<li>We had configured regular backups with transaction log shipping on the destination (DR) database server.</li>
<li>We had the IIS web directories and GAC of the BizTalk application servers backed up to the DR BizTalk application servers.</li>
<li>We had a backup of the master secret available on the DR BizTalk application servers.</li>
</ol>
<p>Here&#8217;s a high-level overview of the steps we had after the disaster:</p>
<ol>
<li>Recover the production binaries and production web directories onto the test servers.</li>
<li>Restore the production database using the DR instance.</li>
<li>Unconfigure the test BizTalk application servers.</li>
<li>Run the UpdateDatabase.vbs script and UpdateRegistry.vbs script on the test BizTalk application servers.</li>
<li>Reconfigure the test BizTalk application servers, joining the SSO and BizTalk Groups.</li>
<li>Recover Enterprise Single Sign-On.</li>
</ol>
<p>In early November, we tested the scenario.  To make a long story short, it didn&#8217;t work.  Microsoft, also uncertain why things didn&#8217;t work (at first anyway), suggested a &#8220;hack&#8221; to get things working.  That hack would then be reviewed by the product team, which would hopefully provide their final blessing.  The hack involved editing the SSOX_GlobalInfo table (part of the SSODB), updating gi_SecretServer with the &#8220;new&#8221; test server that would become the master secret server.  It appeared that it worked at first, but a deeper look into things showed that we were wrong (it only appeared to be working because the real production master secret server had been brought up by that point &#8211; since the DR exercise was taking too long &#8211; so that both BizTalk groups were running at the same time).</p>
<p>The problem that we faced can be summarized as follows: the MSDN documentation makes an assumption, which wasn&#8217;t true in our case.  Specifically, Microsoft expects the new master secret server (the test BizTalk app server in our case), to have the same name as the previous master secret server <strong>OR </strong>for the new master secret server to already be a part of the group prior to the disaster (of course it wouldn&#8217;t have been the master secret server prior to the disaster).  These limitations don&#8217;t really have anything to do with BizTalk, but rather with the Enterprise Single Sign-On product.  I think they are unrealistic expectations, but limitations nonetheless.</p>
<p>In conclusion, you had better test out your DR scenario if you haven&#8217;t already, or be prepared for some ugly surprises.  Please share your experiences with me.  What does your DR plan assume?  Have you had a nasty experience?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=91&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2010/01/05/biztalk-disaster-recovery-planning/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk Map Bug Causes Inconsistent Results</title>
		<link>http://fehlberg.wordpress.com/2009/11/11/biztalk-map-bug-causes-inconsistent-results/</link>
		<comments>http://fehlberg.wordpress.com/2009/11/11/biztalk-map-bug-causes-inconsistent-results/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 21:06:46 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=85</guid>
		<description><![CDATA[I found what I would call a bug with the BizTalk Mapper (does anyone dare call it a feature?).  Let me show a simple version of the problem I encountered: I created a BizTalk project that contains a map that calls an external assembly (in my case part of the same solution), such as: My [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=85&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I found what I would call a bug with the BizTalk Mapper (does anyone dare call it a feature?).  Let me show a simple version of the problem I encountered:</p>
<p>I created a BizTalk project that contains a map that calls an external assembly (in my case part of the same solution), such as:</p>
<p><img class="alignnone size-full wp-image-87" title="BizTalk Solution contains a Reference" src="http://fehlberg.files.wordpress.com/2009/11/2009_11_11_solution.png?w=600" alt="BizTalk Solution contains a Reference"   /></p>
<p><img src="http://fehlberg.files.wordpress.com/2009/11/2009_11_11_map.png?w=600" alt="" /></p>
<p>My external assembly is version 1.0.0.0, compiled in Development mode, and it looks like this:</p>
<p>public class Helper<br />
{</p>
<p style="padding-left:30px;">public string ReturnVersion(string ignore)<br />
{<br />
return &#8220;1.0.0.0&#8243;;<br />
}</p>
<p>}</p>
<p>I deployed the map and the assembly.  I tested the map.  Sure enough, &#8220;1.0.0.0&#8243; is mapped to &#8220;SomethingElse&#8221;.  No surprises yet.</p>
<p>I then changed the ReturnVersion function to return &#8220;1.0.0.1&#8243;.  Similarly, I incremented the version of the external assembly and BizTalk project and compiled in Release mode (let&#8217;s pretend I&#8217;m done with development and I&#8217;m now ready to release).  I double checked the references in the Solution Explorer &#8211; sure enough Blog.ShowMapBug.Utilities shows the new version as the reference.</p>
<p><img class="alignnone size-full wp-image-88" title="Properties Window" src="http://fehlberg.files.wordpress.com/2009/11/2009_11_11_properties_window.png?w=600" alt="Properties Window"   /></p>
<p>I deployed the solution and GAC&#8217;d the assembly.  I updated my send port to use the new map.  I restarted the Host Instance.  I then tested things out.  What would you expect to get mapped to SomethingElse?  1.0.0.1, right?  Well it doesn&#8217;t work.  1.0.0.0 still shows up.  Why?</p>
<p>If I open the BizTalk map in an XML editor and search for the assembly, I find:</p>
<p>&lt;Script Language=&#8221;ExternalAssembly&#8221; Assembly=&#8221;Blog.ShowMapBug.Utilities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e767c75a9f3ac928&#8243; Function=&#8221;ReturnVersion&#8221; AssemblyPath=&#8221;..\Blog.ShowMapBug.Utilities\obj\Debug\Blog.ShowMapBug.Utilities.dll&#8221; /&gt;</p>
<p>So, you&#8217;re now thinking what I thought.  Okay, just update the Version number there, right?  Nope.  It turns out that the version number here gets ignored altogether and &#8220;1.0.0.0&#8243; will continue to get mapped to &#8220;SomethingElse&#8221; (using the old assembly).</p>
<p>So what&#8217;s going on?  It turns out that the problem is the AssemblyPath reference.  It&#8217;s pointing at the &#8220;Debug&#8221; version of the external assembly.  Once deployed, you&#8217;d THINK this wouldn&#8217;t be a problem, but it is.  The only way to fix this problem is to point the DLL at the Release mode version of the file, i.e. AssemblyPath=&#8221;..\Blog.ShowMapBug.Utilities\obj\<strong>Release</strong>\Blog.ShowMapBug.Utilities.dll.</p>
<p>Amazing, isn&#8217;t it?  Of course in this simple scenario it wasn&#8217;t too hard to follow.  But of course real maps, real external assemblies and real projects are much more complex, and it took me a few hours to figure out why in the world the project wasn&#8217;t behaving as it was expected to.</p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=85&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2009/11/11/biztalk-map-bug-causes-inconsistent-results/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/11/2009_11_11_solution.png" medium="image">
			<media:title type="html">BizTalk Solution contains a Reference</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/11/2009_11_11_map.png" medium="image" />

		<media:content url="http://fehlberg.files.wordpress.com/2009/11/2009_11_11_properties_window.png" medium="image">
			<media:title type="html">Properties Window</media:title>
		</media:content>
	</item>
		<item>
		<title>Switch from WCF-BasicHttp to WCF-WSHttp in BizTalk?</title>
		<link>http://fehlberg.wordpress.com/2009/10/30/switch-from-wcf-basichttp-to-wcf-wshttp-in-biztalk/</link>
		<comments>http://fehlberg.wordpress.com/2009/10/30/switch-from-wcf-basichttp-to-wcf-wshttp-in-biztalk/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 17:11:04 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=75</guid>
		<description><![CDATA[I learned a new trick that I know someone out there will appreciate&#8230; First, here&#8217;s a little background. Some time ago, when I hosted my first BizTalk service with WCF, I ran the BizTalk WCF Service Publishing Wizard and was prompted for an adapter name.  I chose WCF-BasicHttp, assuming that I could easily change this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=75&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I learned a new trick that I know someone out there will appreciate&#8230;</p>
<p>First, here&#8217;s a little background. Some time ago, when I hosted my first BizTalk service with WCF, I ran the BizTalk WCF Service Publishing Wizard and was prompted for an adapter name.  I chose WCF-BasicHttp, assuming that I could easily change this later (as most of you out there, it&#8217;s nice to start with no security, get things working, and then progress to enable more complicated security schemes).<br />
<img class="alignnone size-full wp-image-76" title="BizTalk WCF Publishing Wizard" src="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_publishing_wizard.png?w=600" alt="BizTalk WCF Publishing Wizard"   /></p>
<p>And for those that I haven&#8217;t done this before: After finishing the wizard, the next steps involve verifying/fixed the IIS app pool settings and enabling the receive location.  After that, you should be able to browse the service.  Something like this should appear:</p>
<p><img class="alignnone size-full wp-image-77" title="Browse WCF Service" src="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_svc_browse.png?w=600" alt="Browse WCF Service"   /></p>
<p>If you click on the link to browse the WSDL, you&#8217;d find that there is no advanced policy configuration.</p>
<p>Great, we&#8217;ve got our basic http service up.  At some point, you might want something a little more secure, and this was my initial frustration.  I opened up the BizTalk Admin Console, found the receive location hosting the service, and switched from WCF-BasicHttp to WCF-WSHttp.  As part of this, in my case, I added the URI, specified a Security mode of Transport, and a Transport client credential type of Basic.</p>
<p><img class="alignnone size-full wp-image-78" title="WCF-WSHttp Receive Location" src="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_rcv_location.png?w=600" alt="WCF-WSHttp Receive Location"   /></p>
<p>I accepted the changes, made sure the receive location was enabled, and tried browsing my service again.</p>
<p><img class="alignnone size-full wp-image-79" title="Error Browsing the WSHttp Service" src="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_svc_error.png?w=600" alt="Error Browsing the WSHttp Service"   /></p>
<p>But, as you can see, it didn&#8217;t work.  At the time, not knowing how to fix this, I re-ran the wizard, chose WSHttp, etc.  That made the WSHttp service browsable, but I was frustrated that I had to re-run the wizard, and I happened to have chosen a slightly different naming for the operation, which caused additional headache and rework, etc.</p>
<p>That&#8217;s why I&#8217;m writing this post.  <strong>There&#8217;s a better way</strong>.  Let&#8217;s go back in time&#8230; instead of re-running the wizard and choosing the WSHttp adapter (or Custom-Isolated), I could have simply changed the .svc file, i.e. C:\Inetpub\wwwroot\HelloWorldService\HelloWorld.svc.  The file originally had this inside it:</p>
<p>&lt;%@ ServiceHost Language=&#8221;c#&#8221; Factory=&#8221;Microsoft.BizTalk.Adapter.Wcf.Runtime.<strong>BasicHttp</strong>WebServiceHostFactory, Microsoft.BizTalk.Adapter.Wcf.Runtime, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&#8243; %&gt;</p>
<p>I changed the HelloWorld.svc ever so slightly to read:</p>
<p>&lt;%@ ServiceHost Language=&#8221;c#&#8221; Factory=&#8221;Microsoft.BizTalk.Adapter.Wcf.Runtime.<strong>WSHttp</strong>WebServiceHostFactory, Microsoft.BizTalk.Adapter.Wcf.Runtime, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&#8243; %&gt;</p>
<p>I saved the file, and&#8230; (drum roll please)</p>
<p><img class="alignnone size-full wp-image-81" title="WSHttp WSDL" src="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_wshttp_wsdl1.png?w=600" alt="WSHttp WSDL"   /></p>
<p>It works!  Here I&#8217;m showing the WSHttp WSDL.  You&#8217;ll notice that you see the corresponding policy information in the file.</p>
<p>So, in conclusion,<strong> yes you can start with one WCF adapter type and switch it later</strong> by 1) updating the receive location in the Admin Console, and 2) updating the .svc file.  For reference here are factory values for the .svc file that the wizard allows you to pick from:</p>
<p>BasicHttp: Microsoft.BizTalk.Adapter.Wcf.Runtime.BasicHttpWebServiceHostFactory</p>
<p>WSHttp: Microsoft.BizTalk.Adapter.Wcf.Runtime.WSHttpWebServiceHostFactory</p>
<p>Custom-Isolated: Microsoft.BizTalk.Adapter.Wcf.Runtime.CustomWebServiceHostFactory</p>
<p>Good luck!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=75&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2009/10/30/switch-from-wcf-basichttp-to-wcf-wshttp-in-biztalk/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_publishing_wizard.png" medium="image">
			<media:title type="html">BizTalk WCF Publishing Wizard</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_svc_browse.png" medium="image">
			<media:title type="html">Browse WCF Service</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_rcv_location.png" medium="image">
			<media:title type="html">WCF-WSHttp Receive Location</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_svc_error.png" medium="image">
			<media:title type="html">Error Browsing the WSHttp Service</media:title>
		</media:content>

		<media:content url="http://fehlberg.files.wordpress.com/2009/10/2009_10_30_wshttp_wsdl1.png" medium="image">
			<media:title type="html">WSHttp WSDL</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk R2 Authorization using WCF</title>
		<link>http://fehlberg.wordpress.com/2009/10/06/biztalk-r2-authorization-using-wcf/</link>
		<comments>http://fehlberg.wordpress.com/2009/10/06/biztalk-r2-authorization-using-wcf/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:29:24 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=64</guid>
		<description><![CDATA[As some of you may have noticed, I gave a rather scathing review of how WCF implements authorization (and hence how R2 implements authorization for WCF services).  To see that post, click here.  Although I&#8217;m still very disappointed, I&#8217;d like to share an approach that accomplishes the goal I had in mind: being able to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=64&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As some of you may have noticed, I gave a rather scathing review of how WCF implements authorization (and hence how R2 implements authorization for WCF services).  To see that post, <a title="BizTalk R2 WCF Authorization" href="http://fehlberg.wordpress.com/2009/06/18/biztalk-r2-wcf-authorization/">click here</a>.  Although I&#8217;m still very disappointed, I&#8217;d like to share an approach that accomplishes the goal I had in mind: being able to dynamically specify, via means of configuration, the users that should have access rights to the service.  This approach was built by Vijay Naidu, a colleague of mine.</p>
<p>Vijay read my first blog, and took the time to &#8220;code&#8221; authorization into his web service.  With a little tuning, the solution you&#8217;re about to see resulted, which I think is much better than the out-of-the-box solution.  This solution leverages the SSO database to store the authorized users (the code example you&#8217;ll see in this post is written to authorize a single user, but hopefully you wouldn&#8217;t have trouble using a delimited list of users).  In addition, Vijay&#8217;s solution creates a shared component that can be leveraged by multiple projects without recoding the initial setup.  When mixed with <a href="http://seroter.wordpress.com/2007/09/21/biztalk-sso-configuration-data-storage-tool/">Richard Seroter&#8217;s SSO storage tool</a> (I use the <a href="http://geekswithblogs.net/paulp/archive/2008/05/16/122205.aspx">variant by Paul Petrov</a>), you&#8217;ll find that you can set up authorization dynamically.  Hence, I figured you might be interested.  Here were the steps involved:</p>
<p>First, the machine.config file was modified adding this entry:</p>
<table border="0" width="500px" bgcolor="#eeeeee">
<tbody>
<tr>
<td>&lt;system.serviceModel&gt;<br />
&lt;extensions&gt;<br />
&lt;behaviorExtensions&gt;<br />
&lt;add name=&#8221;AcmeWCFCustomAuth&#8221; type=&#8221;Acme.WcfServiceBehaviors.CustomBehaviorElement, Acme.WcfServiceBehaviors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=02ae73d8d306f338&#8243; /&gt;<br />
&lt;/behaviorExtensions&gt;<br />
&lt;/extensions&gt;<br />
&lt;/system.serviceModel&gt;</td>
</tr>
</tbody>
</table>
<p>Secondly, this code was written and added to an assembly (the one mentioned above in the machine.config file).</p>
<table border="0" width="500" bgcolor="#eeeeee">
<tbody>
<tr>
<td>if (context.PrimaryIdentity.IsAuthenticated)<br />
{<br />
userName = context.PrimaryIdentity.Name;<br />
//Get the application name for parsing the Endpoint Uri Absolutepath (ex: /Acme.GlobalSafety.EnsureSafety/ImportantAuth.svc)<br />
ApplicationName = operationContext.EndpointDispatcher.EndpointAddress.Uri.AbsolutePath.ToString();<br />
WcfUriAbsolutePath = ApplicationName.Split(&#8216;/&#8217;);<br />
ApplicationName = WcfUriAbsolutePath[1].ToString();(ex: Acme.GlobalSafety.EnsureSafety)<br />
//Get the SSO Config entry for the user to authenticate (ex: domain\LoginUser).  This call refers to the SSO tool mentioned earlier<br />
wcfAuthUserName = Acme.SSO.Utility.SSOConfigHelper.Read(ApplicationName, &#8220;WCFClientAuthUserName&#8221;);<br />
if (string.Compare(userName.ToUpper(), wcfAuthUserName.ToUpper()) != 0)<br />
return false; //this returns an access denied error<br />
}</td>
</tr>
</tbody>
</table>
<p>This assembly was then compiled, installed in the GAC, and the BizTalk host was restarted.  Next, using the BizTalk Administrator, a Request/Response WCF-Custom receive location was created.  Under the Service Behavior tab the AcmeWCFCustomAuth binding was added.</p>
<p>Next, the WCFClientAuthUserName property was added to the SSO Config database (using the tool mentioned earlier).</p>
<p>That&#8217;s it.  It may have seem like a bunch of work (and I admit that I don&#8217;t want developers redoing this entire thing), which is the beauty of this solution.  Subsequent applications that want to leverage this solution only need to repeat the steps in the last two paragraphs, which isn&#8217;t bad.  The other advantage of this approach, as opposed to putting the username in some configuration file out on disk, is that the SSO databases are part of the BizTalk daily backup job.  In the event of a disaster, they will be recovered, along with all of your beautiful authorization configurations.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=64&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2009/10/06/biztalk-r2-authorization-using-wcf/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk R2 WCF Authorization</title>
		<link>http://fehlberg.wordpress.com/2009/06/18/biztalk-r2-wcf-authorization/</link>
		<comments>http://fehlberg.wordpress.com/2009/06/18/biztalk-r2-wcf-authorization/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 23:53:19 +0000</pubDate>
		<dc:creator>Fehlberg Victor</dc:creator>
				<category><![CDATA[BizTalk Server]]></category>

		<guid isPermaLink="false">http://fehlberg.wordpress.com/?p=60</guid>
		<description><![CDATA[Let me share a quick story.  We&#8217;ve been using BizTalk Server 2006 for a couple of years now at my company.  We recently upgraded to R2, and I was excited to get the opportunity to work with WCF&#8230; so a few months ago I created my first WCF service.  Things worked about like what I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=60&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Let me share a quick story.  We&#8217;ve been using BizTalk Server 2006 for a couple of years now at my company.  We recently upgraded to R2, and I was excited to get the opportunity to work with WCF&#8230; so a few months ago I created my first WCF service.  Things worked about like what I expected except for one thing: authorization.  I kept thinking, &#8220;this has got to be really easy&#8221; yet I could never figure out how to restrict access to certain users (this was fairly easy to do with ASMX services).  That&#8217;s what&#8217;s leading me to write this post.</p>
<p>There are a few things I like a lot more about WCF, but there&#8217;s one thing I can&#8217;t stand: the way authorization is implemented.  Here&#8217;s why:</p>
<p>From what I&#8217;ve seen and heard, WCF is intended to make security easier by allowing this to be configured in XML configuration files.  This is neat because the developer can do his/her work easily, and the details on security can be configured dynamically (without recompiling).   It&#8217;s indeed pretty cool that you can change from using Windows Authentication to basic auth, etc. all in a configuration file.  However, this &#8220;guiding principle&#8221; behind WCF doesn&#8217;t hold true when it comes to authorization!  I couldn&#8217;t believe my eyes when I read this post:</p>
<p><a href="http://social.msdn.microsoft.com/Forums/en-US/biztalkr2adapters/thread/12a47533-acb4-4ff4-bc32-d8ea305cb066">http://social.msdn.microsoft.com/Forums/en-US/biztalkr2adapters/thread/12a47533-acb4-4ff4-bc32-d8ea305cb066</a></p>
<p>Are you serious?  I have to write a WHOLE BUNCH of code just to restrict access to a web service?!  There&#8217;s not a wizard for this?  Or perhaps some GUI control?  No XML file for this?  Or how about clicking on &#8220;Permissions&#8221; in IIS like you used to be able to do with ASMX services?  So much for configuring security in an XML file.  I&#8217;m deeply disappointed.</p>
<p>In fact, I really hope I&#8217;m wrong.  Perhaps there&#8217;s some easier way that I just happened to have missed.  Please do tell me this is the case and end this bad dream.</p>
<p>Since I refuse to manage web service access via code for what might end up to become hundreds (or even thousands) of web services, I&#8217;ll have to do this some other way.  I think I&#8217;ll use SOA&#8217;s Service Manager to control authorization (I should get paid for promoting them).  There it can be done easily at the operation level of a web service.  I just thought WCF would have done something like this too.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fehlberg.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fehlberg.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fehlberg.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fehlberg.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fehlberg.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fehlberg.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fehlberg.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fehlberg.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fehlberg.wordpress.com&amp;blog=2085701&amp;post=60&amp;subd=fehlberg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fehlberg.wordpress.com/2009/06/18/biztalk-r2-wcf-authorization/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/787d50e6869afe59c4c1e8b437497b9f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Victor Fehlberg</media:title>
		</media:content>
	</item>
	</channel>
</rss>
