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

Unable to map the Multi-Level Hierarchical Entitlements via REST Connector

ganimkt
New Contributor II
New Contributor II

Hi Team,

We have successfully integrated the Oracle Fusion application using REST connector and we are able to import the Account, Roles, Security Context and Securtiy Context Values.  Also, we have sucessfully mapped the Accounts to Roles. 

Here we are treating the Security Context and Security Context Values as child entitlements. We have successfully imported the child entitlements but unfortunately, we are unable to import the child entitlements relations. (We are able to import entitlement types but, facing problem with the entitlement hierarchical mapping.

Please find the attached json that we are trying and postman response.

{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://xxxx/hcmCoreSetupApi/scim/Users?startIndex=1&count=500 ",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}"
}
},
"listField": "Resources",
"keyField": "accountID",
"statusConfig": {
"active": "true",
"inactive": "false"
},
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "userName~#~char",
"displayname": "displayName~#~char",
"customproperty1": "name.givenName~#~char",
"customproperty2": "name.familyName~#~char",
"customproperty3": "emails.value~#~char",
"customproperty4": "emails.type~#~char",
"customproperty5": "emails.primary~#~bool",
"customproperty6": "preferredLanguage~#~char",
"customproperty7": "externalId~#~char",
"customproperty11": "active~#~bool",
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char",
"status": "active~#~char"
},
"pagination": {
"nextUrl": {
"nextUrlPath": "${response?.objectList?.size()>0?'https://xxxx/scim/Users?startIndex='+Math.addExact(response.completeResponseMap.itemsPerPage,response.completeResponseMap.startIndex)+'&count='+response.completeResponseMap.itemsPerPage:null }"
}
}
}
},
"acctEntMappings": {
"Roles": {
"listPath": "roles",
"idPath": "id",
"keyField": "entitlementID"
}
}
},
"entitlementParams": {
"processingType": "SequentialAndIterative",
"entTypes": {
"Roles": {
"entTypeOrder": 0,
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"httpHeaders": {
"Authorization": "${access_token}"
},
"url": "https://xxxx/hcmCoreSetupApi/scim/Roles?startIndex=1&count=500 ",
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "Resources",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "id~#~char",
"entitlement_value": "name~#~char",
"description": "description~#~char",
"displayName": "displayName~#~char",
"customproperty1": "id~#~char",
"customproperty2": "category~#~char"
},
"pagination": {
"nextUrl": {
"nextUrlPath": "${response?.objectList?.size()>0?'https://xxxxx/hcmCoreSetupApi/scim/Roles?startIndex='+Math.addExact(response.completeResponseMap.itemsPerPage,response.completeResponseMap.startIndex)+'&count='+response.completeResponseMap.itemsPerPage:null }"
}
},
"makeProcessingStatus": true,
"disableDeletedEntitlements": true
}
}
},
"SecurityContext": {
"entTypeOrder": 1,
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://xxxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0 ",
"httpHeaders": {
"Authorization": "${access_token}"
},
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "items",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "SecurityContext~#~char",
"entitlement_value": "SecurityContext~#~char"
},
"makeProcessingStatus": true,
"disableDeletedEntitlements": true
}
}
},
"SecurityContextValue": {
"entTypeOrder": 2,
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://xxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0 ",
"httpHeaders": {
"Authorization": "${access_token}"
},
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "items",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "SecurityContextValue~#~char",
"entitlement_value": "SecurityContextValue~#~char"
},
"makeProcessingStatus": true,
"disableDeletedEntitlements": true
}
}
}
}
},
"entMappingParams": {
"processingType": "SequentialAndIterative",
"entTypes": {
"Roles": {
"ent1KeyField": "entitlement_value",
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"httpHeaders": {
"Authorization": "${access_token}"
},
"url": "https://xxxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0 ",
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "items",
"ent1IdPath": "RoleCommonName",
"ent2IdPath": "SecurityContext",
"ent2KeyField": "entitlementID",
"targetEntType": "SecurityContext",
"addDependentTask": true,
"removeDependentEntTask": true,
"mappingTypes": [
"ENTMAP",
"ENT2"
]
}
}
}
}
},
"acctEntParams": {
"processingType": "acctToEntMapping"
}
}

 

Postman Response for : https://xxxx/hcmCoreSetupApi/scim/Roles?startIndex=1&count=500 

 

ganimkt_0-1713807847063.jpeg

 

 

 

Postman Response for : https://xxxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0 

ganimkt_1-1713807845704.jpeg

 

Thanks,

14 REPLIES 14

rushikeshvartak
All-Star
All-Star

Does entitlement type name contains Space ?


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

ganimkt
New Contributor II
New Contributor II

Hi @rushikeshvartak,

No, it doesn't contain space.

Use either of one and validate 

"ENTMAP",
"ENT2"


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @ganimkt,

Use only ENT2 and try.

Thanks.

If you find the above response useful, Kindly Mark it as "Accept As Solution".

Hi @sudeshjaiswal & @rushikeshvartak 

I have tried with only ENT2  and with only ENTMAP still it's not working.

Share json with ent2 and share logs


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

Hello @ganimkt ,

Can you please share the complete debug logs, log what you share is incomplete,

First run the account import and check the customproperty31 has values.
and after that run the access import job.

Thanks

If you find the above response useful, Kindly Mark it as "Accept As Solution".

All urls have space in end


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

ganimkt
New Contributor II
New Contributor II

Hi @rushikeshvartak,

Thanks for the prompt response.

Please find the attached logs.

Here is the JSON:

{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://xxxx/hcmCoreSetupApi/scim/Users?startIndex=1&count=500 ",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}"
}
},
"listField": "Resources",
"keyField": "accountID",
"statusConfig": {
"active": "true",
"inactive": "false"
},
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "userName~#~char",
"displayname": "displayName~#~char",
"customproperty1": "name.givenName~#~char",
"customproperty2": "name.familyName~#~char",
"customproperty3": "emails.value~#~char",
"customproperty4": "emails.type~#~char",
"customproperty5": "emails.primary~#~bool",
"customproperty6": "preferredLanguage~#~char",
"customproperty7": "externalId~#~char",
"customproperty11": "active~#~bool",
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char",
"status": "active~#~char"
},
"pagination": {
"nextUrl": {
"nextUrlPath": "${response?.objectList?.size()>0?'https://xxxx/hcmCoreSetupApi/scim/Users?startIndex='+Math.addExact(response.completeResponseMap.itemsPerPage,response.completeResponseMap.startIndex)+'&count='+response.completeResponseMap.itemsPerPage:null }"
}
}
}
},
"acctEntMappings": {
"Roles": {
"listPath": "roles",
"idPath": "id",
"keyField": "entitlementID"
}
}
},
"entitlementParams": {
"processingType": "SequentialAndIterative",
"entTypes": {
"Roles": {
"entTypeOrder": 0,
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"httpHeaders": {
"Authorization": "${access_token}"
},
"url": "https://xxxx/hcmCoreSetupApi/scim/Roles?startIndex=1&count=500 ",
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "Resources",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "id~#~char",
"entitlement_value": "name~#~char",
"description": "description~#~char",
"displayName": "displayName~#~char",
"customproperty1": "id~#~char",
"customproperty2": "category~#~char"
},
"pagination": {
"nextUrl": {
"nextUrlPath": "${response?.objectList?.size()>0?'https://xxxx/hcmCoreSetupApi/scim/Roles?startIndex='+Math.addExact(response.completeResponseMap.itemsPerPage,response.completeResponseMap.startIndex)+'&count='+response.completeResponseMap.itemsPerPage:null }"
}
},
"makeProcessingStatus": true,
"disableDeletedEntitlements": true
}
}
},
"SecurityContext": {
"entTypeOrder": 1,
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://xxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0  ",
"httpHeaders": {
"Authorization": "${access_token}"
},
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "items",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "SecurityContext~#~char",
"entitlement_value": "SecurityContext~#~char"
},
"makeProcessingStatus": true,
"disableDeletedEntitlements": true
}
}
},
"SecurityContextValue": {
"entTypeOrder": 2,
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "https://xxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0  ",
"httpHeaders": {
"Authorization": "${access_token}"
},
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "items",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "SecurityContextValue~#~char",
"entitlement_value": "SecurityContextValue~#~char"
},
"makeProcessingStatus": true,
"disableDeletedEntitlements": true
}
}
}
}
},
"entMappingParams": {
"processingType": "SequentialAndIterative",
"entTypes": {
"Roles": {
"ent1KeyField": "entitlement_value",
"call": {
"call1": {
"connection": "acctAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"httpHeaders": {
"Authorization": "${access_token}"
},
"url": "https://xxxx/fscmRestApi/resources/xx.xx.xx.xx/dataSecurities?fields=SecurityContext,SecurityContextValue,RoleCommonName,RoleNameCr&limit=25&offset=0 ",
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "items",
"ent1IdPath": "RoleCommonName",
"ent2IdPath": "SecurityContext",
"ent2KeyField": "entitlementID",
"targetEntType": "SecurityContext",
"addDependentTask": true,
"removeDependentEntTask": true,
"mappingTypes": [
"ENT2"
]
}
}
}
}
},
"acctEntParams": {
"processingType": "acctToEntMapping"
}
}

"addDependentTask": true,
"removeDependentEntTask": true,

this is not applicable for ent2


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

Hi @rushikeshvartak,

I have removed the "addDependentTask": true,
"removeDependentEntTask": true,

and then ran the access import still the issue isn't fixed.

Vedanth-BK
Regular Contributor
Regular Contributor

Hello @ganimkt 

There is a space in the URL. Please remove the space and encode the special characters. If you still get the same issue, share the logs for this particular API call .

VedanthBK_0-1713966169532.png

 

Thank you
Vedanth B.K

ganimkt
New Contributor II
New Contributor II

Hi @Vedanth-BK ,

Thank you for the suggestion, I have removed the space and ran the access import job still the issues isn't resolved. 

Please find the attached logs. 

Thanks,

Ganesh.

Logs are insufficient 


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.