Sunday, December 3, 2006

Passed 70-235 Exam

Today Sunday, December 03, 2006, I cleared Biztalk Server 2006 Exam. Scored 928.
Exam was pretty tough.Stressing more on BAM,BRE,Trouble shooting. Its better one refers msdn for technical articles.You need to be prepared technically before you take it up or else it would be just a waste of money. Hardly any questions on Orchestration.I cant disclose more as we sign an NDA before we appear for the exam. Anyways Best of Luck for the ones who plan to take it up. Now I need to get back to work as I took 1 week off to prepare for this.
You can view my transcript at.
Transcript ID:747344
Access Code:NISH2006

Wednesday, November 15, 2006

Writing to Eventlog while working with maps using Eventlog Functoid in Biztalk Server 2004

Writing to Eventlog while working with maps using Eventlog Functoid in Biztalk Server 2004

While testing our maps at times when it fails we feel that what could have went wrong and we cant trace it because we don’t know what the output of the functiods are. Normally in a single map we use normally 50-60 functiods.Were do we start debugging our Map. It’s tough when we are under pressure to deliver it on time to debug a map. But it’s a part of our job to make sure that our map is stable. I thought of this functiod while working on a project where in I wanted to see the output of a specific Scripting functiod.
So I just planned to have one which will write to Eventlog any output of data type string. So now what we need to do is just use this functiod to insert into Eventlog.This functiod will return the string after writing it to Eventlog. So just at an overhead of 1 functiod we can test our map to perfection.Just build the solution and drop theEventlogFunctiod.dll in
C:\Program Files\Microsoft BizTalk Server 2004\Developer Tools\Mapper Extensions
And  also GAC it. Then add it in the toolbox and use it in your maps.
Hope it helps you in your project.
The code is given below

using System;
using Microsoft.BizTalk.BaseFunctoids;
using System.Reflection;
using System.Xml;
using System.Diagnostics;
//This Class will write an entry in event log.
//It will take up 1 parameter as input and will output the same parameter after writing it to eventlog
namespace EventlogFunctiods
 public class EventlogFunctoid: BaseFunctoid
  public EventlogFunctoid()
   this.ID = 6464;  
   SetTooltip("Please pass only 1 parameter");
   SetDescription("This Functiod writes the specified parameter to Eventlog.It takes up only 1 paramter");  
    "EventlogFunctiods.EventlogFunctoid", "EventlogFunc");
   this.Category = FunctoidCategory.String;
   this.OutputConnectionType = ConnectionType.AllExceptRecord;
  public string EventlogFunc(string param1)
   return param1;  
If you find it tough to implement....just download the solution which is available at
Any queries or bugs would be appreciated because “To err is human”.

Wednesday, May 3, 2006

Storing Usernames, Passwords in SSODB Database using MMC 3.0

Whenever we work on BizTalk projects we feel why there is no provision for App.Config file so that one can store Key/Value pairs in it. So to have a work around for it we save key/value pair in Btsntsvc.exe.config file.
It is one of the easiest work around.
1. But can you store sensitive data like your domain password in a  place which is visible and accessible to all.
2. Do you feel changing btsntsvc.exe.config file is right from developer point of view.
I do feel your answer is No…not at all. Well in such scenario SSODB comes in picture. The key/value pair is stored in encrypted format so nobody can access sensitive data. No btsntsvc.config file is involved in it. Single Sign-On database (SSODB) is a standard Database which gets installed while one installs BizTalk Server.
My Dummy Solution contains 3 projects.
1. SSODB Helper class to query SSODB.
2. MMC3.0 Snap-in for Administrators to add key/value pairs.
3. Windows Form to test the SSODB helper class.
We can user SSODB Helper class in our Orchestration to get any key/value pair. I won’t get into technical details of how to develop it. MMC 3.0 developments with C# is not officially supported by Microsoft. "Sample Snap In" development code can be downloaded from Microsoft site.
I had a thread running regarding Developing "MMC 3.0 Snap IN" at
 The Snap-In looks like the one below. One can create Application…which in turn contains Key/value pairs. SSODB stores in terms of Application Name-ConfigName-Key/value pairs. So one Application can contain more then one ConfigName which contains many key/value pairs. For simplicity I had only one ConfigName which contains many key/value pairs. So in my current solution I have no Provision for multiple ConfigNames.
One needs to first Add an Application. A new application with name “NewChild”. One needs to rename it to the Application Name one wants. Application Names are user friendly names…So you can name it as per your convenience. Then one can add key/value pair. It’s worthwhile to work with SSODB and its pretty challenging. Queries and Bugs are always welcomed.
Sample is available at.
How to use the Sample
Open the solution
press F5
A new window pops up.
Press Button1.
A new application by the name "NISHILAPP7" is created in SSODB.
The Windows Form is just for you to understand what is SSODB.
I have just coded to create one Application in SSODB in that Form.
You can customize it as per your needs.
You can install the SnapIN. Through that SnapIn one can add Application,key value pair.
How to install SnapIn.....refer Sample SnapIN ..MSDN link above.
You can use SSODB helper class to get the value for specific keyname.

Friday, January 27, 2006

Output validation error: Root element is missing....Biztalk Map

Recently while  working on a map I constantly used to get this error
Error 3 Output validation error: Root element is missing
I thought that since I have not mapped few Destination fields it might be throwing such error.
I tried setting Output Validation False for the Map.
Still I was getting the same error.
The Map was a simple one to one link map.
I was confident that my input xml file was perfect and  I did confirm it by Validating it against the Input Schema again.
It got succeeded.No errors at all.
Now where could be the problem be.
So I just googled and got this link by Stephen.
And then I cross verified my Target namespace in the input Schema with the input xml file.
There was a blank space before and after the namespace in my Schema which was creating this problem for me.
Moral of the story:
" Validating the xml file against the Schema never assures that the two match each other".