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

Entitlements aren't getting mapped to accounts in REST connection

Brian
New Contributor II
New Contributor II

Hello there pro's.  I've got a REST connection set up and it is pulling in the accounts, entitlements, and mapping info in CP31.   The entitlements are in the same response with the accounts. The accounts and entitlements are not getting mapped however so am reaching out for any assistance.

Response JSON sample from Postman:

 

 

{
    "message": "OK",
    "firstPageUri": "https://api.myapp.net/rest/users/?pageNumber=1",
    "nextPageUri": "https://api.myapp.net/rest/users/?pageNumber=2",
    "lastPageUri": "https://api.myapp.net/rest/users/?pageNumber=6",
    "page": {
        "pageSize": 10,
        "start": 0,
        "data": [
            {
                "id": 565153271644790,
                "owner": "CompanyName",
                "firstName": "Samples",
                "lastName": "User",
                "userName": "suser",
                "email": "samples.user@company.com",
                "roleIds": [
                    8105604014932494
                ],
                "defaultRoleId": 8105604014932494,
                "lastModifiedDate": 1668421811443,
                "lastModifiedName": "Samples User",
                "lastLoginDate": 1669365936942,
                "roles": [
                    {
                        "id": 8105604014932494,
                        "roleTemplate": "INCIDENT_ADMIN",
                        "name": "Incident Coordinator"
                    }
                ],
                "userStatus": "Active",
                "locked": false,
                "autoProvisionForEBU": true,
                "apiAccess": false
            }
        ]
    }
}

 

 

 

 Here's my ImportAccountEntJSON:

 

 

{
    "accountParams": {
        "connection": "acctAuth",
        "processingType": "SequentialAndIterative",
        "statusAndThresholdConfig": {
            "statusColumn": "customproperty18",
            "activeStatus": [
                "Active"
            ],
            "deleteLinks": true,
            "accountThresholdValue": 1000,
            "correlateInactiveAccounts": true,
            "inactivateAccountsNotInFile": true,
            "deleteAccEntForActiveAccounts": true
        },
        "call": {
            "call1": {
                "callOrder": 0,
                "stageNumber": 0,
                "http": {
                    "url": "https://api.myapp.net/rest/users?pageNumber=1",
                    "httpHeaders": {
                        "Authorization": "${access_token}",
                        "Accept": "application/json"
                    },
                    "httpContentType": "application/json",
                    "httpMethod": "GET"
                },
                "listField": "page.data",
                "keyField": "accountID",
                "colsToPropsMap": {
                    "accountID": "id~#~char",
                    "name": "userName~#~char",
                    "displayName": "email~#~char",
                    "customproperty1": "firstName~#~char",
                    "customproperty3": "lastName~#~char",
                    "customproperty4": "apiAccess~#~char",
                    "customproperty5": "autoProvisionForEBU~#~char",
                    "customproperty8": "defaultRoleId~#~char",
                    "customproperty9": "lastLoginDate~#~char",
                    "customproperty10": "lastModifiedDate~#~char",
                    "customproperty11": "lastModifiedName~#~char",
                    "customproperty13": "locked~#~char",
                    "customproperty14": "owner~#~char",
                    "customproperty15": "roleIds~#~char",
                    "customproperty18": "userStatus~#~char",
                    "customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char"
                },
                "pagination": {
                    "nextUrl": {
                        "nextUrlPath": "${response?.completeResponseMap?.nextPageUri==null?null:response.completeResponseMap.nextPageUri}"
                    }
                }
            }
        },
        "acctEntMappings": {
            "Role": {
                "importAsEntitlement": true,
                "listPath": "roles",
                "idPath": "",
                "keyField": "entitlementID",
                "colsToPropsMap": {
                    "entitlementID": "id~#~char",
                    "entitlement_value": "name~#~char"
                }
            }
        }
    },
    "entitlementParams": {
        "connection": "acctAuth",
        "processingType": "SequentialAndIterative",
        "entTypes": {
            "Role": {}
        }
    },
    "acctEntParams": {
        "processingType": "acctToEntMapping"
    }
}

 

 

6 REPLIES 6

rushikeshvartak
All-Star
All-Star

Can you share account cp31


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

Hello Rushikesh, and thank you - here is account cp31 for the account.

{"Role":{"entIds":["[id:8105604014932494, roleTemplate:INCIDENT_ADMIN, name:Incident Coordinator]"],"keyField":"entitlementID"}}

Does entitlements created with entitlement ID ?


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

Hello @rushikeshvartak - the entitlements are created with entitlement ID as follows:

Brian_0-1706620796153.png

 

Vedanth-BK
Regular Contributor
Regular Contributor

Hi @Brian 

Please use the below JSON and run both account and access recon job.

{
  "accountParams": {
    "connection": "acctAuth",
    "processingType": "SequentialAndIterative",
    "statusAndThresholdConfig": {
      "statusColumn": "customproperty18",
      "activeStatus": [
        "Active"
      ],
      "deleteLinks": true,
      "accountThresholdValue": 1000,
      "correlateInactiveAccounts": true,
      "inactivateAccountsNotInFile": true,
      "deleteAccEntForActiveAccounts": true
    },
    "call": {
      "call1": {
        "callOrder": 0,
        "stageNumber": 0,
        "http": {
          "url": "https://api.myapp.net/rest/users?pageNumber=1",
          "httpHeaders": {
            "Authorization": "${access_token}",
            "Accept": "application/json"
          },
          "httpContentType": "application/json",
          "httpMethod": "GET"
        },
        "listField": "page.data",
        "keyField": "accountID",
        "colsToPropsMap": {
          "accountID": "id~#~char",
          "name": "userName~#~char",
          "displayName": "email~#~char",
          "customproperty1": "firstName~#~char",
          "customproperty3": "lastName~#~char",
          "customproperty4": "apiAccess~#~char",
          "customproperty5": "autoProvisionForEBU~#~char",
          "customproperty8": "defaultRoleId~#~char",
          "customproperty9": "lastLoginDate~#~char",
          "customproperty10": "lastModifiedDate~#~char",
          "customproperty11": "lastModifiedName~#~char",
          "customproperty13": "locked~#~char",
          "customproperty14": "owner~#~char",
          "customproperty15": "roleIds~#~char",
          "customproperty18": "userStatus~#~char",
          "customproperty31": "STORE#ACC#ENT#MAPPINGINFO~#~char"
        },
        "pagination": {
          "nextUrl": {
            "nextUrlPath": "${response?.completeResponseMap?.nextPageUri==null?null:response.completeResponseMap.nextPageUri}"
          }
        }
      }
    },
    "acctEntMappings": {
      "Role": {
        "importAsEntitlement": true,
        "listPath": "roles",
        "idPath": "id",
        "keyField": "entitlementID",
        "colsToPropsMap": {
          "entitlementID": "id~#~char",
          "entitlement_value": "name~#~char"
        }
      }
    }
  },
  "entitlementParams": {
    "connection": "acctAuth",
    "processingType": "SequentialAndIterative",
    "entTypes": {
      "Role": {}
    }
  },
  "acctEntParams": {
    "processingType": "acctToEntMapping"
  }
}

`Thank you

Vedanth B.K

Thank you
Vedanth B.K

Brian
New Contributor II
New Contributor II

Hello @Vedanth-BK - This appears to have worked, thank you! 

I have added your JSON, which the only change is:

"idPath": "id",

 This had the effect of changing CP31 to the following:

{"Role":{"entIds":["8105604014932494"],"keyField":"entitlementID"}}

I ran Accounts import and then Access import job.  After running the Access import job the entitlements and accounts are mapping successfully.