Click HERE to see how Saviynt Intelligence is transforming the industry. |
09/16/2024 10:44 AM - edited 09/16/2024 10:46 AM
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.
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?
09/16/2024 11:50 AM
09/16/2024 09:44 PM
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.
09/16/2024 10:03 PM
Please share logs