<?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/"
	>

<channel>
	<title>Ed &#34;Over&#34; Ip &#187; BizTalk</title>
	<atom:link href="http://www.edoverip.com/edoverip/index.php/tag/biztalk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.edoverip.com/edoverip</link>
	<description>Frequently geeky, mostly dorky...</description>
	<lastBuildDate>Fri, 26 Mar 2010 15:38:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WebSphere and .Net Interoperability using Web Services</title>
		<link>http://www.edoverip.com/edoverip/index.php/2010/02/24/websphere-and-net-interoperability-using-web-services/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2010/02/24/websphere-and-net-interoperability-using-web-services/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 20:34:24 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[Interoperability]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[SOAP]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=417</guid>
		<description><![CDATA[This is an oldie but goodie describing potential interop issues between WebSphere and .Net web services.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.redbooks.ibm.com/redbooks/pdfs/sg246395.pdf" target="_blank">This</a> is an oldie but goodie describing potential interop issues between WebSphere and .Net web services.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2010/02/24/websphere-and-net-interoperability-using-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BizUnit: XmlValidationStep vs. XmlValidationStepEx</title>
		<link>http://www.edoverip.com/edoverip/index.php/2009/11/04/bizunit-xmlvalidationstep-vs-xmlvalidationstepex/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2009/11/04/bizunit-xmlvalidationstep-vs-xmlvalidationstepex/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 19:53:16 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>
		<category><![CDATA[BizUnit]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=394</guid>
		<description><![CDATA[I am writing this down more to remind myself but if this become useful to anyone else, great!
XmlValidationStep:  It is the equivelent to using SelectSingleNode and must resolve to a node set
XmlValidationStepEx:  It utilizes XPathNavigator.  XmlValidationStepEx should be used when evaluating against functions such as Count()
]]></description>
			<content:encoded><![CDATA[<p>I am writing this down more to remind myself but if this become useful to anyone else, great!</p>
<p>XmlValidationStep:  It is the equivelent to using SelectSingleNode and must resolve to a node set</p>
<p>XmlValidationStepEx:  It utilizes XPathNavigator.  XmlValidationStepEx should be used when evaluating against functions such as Count()</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2009/11/04/bizunit-xmlvalidationstep-vs-xmlvalidationstepex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MLLP Blank Messages</title>
		<link>http://www.edoverip.com/edoverip/index.php/2009/02/10/mllp-blank-messages/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2009/02/10/mllp-blank-messages/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 18:20:34 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=278</guid>
		<description><![CDATA[A while back I wrote about a problem I encountered where my client&#8217;s system is experiencing &#8220;Object not set to a reference of an object&#8221; errors in the receive pipeline for one of their client.  After yet another round of experimentation, I FINALLY figured out what caused it!
This particular client appear to programmatically connect to the BizTalk server [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I wrote about a problem I encountered where my client&#8217;s system is experiencing &#8220;<a href="http://www.edoverip.com/edoverip/index.php/2008/11/20/mllp-object-not-set-to-a-reference-of-an-object/">Object not set to a reference of an object</a>&#8221; errors in the receive pipeline for one of their client.  After yet another round of experimentation, I FINALLY figured out what caused it!</p>
<p>This particular client appear to programmatically connect to the BizTalk server via Telnet as a way to keep the socket open.  In return, BizTalk would treat the connection as having a <em>missing</em> body (not to be confused with an <em>empty</em> body). To solve the problem, although it&#8217;s not ideal, is to put a try/catch around the GetOriginalDataStream() and return null if it encounters an error.   Unfortunately, the side affect of this is an active blank message instance in the BizTalk Administration Console.  But at least there are no more error event logs and suspended message instances.  </p>
<pre><span>public</span><span> </span>IBaseMessage<span> Execute(</span>IPipelineContext<span> pContext, </span>IBaseMessage<span> pInMsg)
{
<span>    IBaseMessagePart</span> msgBody = pInMsg.BodyPart;</span></pre>
<pre style="padding-left: 30px;"><span>if</span> (msgBody != <span>null</span>)
{</pre>
<pre style="padding-left: 60px;"><span>string</span> oldStr = <span>string</span>.Empty;

<span><strong>try
{
<span style="font-weight: normal;"><span><strong>    using</strong></span><strong> (</strong><span><strong>StreamReader</strong></span><strong> sr = </strong><span><strong>new</strong></span><strong> </strong><span><strong>StreamReader</strong></span><strong>(msgBody.GetOriginalDataStream()))
    {
         oldStr = sr.ReadToEnd();
    }
}
catch
{
<span style="font-weight: normal;"><span><strong>    return</strong></span><strong> </strong><span><strong>null</strong></span><strong>;
}</strong></span></strong></span></strong></span>

&lt;&lt; INSERT STUFF YOU NEED TO DO HERE&gt;&gt;</pre>
<pre style="padding-left: 30px;">}</pre>
<pre>}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2009/02/10/mllp-blank-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MLLP &#8220;Object not set to a reference of an object&#8221;</title>
		<link>http://www.edoverip.com/edoverip/index.php/2008/11/20/mllp-object-not-set-to-a-reference-of-an-object/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2008/11/20/mllp-object-not-set-to-a-reference-of-an-object/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 00:50:12 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=187</guid>
		<description><![CDATA[I&#8217;ve been seeing a randomly yet infrequent issue on one of my client&#8217;s BizTalk server where the MLLP receive port would throw errors like &#8220;Object not set to a reference of an object&#8221; or &#8220;Remote connection was forcibly closed by the host&#8221;.  These messages bypasses error routing because there is no message body; That [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been seeing a randomly yet infrequent issue on one of my client&#8217;s BizTalk server where the MLLP receive port would throw errors like &#8220;Object not set to a reference of an object&#8221; or &#8220;Remote connection was forcibly closed by the host&#8221;.  These messages bypasses error routing because there <em>is</em> no message body; That is, while each of the suspended instance has a message attached, the body is empty so they were never in the message box?!</p>
<p>For awhile I thought the issue has to do with the stability of their data connection.  But the client have since moved to a full T1 on a different carrier but the problem persists. </p>
<p>While I am not a 100% sure I believe I have narrowed the problem down to the socket connection disconnecting and reconnecting.  Let me explain&#8230;</p>
<p>Each of the MLLP receive port in question has persistence set to false and a 15 minute timeout period.  To check on my theory, I changed the timeout period to 1 minute and used <a href="http://en.wikipedia.org/wiki/Netstat" target="_blank">netstat</a> to monitor remote socket switching (i.e. a disconnect and reconnect to a different port due to socket TIME_WAIT).  Guess what?  Right after the socket switch, there was a suspended message with the error stated earlier.  </p>
<p>So if my theory is correct, what are those empty messages? And if a timeout should only occur if the socket is idle beyond the timeout period, what are those &#8220;forcibly closed by the host&#8221; error messages?</p>
<p>Please leave me a comment if you have any suggestions!  </p>
<p><em>Update: The issue does appear to have to do with the stability of their data connection.  Earlier today, their bandwidth was completely peaked out and the said problem popped up right on queue.  Now, the only question is, anything can be done to prevent the errors?  And at time of error, are we losing messages?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2008/11/20/mllp-object-not-set-to-a-reference-of-an-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How NOT to move a BizTalk 2006 R2 server to a different domain</title>
		<link>http://www.edoverip.com/edoverip/index.php/2008/11/11/how-not-to-move-a-biztalk-2006-r2-server-to-a-different-domain/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2008/11/11/how-not-to-move-a-biztalk-2006-r2-server-to-a-different-domain/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 01:34:16 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=178</guid>
		<description><![CDATA[Earlier today, my client asked me to relocate the server responsible for BizTalk 2006 R2 to a different domain.  Stupid me, I thought, how hard can it possibly be? WRONG! 
Here are the steps I took with which you SHOULD NOT follow:

1. Shut down all services gracefully and domain.  Restart as required.
2. Recreate [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, my client asked me to relocate the server responsible for BizTalk 2006 R2 to a different domain.  Stupid me, I thought, how hard can it possibly be? WRONG! </p>
<p>Here are the steps I took with which you SHOULD NOT follow:</p>
<ul>
<ol>1. Shut down all services gracefully and domain.  Restart as required.</ol>
<ol>2. Recreate all appropriate users, groups and rights in the new domain</ol>
<ol>3. Add new user credentials to folder structures and database security</ol>
<ol>4. Change the appropriate services (i.e. host instances, BAM services, SQL, etc) to run as the new users.</ol>
<ol>5. Change all host instances to run using the appropriate new user</ol>
<ol>6. Start SQL</ol>
<ol>7. Start BizTalk services</ol>
</ul>
<p>Step 7 was where the fun began.  SSO and BAM started ok for me.  But as soon as I tried to start the host instances, SSO freaked out with errors like &#8220;&#8230; cannot perform<br />
encryption or decryption because the secret is not available from the master<br />
secret server&#8230;&#8221;</p>
<p>At this point, it would have been helpful if I had backed up the <a href="http://blogs.microsoft.co.il/blogs/josh/archive/2008/11/11/how-to-change-the-biztalk-sso-account-and-stay-alive.aspx" target="_blank">SSO master secret</a> because that file was the key (pun intended) to restoring SSO ability to work under a different user account, and subsequently save me hours of fun reconfiguration BizTalk from scratch.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2008/11/11/how-not-to-move-a-biztalk-2006-r2-server-to-a-different-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where is the MLLP adapter in LoadGen 2007?</title>
		<link>http://www.edoverip.com/edoverip/index.php/2008/10/22/where-is-the-mllp-adapter-in-loadgen-2007/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2008/10/22/where-is-the-mllp-adapter-in-loadgen-2007/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 14:02:23 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=173</guid>
		<description><![CDATA[Any idea how I should load test a MLLP adapter using LoadGen 2007?
]]></description>
			<content:encoded><![CDATA[<p>Any idea how I should load test a MLLP adapter using L<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c8af583f-7044-48db-b7b9-969072df1689&#038;displaylang=en">oadGen 2007</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2008/10/22/where-is-the-mllp-adapter-in-loadgen-2007/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BTAHL7 2.0 slow ACK</title>
		<link>http://www.edoverip.com/edoverip/index.php/2008/09/24/btahl7-20-slow-ack/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2008/09/24/btahl7-20-slow-ack/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 02:54:13 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=165</guid>
		<description><![CDATA[I&#8217;ve been having performance issues with one of my client&#8217;s BizTalk 2006 R2 deployment.  Specifically, one of their high-volume hospital client complaint that it was taking up to 1 minute to get an ACK back from the HL7 Accelerator 2.0.  
The client thought it has to do with network latency and started going [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having performance issues with one of my client&#8217;s BizTalk 2006 R2 deployment.  Specifically, one of their high-volume hospital client complaint that it was taking up to 1 minute to get an ACK back from the HL7 Accelerator 2.0.  </p>
<p>The client thought it has to do with network latency and started going down that road.  However, I knew that latency can&#8217;t be the issue because we were getting the inbound messages just fine and that the ACK delivery time degrades through the day.  So I started looking into the configuration for that hospital and here&#8217;s what I found:</p>
<ul>
<li>This high-volume hospital shares the same receive and orchestration process host as another high-volume hospital.  So deploying dedicated process hosts for the hospital provided minor relieve. </li>
<li>	The orchestration for this hospital executes a send pipeline inside an Expression Shape and slowed things down quite a bit.  A simple re-architecture did the trick. </li>
</ul>
<p>Due to my lack of knowledge with the HL7 Accelerator, I had assumed ACKs are returned to the originating party soon after the message gone through the receive pipeline.  Instead, it this scenario, it appears ACKs are not generated/returned until after the Orchestration notifies the Receive Port that the message has processed.  </p>
<p>Live and learn! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2008/09/24/btahl7-20-slow-ack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When installing Microsoft BizTalk 2006 R2</title>
		<link>http://www.edoverip.com/edoverip/index.php/2008/09/16/when-installing-microsoft-biztalk-2006-r2/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2008/09/16/when-installing-microsoft-biztalk-2006-r2/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 18:17:48 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=160</guid>
		<description><![CDATA[If you are doing a fresh install of Microsoft BizTalk 2006 R2 and Microsoft BizTalk Accelerator for HL7 2.0, I recommend that you install KB 941261 right away as well.  This hotfix is only necessary if you send HL7 messages through the accelerator, but if you&#8217;re dealing with HL7, chances are good that you [...]]]></description>
			<content:encoded><![CDATA[<p>If you are doing a fresh install of Microsoft BizTalk 2006 R2 and Microsoft BizTalk Accelerator for HL7 2.0, I recommend that you install <a href="http://support.microsoft.com/kb/941261" target="_blank">KB 941261</a> right away as well.  This hotfix is only necessary if you send HL7 messages through the accelerator, but if you&#8217;re dealing with HL7, chances are good that you will need that functionality.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2008/09/16/when-installing-microsoft-biztalk-2006-r2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Patient Account vs. Patient Visit</title>
		<link>http://www.edoverip.com/edoverip/index.php/2008/09/12/patient-accoun-vs-patient-visit/</link>
		<comments>http://www.edoverip.com/edoverip/index.php/2008/09/12/patient-accoun-vs-patient-visit/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 19:20:25 +0000</pubDate>
		<dc:creator>eip</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[BizTalk]]></category>

		<guid isPermaLink="false">http://www.edoverip.com/edoverip/?p=74</guid>
		<description><![CDATA[I&#8217;ve been working on a patient data management system for my client based on inbound HL7 messages.  An issue I struggled trying to figure out which identifier, as assigned by the hospital, represents the unique patient and which identifier represents the unique visit.   I was initially thrown off by the name of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a patient data management system for my client based on inbound HL7 messages.  An issue I struggled trying to figure out which identifier, as assigned by the hospital, represents the unique patient and which identifier represents the unique visit.   I was initially thrown off by the name of PID.18 (Patient Account Number) to think it represents the unique patient.  But as it turns out, it identifies a unique visit.   </p>
<p>PID.3_PatientIdInternalId identifies the unique patient<br />
PID.18_PatientAccountNumber identifies the unique visit</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edoverip.com/edoverip/index.php/2008/09/12/patient-accoun-vs-patient-visit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
