<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Scott's Breeze Blog - RFID, BizTalk  - BizTalk General</title>
    <link>http://blogs.breeze.net/scotts/</link>
    <description>...and everything in between</description>
    <language>en-us</language>
    <copyright>Breeze Training</copyright>
    <lastBuildDate>Fri, 09 Jul 2010 05:12:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>scotts@breezetraining.com.au</managingEditor>
    <webMaster>scotts@breezetraining.com.au</webMaster>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=7753253a-8e02-4cdc-b71b-6dd9565a729f</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,7753253a-8e02-4cdc-b71b-6dd9565a729f.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,7753253a-8e02-4cdc-b71b-6dd9565a729f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=7753253a-8e02-4cdc-b71b-6dd9565a729f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have been avoiding this for sometime now. That is, adding new activity items to
the current BAM deployment in production. Production has been running for months now
and in this high volume system we partition the BAM activities every week and archive
each month (giving the client a rolling month worth of activity data). I was concerned
that during the update of the BAM definition this data was going to be blown away
(an experience that has caused much embarrassment in the past).
</p>
        <p>
So the procedure I used this time did the trick…well almost
</p>
        <ul>
          <li>
Took a “backup” of the current BAM definition using BM.exe<br /><br /><div id="codeSnippetWrapper"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">bm.exe get-config -FileName:MyConfig.xml</pre><br /></div></li>
          <li>
Added the new activity items using Excel and edited the views 
</li>
          <li>
Exported the new BAM definition to xml 
</li>
          <li>
Removed the existing views using BM.exe<br /><br /><div id="codeSnippetWrapper"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">bm.exe remove-view -Name:MyView</pre><br /></div></li>
          <li>
Deployed the new definition using BM.exe and the update-all command – FAILED <img alt="smile_cry" src="http://spaces.live.com/rte/emoticons/smile_cry.gif" /><br /><br /><div id="codeSnippetWrapper"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">bm.exe update-all -DefinitionFile:MyNewDef.xml</pre> <br />
The error message in the command window was:
</div></li>
        </ul>
        <ul>
          <div>
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
              <span style="color: #0000ff">All</span> queries
combined <span style="color: #0000ff">using</span> a <span style="color: #0000ff">UNION</span>, <span style="color: #0000ff">INTERSECT</span><span style="color: #0000ff">or</span><span style="color: #0000ff">EXCEPT</span> operator
must have an 
<br />
equal number <span style="color: #0000ff">of</span> expressions <span style="color: #0000ff">in</span> their
target lists.<br /></pre>
          </div>
          <div> 
</div>
          <div>Upon investigation, I found that the partition tables did not get updated with
the new activity items. As the view spans both the current activity tables and all
the partition tables the view creation failed. Interestingly, the BAM Archive tables
did get updated.<br /><br /></div>
          <li>
“Upgraded” the partition tables using the script from <a href="http://blog.cnext.eu/2009/04/13/bam-deployment-and-partitioned-tables" target="_blank">this
blog post</a><br /><br />
I did need to make a slight change to avoid some errors that cropped up with partition
tables already archived and as such no longer present in the BAMPrimaryImport database
(although the original script works).<br /><br />
I changed the CURSOR definition to filter out those tables already archived:<br /><br /><div id="codeSnippetWrapper"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">DECLARE</span> partition_cursor <span style="color: #0000ff">CURSOR</span><span style="color: #0000ff">LOCAL</span><span style="color: #0000ff">FOR</span><br /><span style="color: #0000ff">SELECT</span> InstancesTable<br /><span style="color: #0000ff">FROM</span> [dbo].[bam_Metadata_Partitions]<br /><span style="color: #0000ff">WHERE</span> ActivityName = @activityName 
<br /><span style="color: #0000ff">AND</span> ArchivedTime <span style="color: #0000ff">Is</span><span style="color: #0000ff">Null</span><span style="color: #008000">--
Added additional filter</span><br /><span style="color: #0000ff">ORDER</span><span style="color: #0000ff">BY</span> CreationTime <span style="color: #0000ff">ASC</span><br /></pre><span style="color: blue"></span></div></li>
          <li>
Deployed the new definition again using BM.exe and the update-all command – SUCCEEDED 
</li>
          <li>
Re-applied security to the Views using BM.exe<br /><br /><div id="codeSnippetWrapper"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">bm.exe add-account -AccountName:TheStig -View:MyView</pre><br /></div></li>
        </ul>
        <p>
Unfortunately all my BAM Alerts got blown away <img alt="smile_baringteeth" src="http://spaces.live.com/rte/emoticons/smile_baringteeth.gif" /> .
Makes sense as the alerts reference the view that was removed. Luckily taking the
backup in step one allowed me to pull out the original alert definition and paste
them into my new definition file. I re-deployed that using the update-all command
and alerts are back to normal.
</p>
        <p>
I did come across this <a href="http://support.microsoft.com/kb/969558" target="_blank">KB
969558 article</a> for BTS 2006 R2 that appeared to address the partition tables issue.
It looks as though this did not make it into BTS 2009.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=7753253a-8e02-4cdc-b71b-6dd9565a729f" />
      </body>
      <title>Updating an existing BAM deployment</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,7753253a-8e02-4cdc-b71b-6dd9565a729f.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2010/07/09/UpdatingAnExistingBAMDeployment.aspx</link>
      <pubDate>Fri, 09 Jul 2010 05:12:01 GMT</pubDate>
      <description>&lt;p&gt;
I have been avoiding this for sometime now. That is, adding new activity items to
the current BAM deployment in production. Production has been running for months now
and in this high volume system we partition the BAM activities every week and archive
each month (giving the client a rolling month worth of activity data). I was concerned
that during the update of the BAM definition this data was going to be blown away
(an experience that has caused much embarrassment in the past).
&lt;/p&gt;
&lt;p&gt;
So the procedure I used this time did the trick…well almost
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Took a “backup” of the current BAM definition using BM.exe&lt;br&gt;
&lt;br&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;bm.exe get-config -FileName:MyConfig.xml&lt;/pre&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;li&gt;
Added the new activity items using Excel and edited the views 
&lt;li&gt;
Exported the new BAM definition to xml 
&lt;li&gt;
Removed the existing views using BM.exe&lt;br&gt;
&lt;br&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;bm.exe remove-view -Name:MyView&lt;/pre&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;li&gt;
Deployed the new definition using BM.exe and the update-all command – FAILED &lt;img alt="smile_cry" src="http://spaces.live.com/rte/emoticons/smile_cry.gif"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;bm.exe update-all -DefinitionFile:MyNewDef.xml&lt;/pre&gt;&amp;nbsp;&lt;br&gt;
The error message in the command window was:
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;div&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;All&lt;/span&gt; queries
combined &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; a &lt;span style="color: #0000ff"&gt;UNION&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;INTERSECT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;or&lt;/span&gt; &lt;span style="color: #0000ff"&gt;EXCEPT&lt;/span&gt; operator
must have an 
&lt;br&gt;
equal number &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; expressions &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; their
target lists.&lt;br&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;Upon investigation, I found that the partition tables did not get updated with
the new activity items. As the view spans both the current activity tables and all
the partition tables the view creation failed. Interestingly, the BAM Archive tables
did get updated.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;li&gt;
“Upgraded” the partition tables using the script from &lt;a href="http://blog.cnext.eu/2009/04/13/bam-deployment-and-partitioned-tables" target="_blank"&gt;this
blog post&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I did need to make a slight change to avoid some errors that cropped up with partition
tables already archived and as such no longer present in the BAMPrimaryImport database
(although the original script works).&lt;br&gt;
&lt;br&gt;
I changed the CURSOR definition to filter out those tables already archived:&lt;br&gt;
&lt;br&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;DECLARE&lt;/span&gt; partition_cursor &lt;span style="color: #0000ff"&gt;CURSOR&lt;/span&gt; &lt;span style="color: #0000ff"&gt;LOCAL&lt;/span&gt; &lt;span style="color: #0000ff"&gt;FOR&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; InstancesTable&lt;br&gt;
&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; [dbo].[bam_Metadata_Partitions]&lt;br&gt;
&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; ActivityName = @activityName 
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;AND&lt;/span&gt; ArchivedTime &lt;span style="color: #0000ff"&gt;Is&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Null&lt;/span&gt; &lt;span style="color: #008000"&gt;--
Added additional filter&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: #0000ff"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff"&gt;BY&lt;/span&gt; CreationTime &lt;span style="color: #0000ff"&gt;ASC&lt;/span&gt;
&lt;br&gt;
&lt;/pre&gt;&lt;span style="color: blue"&gt;
&lt;/div&gt;
&gt; 
&lt;li&gt;
Deployed the new definition again using BM.exe and the update-all command – SUCCEEDED 
&lt;li&gt;
Re-applied security to the Views using BM.exe&lt;br&gt;
&lt;br&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;bm.exe add-account -AccountName:TheStig -View:MyView&lt;/pre&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Unfortunately all my BAM Alerts got blown away &lt;img alt="smile_baringteeth" src="http://spaces.live.com/rte/emoticons/smile_baringteeth.gif"&gt; .
Makes sense as the alerts reference the view that was removed. Luckily taking the
backup in step one allowed me to pull out the original alert definition and paste
them into my new definition file. I re-deployed that using the update-all command
and alerts are back to normal.
&lt;/p&gt;
&lt;p&gt;
I did come across this &lt;a href="http://support.microsoft.com/kb/969558" target="_blank"&gt;KB
969558 article&lt;/a&gt; for BTS 2006 R2 that appeared to address the partition tables issue.
It looks as though this did not make it into BTS 2009.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=7753253a-8e02-4cdc-b71b-6dd9565a729f" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,7753253a-8e02-4cdc-b71b-6dd9565a729f.aspx</comments>
      <category>BizTalk General</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=d313a243-f49f-450a-a031-064b804d2299</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,d313a243-f49f-450a-a031-064b804d2299.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,d313a243-f49f-450a-a031-064b804d2299.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=d313a243-f49f-450a-a031-064b804d2299</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I am getting a few reports that after a recent windows update (or installing .NET
Framework 4.0) the ESSO service fails to restart. Microsoft have released a hotfix
to address this (<a title="http://support.microsoft.com/kb/2252691" href="http://support.microsoft.com/kb/2252691">http://support.microsoft.com/kb/2252691</a>)
</p>
        <p>
Microsoft Reports:
</p>
        <p>
This issue occurs after installing .NET Framework 4.0. The registration of the assembly
used by ENTSSO to access SQL Server does not specify the correct version of the .NET
Framework. When .NET Framework 4.0 is installed, the assembly will try to use the
newer framework and then fail to load
</p>
        <p>
To resolve this manually:<br /><br /><b>32-bit Server<br /></b><br />
1.       Open a command window<br />
2.       Go to C:\Windows\Microsoft.NET\Framework\v2.0.50727<br />
3.       Type: regasm “C:\Program Files\Common Files\Enterprise
Single Sign-On\ssosql.dll”<br /><br /><b>64-bit Server<br /></b><br />
1.       Open a command window<br />
2.       Go to C:\Windows\Microsoft.NET\Framework64\v2.0.50727<br />
3.       Type each of the following and hit ENTER:<br /><br />
32bit:  regasm “C:\Program Files\Common Files\Enterprise Single Sign-On\win32\ssosql.dll”<br />
64bit:  regasm “C:\Program Files\Common Files\Enterprise Single Sign-On\ssosql.dll”<br /><b><br />
Note</b> On a 64-bit server, regasm will need to be run for both the 32-bit and 64-bit
versions of ssosql.dll.
</p>
        <p>
Hope this helps <img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif" /></p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=d313a243-f49f-450a-a031-064b804d2299" />
      </body>
      <title>Windows could not start the Enterprise Single Sign-On Service</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,d313a243-f49f-450a-a031-064b804d2299.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2010/07/01/WindowsCouldNotStartTheEnterpriseSingleSignOnService.aspx</link>
      <pubDate>Thu, 01 Jul 2010 05:05:59 GMT</pubDate>
      <description>&lt;p&gt;
I am getting a few reports that after a recent windows update (or installing .NET
Framework 4.0) the ESSO service fails to restart. Microsoft have released a hotfix
to address this (&lt;a title="http://support.microsoft.com/kb/2252691" href="http://support.microsoft.com/kb/2252691"&gt;http://support.microsoft.com/kb/2252691&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
Microsoft Reports:
&lt;/p&gt;
&lt;p&gt;
This issue occurs after installing .NET Framework 4.0. The registration of the assembly
used by ENTSSO to access SQL Server does not specify the correct version of the .NET
Framework. When .NET Framework 4.0 is installed, the assembly will try to use the
newer framework and then fail to load
&lt;/p&gt;
&lt;p&gt;
To resolve this manually:&lt;br&gt;
&lt;br&gt;
&lt;b&gt;32-bit Server&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Open a command window&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to C:\Windows\Microsoft.NET\Framework\v2.0.50727&lt;br&gt;
3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type: regasm “C:\Program Files\Common Files\Enterprise
Single Sign-On\ssosql.dll”&lt;br&gt;
&lt;br&gt;
&lt;b&gt;64-bit Server&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Open a command window&lt;br&gt;
2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Go to C:\Windows\Microsoft.NET\Framework64\v2.0.50727&lt;br&gt;
3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type each of the following and hit ENTER:&lt;br&gt;
&lt;br&gt;
32bit:&amp;nbsp; regasm “C:\Program Files\Common Files\Enterprise Single Sign-On\win32\ssosql.dll”&lt;br&gt;
64bit:&amp;nbsp; regasm “C:\Program Files\Common Files\Enterprise Single Sign-On\ssosql.dll”&lt;br&gt;
&lt;b&gt;
&lt;br&gt;
Note&lt;/b&gt; On a 64-bit server, regasm will need to be run for both the 32-bit and 64-bit
versions of ssosql.dll.
&lt;/p&gt;
&lt;p&gt;
Hope this helps &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=d313a243-f49f-450a-a031-064b804d2299" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,d313a243-f49f-450a-a031-064b804d2299.aspx</comments>
      <category>.NET Framework</category>
      <category>BizTalk General</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=7ecf7283-0313-4c22-beb9-12d9855e5bb8</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,7ecf7283-0313-4c22-beb9-12d9855e5bb8.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,7ecf7283-0313-4c22-beb9-12d9855e5bb8.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=7ecf7283-0313-4c22-beb9-12d9855e5bb8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In a (not so recent) post, I walked through the steps to get your BizTalk Server 2006
R2+ Orchestrations exposed to the Cloud. See <a href="http://blogs.breezetraining.com.au/scotts/2008/11/28/ExposingBizTalkOrchestrationsToTheCloud.aspx" target="_blank">Exposing
BizTalk Orchestrations to the Cloud</a>. With the release of the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8D1D1D5E-1332-4186-B33F-26D053759E49&amp;displaylang=en" target="_blank">Microsoft
.NET Services SDK (March 2009 CTP)</a> this week, you will find your existing .NET
Services endpoints no longer valid.
</p>
        <p>
Here's how to resolve the issue.
</p>
        <p>
At the moment your existing .NET Services endpoints are in the form: 
</p>
        <blockquote>
          <p>
            <font face="Courier New" color="#800000" size="2">sb://servicebus.windows.net/services/[solution
name]/[service name]/</font>
          </p>
        </blockquote>
        <p>
This has now been changed to: 
</p>
        <blockquote>
          <p>
            <font face="Courier New" color="#800000" size="2">sb://[solution name].servicebus.windows.net/[service
name]/</font>
          </p>
        </blockquote>
        <p>
          <em>Note: you can still register your service hierarchy as before (e.g. sb://.../[service
group]/[service name]) but for simplicity I have just used [service name] in the URI's
above.</em>
        </p>
        <p>
So, even if you followed Microsoft's advise and coded your service endpoints URI's
this way: 
</p>
        <blockquote>
          <p>
            <font size="2">
              <font face="Courier New">
                <font color="#008080">Uri</font> address =
new <font color="#008080">Uri</font>(<font color="#008080">String</font>.Format(<font color="#800000">"sb://{0}/services/{1}/{2}"</font>, <font color="#008080">ServiceBusEnvironment</font>.DefaultRelayHostName,
solutionName, serviceName));</font>
            </font>
          </p>
        </blockquote>
        <p>
that didn't get you out of trouble when the URI change was released. We are now encouraged
to use the following when generating endpoint addresses in code: 
</p>
        <blockquote>
          <p>
            <font size="2">
              <font face="Courier New">
                <font color="#008080">Uri</font> address = <font color="#008080">ServiceBusEnvironment</font>.CreateServiceUri(<font color="#800000">"sb"</font>,
solutionName, serviceName);</font>
            </font>
          </p>
        </blockquote>
        <p>
This will give us an address in the new structure and protect us from any future changes
(but we heard that somewhere before didn't we). Also, be aware that (as of time of
posting) the published services feed is not listing your services correctly (but they
are still accessible). Your new published services feed will also be: 
</p>
        <blockquote>
          <p>
            <font face="Courier New" color="#800000" size="2">http://[solution name].servicebus.windows.net/</font>
          </p>
        </blockquote>
        <p>
In the coming days, the team at Breeze will be walking through the new goodies the
March CTP brings so look out for future posts (of particular interest is the queuing
and routing features we have now!). <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=7ecf7283-0313-4c22-beb9-12d9855e5bb8" /></p>
      </body>
      <title>Breaking changes with Microsoft .NET Services SDK (March 2009 CTP)</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,7ecf7283-0313-4c22-beb9-12d9855e5bb8.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2009/04/02/BreakingChangesWithMicrosoftNETServicesSDKMarch2009CTP.aspx</link>
      <pubDate>Thu, 02 Apr 2009 02:24:56 GMT</pubDate>
      <description>&lt;p&gt;
In a (not so recent) post, I walked through the steps to get your BizTalk Server 2006
R2+ Orchestrations exposed to the Cloud. See &lt;a href="http://blogs.breezetraining.com.au/scotts/2008/11/28/ExposingBizTalkOrchestrationsToTheCloud.aspx" target="_blank"&gt;Exposing
BizTalk Orchestrations to the Cloud&lt;/a&gt;. With the release of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8D1D1D5E-1332-4186-B33F-26D053759E49&amp;amp;displaylang=en" target="_blank"&gt;Microsoft
.NET Services SDK (March 2009 CTP)&lt;/a&gt; this week, you will find your existing .NET
Services endpoints no longer valid.
&lt;/p&gt;
&lt;p&gt;
Here's how to resolve the issue.
&lt;/p&gt;
&lt;p&gt;
At the moment your existing .NET Services endpoints are in the form: 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New" color="#800000" size="2"&gt;sb://servicebus.windows.net/services/[solution
name]/[service name]/&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This has now been changed to: &lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New" color="#800000" size="2"&gt;sb://[solution name].servicebus.windows.net/[service
name]/&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Note: you can still register your service hierarchy as before (e.g. sb://.../[service
group]/[service name]) but for simplicity I have just used [service name] in the URI's
above.&lt;/em&gt; 
&lt;p&gt;
So, even if you followed Microsoft's advise and coded your service endpoints URI's
this way: &lt;blockquote&gt; 
&lt;p&gt;
&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#008080"&gt;Uri&lt;/font&gt; address =
new &lt;font color="#008080"&gt;Uri&lt;/font&gt;(&lt;font color="#008080"&gt;String&lt;/font&gt;.Format(&lt;font color="#800000"&gt;"sb://{0}/services/{1}/{2}"&lt;/font&gt;, &lt;font color="#008080"&gt;ServiceBusEnvironment&lt;/font&gt;.DefaultRelayHostName,
solutionName, serviceName));&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
that didn't get you out of trouble when the URI change was released. We are now encouraged
to use the following when generating endpoint addresses in code: &lt;blockquote&gt; 
&lt;p&gt;
&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;font color="#008080"&gt;Uri&lt;/font&gt; address = &lt;font color="#008080"&gt;ServiceBusEnvironment&lt;/font&gt;.CreateServiceUri(&lt;font color="#800000"&gt;"sb"&lt;/font&gt;,
solutionName, serviceName);&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This will give us an address in the new structure and protect us from any future changes
(but we heard that somewhere before didn't we). Also, be aware that (as of time of
posting) the published services feed is not listing your services correctly (but they
are still accessible). Your new published services feed will also be: &lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New" color="#800000" size="2"&gt;http://[solution name].servicebus.windows.net/&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
In the coming days, the team at Breeze will be walking through the new goodies the
March CTP brings so look out for future posts (of particular interest is the queuing
and routing features we have now!). &lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=7ecf7283-0313-4c22-beb9-12d9855e5bb8" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,7ecf7283-0313-4c22-beb9-12d9855e5bb8.aspx</comments>
      <category>BizTalk General</category>
      <category>Cloud Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=09631587-956f-40e5-a76e-09f41cd20fcf</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,09631587-956f-40e5-a76e-09f41cd20fcf.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,09631587-956f-40e5-a76e-09f41cd20fcf.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=09631587-956f-40e5-a76e-09f41cd20fcf</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This week I gave a presentation to the Sydney BizTalk User Group on <strong>(Biz)Talking
to the Cloud</strong>. I showed how we can quickly and easily configure a BizTalk
Receive Port to consume services hosted in the cloud. In the demo, we configured BizTalk
to participate in a multicast events scenario.
</p>
        <p>
I have been playing further with BizTalk and Cloud services and in this post I will
demonstrate how to expose BizTalk Orchestrations to the Cloud. To make it easy for
you to build this on your own environment, I have used the now famous (or infamous)
EchoService as the basis of this demo. This allows you to use the existing Microsoft
.NET Services SDK sample to call the BizTalk Orchestration through the cloud.
</p>
        <p>
          <strong>Before You Begin</strong>
        </p>
        <ol>
          <li>
Sign-up to Microsoft .NET Services and create your Solution.</li>
          <li>
Download the Microsoft .NET Services SDK and install on your BizTalk Server 2006 R2
development environment.<br /><em>Note: Nothing more is needed as far as BTS is concerned. I am pleased Microsoft
is making good on ensuring developers can use existing skills and technologies to
get started with cloud services. Furthermore, we can be fairly comfortable that playing
around with this stuff is not going to break or render our existing dev environment
useless. Credit where credit is due.</em></li>
        </ol>
        <p>
          <strong>BizTalk Development<br /><br /></strong>In this step we will create a simple orchestration that receives a generic
message, pulls the "echo" text out, creates the response message, and sends it back
out the two-way port. I have used System.Xml.XmlDocument types avoiding the need to
create schemas and simplifying the demo.
</p>
        <ol>
          <li>
In Visual Studio 2005, create a new Empty BizTalk project.</li>
          <li>
Go ahead and set your Assembly Key File and BizTalk Application project settings.
(I called my BizTalk App BizTalk Services as we will see later on)</li>
          <li>
Add a new Orchestration to the project.</li>
          <li>
Create the following messages:<br /></li>
        </ol>
        <table cellspacing="0" cellpadding="2" width="400" border="0">
          <tbody>
            <tr>
              <td valign="top" width="200">
                <strong>Name</strong>
              </td>
              <td valign="top" width="200">
                <strong>Type</strong>
              </td>
            </tr>
            <tr>
              <td valign="top" width="200">
msgRequest</td>
              <td valign="top" width="200">
System.Xml.XmlDocument</td>
            </tr>
            <tr>
              <td valign="top" width="200">
msgResponse</td>
              <td valign="top" width="200">
System.Xml.XmlDocument</td>
            </tr>
          </tbody>
        </table>
        <br />
        <li>
Create the following variables:<br /></li>
        <table cellspacing="0" cellpadding="2" width="400" border="0">
          <tbody>
            <tr>
              <td valign="top" width="200">
                <strong>Name</strong>
              </td>
              <td valign="top" width="200">
                <strong>Type</strong>
              </td>
            </tr>
            <tr>
              <td valign="top" width="200">
strText</td>
              <td valign="top" width="200">
string</td>
            </tr>
            <tr>
              <td valign="top" width="200">
strResponse</td>
              <td valign="top" width="200">
string</td>
            </tr>
            <tr>
              <td valign="top" width="200">
xmlDoc</td>
              <td valign="top" width="200">
System.Xml.XmlDocument</td>
            </tr>
          </tbody>
        </table>
        <br />
        <li>
Add the following shapes to the design surface<br /><br /><a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/orchestrationshapes.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="356" alt="orchestration shapes" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/orchestrationshapes_thumb.png" width="560" border="0" /></a><br /></li>
        <li>
In the Message Assignment shape enter the following code to construct the response
message:<br /></li>
        <blockquote>
          <pre class="csharpcode">
            <span class="rem">// Retrieve the text sent in
the request</span> strText = xpath(msgRequest, <span class="str">"string(//*[local-name()='text'])"</span>); <span class="rem">//
Construct the response</span> strResponse = System.String.Format(<span class="str">"&lt;EchoResponse
xmlns=\"http://samples.microsoft.com/ServiceModel/Relay/\"&gt;<br />
&lt;EchoResult&gt;{0}&lt;/EchoResult&gt;&lt;/EchoResponse&gt;"</span>, <span class="str">"BizTalk:
"</span> + strText); <span class="rem">// Create the response document</span> xmlDoc.LoadXml(strResponse); <span class="rem">//
Assign the response message variable</span> msgResponse = xmlDoc;<br /><br /></pre>
          <pre class="csharpcode">
            <br />
            <br />
            <br />
            <br />
 </pre>
        </blockquote>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <li>
Now add a Two-Way port setting the port Binding to <em>Specify Later</em> and the
Type Modifier to <em>Public</em>.<br /><em>Note: As we will be binding to a physical receive port, operation names are not
important here.</em></li>
        <li>
Wire up the port operations and don't forget to set the Activate property of the Receive
shape <img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif" /></li>
        <li>
Build and deploy your project.<br /></li>
        <p>
          <strong>BizTalk Application Configuration</strong>
        </p>
        <p>
In this step we will configure a WCF-Custom receive port to expose our newly created
orchestration to the cloud.
</p>
        <ol>
          <li>
In BizTalk Server Administration Console, navigate to the BizTalk Application you
just deployed to (mine was called BizTalk Services).</li>
          <li>
Create a new Request-Response receive port.</li>
          <li>
Add a new receive location and set the Transport type to WCF-Custom.<br /><br /><a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/newrecvloc.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="316" alt="new recv loc" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/newrecvloc_thumb.png" width="394" border="0" /></a><br /></li>
          <li>
Configure the WCF-Custom adapter.</li>
          <li>
Set the EndPoint Address to: 
<br /><br /><strong>        sb://servicebus.windows.net/services/[your
solution name]/EchoService/</strong><br /></li>
          <li>
Set the Binding Type to NetTcpRelayBinding<br /><em>Note: This is one of the new bindings added when you installed the Microsoft .NET
Services SDK<br /><br /></em><a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/nettcprelaybinding.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="526" alt="nettcprelaybinding" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/nettcprelaybinding_thumb.png" width="396" border="0" /></a><br /></li>
          <li>
On the Behaviors tab, add a new behavior extension called <em>transportClientEndpointBehavior</em> to
the EndPointBehavior node.</li>
          <li>
Set the credentialType to UserNamePassword and enter your solution credentials on
the UserNamePassword element of the ClientCredentials node.<br /><em>Note: If you are using Windows CardSpace instead, set the transportClientEndpointBehavior
to use it here instead.</em><br /><br /><a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/transportclientbehavior.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="418" alt="transport client behavior" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/transportclientbehavior_thumb.png" width="392" border="0" /></a><br /></li>
          <li>
Click Apply and verify no errors occurred with your WCF-Custom adapter configuration.</li>
          <li>
Click OK to close the Adapter configuration dialog.</li>
          <li>
Set the Receive Handler to your BizTalk Server Application host.</li>
          <li>
Leave the Receive and Send piplines as PassThru (as we are not requiring xml parsing
of the messages we are sending and receiving).</li>
          <li>
Click OK to save the new receive location.</li>
          <li>
Do likewise for the receive port.</li>
          <li>
Now, configure your orchestration bindings and start the BizTalk application.</li>
        </ol>
        <p>
          <strong>Verify the Service is Exposed to the Cloud</strong>
        </p>
        <p>
In this step we will browse to your Microsoft .NET Services service registry feed
and verify your service is exposed to the cloud.
</p>
        <ol>
          <li>
Launch Internet Explorer and browse to the following URL:<br /><br /><strong>     http://servicebus.windows.net/services/[your solution
name]/</strong><br /></li>
          <li>
You should now see your service endpoint listed in the Atom feed.</li>
        </ol>
        <p>
          <strong>Test Your Solution</strong>
        </p>
        <ol>
          <li>
In Windows Explorer, navigate to the samples folder under the install folder for Microsoft
.NET Services SDK<br /><em>Note: If you installed to the default folder it should be C:\Program Files\Microsoft
.NET Services (Nov 2008 CTP) SDK\Samples</em></li>
          <li>
Locate the ServiceBus\GettingStarted\Echo sample and open your flavour of choice (C#/VB)</li>
          <li>
Build the Solution using VS 2008 
</li>
          <li>
Run the Client.exe</li>
          <li>
Enter your Solution name and password.</li>
          <li>
Enter some text to send to your service.</li>
          <li>
Verify the service response includes BizTalk: &lt;your echo text&gt;<br /><br /><a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/testing.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="125" alt="testing" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/testing_thumb.png" width="388" border="0" /></a></li>
        </ol>
        <p>
          <strong>What did we just do?</strong>
        </p>
        <p>
Using only the new WCF features that were installed in the Microsoft .NET Services
SDK we were able to configure a request-response receive port in BizTalk that exposed
our orchestration to the cloud. This is very cool <img alt="smile_shades" src="http://spaces.live.com/rte/emoticons/smile_shades.gif" />. 
</p>
        <p>
At the very least, we could do away with the orchestration binding and just configure
the receive port to drop messages into the BizTalk MsgBox. We then use content based
routing to route the messages off to our existing orchestrations. 
</p>
        <p>
Think of the times you wanted to expose your BizTalk services to customers and clients
outside your organisation, but had to jump all those hurdles the IT infrastructure
team seams to magically come up with.
</p>
        <p>
This is just the beginning...
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=09631587-956f-40e5-a76e-09f41cd20fcf" />
      </body>
      <title>Exposing BizTalk Orchestrations to the Cloud</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,09631587-956f-40e5-a76e-09f41cd20fcf.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2008/11/28/ExposingBizTalkOrchestrationsToTheCloud.aspx</link>
      <pubDate>Fri, 28 Nov 2008 11:35:49 GMT</pubDate>
      <description>&lt;p&gt;
This week I gave a presentation to the Sydney BizTalk User Group on &lt;strong&gt;(Biz)Talking
to the Cloud&lt;/strong&gt;. I showed how we can quickly and easily configure a BizTalk
Receive Port to consume services hosted in the cloud. In the demo, we configured BizTalk
to participate in a multicast events scenario.
&lt;/p&gt;
&lt;p&gt;
I have been playing further with BizTalk and Cloud services and in this post I will
demonstrate how to expose BizTalk Orchestrations to the Cloud. To make it easy for
you to build this on your own environment, I have used the now famous (or infamous)
EchoService as the basis of this demo. This allows you to use the existing Microsoft
.NET Services SDK sample to call the BizTalk Orchestration through the cloud.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Before You Begin&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Sign-up to Microsoft .NET Services and create your Solution.&lt;/li&gt;
&lt;li&gt;
Download the Microsoft .NET Services SDK and install on your BizTalk Server 2006 R2
development environment.&lt;br&gt;
&lt;em&gt;Note: Nothing more is needed as far as BTS is concerned. I am pleased Microsoft
is making good on ensuring developers can use existing skills and technologies to
get started with cloud services. Furthermore, we can be fairly comfortable that playing
around with this stuff is not going to break or render our existing dev environment
useless. Credit where credit is due.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;BizTalk Development&lt;br&gt;
&lt;br&gt;
&lt;/strong&gt;In this step we will create a simple orchestration that receives a generic
message, pulls the "echo" text out, creates the response message, and sends it back
out the two-way port. I have used System.Xml.XmlDocument types avoiding the need to
create schemas and simplifying the demo.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
In Visual Studio 2005, create a new Empty BizTalk project.&lt;/li&gt;
&lt;li&gt;
Go ahead and set your Assembly Key File and BizTalk Application project settings.
(I called my BizTalk App BizTalk Services as we will see later on)&lt;/li&gt;
&lt;li&gt;
Add a new Orchestration to the project.&lt;/li&gt;
&lt;li&gt;
Create the following messages:&lt;br&gt;
&lt;/li&gt;
&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
msgRequest&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
System.Xml.XmlDocument&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
msgResponse&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
System.Xml.XmlDocument&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;li&gt;
Create the following variables:&lt;br&gt;
&lt;/li&gt;
&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
strText&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
strResponse&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
xmlDoc&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
System.Xml.XmlDocument&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;li&gt;
Add the following shapes to the design surface&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/orchestrationshapes.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="356" alt="orchestration shapes" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/orchestrationshapes_thumb.png" width="560" border="0"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
In the Message Assignment shape enter the following code to construct the response
message:&lt;br&gt;
&lt;/li&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// Retrieve the text sent in
the request&lt;/span&gt; strText = xpath(msgRequest, &lt;span class="str"&gt;"string(//*[local-name()='text'])"&lt;/span&gt;); &lt;span class="rem"&gt;//
Construct the response&lt;/span&gt; strResponse = System.String.Format(&lt;span class="str"&gt;"&amp;lt;EchoResponse
xmlns=\"http://samples.microsoft.com/ServiceModel/Relay/\"&amp;gt;&lt;br&gt;
&amp;lt;EchoResult&amp;gt;{0}&amp;lt;/EchoResult&amp;gt;&amp;lt;/EchoResponse&amp;gt;"&lt;/span&gt;, &lt;span class="str"&gt;"BizTalk:
"&lt;/span&gt; + strText); &lt;span class="rem"&gt;// Create the response document&lt;/span&gt; xmlDoc.LoadXml(strResponse); &lt;span class="rem"&gt;//
Assign the response message variable&lt;/span&gt; msgResponse = xmlDoc;&lt;br&gt;
&lt;br&gt;
&lt;/pre&gt;&lt;pre class="csharpcode"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&lt;/pre&gt;&lt;/blockquote&gt; &lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;li&gt;
Now add a Two-Way port setting the port Binding to &lt;em&gt;Specify Later&lt;/em&gt; and the
Type Modifier to &lt;em&gt;Public&lt;/em&gt;.&lt;br&gt;
&lt;em&gt;Note: As we will be binding to a physical receive port, operation names are not
important here.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
Wire up the port operations and don't forget to set the Activate property of the Receive
shape &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;
&lt;/li&gt;
&lt;li&gt;
Build and deploy your project.&lt;br&gt;
&lt;/li&gt;&gt;
&lt;p&gt;
&lt;strong&gt;BizTalk Application Configuration&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In this step we will configure a WCF-Custom receive port to expose our newly created
orchestration to the cloud.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
In BizTalk Server Administration Console, navigate to the BizTalk Application you
just deployed to (mine was called BizTalk Services).&lt;/li&gt;
&lt;li&gt;
Create a new Request-Response receive port.&lt;/li&gt;
&lt;li&gt;
Add a new receive location and set the Transport type to WCF-Custom.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/newrecvloc.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="316" alt="new recv loc" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/newrecvloc_thumb.png" width="394" border="0"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Configure the WCF-Custom adapter.&lt;/li&gt;
&lt;li&gt;
Set the EndPoint Address to: 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb://servicebus.windows.net/services/[your
solution name]/EchoService/&lt;/strong&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Set the Binding Type to NetTcpRelayBinding&lt;br&gt;
&lt;em&gt;Note: This is one of the new bindings added when you installed the Microsoft .NET
Services SDK&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/nettcprelaybinding.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="526" alt="nettcprelaybinding" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/nettcprelaybinding_thumb.png" width="396" border="0"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
On the Behaviors tab, add a new behavior extension called &lt;em&gt;transportClientEndpointBehavior&lt;/em&gt; to
the EndPointBehavior node.&lt;/li&gt;
&lt;li&gt;
Set the credentialType to UserNamePassword and enter your solution credentials on
the UserNamePassword element of the ClientCredentials node.&lt;br&gt;
&lt;em&gt;Note: If you are using Windows CardSpace instead, set the transportClientEndpointBehavior
to use it here instead.&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/transportclientbehavior.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="418" alt="transport client behavior" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/transportclientbehavior_thumb.png" width="392" border="0"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Click Apply and verify no errors occurred with your WCF-Custom adapter configuration.&lt;/li&gt;
&lt;li&gt;
Click OK to close the Adapter configuration dialog.&lt;/li&gt;
&lt;li&gt;
Set the Receive Handler to your BizTalk Server Application host.&lt;/li&gt;
&lt;li&gt;
Leave the Receive and Send piplines as PassThru (as we are not requiring xml parsing
of the messages we are sending and receiving).&lt;/li&gt;
&lt;li&gt;
Click OK to save the new receive location.&lt;/li&gt;
&lt;li&gt;
Do likewise for the receive port.&lt;/li&gt;
&lt;li&gt;
Now, configure your orchestration bindings and start the BizTalk application.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Verify the Service is Exposed to the Cloud&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In this step we will browse to your Microsoft .NET Services service registry feed
and verify your service is exposed to the cloud.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Launch Internet Explorer and browse to the following URL:&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://servicebus.windows.net/services/[your solution
name]/&lt;/strong&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
You should now see your service endpoint listed in the Atom feed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Test Your Solution&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
In Windows Explorer, navigate to the samples folder under the install folder for Microsoft
.NET Services SDK&lt;br&gt;
&lt;em&gt;Note: If you installed to the default folder it should be C:\Program Files\Microsoft
.NET Services (Nov 2008 CTP) SDK\Samples&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
Locate the ServiceBus\GettingStarted\Echo sample and open your flavour of choice (C#/VB)&lt;/li&gt;
&lt;li&gt;
Build the Solution using VS 2008 
&lt;/li&gt;
&lt;li&gt;
Run the Client.exe&lt;/li&gt;
&lt;li&gt;
Enter your Solution name and password.&lt;/li&gt;
&lt;li&gt;
Enter some text to send to your service.&lt;/li&gt;
&lt;li&gt;
Verify the service response includes BizTalk: &amp;lt;your echo text&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/testing.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="125" alt="testing" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/ExposingBizTalkOrchestrationstotheCloud_E780/testing_thumb.png" width="388" border="0"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;What did we just do?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Using only the new WCF features that were installed in the Microsoft .NET Services
SDK we were able to configure a request-response receive port in BizTalk that exposed
our orchestration to the cloud. This is very cool &lt;img alt="smile_shades" src="http://spaces.live.com/rte/emoticons/smile_shades.gif"&gt;. 
&lt;/p&gt;
&lt;p&gt;
At the very least, we could do away with the orchestration binding and just configure
the receive port to drop messages into the BizTalk MsgBox. We then use content based
routing to route the messages off to our existing orchestrations. 
&lt;/p&gt;
&lt;p&gt;
Think of the times you wanted to expose your BizTalk services to customers and clients
outside your organisation, but had to jump all those hurdles the IT infrastructure
team seams to magically come up with.
&lt;/p&gt;
&lt;p&gt;
This is just the beginning...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=09631587-956f-40e5-a76e-09f41cd20fcf" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,09631587-956f-40e5-a76e-09f41cd20fcf.aspx</comments>
      <category>BizTalk General</category>
      <category>Cloud Services</category>
      <category>Windows Azure</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=d8f1597a-5701-49ad-9ef9-1d4cb2754d42</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,d8f1597a-5701-49ad-9ef9-1d4cb2754d42.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,d8f1597a-5701-49ad-9ef9-1d4cb2754d42.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=d8f1597a-5701-49ad-9ef9-1d4cb2754d42</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Putting together BizTalk integration solutions can be complex and tricky at times.
Debugging them is an art in itself. While onsite recently, I found myself (on more
than one occasion) having *words* with BizTalk.
</p>
        <p>
One example that tested our relationship (BizTalk and I) was an orchestration decision
shape that appeared to be misbehaving. I had three branches in the decision shape,
each branch testing the existence of a node in the message being processed using the
xpath() function. For Example:
</p>
        <blockquote>
          <p>
            <em>xpath(msgRequest, "string(count(/*[local-name()='root']/*[local-name()='parent']/*[local-name()='child'
and code='some value']))") == "0"</em>
          </p>
        </blockquote>
        <blockquote>
          <p>
            <em>
              <strong>Tip</strong>: use </em>
            <a href="http://www.bizbert.com/bizbert/2007/11/25/DanSharp+XmlViewer.aspx" target="_blank">
              <em>Dan
Sharp's Xml Viewer</em>
            </a>
            <em> to retrieve the correct xpath to use in these statements.
BizTalk schemas will give you them to, but Dan's tool has some nice features thrown
into the bargain <img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif" /></em>
          </p>
        </blockquote>
        <p>
One branch rule tested for a zero node count, another for exactly one, and the Else
rule branch to handle multiple occurrences of the node. During testing and debugging
we found the else branch was always being used despite the messages satisfying one
of the other rule conditions (over different tests). Repeated checks, breakpoints,
and logging soaked up 20 minutes or more and had me demanding satisfaction by challenging
BizTalk to a duel with pistols at dawn. <img alt="smile_angry" src="http://spaces.live.com/rte/emoticons/smile_angry.gif" /></p>
        <p>
It was then, a bright beam of light breached the false ceiling above me and shone
down in all is splendour. No, this was not a helping hand from god, but rather from
a colleague working with me. Picking up on my frustrations, he calmly stood, moved
over to me, and placing a soothing hand on my shoulder, utters two words that have
changed my life...<strong>Kane Theory</strong>. I eagerly implemented a quick change
(as guided by Kane Theory teachings) and my problem was solved! More cases arose during
the project and each of them resolved with ease using this mystic and elegant theory.
</p>
        <p>
Ok. That's a bit dramatic, but I am considering a professional self-help book exploring
the practical uses of Kane Theory and wanted to get some practice in.
</p>
        <p>
          <u>So what is <strong>Kane Theory</strong>?</u>
        </p>
        <p>
Although only a novice in its teachings, I am fortunate to receive guidance from the
enlighten one himself. Kane Adams (his real name used here to <strike>protect</strike> reveal
his identity)  explains it in terms of Yin &amp; Yang, Karma, and the Force.
Reflecting on this I can best describe it as a derivative of keep it simple stupid
(KISS).
</p>
        <p>
In the example above, we declared an orchestration variable (System.String) to store
the result of the xpath function in an Expression shape before entering the Decision
shape. We then used the variable in the rule expression for the comparison. Eg:
</p>
        <blockquote>
          <p>
            <em>strNodeCount == "0"</em>
          </p>
        </blockquote>
        <p>
By powers understood only to the enlighten one, this worked a treat and we could all
break for a quick cup of the worst coffee ever brewed. (Sceptics might argue that
it has to do with the way the XLANG engine performs explicit type conversions during
the comparison operation...but they would say that wouldn't they!)
</p>
        <p>
As for the enlighten one himself:
</p>
        <p>
          <strong>Some say</strong> he is a direct descent of John Adams, author of the mystical
theory of political architecture and founding father of the new Empire (there's the
link to the Force we needed).<br /><strong>Some say</strong>, he meditates to the haunting chants of mid-level public
servants.<br />
We know him as <strong>The Stig</strong>!
</p>
        <p>
          <a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/KaneTheory_A316/thestig.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="109" alt="Author of the enlighted" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/KaneTheory_A316/thestig_thumb.jpg" width="109" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=d8f1597a-5701-49ad-9ef9-1d4cb2754d42" />
      </body>
      <title>Kane Theory</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,d8f1597a-5701-49ad-9ef9-1d4cb2754d42.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2008/11/12/KaneTheory.aspx</link>
      <pubDate>Wed, 12 Nov 2008 00:47:01 GMT</pubDate>
      <description>&lt;p&gt;
Putting together BizTalk integration solutions can be complex and tricky at times.
Debugging them is an art in itself. While onsite recently, I found myself (on more
than one occasion) having *words* with BizTalk.
&lt;/p&gt;
&lt;p&gt;
One example that tested our relationship (BizTalk and I) was an orchestration decision
shape that appeared to be misbehaving. I had three branches in the decision shape,
each branch testing the existence of a node in the message being processed using the
xpath() function. For Example:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;xpath(msgRequest, "string(count(/*[local-name()='root']/*[local-name()='parent']/*[local-name()='child'
and code='some value']))") == "0"&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;Tip&lt;/strong&gt;: use &lt;/em&gt;&lt;a href="http://www.bizbert.com/bizbert/2007/11/25/DanSharp+XmlViewer.aspx" target="_blank"&gt;&lt;em&gt;Dan
Sharp's Xml Viewer&lt;/em&gt;&lt;/a&gt;&lt;em&gt; to retrieve the correct xpath to use in these statements.
BizTalk schemas will give you them to, but Dan's tool has some nice features thrown
into the bargain &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
One branch rule tested for a zero node count, another for exactly one, and the Else
rule branch to handle multiple occurrences of the node. During testing and debugging
we found the else branch was always being used despite the messages satisfying one
of the other rule conditions (over different tests). Repeated checks, breakpoints,
and logging soaked up 20 minutes or more and had me demanding satisfaction by challenging
BizTalk to a duel with pistols at dawn. &lt;img alt="smile_angry" src="http://spaces.live.com/rte/emoticons/smile_angry.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
It was then, a bright beam of light breached the false ceiling above me and shone
down in all is splendour. No, this was not a helping hand from god, but rather from
a colleague working with me. Picking up on my frustrations, he calmly stood, moved
over to me, and placing a soothing hand on my shoulder, utters two words that have
changed my life...&lt;strong&gt;Kane Theory&lt;/strong&gt;. I eagerly implemented a quick change
(as guided by Kane Theory teachings) and my problem was solved! More cases arose during
the project and each of them resolved with ease using this mystic and elegant theory.
&lt;/p&gt;
&lt;p&gt;
Ok. That's a bit dramatic, but I am considering a professional self-help book exploring
the practical uses of Kane Theory and wanted to get some practice in.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;So what is &lt;strong&gt;Kane Theory&lt;/strong&gt;?&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
Although only a novice in its teachings, I am fortunate to receive guidance from the
enlighten one himself. Kane Adams (his real name used here to &lt;strike&gt;protect&lt;/strike&gt; reveal
his identity)&amp;nbsp; explains it in terms of Yin &amp;amp; Yang, Karma, and the Force.
Reflecting on this I can best describe it as a derivative of keep it simple stupid
(KISS).
&lt;/p&gt;
&lt;p&gt;
In the example above, we declared an orchestration variable (System.String) to store
the result of the xpath function in an Expression shape before entering the Decision
shape. We then used the variable in the rule expression for the comparison. Eg:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;strNodeCount == "0"&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
By powers understood only to the enlighten one, this worked a treat and we could all
break for a quick cup of the worst coffee ever brewed. (Sceptics might argue that
it has to do with the way the XLANG engine performs explicit type conversions during
the comparison operation...but they would say that wouldn't they!)
&lt;/p&gt;
&lt;p&gt;
As for the enlighten one himself:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Some say&lt;/strong&gt; he is a direct descent of John Adams, author of the mystical
theory of political architecture and founding father of the new Empire (there's the
link to the Force we needed).&lt;br&gt;
&lt;strong&gt;Some say&lt;/strong&gt;, he meditates to the haunting chants of mid-level public
servants.&lt;br&gt;
We know him as &lt;strong&gt;The Stig&lt;/strong&gt;!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/KaneTheory_A316/thestig.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="109" alt="Author of the enlighted" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/KaneTheory_A316/thestig_thumb.jpg" width="109" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=d8f1597a-5701-49ad-9ef9-1d4cb2754d42" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,d8f1597a-5701-49ad-9ef9-1d4cb2754d42.aspx</comments>
      <category>BizTalk General</category>
      <category>Humour</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=1d53295f-f342-4e66-a33e-162ddb23aa51</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,1d53295f-f342-4e66-a33e-162ddb23aa51.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,1d53295f-f342-4e66-a33e-162ddb23aa51.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=1d53295f-f342-4e66-a33e-162ddb23aa51</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Had a strange error appear last week when using the WCF LOB Adapter for Oracle and
spent an hour of my life I will never get back. When attempting to connect to an Oracle
DB we kept getting the following error:
</p>
        <blockquote>
          <p>
            <em>ORA-12154: TNS:could not resolve the connect identifier specified</em>
          </p>
        </blockquote>
        <p>
This occurred when we:
</p>
        <ol>
          <li>
Tried to generate metadata in our BizTalk project using the Add Generated Items wizard.</li>
          <li>
Tried to generate metadata in a Class Library project using the Add Adapter Service
Reference wizard.</li>
          <li>
Connect to an Oracle DB using the Oracle Explorer.</li>
        </ol>
        <p>
We had all the latest versions/patches of the Oracle client and WCF LOB Adapter (Oh,
yeah. Thanks Oracle for packaging patches in easy to consume 1GB downloads...love
your work!!)
</p>
        <p>
We could however, connect to Oracle using the Oracle SQL Developer Tool. So we knew
something was happening (or not happening inside of VS).
</p>
        <p>
It turns out the issue relates to the install directory of VS2005. In our case it
was 
</p>
        <blockquote>
          <p>
            <em>C:\Program Files (x86)\...</em>
          </p>
        </blockquote>
        <p>
This triggers an *undocumented feature* in the Oracle Data Provider for .Net (ODP.NET)
so that applications with a parenthesis in their (exe) path fail to connect to the
server.
</p>
        <p>
The solution was to uninstall VS2005 and reinstall using a different install directory
*one that did not have (x86) in it*.
</p>
        <p>
          <img alt="smile_confused" src="http://spaces.live.com/rte/emoticons/smile_confused.gif" /> ...
I know, I did not want to believe it either, but if you want to save yourself time
and hair try this solution first.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=1d53295f-f342-4e66-a33e-162ddb23aa51" />
      </body>
      <title>WCF LOB Adapter for Oracle on 64-bit OS</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,1d53295f-f342-4e66-a33e-162ddb23aa51.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2008/09/22/WCFLOBAdapterForOracleOn64bitOS.aspx</link>
      <pubDate>Mon, 22 Sep 2008 13:31:09 GMT</pubDate>
      <description>&lt;p&gt;
Had a strange error appear last week when using the WCF LOB Adapter for Oracle and
spent an hour of my life I will never get back. When attempting to connect to an Oracle
DB we kept getting the following error:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;ORA-12154: TNS:could not resolve the connect identifier specified&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This occurred when we:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Tried to generate metadata in our BizTalk project using the Add Generated Items wizard.&lt;/li&gt;
&lt;li&gt;
Tried to generate metadata in a Class Library project using the Add Adapter Service
Reference wizard.&lt;/li&gt;
&lt;li&gt;
Connect to an Oracle DB using the Oracle Explorer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
We had all the latest versions/patches of the Oracle client and WCF LOB Adapter (Oh,
yeah. Thanks Oracle for packaging patches in easy to consume 1GB downloads...love
your work!!)
&lt;/p&gt;
&lt;p&gt;
We could however, connect to Oracle using the Oracle SQL Developer Tool. So we knew
something was happening (or not happening inside of VS).
&lt;/p&gt;
&lt;p&gt;
It turns out the issue relates to the install directory of VS2005. In our case it
was 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;C:\Program Files (x86)\...&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This triggers an *undocumented feature* in the Oracle Data Provider for .Net (ODP.NET)
so that applications with a parenthesis in their (exe) path fail to connect to the
server.
&lt;/p&gt;
&lt;p&gt;
The solution was to uninstall VS2005 and reinstall using a different install directory
*one that did not have (x86) in it*.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="smile_confused" src="http://spaces.live.com/rte/emoticons/smile_confused.gif"&gt; ...
I know, I did not want to believe it either, but if you want to save yourself time
and hair try this solution first.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=1d53295f-f342-4e66-a33e-162ddb23aa51" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,1d53295f-f342-4e66-a33e-162ddb23aa51.aspx</comments>
      <category>BizTalk General</category>
      <category>WCF LOB Adapters</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=455b0d7f-fffd-4806-bf4a-5c040fa9b38a</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,455b0d7f-fffd-4806-bf4a-5c040fa9b38a.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,455b0d7f-fffd-4806-bf4a-5c040fa9b38a.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=455b0d7f-fffd-4806-bf4a-5c040fa9b38a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently I implemented a BizTalk web services interface that required the need to
support SoapFault messages. I quickly fell into a common trap and received a compiler
error:
</p>
        <blockquote>
          <p>
            <code>error X2162: must receive before sending a fault message on an implemented port</code>
          </p>
        </blockquote>
        <p>
(see <a href="http://www.traceofthought.net/2004/04/21/TheSucceededOperatorInBizTalk2004Orchestrations.aspx" target="_blank">Scott
Colestock's post</a> that nicely outlines his experience with the same issue)
</p>
        <p>
As Scott describes, the solution involved using the <em>succeeded()</em> function
to first test if a transaction scope had succeeded or not in order to send out my
soap-fault correctly. I vaguely recalled this function but never used it in anger
before. After having spent a hour or so I will never get back, I made a note-to-self
to seek out and reacquaint myself with the other operators and functions available
to use in expression shapes within an orchestration.
</p>
        <p>
Here is the full list taken from the <a href="http://msdn.microsoft.com/en-us/library/aa561847.aspx" target="_blank">online
documentation</a>:
</p>
        <form id="aspnetForm" name="aspnetForm" action="aa561847.aspx" method="post">
          <table style="width: 489pt; border-collapse: collapse" cellspacing="0" cellpadding="0" width="652" border="0">
            <colgroup>
              <font size="2">
                <col style="width: 62pt; mso-width-source: userset; mso-width-alt: 2998" width="82" />
                <col style="width: 122pt; mso-width-source: userset; mso-width-alt: 5961" width="163" />
                <col style="width: 305pt; mso-width-source: userset; mso-width-alt: 14884" width="407" />
              </font>
              <tbody>
                <tr style="height: 15.75pt" height="21">
                  <td class="xl65" style="border-right: medium none; border-top: #4f81bd 0.5pt solid; font-weight: 700; font-size: 8pt; border-left: medium none; width: 62pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; height: 15.75pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-background-source: auto; mso-pattern: auto" width="82" height="21">
                    <p>
                      <font size="2">Operator</font>
                    </p>
                  </td>
                  <td class="xl65" style="border-right: medium none; border-top: #4f81bd 0.5pt solid; font-weight: 700; font-size: 8pt; border-left: medium none; width: 122pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-background-source: auto; mso-pattern: auto" width="163">
                    <p>
                      <font size="2">Description</font>
                    </p>
                  </td>
                  <td class="xl65" style="border-right: medium none; border-top: #4f81bd 0.5pt solid; font-weight: 700; font-size: 8pt; border-left: medium none; width: 305pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-background-source: auto; mso-pattern: auto" width="407">
                    <p>
                      <font size="2">Example</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 27pt" height="36">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 27pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="36">
                    <p>
                      <font size="2">checked()</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">raise error on arithmetic overflow</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">checked(x = y * 1000)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">unchecked()</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">ignore arithmetic overflow</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">unchecked(x = y * 1000)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">new</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">create an instance of a class</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">myObject = new MyClass;</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">typeof</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">Type retrieval</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">myMapType = typeof(myMap)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 40.5pt" height="54">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 40.5pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="54">
                    <p>
                      <font size="2">succeeded()</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">test for successful completion of transactional scope or orchestration</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">succeeded(&lt;transaction ID for child transaction of current scope
or service&gt;)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 27pt" height="36">
                  <td class="xl66" style="width: 62pt; height: 27pt" width="82" height="36">
                    <p>
                      <font size="2">exists</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">test for the existence of a message context property</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">BTS.RetryCount exists Message_In</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">+</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">unary plus</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">+(int x)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">-</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">unary minus</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">-(int x)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">!</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">logical negation</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">!myBool</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">~</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">bitwise complement</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">x = ~y</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">()</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">cast</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">(bool) myInt</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">*</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">times</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">Weight = MyMsg.numOrders * 20</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">/</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">divided by</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">x / y</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">+</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">plus</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">x + y</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">-</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">minus</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">x - y</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">&lt;&lt;</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">shift left</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">x &lt;&lt; 2</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">&gt;&gt;</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">shift right</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">x &gt;&gt; 2</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">&lt;</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">less than</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders &lt; 10)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">&gt;</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">greater than</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders &gt; 10)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">&lt;=</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">less than or equal to</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders &lt;= 10)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">&gt;=</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">greater than or equal to</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders &gt;= 10)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">==</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">equal to</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders == 10)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">!=</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">not equal to</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders != 10)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">&amp;</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">and</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">If (myByte &amp; 255)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">^</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">exclusive or</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">If (myByte ^ 1)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">|</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">or</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">If (myByte | 1)...</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">&amp;&amp;</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">conditional and</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders &gt; 10) &amp;&amp; (MyMsg.numOrders &lt; 100)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20">
                    <p>
                      <font size="2">||</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 122pt" width="163">
                    <p>
                      <font size="2">conditional or</font>
                    </p>
                  </td>
                  <td class="xl66" style="width: 305pt" width="407">
                    <p>
                      <font size="2">If (MyMsg.numOrders &lt; 10) || (MyMsg.numOrders &gt; 100)</font>
                    </p>
                  </td>
                </tr>
                <tr style="height: 15pt" height="20">
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20">
                    <p>
                      <font size="2">//</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163">
                    <p>
                      <font size="2">commenting</font>
                    </p>
                  </td>
                  <td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407">
                  </td>
                </tr>
              </tbody>
            </colgroup>
          </table>
        </form>
        <p>
        </p>
        <form id="aspnetForm" name="aspnetForm" action="aa561847.aspx" method="post">
          <font size="2">//This is the comment</font>
        </form>
        <form id="aspnetForm" name="aspnetForm" action="aa561847.aspx" method="post">
          <font size="2">
          </font>
        </form>
        <p>
Since then, this little exercise has helped in a few occasions, particularly the need
for the <em>exists</em> function when working with optional property schema fields.
</p>
        <p>
I knew I should of read the manufacturers instructions <img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif" /></p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=455b0d7f-fffd-4806-bf4a-5c040fa9b38a" />
      </body>
      <title>List of functions and operators used in Orchestrations</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,455b0d7f-fffd-4806-bf4a-5c040fa9b38a.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2008/06/05/ListOfFunctionsAndOperatorsUsedInOrchestrations.aspx</link>
      <pubDate>Thu, 05 Jun 2008 14:42:47 GMT</pubDate>
      <description>&lt;p&gt;
Recently I implemented a BizTalk web services interface that required the need to
support SoapFault messages. I quickly fell into a common trap and received a compiler
error:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;code&gt;error X2162: must receive before sending a fault message on an implemented port&lt;/code&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
(see &lt;a href="http://www.traceofthought.net/2004/04/21/TheSucceededOperatorInBizTalk2004Orchestrations.aspx" target="_blank"&gt;Scott
Colestock's post&lt;/a&gt; that nicely outlines his experience with the same issue)
&lt;/p&gt;
&lt;p&gt;
As Scott describes, the solution involved using the &lt;em&gt;succeeded()&lt;/em&gt; function
to first test if a transaction scope had succeeded or not in order to send out my
soap-fault correctly. I vaguely recalled this function but never used it in anger
before. After having spent a hour or so I will never get back, I made a note-to-self
to seek out and reacquaint myself with the other operators and functions available
to use in expression shapes within an orchestration.
&lt;/p&gt;
&lt;p&gt;
Here is the full list taken from the &lt;a href="http://msdn.microsoft.com/en-us/library/aa561847.aspx" target="_blank"&gt;online
documentation&lt;/a&gt;:
&lt;/p&gt;
&lt;form id="aspnetForm" name="aspnetForm" action="aa561847.aspx" method="post"&gt;
&lt;table style="width: 489pt; border-collapse: collapse" cellspacing="0" cellpadding="0" width="652" border="0"&gt;
&lt;colgroup&gt;
&lt;font size="2"&gt; 
&lt;col style="width: 62pt; mso-width-source: userset; mso-width-alt: 2998" width="82"&gt;
&lt;col style="width: 122pt; mso-width-source: userset; mso-width-alt: 5961" width="163"&gt;
&lt;col style="width: 305pt; mso-width-source: userset; mso-width-alt: 14884" width="407"&gt;
&lt;/font&gt; 
&lt;tbody&gt;
&lt;tr style="height: 15.75pt" height="21"&gt;
&lt;td class="xl65" style="border-right: medium none; border-top: #4f81bd 0.5pt solid; font-weight: 700; font-size: 8pt; border-left: medium none; width: 62pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; height: 15.75pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-background-source: auto; mso-pattern: auto" width="82" height="21"&gt;
&lt;p&gt;
&lt;font size="2"&gt;Operator&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl65" style="border-right: medium none; border-top: #4f81bd 0.5pt solid; font-weight: 700; font-size: 8pt; border-left: medium none; width: 122pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-background-source: auto; mso-pattern: auto" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;Description&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl65" style="border-right: medium none; border-top: #4f81bd 0.5pt solid; font-weight: 700; font-size: 8pt; border-left: medium none; width: 305pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-background-source: auto; mso-pattern: auto" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;Example&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 27pt" height="36"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 27pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="36"&gt;
&lt;p&gt;
&lt;font size="2"&gt;checked()&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;raise error on arithmetic overflow&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;checked(x = y * 1000)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;unchecked()&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;ignore arithmetic overflow&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;unchecked(x = y * 1000)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;new&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;create an instance of a class&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;myObject = new MyClass;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;typeof&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;Type retrieval&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;myMapType = typeof(myMap)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 40.5pt" height="54"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 40.5pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="54"&gt;
&lt;p&gt;
&lt;font size="2"&gt;succeeded()&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;test for successful completion of transactional scope or orchestration&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;succeeded(&amp;lt;transaction ID for child transaction of current scope
or service&amp;gt;)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 27pt" height="36"&gt;
&lt;td class="xl66" style="width: 62pt; height: 27pt" width="82" height="36"&gt;
&lt;p&gt;
&lt;font size="2"&gt;exists&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;test for the existence of a message context property&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;BTS.RetryCount exists Message_In&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;+&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;unary plus&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;+(int x)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;-&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;unary minus&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;-(int x)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;!&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;logical negation&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;!myBool&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;~&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;bitwise complement&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;x = ~y&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;()&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;cast&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;(bool) myInt&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;*&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;times&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;Weight = MyMsg.numOrders * 20&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;/&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;divided by&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;x / y&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;+&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;plus&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;x + y&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;-&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;minus&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;x - y&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;lt;&amp;lt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;shift left&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;x &amp;lt;&amp;lt; 2&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;gt;&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;shift right&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;x &amp;gt;&amp;gt; 2&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;lt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;less than&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders &amp;lt; 10)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;greater than&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders &amp;gt; 10)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;lt;=&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;less than or equal to&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders &amp;lt;= 10)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;gt;=&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;greater than or equal to&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders &amp;gt;= 10)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;==&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;equal to&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders == 10)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;!=&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;not equal to&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders != 10)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;amp;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;and&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (myByte &amp;amp; 255)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;^&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;exclusive or&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (myByte ^ 1)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;|&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;or&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (myByte | 1)...&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;&amp;amp;&amp;amp;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;conditional and&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: medium none; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders &amp;gt; 10) &amp;amp;&amp;amp; (MyMsg.numOrders &amp;lt; 100)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="width: 62pt; height: 15pt" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;||&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 122pt" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;conditional or&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="width: 305pt" width="407"&gt;
&lt;p&gt;
&lt;font size="2"&gt;If (MyMsg.numOrders &amp;lt; 10) || (MyMsg.numOrders &amp;gt; 100)&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="height: 15pt" height="20"&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 62pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; height: 15pt; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="82" height="20"&gt;
&lt;p&gt;
&lt;font size="2"&gt;//&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 122pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="163"&gt;
&lt;p&gt;
&lt;font size="2"&gt;commenting&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td class="xl66" style="border-right: medium none; border-top: medium none; font-weight: 400; font-size: 8pt; background: #dbe5f1; border-left: medium none; width: 305pt; color: windowtext; border-bottom: #4f81bd 0.5pt solid; font-family: 'Trebuchet MS'; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dbe5f1 none" width="407"&gt;
&lt;/form&gt;
&lt;p&gt;
&lt;form id="aspnetForm" name="aspnetForm" action="aa561847.aspx" method="post"&gt;
&lt;font size="2"&gt;//This is the comment&lt;/font&gt;
&lt;/form&gt;
&gt;
&lt;form id="aspnetForm" name="aspnetForm" action="aa561847.aspx" method="post"&gt;
&lt;font size="2"&gt;&lt;/font&gt;
&lt;/form&gt;
&gt;
&gt;
&gt;&gt;
&lt;p&gt;
Since then, this little exercise has helped in a few occasions, particularly the need
for the &lt;em&gt;exists&lt;/em&gt; function when working with optional property schema fields.
&lt;/p&gt;
&lt;p&gt;
I knew I should of read the manufacturers instructions &lt;img alt="smile_wink" src="http://spaces.live.com/rte/emoticons/smile_wink.gif"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=455b0d7f-fffd-4806-bf4a-5c040fa9b38a" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,455b0d7f-fffd-4806-bf4a-5c040fa9b38a.aspx</comments>
      <category>BizTalk General</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/scotts/Trackback.aspx?guid=ee167577-c354-49af-906d-95d578b98a86</trackback:ping>
      <pingback:server>http://blogs.breeze.net/scotts/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/scotts/PermaLink,guid,ee167577-c354-49af-906d-95d578b98a86.aspx</pingback:target>
      <dc:creator>Scott Scovell</dc:creator>
      <wfw:comment>http://blogs.breeze.net/scotts/CommentView,guid,ee167577-c354-49af-906d-95d578b98a86.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/scotts/SyndicationService.asmx/GetEntryCommentsRss?guid=ee167577-c354-49af-906d-95d578b98a86</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
Today I was working on a BizTalk solution to intercept, transform, and relay emails
sent from a LOB system. BizTalk polled a POP3 mailbox and my orchestration replaced
the original plain/text email body with some fancy, template driven HTML content and
sent it out a dynamic SMTP send port. Only the email body was to be modified, the
rest of the email message was to replicate the original email message, including any
attachments (that may or may not be present).
</p>
        <p>
To aid in testing I wrote a simple .Net email client. (I got tired of composing a
new email in Outlook every time I wanted to test the solution)
</p>
        <p>
          <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="307" alt="Breeze Simple Email Client" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/BreezeSimpleEmailClient.png" width="395" border="0" />
        </p>
        <p>
The solution worked well (and perhaps I may post about the details sometime later)
accept for the fact the outbound message had lost the attachment filenames.
</p>
        <p>
          <a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/inboundshowingattachment.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="295" alt="inbound showing attachment" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/inboundshowingattachment_thumb.png" width="401" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingattachment.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="295" alt="outbound showing attachment" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingattachment_thumb.png" width="399" border="0" />
          </a>
        </p>
        <p>
Note: The attachment on the outbound message has a filename of ATT00241.DAT <img alt="smile_confused" src="http://spaces.live.com/rte/emoticons/smile_confused.gif" /></p>
        <p>
A helper class in my orchestration inspected the inbound message for attachments and
added them to the new outbound message. Each message part (attachment) was assigned
the MIME message part context properties of the same inbound message part. What I
found was the MIME.FileName property was not being populated by the MIME decoder.
</p>
        <p>
The MIME decoder in the POP3 adapter (when configured to apply MIME decoding) populates
the following message part context properties when a MIME encoded message is received:
</p>
        <p>
          <a title="MIME/SMIME Property Schema and Properties" href="http://msdn.microsoft.com/en-us/library/aa559271.aspx" target="_blank">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="250" alt="MIME/SMIME Property Schema and Properties" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/image.png" width="614" border="0" />
          </a>
        </p>
        <p>
I checked the message source of the email I was sending (via my DIY email client)
to check the MIME headers were present.
</p>
        <p>
          <a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/incorrectmessagesource.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="343" alt="incorrect message source" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/incorrectmessagesource_thumb.png" width="382" border="0" />
          </a>
        </p>
        <p>
Appears OK right?...
</p>
        <blockquote>
          <p>
content-type: application/octet-stream; name=SampleAttachment.zip<br />
content-transfer-encoding: base64
</p>
        </blockquote>
        <p>
Wrong <img alt="smile_embaressed" src="http://spaces.live.com/rte/emoticons/smile_embaressed.gif" /></p>
        <p>
It turns out the MIME decoder is looking for the content-disposition header values
</p>
        <blockquote>
          <p>
content-type: application/octet-stream; name=SampleAttachment.zip<br />
content-transfer-encoding: base64<br /><strong>content-disposition: attachment; filename=SampleAttachment.zip</strong></p>
        </blockquote>
        <p>
So some quick changes to the Breeze Simple Email Client ...
</p>
        <blockquote>
          <p>
attach.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment<br />
attach.ContentDisposition.FileName = Path.GetFileName(attachmentFileName)
</p>
        </blockquote>
        <p>
...and we were back to cooking with gas.
</p>
        <p>
          <a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/correctmessagesource.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="410" alt="correct message source" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/correctmessagesource_thumb.png" width="396" border="0" />
          </a>
        </p>
        <p>
and now attachments on our outbound message retain their original filename...noysh!
</p>
        <p>
          <a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingcorrectattachment.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="293" alt="outbound showing correct attachment" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingcorrectattachment_thumb.png" width="397" border="0" />
          </a>
        </p>
        <p>
And BTW, not all commercial email clients populate these MIME headers correctly either
(or so a friend of a friend who's aunt once knew someone that was talking to a girlfriend
at the supermarket said). Check out the message source of items in your inbox. You
might be surprised. <img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif" /></p>
        <p>
Happy <strike>spamming</strike> er...umm...BizTalking
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=ee167577-c354-49af-906d-95d578b98a86" />
      </body>
      <title>MIME.FileName not populated</title>
      <guid isPermaLink="false">http://blogs.breeze.net/scotts/PermaLink,guid,ee167577-c354-49af-906d-95d578b98a86.aspx</guid>
      <link>http://blogs.breeze.net/scotts/2008/05/26/MIMEFileNameNotPopulated.aspx</link>
      <pubDate>Mon, 26 May 2008 14:10:09 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Today I was working on a BizTalk solution to intercept, transform, and relay emails
sent from a LOB system. BizTalk polled a POP3 mailbox and my orchestration replaced
the original plain/text email body with some fancy, template driven HTML content and
sent it out a dynamic SMTP send port. Only the email body was to be modified, the
rest of the email message was to replicate the original email message, including any
attachments (that may or may not be present).
&lt;/p&gt;
&lt;p&gt;
To aid in testing I wrote a simple .Net email client. (I got tired of composing a
new email in Outlook every time I wanted to test the solution)
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="307" alt="Breeze Simple Email Client" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/BreezeSimpleEmailClient.png" width="395" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
The solution worked well (and perhaps I may post about the details sometime later)
accept for the fact the outbound message had lost the attachment filenames.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/inboundshowingattachment.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="295" alt="inbound showing attachment" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/inboundshowingattachment_thumb.png" width="401" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingattachment.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="295" alt="outbound showing attachment" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingattachment_thumb.png" width="399" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Note: The attachment on the outbound message has a filename of ATT00241.DAT &lt;img alt="smile_confused" src="http://spaces.live.com/rte/emoticons/smile_confused.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
A helper class in my orchestration inspected the inbound message for attachments and
added them to the new outbound message. Each message part (attachment) was assigned
the MIME message part context properties of the same inbound message part. What I
found was the MIME.FileName property was not being populated by the MIME decoder.
&lt;/p&gt;
&lt;p&gt;
The MIME decoder in the POP3 adapter (when configured to apply MIME decoding) populates
the following message part context properties when a MIME encoded message is received:
&lt;/p&gt;
&lt;p&gt;
&lt;a title="MIME/SMIME Property Schema and Properties" href="http://msdn.microsoft.com/en-us/library/aa559271.aspx" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="250" alt="MIME/SMIME Property Schema and Properties" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/image.png" width="614" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I checked the message source of the email I was sending (via my DIY email client)
to check the MIME headers were present.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/incorrectmessagesource.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="343" alt="incorrect message source" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/incorrectmessagesource_thumb.png" width="382" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Appears OK right?...
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
content-type: application/octet-stream; name=SampleAttachment.zip&lt;br&gt;
content-transfer-encoding: base64
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Wrong &lt;img alt="smile_embaressed" src="http://spaces.live.com/rte/emoticons/smile_embaressed.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
It turns out the MIME decoder is looking for the content-disposition header values
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
content-type: application/octet-stream; name=SampleAttachment.zip&lt;br&gt;
content-transfer-encoding: base64&lt;br&gt;
&lt;strong&gt;content-disposition: attachment; filename=SampleAttachment.zip&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
So some quick changes to the Breeze Simple Email Client ...
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
attach.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment&lt;br&gt;
attach.ContentDisposition.FileName = Path.GetFileName(attachmentFileName)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
...and we were back to cooking with gas.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/correctmessagesource.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="410" alt="correct message source" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/correctmessagesource_thumb.png" width="396" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
and now attachments on our outbound message retain their original filename...noysh!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingcorrectattachment.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="293" alt="outbound showing correct attachment" src="http://www.breezetraining.com.au/blogs/scotts/content/binary/MIME.Filenamenotpopulated_1363E/outboundshowingcorrectattachment_thumb.png" width="397" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
And BTW, not all commercial email clients populate these MIME headers correctly either
(or so a friend of a friend who's aunt once knew someone that was talking to a girlfriend
at the supermarket said). Check out the message source of items in your inbox. You
might be surprised. &lt;img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif"&gt;
&lt;/p&gt;
&lt;p&gt;
Happy &lt;strike&gt;spamming&lt;/strike&gt; er...umm...BizTalking
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/scotts/aggbug.ashx?id=ee167577-c354-49af-906d-95d578b98a86" /&gt;</description>
      <comments>http://blogs.breeze.net/scotts/CommentView,guid,ee167577-c354-49af-906d-95d578b98a86.aspx</comments>
      <category>BizTalk General</category>
    </item>
  </channel>
</rss>