Announcing the SAVIYNT KNOWLEDGE EXCHANGE unifying the Saviynt forums, documentation, training, and more in a single search tool across platforms. Click HERE to read the Announcement.

Rest Connection : Import accounts and entitlement with keyfield as Entitlement_value in ENTPARAMS

prachi
Regular Contributor II
Regular Contributor II

Hi,

I am trying to import accounts and entitlement. In my payload response to import accounts i have the roles defined as below :

prachi_0-1655217844364.png

Where in roles, I have entitlement_values. 

Also, while importing the entitlment , the response payload has only the entitlemnet value which is the unique field.

But when i try using the entitlement_value as keyfield , the entitlements are not mapped with account, though the job is success and all other field is mapped with accounts. All accounts and entitlements are imported into Saviynt, except the account-entitlement mappings.

Customproperty31 of accounts looks like this :

{"Roles":{"entIds":["[Ent_value1, Ent_Value2]"],"keyField":"entitlement_value"}}

My Import account JSON looks like this :

{
"accountParams": {
"connection": "userAuth",
"processingType": "SequentialAndIterative",
"statusAndThresholdConfig": {
"accountNotInImportAction": "Inactive",
"correlateInactiveAccounts": true,
"accountThresholdValue": 1000
},
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"connection": "userAuth",
"http": {
"url": "https://{URL}/api/saviynt/users/user/",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "application/json"
},
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "",
"keyField": "accountID",
"colsToPropsMap": {
"customproperty1": "firstName~#~char",
"customproperty2": "lastName~#~char",
"customproperty3": "email~#~char",
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char",
"displayname": "name~#~char",
"name": "username~#~char",
"accountID": "id~#~char",
"status": "isActive~#~bool"
},
"statusConfig": {
"active": "true",
"inactive": "false"
}

}
},
"acctEntMappings": {
"Roles": {
"listPath": "",
"idPath": "roles",
"keyField": "entitlement_value"
}
}
},
"entitlementParams": {
"processingType": "SequentialAndIterative",
"entTypes": {
"Roles": {
"entTypeOrder": 0,
"call": {
"call1": {
"connection": "userAuth",
"callOrder": 0,
"stageNumber": 0,
"http": {
"httpHeaders": {
"Authorization": "${access_token}"
},
"url": "https://{URL}/api/saviynt/roles/",
"httpContentType": "application/json",
"httpMethod": "GET"
},
"listField": "",
"keyField": "entitlement_value",
"colsToPropsMap": {
"entitlement_value": "name~#~char"
}
}
}
}
}
},
"acctEntParams": {
"connection": "userAuth",
"entTypes": {
"Roles": {
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"processingType": "acctToEntMapping"
}
}
}
}
}
}

 

Can you please help me with why the account-entitlement mapping is not happennig, i am assuming it is looking for entID but i do not have the ID in my API call response payload.

3 REPLIES 3

sagars
Saviynt Employee
Saviynt Employee

@prachi 

Try keeping the idpath blank and listpath as Roles as shown below and do access import.

"acctEntMappings": {
"Roles": {
"listPath": "roles",
"idPath": "",
"keyField": "entitlement_value"
}

Regards,
Sagar Srikantaiah

prachi
Regular Contributor II
Regular Contributor II

Hi,

I kept id path blank and mapped name from taget with ent_id in saviynt. And used this ent_id field as keyfeild in JSON. It is working fine now. Thank you

Hi Prachi,

I am facing the exact issue and my REST response is similar as yours. I have updated my entitlementID same as the entitlement_value and used 
"acctEntMappings": {
"Group": {
"listPath": "groups",
"idPath": "",
"keyField": "entitlementID"
}
}

But still getting entitlements are not mapping with accounts and in logs it is showing as
DEBUG rest.RestProvisioningService - Inside importAccountsFull:persistAccounts, pptTypeSep : ~#~
DEBUG rest.RestProvisioningService - associated entitlement : Group with account is not for import.

My entitlement details as below(fetch it from Saviynt REST API):

"Entitlementdetails": [
{
"syscritical": "0",
"entitlement_valuekey": "1093060",
"endpointKey": 99,
"entitlementID": "CDTM Users",
"description": "CDTM Users",
"entitlementOwner": "",
"entitlementTypeName": "Group",
"entitlementType": "Group",
"entitlement_glossary": "",
"entitlementTypeKey": 169,
"endpoint": "Appian_Cloud",
"updatedate": "2022-06-02 19:36:03",
"requestForm": "Request Form Table",
"displayname": "",
"soxcritical": "0",
"entitlement_value": "CDTM Users",
"status": "1"
}

Is it possible, can you please share your code changes which is working?