A random collection of epiphanies, thoughts and problem solutions pertaining to .NET and BizTalk.

Wednesday, November 17, 2004

The signature of the map file has changed, some arguments that you specify may not be valid.

Problem:
One of our developers run into this problem when using the Biztalk Mapper. We searched on internet and found out there's a guy had exact same problem on http://www.webservertalk.com. So I am saving my keystrokes and quote his message below:

I had mapping scenario in where I am having 3 input xml file and 1 output xml file, which I can easily specify in the mapping component in the orchestration. The problem is when it opens the mapper. It shows that it had 3 input documents but only shows fields of first input xml and the other two as empty. When I go back to the orchestration and try to click on the transform component it says that the signature of the map file has changed, some arguments that you specify may not be valid. I believe it is possible to have multiple input file and one output file, Am I missing something?.
Amit



Possible Solution:
I am pretty sure the problem you encountered is due to the namespace#rootElement collision. If you are using the same namespace for those 3 inbound xml documents and these documents also have the same root element, you will run into this problem exactly as you described. You need to make sure the definition of your xml namespaces will always allow BizTalk to derive a unique type. The simple solution to your problem could be:




  1. use a dinstinct namespace name for each inbound document schema; or

  2. use a distinct root element name in each schema.



One common scenario you will run into this problem is when you use the schemas generated by the SQL Adapters invoking the stored procedures. If you let the stored procedure to return "FOR XML RAW" and you have the same namespaces for these stored procedures generated schemas, then BizTalk mapper will not be able to import the rest of schemas since there's a type collision after importing the first schema. You will have these collisions if you define your namespace to be: http://mynamespace.


InputMessagePart_0: http://mynamespace#row
InputMessagePart_1: http://mynamespace#row
InputMessagePart_2: http://mynamespace#row


No comments:

Followers