If record exists then map, if not map another - Biztalk mapping
biztalk, biztalk-mapper
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!
TJ
Problem
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?