Symptom
You perform a query which has a navigation to the User entity and the "userNav" field returns only a "null" value. Due to this, further results that would be returned about the User entity are not returned.
Image/data in this KBA is from SAP internal systems, sample data, or systems. Any resemblance to real data is purely coincidental.
Environment
- SuccessFactors HXM Suite
- OData API
Reproducing the Issue
- Perform a query which has a navigation to the User entity through the "userNav" field, for example a query on EmpJob:
https://apisalesdemo4.successfactors.com/odata/v2/EmpJob?$format=json&$expand=userNav&$select=userId,location,userNav/lastName,userNav/firstName,userNav/username&$filter=userNav/userId eq '666' - You get a similar result:
{
"d": {
"results": [
{
"__metadata": {
"uri": "https://apisalesdemo4.successfactors.com:443/odata/v2/EmpJob(seqNumber=1L,startDate=datetime'2019-04-06T00:00:00',userId='666')",
"type": "SFOData.EmpJob"
},
"userId": "666",
"location": "7000-0001",
"userNav": null
}
]
}
}
Cause
There are two possible causes, which are related to permissions assigned to the API user performing the query:
- If the API user HAS the "Employee Export" permission enabled: the API user is trying to query a user which is not in the permission role's target population (missing row-level permission). Skip to the "NOTE" at the end of the Resolution segment of this KBA if this is your case.
- If the API user does NOT have the "Employee Export" permission enabled: the API user is trying to query an user which is not in the permission role's target population AND/OR some field query permissions of the User entity are missing.
It may also be the case that the user in question has status = inactive.
If the user is inactive and you haven't explicitly specified in the query's filter that you want to get inactive users, they will not be returned by default.
Please refer to this page for more information: Querying Different Types of Users
Resolution
Consult the following page for reference on which permissions related to the User entity are needed: SAP SuccessFactors HXM Suite OData API: Reference Guide
Besides granting the proper permissions to the API user, be sure that the users which should be queried are included in the target population of the permission role related to the API user:
NOTE: As mentioned in the SAP SuccessFactors HXM Suite OData API: Reference Guide: if you have the "Employee Export" permission enabled for the API user, it will override any field-level permission and you'll have access to all the User entity's fields of the users which are in the permission role's target population, so there is no need to add any permissions to the permission role. What you'll have to do is expand the target population by including the group of users which you'll need to query.
Keywords
successfactors, success, factors, odata, api, call, query, null, empty, blank, value, not, return, permission, access, role, unable, get, data, edit, granting, shows, returns, showing, usernav is null, not https://help.sap.com/docs/SAP_SUCCESSFACTORS_PLATFORM/d599f15995d348a1b45ba5603e2aba9b/3133bb98cd494caaa3314393c429c7e5.html , KBA , LOD-SF-INT , Integrations , LOD-SF-INT-ODATA , OData API Framework , Problem