by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
In June, we released a new community release build of the Microsoft ESB Guidance on the ESB Guidance community site. In addition to fixes and new samples & guidance, this release includes new and augmented features such as WS-MetadataExchange, WCF adapter integration, UDDI publishing, enhanced ESB portal, third party SOA management and governance integration and more.
For those interested to learn more, make sure to read Marty Wasznicky’s latest blog postings. You’ll find a lot of very helpful information there.
Regards,
Marjan
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
This is a fairly common scenario after Windows 2003 SP1 (or greater) is installed, so I thought I better put in my two cents
Scenario: BizTalk seems to lose connectivity to the MsgBox (and all other databases on that SQL instance)
Problem: The operating system (w2k3 sp1) running the SQL server instance is misinterpreting the heavy TCPIP connection traffic from the BizTalk App server as a Denial of Service (DOS) attack.
Clarification: This is an operating system level issue. This is not BizTalk or SQL per se (though they are common victims of this security feature). This is a security feature for the OS that affects how the OS interprets large amounts of incoming connections from individual clients.
Factors:
1. Windows Server 2003 SP1 (or higher) is installed on the SQL server hosting the BizTalk DBs
2. SynAttackProtect is still set to “1” on the SQL server
3. Concurrent TCPIP connection requests from a specific BizTalk app server exceeds the critical threshold (Sorry, don’t know what that threshold is!)
Diagnosing:
- Look for the following event entries:
Event Type: Error
Event Source: BizTalk Server 2004
Event Category: (1)
Event ID: 6913
Computer: %ServerNameHere%
Description: SQLServer, BizTalkMsgBoxDb, [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation..
Event Type: Warning
Event Source: BizTalk Server 2004
Event Category: (1)
Event ID: 5410
Computer: %ServerNameHere%
Description: An error has occurred that requires the BizTalk service to terminate. The most common causes are an unexpected out of memory error and an inability to connect or a loss of connectivity to one of the BizTalk databases. The service will shutdown and auto-restart in 1 minute. If the problematic database remains unavailable, this cycle will repeat.
Error message: [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation.
Error source:
BizTalk host name: BizTalkHost
BizTalk Windows service name: BTSSvc$BizTalkHost.
Fixes:
1. Set the SynAttackProtect registry setting as described in http://support.microsoft.com/kb/899599
2. ALSO take a look at the Group policy for that SQL server to be sure that the Group Policy does not periodically UNDO the setting change that you did in step 1. I have been in the situation where I fixed the issue, but then the GP Update or reboot undid the fix! (Put the server in a separate OU if you have to, but make sure you isolate the box from policies that would reset this registry key)
Limitations
1. I don’t know how to disable this feature for a specific set of clients (i.e. SynAttackProtect is off for the BizTalk app servers but remains on for other servers). The setting seems to be at the protocol level so I wouldn’t even know where to start looking for network set definition here.
Is there something that I can do to make this blog more helpful to you? I welcome your feedback!
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
This is a fairly common scenario after Windows 2003 SP1 (or greater) is installed, so I thought I better put in my two cents
Scenario: BizTalk seems to lose connectivity to the MsgBox (and all other databases on that SQL instance)
Problem: The operating system (w2k3 sp1) running the SQL server instance is misinterpreting the heavy TCPIP connection traffic from the BizTalk App server as a Denial of Service (DOS) attack.
Clarification: This is an operating system level issue. This is not BizTalk or SQL per se (though they are common victims of this security feature). This is a security feature for the OS that affects how the OS interprets large amounts of incoming connections from individual clients.
Factors:
1. Windows Server 2003 SP1 (or higher) is installed on the SQL server hosting the BizTalk DBs
2. SynAttackProtect is still set to “1” on the SQL server
3. Concurrent TCPIP connection requests from a specific BizTalk app server exceeds the critical threshold (Sorry, don’t know what that threshold is!)
Diagnosing:
- Look for the following event entries:
Event Type: Error
Event Source: BizTalk Server 2004
Event Category: (1)
Event ID: 6913
Computer: %ServerNameHere%
Description: SQLServer, BizTalkMsgBoxDb, [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation..
Event Type: Warning
Event Source: BizTalk Server 2004
Event Category: (1)
Event ID: 5410
Computer: %ServerNameHere%
Description: An error has occurred that requires the BizTalk service to terminate. The most common causes are an unexpected out of memory error and an inability to connect or a loss of connectivity to one of the BizTalk databases. The service will shutdown and auto-restart in 1 minute. If the problematic database remains unavailable, this cycle will repeat.
Error message: [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation.
Error source:
BizTalk host name: BizTalkHost
BizTalk Windows service name: BTSSvc$BizTalkHost.
Fixes:
1. Set the SynAttackProtect registry setting as described in http://support.microsoft.com/kb/899599
2. ALSO take a look at the Group policy for that SQL server to be sure that the Group Policy does not periodically UNDO the setting change that you did in step 1. I have been in the situation where I fixed the issue, but then the GP Update or reboot undid the fix! (Put the server in a separate OU if you have to, but make sure you isolate the box from policies that would reset this registry key)
Limitations
1. I don’t know how to disable this feature for a specific set of clients (i.e. SynAttackProtect is off for the BizTalk app servers but remains on for other servers). The setting seems to be at the protocol level so I wouldn’t even know where to start looking for network set definition here.
Is there something that I can do to make this blog more helpful to you? I welcome your feedback!
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
Windows Server 2008 e-book offer
The Microsoft Press Windows Server 2008 e-book offer includes excerpts from the following publications:
Introducing Windows Server 2008 (ISBN: 9780735624214),
by Mitch Tulloch with the Microsoft Windows Server Team
Microsoft Windows PowerShell Step by Step (ISBN: 9780735623958),
by Ed Wilson
Additional chapters from Introducing Windows Server 2008 will be added to the site periodically, so be […]
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
DarrenJ has taken ownership of BizTalk Server 2006 Profiler and BizTalk Server 2006 Documenter which are very handy to develop documentation for your applications and also assess orchestration performance metrics.
BizTalk Server 2006 Orchestration Profiler:
Creates CHM report files illustrating the level of coverage for specified BizTalk orchestrations. This tool can be run to gain a consolidated […]
by Richard | Jul 5, 2007 | BizTalk Community Blogs via Syndication
>
> **Update 2012-03-28**
Unfortunately the images for this post was lost in upgrade of the blog.
>
>
This post shows how it’s possible to create your own .NET class and then use this within your orchestration (as a variable) to work with typed lists – something that unfortunately isn’t supported out of the box in BizTalk orchestrations. Below is the class used to create a typed list for System.String objects.
<span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Collections.Generic;
<span class="kwrd">using</span> System.Text;
<span class="kwrd">namespace</span> Sample.BizTalkCollections
{
[Serializable]
<span class="kwrd">public</span> <span class="kwrd">class</span> StringList
{
<span class="kwrd">private</span> List<<span class="kwrd">string</span>> _list = <span class="kwrd">new</span> List<<span class="kwrd">string</span>>();
<span class="kwrd">public</span> <span class="kwrd">void</span> Add(<span class="kwrd">string</span> item)
{
_list.Add(item);
}
<span class="kwrd">public</span> <span class="kwrd">int</span> Count()
{
<span class="kwrd">return</span> _list.Count;
}
<span class="kwrd">public</span> <span class="kwrd">bool</span> Remove(<span class="kwrd">string</span> item)
{
<span class="kwrd">return</span> _list.Remove(item);
}
<span class="kwrd">public</span> <span class="kwrd">void</span> RemoveAt(<span class="kwrd">int</span> index)
{
_list.RemoveAt(index);
}
<span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">string</span> ToString()
{
StringBuilder builder = <span class="kwrd">new</span> StringBuilder();
<span class="kwrd">foreach</span> (<span class="kwrd">string</span> item <span class="kwrd">in</span> _list)
{
builder.AppendLine(item);
}
<span class="kwrd">return</span> builder.ToString();
}
}
}
Notice that the class is serializable so BizTalk can serialize when dehydrating the orchestration to the database. We’ve also chosen not to extend the IList interface as we don’t want to expose all methods of that interface, but only the once we’ll really going use within our orchestrations.
This StringList class exists within the BizTalkCollections namespace where we have other classes for lists types with different datatypes (for example ObjectList, Int32List and so on). Below is a picture showing the structure of the Visual Studio project containing all the collections we current have implemented. This project and the BizTalk testproject is available for download here.
In the orchestration we then have set up a variable and type this to our StringList class within the Sample.BizTalkCollections namespace.
Also make sure the assembly with your collection class is installed in the GAC, otherwise you’ll end up with a FileNotFound exception saying
>
> Could not load file or assembly ‘Sample.BizTalkCollections, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7109528d5dbf986b’ or one of its dependencies. The system cannot find the file specified.
>
>
Then you can use the following code within your orchestration! Download the sample project and test it.
A really generic class
I’d really like for it be possible to create my own generic classes and then initialize these using something like the below.
genericList = Sample.BizTalkCollections.GenericList<System.String>();
However this isn’t possible as BizTalk orchestrations don’t seem to understand generic classes … If someone found a solution to this please let me/us know via the comments to this post.
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
This post shows how it’s possible to create your own .NET class and then use this within your orchestration (as a variable) to work with typed lists - something that unfortunately isn’t supported out of the box in BizTalk orchestrations. Below is the class used to create a typed list for System.String objects.
using System;
using System.Collections.Generic;
using System.Text;
namespace Sample.BizTalkCollections
{
[…]
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
Here’s another reminder to myself when writing BizTalk Adapters: When creating a receive-side
BizTalk adapter, you need to be extra careful about when you can release (clean up)
a message part data stream.
There are two particular scenarios that I’ve seen cause trouble for adapters when
trying to implement message suspension on submit failures:
1. You release the message part data streams too early. This mistake is very
easy to make when using the base adapter in the BizTalk SDK, because it is not
clear about when it is done processing a message. So what might happen is that you
end up releasing the data streams after the failed submit batch is done, but before
the suspension batch is committed, so that the messaging engine is left with a disposed
stream in the middle of an operation.
Be careful about ensuring you’re all clear before cleaning up after yourself.
2. Ensure that data streams are readable before suspending messages.
Another common error I’ve seen is using non-seekable streams as message part
data streams. When you first submit a message from your adapter, and it fails, it’s
very likely that the data stream has been partially or completely consumed during
submission (for example, by a disassembler component in the pipeline). If you have
a non-seekable data stream, and you simply take the same failed message as is and
submit it in a second batch to the suspend queue, it will fail, because the messaging
engine cannot read the entire message contents anymore to save them.
So if you find yourself in this scenario, be prepared to recreate the data streams after
the initial submission failed and before the second one.
Either of these problems can cause some really weird errors during processing including:
-
The Messaging Engine received an error from transport adapter “XXX” when notifying
the adapter with the BatchComplete event. Reason “Exception from HRESULT: 0x80C0169C”.
-
The transport batch from adapter “XXX” has been rejected by the messaging engine because
the batch is empty. Contact the adapter provider to find out why the transport batch
is empty.
by community-syndication | Jul 5, 2007 | BizTalk Community Blogs via Syndication
Hi,
I’ve recently taken ownership of the source for the BizTalk Orchestration Profiler and BizTalk Documenter tools that Jason Birth originally developed, the documenter has worked fine with BizTalk Server 2006 but the Profiler was broken in a number of places. I have just finished a new build of the Profiler which now works with 2006 and fixed a few other niggles, both tools are now available and I’m open to feature suggestions for both tools moving forward.
If you haven’t seen or used the tools before then do take a look – they are invaluable in many circumstances and I for one use them one way or another on every BizTalk engagement, the Profiler is here: http://www.codeplex.com/BizTalkOrcProfiler and the Documenter is here: http://www.codeplex.com/BizTalkDocumenter
Information on both tools is copy/pasted below from the respective CodePlex sites, enjoy!
BizTalk Orchestration Profiler
Creates CHM report files illustrating the level of coverage for specified BizTalk orchestrations. This tool can be run to gain a consolidated view of orchestration tracking data for a specified period of time to help developers get an idea of how their orchestrations are being processed and how much coverage they are getting in their testing. In addition to simple coverage information the data presented helps to identify latency and code path exceptions by highlighting long running and error prone orchestration shapes which is key to effective performance testing.
The image below shows a sample of the coverage summary, at a glance you can see the percentage of overall coverage acheived upon an individual orchestration, if all of the shapes are touched as part of your orchestration then you will acheive 100% coverage, common reasons for not covering all shapes with an orchestration are not running tests that stress the error paths of your solution. This coverage summary also provides you metrics around execution duration of your orchestration easily identifying orchestrations that take a long time to execute.

The image below shows the orchestration coverage in detail, shapes highlighted in green have been executed as part of your last test pass and any shapes not executed will be highlighted in red. This enables you to easily understand what parts of your solution have been tested and which parts have not and adjust your testing as necessary.

As part of the profiler report you can see the “Top 10 Least Successsfull” shapes and the “Top 10 Longest Running” shapes, understanding where time is being spent inside your orchestration is key to effective performance testing and has been proven on a number of instances to pinpoint poor orchestration design and coding which when resolved has dramatically increased overall performance. The key is to understanding exactly where time is being spent and this tool offers a no-code view into your running system.

BizTalk Documenter
Creates compiled help files for a given BTS 2006 installation. This tool can be run on an ad-hoc basis using the UI or from the command line as a post build/deploy task to create a compiled help file describing a BTS 2006 installation. It will compile: BTS Host configuration, Send/Receive port configuration, Orchestration diagrams, Schema and Map content, Pipeline process flow, Adapter configuration, Rule engine vocabularies and policies, More and publish them as compiled help files. Optionally you can embed custom HTML content and custom descriptions for all BTS artifacts to produce a more customized look and feel to the CHM output
This tool can be run on an ad-hoc basis using the UI or from the command line as a post build/deploy task to create a compiled help file describing a BTS 2K4 installation. It will compile:
BTS Host configuration
Send/Receive port configuration
Orchestration diagrams complete with any custom code
Schema and Map content
Pipeline process flow
Adapter configuration
Rule engine vocabularies and policies
More
and publish them as compiled help files or Word 2003 XML. Optionally you can embed custom HTML content and custom descriptions for all BTS artifacts to produce a more customized look and feel to the CHM output.
The screenshow below shows some of the information collected about an Orchestration, you can see what variables, maps, messages, ports, correlation sets, etc. that are used by a given Orchestration.

The screenshot below shows further orchestration information which is collected, in this case we can see all of the inline code written by the developer for the orchestration, useful for code reviews and understanding a solution.

by community-syndication | Jul 4, 2007 | BizTalk Community Blogs via Syndication
I enjoyed the “That Web 2.0 is all fizz and no substance” debate that took place at WebStock Mini last month (warning parental discretion is advised).
Cheeky comment by Philip from Xero (11mins in) “This is a Mac which is an inferior computer[sic] I hate Mac’s go read my blog”. I have noticed that Rod has armed all of his Xero team with Mac’s I guess it helps them sell on their Software as a Service message.
Great also to see Zef Fugaz has made the NZ finals of fullcodepress… condolences for John Lewis who didn’t make the cut!
Better By Design has posted the videos from their recent CEO Summit as well there is a session on there by Sam Morgan that is certainly worth a look.