Long time I did not write a post about MBV !  two reasons mainly : I was quite busy in my BizTalk Tech Lead job and I released until now on my blog only new minor MBV builds for which I considered that dedicated posts were not maybe justified; so I just made them available on my classic download link http://blogs.technet.com/jpierauc/pages/msgboxviewer.aspx  listing quickly their new small features and the fixes.

I had took time however to think about an interesting major feature I could include in MBV to give to the tool again more flexibility for users and more attraction, and I think it can justify a post this time to present it :-).


I will make available very soon (probably next week) a new major build (10.00)  containing I think an interesting new feature that I present below.
This build is not available immediately as I have small tests to do yet before and I would prefer that an important Access Denied  bug found very recently is solved definitively (see below for more details) before.

I had so noticed two main areas of improvement in MBV :


1)      Until now, it was not possible to enter at runtime some properties per query (like a “sort order” prop for example) . The sort order properties  for “Send Ports/RL/Orchs”  or “Tables Size” queries were well present in previous versions but were just some options in the ”Options” tab and were specific to only these queries.
I thought also that it could be interesting to be able to specify some properties at runtime for any type of query contained in MBV before to start an analyze

I decided so to add support of query custom properties in  my Health Check engine that MBV use (I will write soon another post presenting you MBV Archirtecture and the HC engine that I developed which can be used very easily in any .NET app to do a custom Health Check).

Each query can have so 0 to N custom properties with following attributes :

a.       ID
b.      Caption
c.       Default Value
d.      Value
e.      ReadOnly flag
f.        Mandatory Value flag

When a such property is defined for a query, its ID can be used in the query body or query title to be replaced dynamically during collect execution, using syntax “%u00e0 la macro” %<MYPROPID>%

This possibility allow so now to have parameterized queries with possibility then to enter quickly parameters value before to start a collect.
This new build of MBV  that I hope to release next week will allow so to enter very easily value for each custom property present for a query (if they are not read only) depending of the query selected in the Query ListViews.


2)  Until now, I have to admit that Gui interface of MBV tool (so the Gui tool version “MsgBoxViewer.exe” ) was quite “heavy” and confusing with lot tabs and fields everywhere present in the form  and

That’s why, with advises of Jean Severino my colleague, I redesigned the interface to be more easy to use, more intuitive, and less loaded I think :

a   . I removed the User Roles support as it was rarely used
b.      I grouped the output files Path fields and periodic collect options in the OPTIONS tab
c.       I removed the numerous Queries output Tabs keeping only two:  one displaying the Header and one displaying the Summary Report
d.      For each query you select (not just check), its standard and custom properties are displayed immediately on the right side and you can enter quickly values for custom properties.

Once I will make available this version on this blog, you could see concretly this possibility selecting for example one of these queries :   “Send Ports”, “Db Space”,  “BizTalk Perfmon counters”, “Last Svc Instance” etc.  you will see then the corresponding custom propertis displayed on the right side of the dialogbox and can change them if you want

Each value you enter in a custom property will be saved into the MBV XML Settings file when you exit the tool 

Other Features in build 10.00:

I added also optional queries below in this build suggested by Shaheer and Mike  who are Escalation engineers in Microsoft BizTalk US Support team

See their very interesting blog http://blogs.msdn.com/biztalkcpr/default.aspx !

          Get number of rows in spool associated to dehydrated instances

Rows/month for some tables (“Spool”, “Instances”, and some DTA tables)


And finally I added additional Check Rules on the optional “Last Max  100 Application Events errors” query identifying know issues from the error event entries found in your BizTalk Server Application Journal. I will add more and more warnings rules for this query in each next version, the idea is indeed to also use MBV as an “Application Journal Analyzer” identifying automatically some known important BizTalk issues when possible.



I had to fix urgently  an important Access Denied issue occurring when an MBV user is not sysadmin on BizTalk Mgmt Db as it prevent MBV to start correctly its analyze.
I found indeed that Mgmt table “adm_Messagebox” do not have permissions like “adm_group” for example and because MBV is doing a select in this table to get all the messagebox, it fails raising an Access Denied error and stop immediately.
I found finally that a Mgmt SQL stored procedure is used  instead to get that info and this sp is doing itself the select statement


Mark Thomas who is a famous BizTalk Field engineer at Microsoft UK reported me this problem recently and I made so a first fix but tests are still pending to see if this problem is definitively solved or not and if we don’t have other Access Denied erros later in the analyze process, that’s why I can not make available now this new build as I would prefer to publish it only if I’m sure these issues are fixed.

So, I have again to some very minor modifications and small tests do before to share publicly this version on my blog but I hope to publish it next week.
I sent it internally today to Microsoft engineers so maybe you can receive it anyway if you open a BizTalk incident at Microsoft Support


So monitor the blog in next days to get this new version


Thanks !