Symptom
This KBA will cover the following topics:
- What is a one-to-many navigation?
- How to identify a one-to-many navigation?
- One-to-many behavior in Integration Center
- How to handle one-to-many behavior
- Issues when using <First> or other order-related Field Filters
"Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental."
Environment
- SAP SuccessFactors HXM Suite
- Integration Center
Resolution
What is a one-to-many navigation?
One-to-many navigation means that, for one record of the starting entity, there may exist multiple related records of the navigated entity.
For example, there is a one-to-many relationship between PerPerson (Biographical Information) and EmpEmployment (Employment Details) entities:
So, taking the PerPerson record "1000971":
We can see that, when checking "1000971" data in EmpEmployment, there are two records:
So when PerPerson navigates to EmpEmployment, it will consider those two records.
How to identify a one-to-many navigation in Integration Center?
There are 3 ways to identify a one-to-many navigation:
- In "Entity Tree View" section of the field search screen, the following icon will appear beside the field responsible for the navigation:
- In the "Field Filters" section of the same field search screen, it will be mentioned that it's a one-to-many navigation:
- When you finally add the field, the following warning will be shown:
One-to-many behavior in Integration Center
Integration Center is not able to return all many records from a one-to-many relationship, it will always return just one record of that navigation.
So, taking the example from before (PerPerson record "1000971"), if the PerPerson > EmpEmployment navigation is performed, only one record from EmpEmployment will be returned in the output: either "1000971" or "CW1000971":
In screenshot above, only the record "CW1000971" was returned.
How to handle one-to-many behavior
In order to define which one of these many values you want Integration Center to return, you need to use the "Field Filters" configuration. Refer to the guide page Find Field Starting from <Entity>.
Other alternative is rebuilt the integration by choosing a different starting entity which, when navigating from, won't cause a one-to-many navigation. Refer to the guide page Best Practises on choosing the Starting Entity.
Also, there are specific scenarios where these other alternatives may be applicable too:
- KBA 3082922 - How to configure an integration with an XML output file to query all records of one-to-many associations in Integration Center - SAP SuccessFactors
- KBA 3076760 - How to create EDI stack integration for one to Many object relationship
NOTE: In case the one-to-many field being navigated belongs to an effective-dated entity, this behavior will only occur if you use time-based filters. If you don't use time-based filters, asOfDate=today will be applied to the navigation and only one record will be considered (the record effective on that day) and this issue shouldn't occur.
Issues when using <First> or other order-related Field Filters
The default selection of Field Filters is "<First>". This selection means that, from the many records considered in the one-to-many navigation, the first record will be the one written in the output of the integration.
What controls which one is the first record is OData API, but the order of records is not predictable in OData API's response. This means that sometimes one record will be the first, sometimes another record will.
So, when handling a one-to-many navigation and selecting <First> in Field Filters or any other order-related value (like <Last>, <2nd> and so on), Integration Center may bring unexpected records in the output.
In order to prevent this, you need to use the "Field Filters" feature in a way that it will always return the record you expect from the many records of the navigated entity.
Keywords
order, guaranteed, 1:M, one to many, one-to-many, many, navigations, navigation, wrong results, undesired results, unexpected, predictable, first, field filters , KBA , LOD-SF-INT-INC-FWK , Integration Center UI Framework , How To