How to manually recreate missing BizTalk performance counters

To identify performance issues in a BizTalk solution, you should rely on the performance counters that BizTalk Server uses. All the BizTalk performance counters should be  added to the registry when you run the configuration wizard. If the registry keys were overwritten somehow, those performance counters were gone.  You could use the configuration wizard to recreate those missing BizTalk performance counters, but it requires reconfiguring the features that use the performance counters. To do so you should unconfigure them first, which is something you might not want to do.  Even though it is undocumented, you can manually populate those resister keys for the missing performance counters.

There are two types of the performance libraries that BizTalk Server uses:

1. BTSPerfMonExt.dll for the performance objects that the unmanaged code of BizTalk Server uses.

2. netfxperf.dll for the performance objects that the managed code of BizTalk Server uses.

  • Note: netfxperf.dll is a .NET framework component. It is shared for all .NET performance counters. For more information about netfxperf.dll see .NET Performance Counters.

The following tables shows which performance library is used for each BizTalk performance object:

Object Performance Counter Library Installer
BizTalk:Message Box:* netfxperf.dll Microsoft.BizTalk.MsgBoxPerfCounters.dll

BizTalk:Message Agent
BizTalk:File Receive Adapter
BizTalk:File Send Adapter
BizTalk:HTTP Receive Adapter
BizTalk:HTTP Send Adapter
BizTalk:POP3 Receive Adapter
BizTalk:FTP Receive Adapter
BizTalk:FTP Send Adapter
BizTalk:MSMQ Receive Adapter
BizTalk:MSMQ Send Adapter
BizTalk:SOAP Receive Adapter
BizTalk:SOAP Send Adapter
BizTalk:SMTP Send Adapter
BizTalk:SQL Receive Adapter
BizTalk:SQL Send Adapter
BizTalk:Messaging
BizTalk:Messaging Latency

BTSPerfMonExt.dll BTSPerfMonExt.ini
BTSPerfMonExt.h
BizTalk: BAS TPM Management Web Service
netfxperf.dll Microsoft.BizTalk.KwTpm.TPMgmtWSPerf.dll
BizTalk: BAS TPM Publishing Web Service netfxperf.dll Microsoft.BizTalk.KwTpm.TPPubWSPerf.dll
BizTalk:Windows SharePoint Services Adapter netfxperf.dll Microsoft.BizTalk.KwTpm.WssAdapter.Runtime.dll
BizTalk:TDDS netfxperf.dll Microsoft.BizTalk.Bam.EventObservation.dll

 

To recreate the performance counters using netfxperf.dll, you can use InstallUtil.exe in the .NET Framework. If the assembly is installed in the GAC, you can run InstallUtil.exe as follows:

Installutil /i /assemblyname “<InstallerFileName>, Version=<VersionNumOfTheInstaller>, Culture=neutral,
PublicKeyToken=<PublicKeyOfTheInstaller>

For example,

InstallUtil /i /assemblyname “Microsoft.BizTalk.MsgBoxPerfCounters, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”

If it is not, you can run InstallUtil.exe as follows:

InstallUtil /i <Installer>

For example,

InstallUtil /i Microsoft.BizTalk.KwTpm.TPMgmtWS.dll

 

To recreate the performance counters using BTSPerfMonExt.dll,  you can use lodctr.exe and unlodctr.exe as follows:

1. Copy the BTSPerfMonExt.ini and BTSPerfMonExt.h files to the %windir%\system32 folder.
2. At a command prompt, go to the the %windir%\system32 folder, and then type the following command to uninstall the damaged performance counters.

unlodctr “BTSSvc.3.0”

3. Then, type the following command to reinstall the BizTalk performance counters:

lodctr BTSPerfMonExt.ini

Thanks,
Young

How to Promote Properties from an Orchestration

The best reason to blog something is so that you can Google your own brain.

— Poorly paraphrased Scott Hanselman, yet so very true.

In that spirit, today I’m posting a reminder of a very useful trick for promoting

properties out of Orchestrations. Kudos go to Saravana

Kumar and David

Hurtadofor posting about this long before I did, but I record this information

here to make sure I can find it when next I need it.

Normally when you assign a value to a message context property from within an Orchestration,

that property is not promoted, even if it was promoted prior to you assigning a value

to it. In order to promote a property within an orchestration we use an “elegant

hack” as detailed below:

  1. Create a new Correlation Set, and as such likely a new Correlation Type, which contains

    the property or properties which you wish to promote.

  2. When you use a “Send” shape in your orchestration, there is a property called “Initializing

    Correlation Sets”, check off your new Correlation Set from the drop down on this property.

  3. Rejoice, you have now promoted those properties.

Now before anyone asks, no this does not create orphaned subscriptions in the Message

Box, we are never creating a Receive using this Correlation Set so

we’re never creating a subscription. This can be very useful, in particular

I’ve used it just this week on a 2006 R2 project I’m working on to enable batching

from an Orchestration. That is a long story, but the short version is we’re creating

a new message in the Orchestration which we then intend to immediately queue for batching,

so we need to promote these properties without ever having passed through a pipeline

with this message.

So it begins

As the saying goes, there’s always a first time, and this blog entry is a first for me.
My name is Thiago Almeida, I work for one of New Zealand’s largest IT companies as one of their senior integration specialists using Microsoft technologies. I work most of the time with Microsoft BizTalk Server (Mainly 2006 and […]

BAM -> BTS -> BI -> Performance Point…cool

In transit with a little time to spare I thought I’d share some thoughts around an
area that is set to boom in the near future – ‘Business Activity Monitoring’

I know you must be thinking – What? why? who….? what’s Mick on about.

Let’s have a quick chat on my thoughts:

  1. Within the next 3 yrs there is going to be even less ‘custom raw
    code’ being written and more ‘integration code’ within the MS product stack. Of course
    there will be specific needs, but in general across the board for business related
    applications – why build it from scratch? will be the reasoning.

    We can see this today heavily with the Sharepoint boom – why build an ASP.NET app
    when you can plug your bits into a WSS V3.0/ASP.NET app?

    Many other products such as OCS, Speech Server, MOSS etc etc. are all conducive to
    integration code. (If you don’t have to write 20 000 lines of code – integrate and
    customise and write 2000. But us developers want to do everything by hand….so in
    some ways, we’re our own worst enemy)

    It would not be uncommon to have several products making up a solution.

    How do we keep an eye on that? (We could send the work experience kid around the the
    servers to make sure they are all running well? but how many work exp. kids do we
    have?)

  2. BizTalk Services – if we look at the increasingly important role
    that BizTalk is playing within organisations in providing THE Application Server where
    WCF Services, Business Processes etc can all be hosted within. Out of the box slicing
    and dicing of load/capacity and so on. (It will be an interesting time when the finer
    details are nutted out with IIS 7 WAS – who does what)

    As we start building all sorts of systems that require point to point or connectivity
    between the components, typically we would look to WCF to provide that glue while
    conforming to standards (e.g. WS-*) future proofing extensions.

    We would then need to house those WCF Services and IIS could be an option…… BTS
    provides fault tolerance and durability around these services as well.

    BTS provides not only connectivity at the transport level, but also at the application
    level such as SAP, Siebel…. all out of the box. Being able to consume, transform and
    publish services/information at all these levels is one of the things that BizTalk
    does very well!

    Looking into BizTalk Services – things like ‘Event buses’ and ‘Subscribing’ to
    these events seem to be possible. These may span end-to-end on the enterprise so departments
    will be able to do their own local processing from a ‘corporate received event’ (just
    my thoughts at this point) – similiar to MSMQ technology, but with ALOT more functionality.

  3. Ok – onto the chase….(just had to go and pick my mobile up in the airport lounge
    – left it somewhere….head’s not screwed on right 🙂

    So in essence looking within the next 3 years, systems will be made up of many disparet
    sub-systems each – we need to get a view of “How are we going?” (in
    a business context – not the flux capacitor is running well)

  4. Enter BAM (BizTalk) – Business Activity Monitoring:

    1. Allows for the creation of ‘SQL OLAP Cubes’ from Business Key Performance Indicators
      (a business person *can* sit down in Excel and define all these numbers – except my
      winning lotto numbers…I’m still waiting 🙂 – then hand them the BAM and boom! a
      cube is born.

      This is the way *it MAY* be pitched – but my experience is that it’s a Techo that
      does it – with the business person looking over the shoulder.)

      e.g. Order Total, Order Time Taken, Order Average Fulfillment Time, Order Destination.

    2. We can populate these cubes (& their values) from WF Workflows, custom .NET code,
      Business Rules, BizTalk and WCF Services.

      That friends is the missing piece to the puzzle. So as your system
      is crunching away, business intelligence is obtained from the working system in the
      context that you specify (a fancy way of saying – your business values).

      The capture of this information is done through BAM Interceptors (different
      flavours depending on if it’s a Biztalk process, WF Workflow, WCF Service, Buffered,
      Direct…)

      The cool thing is that BAM databases can be aggregated etc. So we
      may have a business process running in Perth and a similiar in Syd with the end result
      being viewed in Melb.

      All in all – we’re in a cube. All the existing BI tools can hook into the
      Cube as per normal.

    3. How can I interpret and work with my cubes? I’ve heard MOSS has ‘dashboards’ and other
      things that may help me……

      ENTER THE DRAGON……no I meant to say “Performance Point” (what
      a great movie that was!)

      Perf. Point is driven out of MOSS (perfect for the whole sharing/caring/collab world
      that Sharepoint pushes – alerts/presence info etc etc)

      It provides intelligence and the ability to forecast/plan/manipulate information from
      many different sources of which BAM is one. Perfect – you’re very own rockect scientist
      on call.

      You business processes is just another area that plugs into this 🙂

    4. Tying it all together in a nutshell…..
      systems – more integration code, less custom code/app silos -> complex solutions
      comprising of many components -> how to intelligently track/monitor -> BAM ->
      BAM -> Cube(s), easy, distributable -> Perf Point, MOSS based very easy

      If I was a partner and wondering what technology to get into right now…..apart from
      BizTalk R2 :)….. gotta be Perf. Point -> 18 months time, you won’t have enough
      perf. point people! 🙂

      Enjoy your Friday folks!

MOSS: Accessing the Crawler ranking parameters – a little stsadm extension

MOSS: Accessing the Crawler ranking parameters – a little stsadm extension

I had a little time this week and thought I’d write a quick stsadm extension to enumerate
and set
index ranking parameters, when querying MOSS indexes.

My main motivation was so you could change the ranking order of XLS files over PPT
files etc.

There seems to be a ancient art in setting these values.

So what’s included:

1. an XML file that needs to be copied to the \12\Config folder. Tells stsadm about
the new commands and what class to run.

2. A .NET assembly that needs to be GAC-ed so the stsadm doesn’t
have to look too hard to try and find the class.

Creating an extension is a pretty easy thing – extend an interface
as follows:

 

The next part was to interface with the indexing service as follows:

The keyValues collection are created by stsadm and passed
into your method –
how good is that.smile_regular

To get access to the Ranking and SearchContext classes
a few additional references are required. Such as:

– Microsoft.Office.Server
– Microsoft.Office.Server.Search
– Microsoft.Sharepoint.Search

These are all in the attached project.


Running the enumindexrankparams looks a little like this:
(these are some secret numbers to do with weightings of ‘click depth’, ‘url depth’,
language etc. A value of 0 is ignored. I’m still working through
what these exactly are – apart from the file type ones)

As I understand you can’t add additional weightings here for file types like PDF etc.

the commands to run this are:

1. stsadm -o enumindexrankparams -site <url to ssp>

2. stsadm -o setindexrankparams -site <url to ssp> -<rank name>
<rank value>
    stsadm -o setindexrankparams -site <url to ssp> -filetypepriorlistitems
1

Have fun – the project shows you how to extend the stsadm and also start to get a
bit of a feel of the Search/Index APIs.

Grab the source here –

Source
Code

>

BizTalk 2006 R2 Jumpstart Course

BizTalk 2006 R2 Jumpstart Course

For those people in Australia interested in BizTalk 2006 R2, Microsoft is running a two-day “jumpstart“ course around the country.  I will be teaching the ones in Perth and Melbourne, while Mick Badran is taking Brisbane and Sydney.  Check out this link for dates and more details.


https://www.local.microsoft.com.au/australia/events/register/home.aspx?levent=478264&linvitation