Announcing the Saviynt Knowledge Exchange unifying the Saviynt forums, documentation, training,
and more in a single search tool across platforms. Read the announcement here.

MultiCall in ImportUserJSON for REST Connector Not Working with Pagination

vermilyacd1
Regular Contributor
Regular Contributor

We've configured the REST connector to leverage the MultiCall configuration as defined in the REST Connector Guide. This works well and identity data is populated from both calls. As we added Pagination, the MultiCall no longer works. All data from the first call is populated (for both the initial user set as well as the subsequent calls from Pagination), but no data from the second call is set. The error logs in v2021 are very hard to parse but not seeing anything.

Any reason Pagination would break the MultiCall configuration?

This is v2021, JSON below.

{
"type": "multiCall",
"call": [
{
"name": "SFCall1",
"connection": "SFAuth",
"url": "<redacted>/odata/v2/User?%24top=10",
"httpMethod": "GET",
"httpHeaders": {
"Content-Type": "application/json",
"Authorization": "${access_token}",
"Accept": "application/json"
},
"colsToPropsMap": {
"username": "userId~#~char",
"systemUserName": "empId~#~char",
"firstName": "firstName~#~char",
"preferedFirstName": "nickname~#~char",
"middlename": "mi~#~char",
"lastName": "lastName~#~char",
"employeeid": "empId~#~char",
"employeeType": "custom04~#~char",
"phonenumber": "businessPhone~#~char",
"street": "",
"city": "city~#~char",
"state": "state~#~char",
"country": "country~#~char",
"companyname": "",
"customproperty1": "userId~#~char",
"customproperty2": "empId~#~char",
"customproperty3": "custom04~#~char",
"customproperty4": "firstName~#~char",
"customproperty5": "nickname~#~char",
"customproperty6": "mi~#~char",
"customproperty7": "lastName~#~char",
"customproperty8": "email~#~char",
"customproperty9": "city~#~char",
"customproperty10": "state~#~char",
"customproperty11": "country~#~char",
"customproperty13": "custom07~#~char",
"customproperty14": "department~#~char",
"customproperty15": "jobcode~#~char",
"customproperty16": "location~#~char",
"customproperty18": "businessPhone~#~char",
"customproperty23": "status~#~char"
},
"userResponsePath": "d.results",
"pagination": {
"nextUrl": {
"nextUrlPath": "${response.completeResponseMap.d.__next==null?'':response.completeResponseMap.d.__next}"
}
}
},
{
"name": "SFCall2",
"connection": "SFAuth",
"url": "<redacted>/odata/v2/EmpJob?%24filter=userId%20eq%20${userIdentifier}",
"httpMethod": "GET",
"httpHeaders": {
"Content-Type": "application/json",
"Authorization": "${access_token}",
"Accept": "application/json"
},
"colsToPropsMap": {
"username": "userId~#~char",
"manager": "managerId~#~char",
"costcenter": "costCenter~#~char",
"customproperty12": "countryOfCompany~#~char",
"customproperty17": "managerId~#~char",
"customproperty25": "costCenter~#~char",
"customproperty26": "contractEndDate~#~epochdate",
"customproperty27": "customString102~#~char"
},
"userResponsePath": "d.results"
}
]
}

3 REPLIES 3

Belwyn
Saviynt Employee
Saviynt Employee

Hi @vermilyacd1 

Could you please try with "SequentialAndIterative" instead of "multiCall" type here is an example for the same:

{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"statusAndThresholdConfig": {
"statusColumn": "customproperty11",
"activeStatus": [
"true"
],
"deleteLinks": true,
"accountThresholdValue": 10,
"correlateInactiveAccounts": false,
"inactivateAccountsNotInFile": true,
"deleteAccEntForActiveAccounts": true
},
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://<specify Zendesk URL>/api/v2/users.json?role[]=admin&role[]=agent",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "application/json"
},
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "users",
"keyField": "accountID",
"statusConfig": {
"active": "true",
"inactive": "false"
},
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "email~#~char",
"displayName": "name~#~char",
"customproperty2": "email~#~char",
"customproperty3": "created_at~#~char",
"customproperty4": "updated_at~#~char",
"customproperty5": "role~#~char",
"status": "active~#~char",
"customproperty6": "last_login_at~#~char",
"customproperty7": "custom_role_id~#~char",
"customproperty8": "default_group_id~#~char",
"customproperty9": "created_at~#~char",
"customproperty10": "updated_at~#~char",
"customproperty11": "suspended~#~char",
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char"
},
"pagination": {
"nextUrl": {
"nextUrlPath": "${response?.completeResponseMap?.next_page==null?null:response.completeResponseMap.next_page}"
}
}
}
}
},
"entitlementParams": {},
"acctEntParams": {}
}
Let us know if this workes.
Thanks & Regards, 
Belwyn.
 

vermilyacd1
Regular Contributor
Regular Contributor

@Belwyn How can I make a second call for each user returned in the initial call using SequentialAndIterative?

AshishDas
Regular Contributor II
Regular Contributor II

Hi,

We are facing the same issue. Did you find a resolution to this?