| Author |
Two XML message schemas with same root node error
|
|
|
| Hi,
I have two XML message schemas with same root node in one BizTalk project.
Orchestration receives one message and does some business logic and then
converts it to other message and sends it to a windows location. I have two
pipelines One for receiving and the other one is for sending the message.
When I deploy the assembly and test, it is giving an error saying "Cannot
locate document specification as multiple schemas match the message type
"MyRootNode"".
I am seeing two records in Management Database/bt_DocumentSpec table for the
MyRootNode. Even though if I change the "Type Name" property for the schemas
it is storing msgtype as the root node in bt_DocumentSpec table.
SELECT * FROM dbo.bt_DocumentSpec WHERE(msgtype LIKE '%MyRootNode%')
Are there any workarounds to have two xml schemas with same root node.
Regards,
Mohan
| |
| Scott Colestock 2005-09-12, 6:06 pm |
| You indicated you had a pipeline for receiving - are you specifying one of
the two schemas within the xml disassembler component within the pipeline?
That is the typical means for dealing with this case -
Scott Colestock
www.traceofthought.net
"Mohan" <Mohan@discussions.microsoft.com> wrote in message
news:F5723D03-DD13-4738-9F47-F92B5901B2E2@microsoft.com...
> Hi,
>
> I have two XML message schemas with same root node in one BizTalk project.
> Orchestration receives one message and does some business logic and then
> converts it to other message and sends it to a windows location. I have
> two
> pipelines One for receiving and the other one is for sending the message.
> When I deploy the assembly and test, it is giving an error saying "Cannot
> locate document specification as multiple schemas match the message type
> "MyRootNode"".
>
> I am seeing two records in Management Database/bt_DocumentSpec table for
> the
> MyRootNode. Even though if I change the "Type Name" property for the
> schemas
> it is storing msgtype as the root node in bt_DocumentSpec table.
>
> SELECT * FROM dbo.bt_DocumentSpec WHERE(msgtype LIKE '%MyRootNode%')
>
> Are there any workarounds to have two xml schemas with same root node.
>
> Regards,
> Mohan
| |
|
| Yes. I have used XML disassembler in the receive pipeline and selected the
first schema in the document schemas. Similarly I have mentioned the other
schema in the XML assembler of send pipe line. But it is still giving the
error. Am I missing anything?
Regards,
Mohan
"Scott Colestock" wrote:
> You indicated you had a pipeline for receiving - are you specifying one of
> the two schemas within the xml disassembler component within the pipeline?
> That is the typical means for dealing with this case -
>
> Scott Colestock
> www.traceofthought.net
>
>
>
> "Mohan" <Mohan@discussions.microsoft.com> wrote in message
> news:F5723D03-DD13-4738-9F47-F92B5901B2E2@microsoft.com...
>
>
>
| |
| Scott Colestock 2005-09-12, 6:06 pm |
| Well, it will indeed be the root node and namespace that the xml
disassembler will use - not the .NET type name.
If you have a pipeline specifying the correct schema (to remove the
ambiguity) everything should work out correctly.
Are you sure your custom pipeline(s) ares indeed associated with the
physical ports you are using?
Scott
"Mohan" <Mohan@discussions.microsoft.com> wrote in message
news:A4FA8FA5-0D02-4E53-8397-E5DCC9851500@microsoft.com...[vbcol=seagreen]
> Yes. I have used XML disassembler in the receive pipeline and selected the
> first schema in the document schemas. Similarly I have mentioned the other
> schema in the XML assembler of send pipe line. But it is still giving the
> error. Am I missing anything?
>
> Regards,
> Mohan
>
> "Scott Colestock" wrote:
>
| |
|
| I have given different name spaces to the schemas (Previously used the
project name as namespace for both schemas). I have rechecked the pipelines
and ports. But it is still giving the error "Cannot locate document
specification as multiple schemas match the message type "MyRootnode".
Here are the things I have verified..
1. Have given different name spaces to the schemas in the same project.
2. The receive pipe line should have an XML disassembler and it should have
the receive schema in the document schemas. (Do I need to specify the Envelop
schema?)
3. The send pipe line should have an XML assembler and it should have the
send schema in the document schemas.
4. Created a mapper to transform receive to send.
5. Created a receive port and specified the receive pipeline.
6. Created a send port and specified the send pipeline, Mapper to transform
receive to send and a filter to BTS.ReceivePortName==ReceivePortName.
(Removed the orchestration and made it as PUB/SUB mode)
7. Started the send port.
Mohan
"Scott Colestock" wrote:
> Well, it will indeed be the root node and namespace that the xml
> disassembler will use - not the .NET type name.
> If you have a pipeline specifying the correct schema (to remove the
> ambiguity) everything should work out correctly.
>
> Are you sure your custom pipeline(s) ares indeed associated with the
> physical ports you are using?
>
> Scott
>
>
> "Mohan" <Mohan@discussions.microsoft.com> wrote in message
> news:A4FA8FA5-0D02-4E53-8397-E5DCC9851500@microsoft.com...
>
>
>
| |
| Scott Colestock 2005-09-13, 6:00 pm |
| If you have distinct namespaces, and you are still seeing this issue, then
you likely have a deployment issue with your schemas.
Does the error occur on the receive or send side?
Note that on the send side, you can use a pass through pipeline in most
cases.
"Mohan" <Mohan@discussions.microsoft.com> wrote in message
news:3EF0AA79-558A-46D5-9AC0-F49A3CA86F95@microsoft.com...[vbcol=seagreen]
>I have given different name spaces to the schemas (Previously used the
> project name as namespace for both schemas). I have rechecked the
> pipelines
> and ports. But it is still giving the error "Cannot locate document
> specification as multiple schemas match the message type "MyRootnode".
>
> Here are the things I have verified..
> 1. Have given different name spaces to the schemas in the same project.
> 2. The receive pipe line should have an XML disassembler and it should
> have
> the receive schema in the document schemas. (Do I need to specify the
> Envelop
> schema?)
> 3. The send pipe line should have an XML assembler and it should have the
> send schema in the document schemas.
> 4. Created a mapper to transform receive to send.
> 5. Created a receive port and specified the receive pipeline.
> 6. Created a send port and specified the send pipeline, Mapper to
> transform
> receive to send and a filter to BTS.ReceivePortName==ReceivePortName.
> (Removed the orchestration and made it as PUB/SUB mode)
> 7. Started the send port.
>
> Mohan
>
> "Scott Colestock" wrote:
>
| |
|
| The error is coming while receiving the message. Yes.. It is working fine
with a passthrough pipeline at receive end but is not applying the mapper
(Used pass through for receive and send ports). So it is receiving and
sending the same message (Without orchestration, PUB/SUB mode.) without any
transformation.
Mohan
"Scott Colestock" wrote:
> If you have distinct namespaces, and you are still seeing this issue, then
> you likely have a deployment issue with your schemas.
> Does the error occur on the receive or send side?
>
> Note that on the send side, you can use a pass through pipeline in most
> cases.
>
>
> "Mohan" <Mohan@discussions.microsoft.com> wrote in message
> news:3EF0AA79-558A-46D5-9AC0-F49A3CA86F95@microsoft.com...
>
>
>
|
|
|
|