SAP Knowledge Base Article - Public

2819037 - [1908 Feature] API-11774: $expand Limit of 300000 for OData API Call

Symptom

Q3 2019 API-11774: $expand Limit for OData API Call

Environment

SuccessFactors OData API

Resolution

Q3 2019 Release Note: API-11774

We have set a 300,000 size limit for $expand operations in OData API. If the expanding size of your query exceeds the limit, an error will occur and you will have to tune your query to decrease the data volume. This limit is intended to prevent excessive resource consumption and ensure better availability and performance for all customers. If you wish to increase the size limit, please contact SAP Cloud Support

Q1. If $expand is being used in ODATA URI, total number of records returned for starting entity for expanded node should not cross 300,000?

Ans. Starting entity record count must not exceed 300,000, otherwise will get error message:

("COE0052", "Expand limit of 300000 records was exceeded. Please decrease the number of records to expand or use filters to narrow down the result.")

Q2. How pagination and session re-use would impact this and what would be the expected behavior?

Ans. Pagination and session re-use won’t affect the $expand limitation.

Example 1:

API Request:

GET https://apisalesdemo4.successfactors.com:443/odata/v2/User?$filter=userId%20eq%20%20'dsingh9'&customPageSize=1&$expand=salutationNav/picklistLabels&paging=snapshot&$format=json&$select=userId,addressLine1,addressLine2,country,email,username,salutationNav

API Response:

limit.JPG

  • In above case, SalutationNav and picklistLabels are being expanded. 
  • First check would be for all the salutationNav node present in the response payload. Count should not exceed the limit.
  • If count is within the limit of 300000, it would check the count of picklistLabels node present in the response payload i.e. of count of salutationNav/picklistLabels
  • In above example, total count of expanded entities are 2.

Example 2:

API Request:

https://apisalesdemo4.successfactors.com:443/odata/v2/User?$filter=userId%20in%20%20'dsingh9','dsingh6'&customPageSize=2&$expand=salutationNav/picklistLabels,userIdOfEmployeeTimeNav/approvalStatusNav&paging=snapshot&$format=json&$select=userId,addressLine1,addressLine2,country,email,username,salutationNav,userIdOfEmployeeTimeNav

  • $expand contains salutationNav/picklistLabels,userIdOfEmployeeTimeNav/approvalStatusNav
  • Step1: Count of salutationNav node
  • Step2: Count of PicklistLabels
  • Limit of  300000 should not exceed for Step1 and Step2 individually.
  • Now, perform same step for userIdOfEmployeeTimeNav/approvalStatusNav

Note: Limit should not exceed for individual $expand node.

Keywords

COE0052, $Expand , KBA , LOD-SF-INT-ODATA , OData API Framework , LOD-SF-INT , Integrations , How To

Product

SAP SuccessFactors HCM Suite 1908