Wednesday, July 1, 2009

BAM Alerts issue while installing BizTalk Server 2009



Problem:


While configuring BizTalk Server's BAM Alerts, you might get the following error:

Microsoft (R) Business Activity Monitoring Utility Version 3.8.368.0
Copyright (C) 2006 Microsoft Corporation. All rights reserved.
ERROR: Failed to set up BAM database(s).
There was a failure while executing nscontrol.exe. Error:"Microsoft Notification Services Control Utility 9.0.242.0
Microsoft Corp. All rights reserved.


Analysis:

This happens when the notification services are not properly installed in this environment. The real problem is that – Notification services is not part of the SQL Server 2008 installation, unlike SQL Server 2005.

http://sqlblog.com/blogs/tibor_karaszi/archive/2007/08/03/no-notification-services-in-sql-server-2008.aspx

http://social.msdn.microsoft.com/Forums/en-US/sqlnotificationservices/thread/03cb63a9-7fe7-408d-b194-7ff3d14e682a

So, products like BizTalk will eventually rely on a different mechanism to notify ( for alerts). I also found few blog postings which might of some help to you.

http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/7f4c1060-c47c-4467-8ada-778bb47f7c1c

http://msinnovations.spaces.live.com/blog/cns!62E68922E47BC425!609.entry

The person who posted this could finally make the installation work by taking the following steps:

“VM Base: Windows Server 2003 R2 SP2, SQL 2008, VS 2008 (minus SQL Express) installed in this order.
VM Diff:
• Don't use the SQL 2005 SSNS RC1 linked in the 2009 beta install guide. Use a SQL 2005 full version.
• Install SQL 2005 as a named instance (installing after SQL 2008 was the default instance worked fine for me), install the database services, notification services, and analysis services.
• Run SQL 2005 SP2. If you forget this step, the BAM Alerts tells you the current SQL 2005 instance is not supported.
• Install BizTalk 2009 full
• Configure BizTalk 2009, use the named instance of SQL 2005 for all of the BAM databases. “


Another way could be –

“I have been able to get SQL Notifications working with Biztalk 2009 and SQL Server 2008. In the installation doc for BizTalk 2009 under the "Install SQL Notification Services" section there are a couple of hotfixs to download. SQLServer2005_XMO and Yukon_SP2_CU9_SNAC. You receive an email with the download link and a password. The Install doc say to leave the password blank. Enter the password and an msi will be extracted to your directory. Install the msi and for each of the 2 downloads. Extract and install the Yukon_SP2_CU9_SNAC first.

Once this section of the doc is complete you can now configure the BAM Alerts (Which will create the Databases. You will have to ensure that your BAM users (BAM Notifications Services User, BAM Management Web Servcies User) have the correct access to the database tables. Check out this link for windows groups and user accounts (http://msdn.microsoft.com/en-us/library/aa577661.aspx)”


My suggestion:

“BAM Alerts “ are not the most critical for BizTalk’s primary function. It is just an add on feature that most of the clients do not use. Bam Alerts basically use SQL Server’s Notification services to send alerts to BizTalk Notification subscribers. So far, I have not seen this feature being used by any of the clients I have worked with.

Monday, April 27, 2009

BizTalk 2009 books in the market

Hey BizTalkers, you must be all excited about the new version of BizTalk 2009 with lot of cool features, and must be waiting to get your hands dirty. Here are the books that help you learn the new features and set you up for your dirty work. :)

The authors are almost done with most of their content, and some are in the market already.

Tuesday, September 23, 2008

BizTalk Server 2009 Roadmap

Finally, the roadmap for BizTalk Server 2009 is revealed. It appears to have lot of new and exciting features in it. I can't wait to play with it.

Updated list of BizTalk 2006 R2 posters

Here is the updated list of BizTalk 2006 R2 posters. It also has interactive capabilities reader. Enjoy.

Monday, April 21, 2008

Microsoft's Messaging, Workflow Roadmap Announced

" A project code-named Oslo will deliver updated messaging and workflow
technologies in the next version of BizTalk Server and other products
starting in 2009."
- Research Directions

Here is the roadmap

Tuesday, April 15, 2008

Debatching XML using Index Functoid and Map parameters

Scenario:
In one of the applications that I am actively working on has need to de-batch a Product from an XML which has "n" number of products in it, and persist one product at a time by calling a stored procedure. I have to loop through the collection of products and persist individual Product. Just to make it worse, each of the stored procedure calls need more than the information provided in the Product node.

Solution:
There are many ways of retrieving the product information from the XML, like XPaths and loops. But, in this scenario I wanted to try something different. I decided to use a combination of - Index Functoids, Parameters to maps, and looping of Products. I did the following to accomplish this task -

a. I created a schema which holds the index of the loop, and called it context schema. A new message of this type will be created in every iteration of the loop.


b. I created a interesting multi-part message map. It has 2 input schemas - the order schema with multiple products in it; the second one is the above context schema. The interesting thing here is that, I can pass the index of the loop into the map and get the correct product out of the product collection, and pass the values to the target SQL request schema.


c. A simple Orchestration does the rest of the work. It looks like below -



If you look at it closely it just does the following to accomplish the task:

1. Get Item Record Count Expression shape - gets the count of Products in the order message.



2. while the there are products continue the loop.



3. Construct a context message that will hold the current index value of the loop. This message will be used as a "parameter to the map".



4. Create a map which

a. takes two input messages



b. and gives one message which will be used in calling the stored procedure



5. The stored procedure is now called with the request and a response comes back from it.

6. Finally, the loop is incremented to pick the next Product from the Order message.


That's it. Now you know how easy it is to use Index functoid and multi-part maps to get the specific information from a record.