When working with mappings, a Join is used to combine rows from two or more source datastores.


Sometimes, it can be challenging to load/integrate multiple target datastores with the same set (or common set) of source datastores.


As for example, a request/need could be to generate:

  • a target datastore of all customers including their title name
  • a target datastore of customers with email address including their title name
  • a target datastore of customers with phone number including their title name


With Semarchy xDI, different solutions can be implemented for above example. 

One solution is : Conditional Join.


Conditional Join allows activating a dataset and its corresponding Join only if the driving dataset is used. 




To define a Conditional Join :

  1. Select the Join on the Mapping diagram
  2. Right click -> Activate (or Left click, in the Properties view, open the Advanced Properties finger tab)
  3. Set the Activate property :
    1. Always: The join is not conditional and will always be executed.
    2. With <datastore name>'s dataset: The Conditional join will be activated only if the dataset containing the <datastore name> datastore is used.





The complete solution of the example would be :


  • Conditional Joins detail:
    • T_TITLE <-> T_CUSTOMER => CUSTOMERS_TITLE
    • T_CUSTOMER <-> T_EMAIL => CUSTOMERS_EMAIL
    • T_CUSTOMER <-> T_PHONE => CUSTOMERS_PHONE




Source and target datastores are on different technologies/schemas : use of the LOAD template
Conditional Joins can be particularly useful to mutualize loads inside a Mapping.


In this example, two ways to identify the mutualization objects :

    1/ In the mapping (LOAD templated identified by numbers)


  • When selecting CUSTOMERS_EMAIL LOAD template n°1
    • The datastores T_EMAIL and CUSTOMERS_EMAIL are highlighted
      • which means that the load of T_EMAIL is for the integration of CUSTOMERS_EMAIL


  • When selecting CUSTOMERS_EMAIL LOAD template n°2
    • The datastores T_CUSTOMER, CUSTOMERS_EMAIL, CUSTOMERS_PHONE (Load template n°1) and CUSTOMERS_TITLE (Load template n°1) are highlighted
      • which means that the load of T_CUSTOMER for the integration in CUSTOMERS_EMAIL is the same for CUSTOMERS_PHONE  and CUSTOMERS_TITLE  
  • When selecting CUSTOMERS_EMAIL LOAD template n°3
    • The datastores T_TITLE, CUSTOMERS_EMAIL, CUSTOMERS_PHONE (Load template n°3) and CUSTOMERS_TITLE (Load template n°2) are highlighted
      • which means that the load of T_CUSTOMER for the integration of CUSTOMERS_EMAIL is the same for CUSTOMERS_PHONE  and CUSTOMERS_TITLE


  • When selecting CUSTOMERS_EMAIL INTEGRATION template, the source datastores can also be identified


    2/ In the process