Biztalk 2004 Integration Experiences

Friday, March 18, 2005

Are you getting COM Permission Denied Errors or Query Interface Errors from Interop Dll's invoked from Orchestration

Recently in our Dev Server, all the Interop components called from Biztalk stopped working. They were getting errors like this

Error at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
QueryInterface for interface Interop.xxxxx._xxxxx failed.


All I could trace down was one of my colleagues just added a user "Default Access Permission to a user" in Component Services & Removed it.

So I was puzzled about why suddenly all the interop calls are failing which were working fine till that day. I was scratching my head for too long searching Microsoft support site, newsgroups etc. till the next day.

I found a support article from Microsoft for some other issue which made me to think it was related to my problem. You can see that article here

Carefully read the expert from the article below

"Note: By default, the DefaultAccessPermission binary value does not exist under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole registry key. The DefaultAccessPermission binary value is created when you run certain applications or when you configure the default access permissions of DCOM applications by using the Component Services tool"

Looks like the registry entry is not created by default, that means all users have default access permissions on instantiating COM components, when you add a user and remove it, it retains the registry key with value for the specific users left out in the GUI.

Xlangs Engine Runtime checks for "DefaultAccessPermissions" before instantiating COM components, so obviously it threw an exception. After removing the registry key/adding the Biztalk Service user to the default access permissions in Component Services GUI, resolved the error.

I think this deserves a detail Microsoft support article!

Thursday, March 03, 2005

Commerce.Dictionary & Commerce.SimpleList COM Objects

I was converting a Biztalk 2000 Map to Biztalk 2004. The map was using Commerce.Dictionary & Commerce.SimpleList COM Objects to perform some complex mapping.

I believe mscscore.dll(Commerce Server 2000 Core Components) contained these objects, was used by Biztalk 2000 and also installed as part of Biztalk 2000 Installation.

Looks like Biztalk 2004 is not installing these components, the interesting part is it's installed with Visual Studio.Net 2003. So I did not have a clue about this and everything worked fine in my box until it was deployed to the Development Server.The map got blown out in Dev Server and it took a while to figure out this issue.

In my point of view, if a component is shipped with a lower version of a product(Biztalk 2000), it should be supported in higher versions(Biztalk 2004).

If you are using COM components in maps, Beware! Take some time to test in machines which do not have Visual Studio & Biztalk Dev Tools.