Symptom
When performing an OData API query for the field postingStatus, it is returning "Expired" postings as well.
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 Recruiting Management
Reproducing the Issue
- Execute a query to return the postingStatus for job requisitions where postingStatus is equal to 1 (1 = Success, see KBA 2726841 for more information on this). For example:
/odata/v2/JobRequisition?$select=jobReqId,jobReqPostings/postingStatus&$expand=jobReqPostings&$format=json&$filter=jobReqPostings/postingStatus eq '1' - Notice that 'Success' and 'Expired' postings are shown:
Cause
JobRequisition entity and its child entity JobRequisitionPosting is one-to-many (1:M) releationship.
When we apply $filter on an entity that has one-to-many (1:M) relationship with its children, the child entities are not filtered. For details, please see KBA 2856036.
Resolution
Please use JobRequisitionPosting instead of JobRequisition as the starting entity.
Example: /odata/v2/JobRequisitionPosting?$format=json&$select=jobRequisition/jobReqId,postingStatus&$expand=jobRequisition&$filter=postingStatus eq '1'
See Also
KBA 2856036 - Fields and filters value 1:many are not appearing or are not the expected - SuccessFactors - Integration Center and OData
KBA 2726841 - How to use filter option on jobReqPostings/postingStatus fields in ODATA API - Recruiting Management
Keywords
Expired, jobReqPostings/postingStatus, postingStatus, OData, filter, 2726841, RCM-62702 , KBA , LOD-SF-RCM-API , Webservices & APIs , Problem