Saviynt unveils its cutting-edge Intelligence Suite products to revolutionize Identity Security!
Click HERE to see how Saviynt Intelligence is transforming the industry.
Saviynt Copilot Icon

Oracle HCM Pagination

SS
Regular Contributor
Regular Contributor

Hi,

While importing users from Oracle HCM, we have observed that the pagination is not working.

 

{ "connection": "userAuth", "successResponses": { "statusCode": [ 200 ] }, "url": "https://XXXXXXXXX/hcmRestApi/resources/11.13.18.05/workers?totalResults=true&fields=PersonNumber;nam...", "httpMethod": "GET", "httpHeaders": { "Authorization": "${access_token}" }, "userResponsePath": "items", "colsToPropsMap": { "customproperty1": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.assignmentsDFF[0].company;}}}~#~char", "customproperty2": "PersonNumber~#~char", "employeetype": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return workRelationshipsDataMap.WorkerType;}}}~#~char", "customproperty3": "names[0].FirstName~#~char", "customproperty4": "names[0].MiddleNames~#~char", "customproperty5": "names[0].LastName~#~char", "email": "#CONST#${List responseList = response.emails; int count = 0; int size = responseList.size(); Iterator iterator = responseList.iterator(); while (iterator.hasNext()){count++; Map dataMap = iterator.next(); if('W1'.equals(dataMap.EmailType)){return dataMap.EmailAddress}else if(count == size){return null}}}~#~char", "phonenumber": "#CONST#${List responseList = response.phones; int count = 0; int size = responseList.size(); Iterator iterator = responseList.iterator(); while (iterator.hasNext()){count++; Map dataMap = iterator.next(); if('WM'.equals(dataMap.PhoneType)){return '+'+dataMap.CountryCodeNumber+dataMap.PhoneNumber}else if(count == size){return null}}}~#~char", "owner": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.managers[0].ManagerAssignmentNumber;}}}~#~char", "customproperty6": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.AssignmentNumber;}}}~#~char", "startdate": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return workRelationshipsDataMap.StartDate;}}}~#~char", "termdate": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return workRelationshipsDataMap.TerminationDate;}}}~#~char", "customproperty7": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.AssignmentStatusTypeCode;}}}~#~char", "customproperty9": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.ActionCode;}}}~#~char", "customproperty10": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.LocationCode;}}}~#~char", "jobcode": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.JobCode;}}}~#~char", "companyname": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return workRelationshipsDataMap.LegalEmployerName;}}}~#~char", "departmentnumber": "#CONST#${List responseWorkRelationshipsList = response.workRelationships; int workRelationshipsSize = responseWorkRelationshipsList.size(); Iterator iteratorWorkRelationships = responseWorkRelationshipsList.iterator(); while (iteratorWorkRelationships.hasNext()) { Map workRelationshipsDataMap = iteratorWorkRelationships.next(); List responseAssignmentList = workRelationshipsDataMap.assignments; Iterator iteratorAssignments = responseAssignmentList.iterator(); while (iteratorAssignments.hasNext()) { Map assignmentsDataMap = iteratorAssignments.next(); if (assignmentsDataMap.AssignmentStatusType == 'ACTIVE') return assignmentsDataMap.DepartmentId;}}}~#~char", "customproperty19": "#CONST#Oracle HCM~#~char", "customproperty56": "#CONST#${List responseList = response.emails; int count = 0; int size = responseList.size(); Iterator iterator = responseList.iterator(); while (iterator.hasNext()){count++; Map dataMap = iterator.next(); if('W1'.equals(dataMap.EmailType)){return dataMap.links[0].href.substring(0,dataMap.links[0].href.lastIndexOf('/')).replace('/emails','')}else if(count == size){return null}}}~#~char" }, "pagination": {"offset": {"offsetParam": "offset","batchParam": "limit","batchSize": 500,"totalCountPath": ""}} }

The above JSON does not work. It only fetches the first 500 records only when the batchSize is set to 500. Total number of user records if 12.5k +

Below is the POSTMAN response with no limit and offset set in the URL. It returns the first 25 records.

 

SS_1-1726508267303.png

If we hard code the offset and limit in the url in the improt user call from Saviynt, for example offset=501&limit=500, the response fetches the next 500 records.

There is no error in the logs. Can you please let us know what the pagination in the above JSON is not working?

3 REPLIES 3

rushikeshvartak
All-Star
All-Star

Refer https://forums.saviynt.com/t5/identity-governance/we-are-using-this-below-recon-json-postman-is-givi...


Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.

SS
Regular Contributor
Regular Contributor

What to refer from the link @rushikeshvartak ? Saviynt does not throw 400 error in the user import call. Also, in this scenario, pagination is offset based. Please have a look again at the details we have posted above and let us know why pagination is not getting picked from the JSON.

Please share logs


Regards,
Rushikesh Vartak
If this helped you move forward, click 'Kudos'. If it solved your query, select 'Accept As Solution'.