Click HERE to see how Saviynt Intelligence is transforming the industry. |
02/07/2024 09:56 AM
Hello Team,
I am trying to configure a REST connector for one of the applications in our environment which uses REST API's with Basic Authentication.
Connection is successful with below connection json.
{
"authentications":{
"acctAuth":{
"authType":"basic",
"errorPath":"error.code",
"maxRefreshTryCount":5,
"tokenResponsePath":"access_token",
"properties":{
"userName":"<Username>",
"password":"<Password>"
},
"authError":[
"InvalidAuthenticationToken",
"AuthenticationFailed"
],
"retryFailureStatusCode":[]
}
}
}
But facing issues with ImportAccountEntJSON, I was able to get the accounts recon to Saviynt successfully but when i'm trying to import the access, getting 200 response in the logs but entitlements are not imported to Saviynt.
Below is the Json i'm using for the same.
Below is the logs for the same post running the access import
Please help me understand if i'm missing something here.
Regards,
Suresh V.
Solved! Go to Solution.
02/07/2024 02:31 PM
Share postman response screenshot
Please share curl command [Refer https://codingnconcepts.com/postman/how-to-generate-curl-command-from-postman/ ]
02/08/2024 03:52 AM
Hi @rushikeshvartak ,
Below is the postman response for GET Groups
Below is the CURL command for the same operation
curl --location '<URL>' \
--header 'Authorization: Basic MaasQyMzktNjk2ZSaLWEyOTctOTQ1N2Q1NjI5OGIzOkRTLWVCSWxYbnJGQ01tMC5RTlViUkE5Sqwedacasddfa=' \
--header 'Cookie: JSESSIONID=D6A83889B0C2AFF404F021B0C7D4075124C'
02/07/2024 08:32 PM
Hi @Suresh1
The object list size is null in the debug logs means that the list field or the traversing path to entID is incorrect. Please share the response
02/08/2024 03:53 AM
02/08/2024 04:50 AM
Hi @Suresh1
Please try with the below json
{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"statusAndThresholdConfig": {
"accountThresholdValue": 2000,
"inactivateAccountsNotInFile": true
},
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "accountID",
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "userName~#~char",
"customproperty1": "name.familyName~#~char",
"customproperty2": "name.givenName~#~char",
"customproperty3": "emails.value~#~char",
"customproperty4": "active~#~char",
"customproperty5": "displayName~#~char",
"status": "active~#~bool"
}
}
}
},
"acctEntMappings": {
"Groups": {
"listPath": "",
"idPath": "value",
"keyField": "entitlementID"
}
},
"entitlementParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"entTypes": {
"Groups": {
"entTypeOrder": 0,
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "application/json"
}
},
"listField": "Resources",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "id~#~char",
"entitlement_value": "displayName~#~char",
"customproperty1": "id~#~char"
}
}
}
}
}
},
"acctEntParams": {
"connection": "acctAuth",
"entTypes": {
"Groups": {
"call": {
"call3": {
"callOrder": 0,
"stageNumber": 0,
"processingType": "acctToEntMapping"
}
}
}
}
}
}
02/08/2024 05:04 AM
02/08/2024 05:21 AM
please try with the below
{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"statusAndThresholdConfig": {
"accountThresholdValue": 2000,
"inactivateAccountsNotInFile": true
},
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "accountID",
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "userName~#~char",
"customproperty1": "name.familyName~#~char",
"customproperty2": "name.givenName~#~char",
"customproperty3": "emails.value~#~char",
"customproperty4": "active~#~char",
"customproperty5": "displayName~#~char",
"status": "active~#~bool"
}
}
}
},
"acctEntMappings": {
"Groups": {
"listPath": "",
"idPath": "value",
"keyField": "entitlementID"
}
},
"entitlementParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"entTypes": {
"Groups": {
"entTypeOrder": 0,
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "id~#~char",
"entitlement_value": "displayName~#~char",
"customproperty1": "id~#~char"
}
}
}
}
}
},
"acctEntParams": {
"connection": "acctAuth",
"entTypes": {
"Groups": {
"call": {
"call3": {
"callOrder": 0,
"stageNumber": 0,
"processingType": "acctToEntMapping"
}
}
}
}
}
}
02/12/2024 06:44 AM
Hi @Vedanth-BK ,
Thank you, this worked and brought all the entitlements to Saviynt but Account to entitlement mappings didnt happen. Did i miss anything here ?
Regards,
Suresh V.
02/12/2024 07:52 AM
Hi @Suresh1
Please add customproperty31 in colstoProps of account params and run the account and access recon job
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char"
Validate if the cp31 is populated with the group information. If you do see values, please share the account's API response to validate acctEntMappings
02/13/2024 07:24 AM
Hi @Vedanth-BK ,
I have mapped CP31 as suggested above and ran the account and access recons. But got empty value mapped to CP31.
Below is the GET accounts response
We are having groups array and Value as the object in it. below is our acctEntMappings
"acctEntMappings": {
"Groups": {
"listPath": "groups",
"idPath": "value",
"keyField": "entitlementID"
}
},
02/13/2024 07:39 AM
please share the complete json
02/13/2024 07:44 AM
Here it is...
{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"statusAndThresholdConfig": {
"accountThresholdValue": 2000,
"inactivateAccountsNotInFile": true
},
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "accountID",
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "userName~#~char",
"customproperty1": "name.familyName~#~char",
"customproperty2": "name.givenName~#~char",
"customproperty3": "emails.value~#~char",
"customproperty4": "active~#~char",
"customproperty5": "displayName~#~char",
"status": "active~#~bool",
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char"
}
}
}
},
"acctEntMappings": {
"Groups": {
"listPath": "groups",
"idPath": "value",
"keyField": "entitlementID"
}
},
"entitlementParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"entTypes": {
"Groups": {
"entTypeOrder": 0,
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "id~#~char",
"entitlement_value": "displayName~#~char",
"customproperty1": "id~#~char"
}
}
}
}
}
},
"acctEntParams": {
"connection": "acctAuth",
"entTypes": {
"Groups": {
"call": {
"call3": {
"callOrder": 0,
"stageNumber": 0,
"processingType": "acctToEntMapping"
}
}
}
}
}
}
02/13/2024 07:50 AM
Hi @Suresh1
The acctEntMappings was placed outside the accountParams. I've corrected the syntax. Please check with the below Json
{
"accountParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"statusAndThresholdConfig": {
"accountThresholdValue": 2000,
"inactivateAccountsNotInFile": true
},
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "accountID",
"colsToPropsMap": {
"accountID": "id~#~char",
"name": "userName~#~char",
"customproperty1": "name.familyName~#~char",
"customproperty2": "name.givenName~#~char",
"customproperty3": "emails.value~#~char",
"customproperty4": "active~#~char",
"customproperty5": "displayName~#~char",
"status": "active~#~bool",
"customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char"
}
}
},
"acctEntMappings": {
"Groups": {
"listPath": "groups",
"idPath": "value",
"keyField": "entitlementID"
}
}
},
"entitlementParams": {
"connection": "acctAuth",
"processingType": "SequentialAndIterative",
"entTypes": {
"Groups": {
"entTypeOrder": 0,
"call": {
"call1": {
"callOrder": 0,
"stageNumber": 0,
"http": {
"url": "<URL>",
"httpContentType": "application/json",
"httpMethod": "GET",
"httpHeaders": {
"Authorization": "${access_token}",
"Accept": "*/*"
}
},
"listField": "Resources",
"keyField": "entitlementID",
"colsToPropsMap": {
"entitlementID": "id~#~char",
"entitlement_value": "displayName~#~char",
"customproperty1": "id~#~char"
}
}
}
}
}
},
"acctEntParams": {
"processingType": "acctToEntMapping"
}
}
02/13/2024 11:10 AM
This Worked, thank you @Vedanth-BK
02/07/2024 08:41 PM
In the config json add :
{
"showLogs": true
}
Also can you try validating via postman what is the response?