Sometimes when you create a BizTalk solution you have several servers that submit data to a BizTalk Server. If those servers don't deliver any data, BizTalk won't process anything. There could be several reasons why the systems don't deliver any data but most of the times something went wrong on the other systems. There are times that you as a BizTalk admin want to know if other systems fail.
There is a solution to this problem.
Have a simple BizTalk adapter read the Eventlog of the machines involved and simply publish every event in the messagebox. This causes another problem, cause if there is no subscription the published message will generate an eventlog entry on the BizTalk Server itself. This is where the NOPE adapter comes in (No Output Producing Endpoint).
Simply install this adapter and add a filter to consume all the messages coming from a specific receive port. From now on every Eventlog entry will be consumed. (they will dissapear in thin air).
Once the eventlogadapter is installed you can get it's schema bij setting a up a receive location (passthru pipeline) and dump the message to disk somewhere. From now on you can inspect one of the evenlog messages and see what kind of XML they produce. Simply generate an XSD from it and add a property schema to it. Make all the important xml nodes properties and from now on you can filter on those properties....
The next step.
Have some Email groups set up in Exchange, for example 'Biztalk Administrators', 'Database Administrators' etc. Then add the correct recipients to these groups. Now Create Send ports that will send messages to each of these groups. From now on you can add filters to the send ports on the properties of the eventlog entry and have an entry send to the correct group.
Below is an example of an eventlogentry :
<Message>SQLServerAgent service successfully stopped.</Message>
By filtering on <SourceName>,<Type>,<ComputerName> and possibly <EventCode> a lot is possible and you can make sure that people get warned if a problem arises on a machine. And for sure you can use this as well to monitor the bizTalk Server itself to see if messages get suspended....
<SourceName>BizTalk Server 2004</SourceName>
<CategoryString>BizTalk Server 2004</CategoryString>
<Message>There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive" Source: "XML disassembler" Receive Location: "D:\Temp\Blaat\*.*" Reason: Finding document specification by message type "EventLogEntries" failed. Verify that the schema is deployed properly. </Message>
Simply setting the filter to : eventcode = '12588631' would have warned you via email about a suspended message. You cannot filter on the message itself because it could be larger then 255 characters.
Get the NOPE adapter here, and get the Eventlog Adapter here. Remember to fill the receive Adapter properties for the EventlogAdapter when you add the adapter to the BizTalk configuration. Just open them and then save them, that's enough....