Question

Can someone help me with this? I have a biztalk mapping. In the source scheme there are two address records with address elements. Address record 1 always exists in the source scheme, but if address record 2 exists in the source I would like to map that to the destination instead of address record 1. Is that possible to do?

Was it helpful?

Solution

These are the steps I would take to achieve this - it'll have to be a high level description of a solution as you haven't included any schema definition or Xml sample.

You can use XSLT or The Mapping Designer to do this. I describe the latter;

1) Use the Logical Existence Functoid to Check if the Address 2 node exists. It return True if Address 2 is present in your source schema.

2) Connect the Logical Existence functoid to a Value Mapping functoid (as the first input) and drag the Address 2 value to the same (as your second input).

3) Connect the Value Mapping Functoid to the Address Destination node.

4) Next, you need to cater for non-existent Address 2's. So, add a Logical Not functoid to your mapper surface.

5) Connect the Logical Not to you Logical Existence. This reads "Not Exists".

6) Connect your Logical Not to Another Value Mapping Functoid as the First input.

7) Connect your Address 1 value to the Value Mapping functoid as your second input.

8) Connect the Second Value Mapping to the Address Destination.

So, you should have two connections to the destination node but only one path with be true, resulting in one mapping.

Hope this gives you a guide on how to approach this. Shout if you need more help!

EDIT: Heres an illustration to help!

enter image description here

TJ

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top