Symptom
An Integration Center job starting with an effective-dated entity (e.g. EmpJob) and combining Modified Since and Effective From/To filters is returning unexpected results.
This behavior comes from the OData API engine, as Integration Center is based on it, so when using OData API directly, the behavior is the same.
Equivalence between Integration Center and OData parameters:
- Modified Since (IC) = lastModifiedDateTime (OData)
- Effective From/To (IC) = fromDate/toDate (OData)
Environment
SAP SuccessFactors HCM Suite
Reproducing the Issue
See the parameters under the Filter and Sort tab in the Integration Center job settings OR in the OData API query parameters ($filter=...&$fromDate...).
Cause
How the Filters Work Together:
-
Each effective-dated entity record, that has different data and time slices, has its own lastModifiedDateTime.
-
The system checks if any of these records has been modified since the given date.
-
If at least one record was modified:
-
All EmpJob records that match the Effective From/To range will be returned.
-
If no Effective range is given, only the current record is returned.
-
EmpJob example:
-
Employee David has multiple EmpJob records.
-
Query filters:
- Modified Since = 2024-01-01
- Effective From = 2020-01-01, Effective To = 9999-12-31
-
If any of David's records were modified after 2024-01-01:
-
All records effective from 2020-01-01 onward will be returned.
-
-
If no effective range is set:
-
Only the currently effective record will be returned, regardless of modification time.
-
Resolution
If you want the integration to return only the entity records (current and/or historical) that were indeed modified since the last integration run, be aware that this logic cannot be fully achieved within Integration Center alone, so the options are:
Option 1: Full Data Pull + Internal Delta Detection
-
Configure Integration Center to fetch all records every time:
-
Use Effective From = 1900-01-01
-
Use Effective To = 9999-12-31
-
-
Store the full data set in a staging table.
-
Use custom logic in your receiving system to:
-
Compare current results to previous run.
-
Detect differences (delta) based on
lastModifiedDateTime
.
-
Option 2: OData API + Middleware Filtering
-
Create an OData query with:
- Use fromDate = 1900-01-01
- Use toDate = 9999-12-31
-
In your middleware (e.g., SAP CPI, Dell Boomi):
-
Filter the returned records by comparing lastModifiedDateTime to the last run timestamp.
-
-
This allows you to implement a delta mechanism outside Integration Center.
See Also
- KBA 2470903 - Integration Center is not returning historical/future records
- KBA 2430737 - Unexpected results when using "Modified Since Query Mode" in Time-Based Filters while navigating to other entities
- KBA 2752345 - Integration Center: Using datetime range in Advanced Filters
- KBA 2965443 - Fields from future records (records with a start date in the future) are blank - SuccessFactors Integration Center
- KBA 2925189 - Filters in Integration Center are not filtering correctly: wrong records are being returned
- OData API guide: lastModifiedDateTime and $filter and Querying Effective-Dated Entities Using lastModifiedDateTime chapters
Keywords
effective, from, to, lastModifiedDateTime, datetimeoffset, Modified Since, Last modified Date, Time based filters, entities, like, time-based If you want the integration to return only the entity records (current and/or historical) that were indeed modified since the last integration run, know that this logic cannot be fully achieved within Integration Center alone, so the options are: , KBA , LOD-SF-INT-INC , Integration Center , LOD-SF-INT-ODATA , OData API Framework , Problem