We are delighted to share our new EIC Delivery Methodology for efficiently managing Saviynt Implementations and delivering quick time to value. CLICK HERE.

Imported servicenow accounts status not updating from manually provisioned?

jralexander137
New Contributor II
New Contributor II

Hi. I have an issue where after importing the ServiceNow accounts, the test users I have created are not being updated from "Manually Provisioned" to Active or Inactive. The accounts that already exist previously properly show as active or inactive...seems to just be the ones provisioned by Saviynt are not having their statuses updated properly. Any suggestions on where the issue might lie? 

The configs looks correct below so I'm not sure what I'm missing here.

"statusConfig": {
"active": "true",
"inactive": "false"
},
"listField": "result",
"keyField": "accountID",
"colsToPropsMap": {
"customproperty1": "employee_number~#~char",
"CUSTOMPROPERTY2": "last_name~#~char",
"customproperty3": "name~#~char",
"CUSTOMPROPERTY4": "first_name~#~char",
"CUSTOMPROPERTY5": "department~#~char",
"CUSTOMPROPERTY6": "location~#~char",
"CUSTOMPROPERTY7": "email~#~char",
"CUSTOMPROPERTY8": "manager~#~char",
"CUSTOMPROPERTY9": "country~#~char",
"CUSTOMPROPERTY10": "phone~#~char",
"CUSTOMPROPERTY11": "title~#~char",
"name": "user_name~#~char",
"status": "active~#~char",
"accountID": "sys_id~#~char"
}

9 REPLIES 9

dgandhi
All-Star
All-Star

Hi

Are these test accounts part of account import? If yes what is the status of the account in the target.

Thanks

Thanks,
Devang Gandhi
If this reply answered your question, please Accept As Solution and give Kudos to help others who may have a similar problem.

Yes, they look to be importing since the account entry on the user object is not showing as deleted or anything like that. The status in the target for the "active" attribute is true for all of the test users. So I would expect that upon aggregation of the accounts the status flag of the created test account should flip  to active based on the config above, assuming "active" comes through with either "true" or "false" as a value.

Here are what the status for each account looks like in both systems.

Please share full json. Fyi documentation json works very well please use same json

 

https://docs.saviyntcloud.com/bundle/ServiceNow-v55x/page/Content/ServiceNow-as-a-Managed-Applicatio...


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

I am using the OOTB json config listed below, I have removed the URL for sharing here but is correct.

 

 

{
  "accountParams": {
    "connection": "acctAuth",
    "processingType": "SequentialAndIterative",
    "call": {
      "call1": {
        "callOrder": 0,
        "stageNumber": 0,
        "http": {
          "url": "https://URL.service-now.com/api/now/table/sys_user?sysparm_limit=100",
          "httpHeaders": {
            "Authorization": "${access_token}"
          },
          "httpContentType": "application/x-www-form-urlencoded",
          "httpMethod": "GET"
        },
        "statusConfig": {
          "active": "true",
          "inactive": "false"
        },
        "listField": "result",
        "keyField": "accountID",
        "colsToPropsMap": {
          "customproperty1": "employee_number~#~char",
          "CUSTOMPROPERTY2": "last_name~#~char",
          "customproperty3": "name~#~char",
          "CUSTOMPROPERTY4": "first_name~#~char",
          "CUSTOMPROPERTY5": "department~#~char",
          "CUSTOMPROPERTY6": "location~#~char",
          "CUSTOMPROPERTY7": "email~#~char",
          "CUSTOMPROPERTY8": "manager~#~char",
          "CUSTOMPROPERTY9": "country~#~char",
          "CUSTOMPROPERTY10": "phone~#~char",
          "CUSTOMPROPERTY11": "title~#~char",
          "name": "user_name~#~char",
          "status": "active~#~char",
          "accountID": "sys_id~#~char"
        },
        "pagination": {
          "nextUrl": {
            "nextUrlPath": "${headers?.Link?.split(';')?.size()==5?headers?.Link?.split(';')[2]?.replace('rel=\"prev\",<', '')?.replace('>','')?.trim():headers?.Link?.split(';')?.size()==4 && headers?.Link?.split(';')[2].contains('rel=\"next\",<')?headers?.Link?.split(';')[1]?.replace('rel=\"first\",<', '')?.replace('>','')?.trim():null}"
          }
        }
      }
    }
  },
  "entitlementParams": {
    "processingType": "SequentialAndIterative",
    "entTypes": {
      "Group": {
        "entTypeOrder": 0,
        "entTypeLabels": {},
        "call": {
          "call1": {
            "connection": "acctAuth",
            "callOrder": 0,
            "stageNumber": 0,
            "http": {
              "httpHeaders": {
                "Authorization": "${access_token}"
              },
              "url": "https://URL.service-now.com/api/now/table/sys_user_group",
              "httpContentType": "application/json",
              "httpMethod": "GET"
            },
            "statusConfig": {
              "active": "true",
              "inactive": "false"
            },
            "listField": "result",
            "keyField": "entitlementID",
            "colsToPropsMap": {
              "entitlementID": "sys_id~#~char",
              "description": "description~#~char",
              "entitlement_value": "name~#~char",
              "displayname": "name~#~char",
              "status": "active~#~char",
              "updatedate": "sys_updated_on~#~char"
            }
          }
        },
        "entMappings": {
          "Group": {
            "listPath": "parent",
            "idPath": "value",
            "idColumn": "entitlementID",
            "mappingTypes": [
              "ENTMAP"
            ]
          }
        }
      },
      "Roles": {
        "entTypeOrder": 1,
        "entTypeLabels": {},
        "call": {
          "call1": {
            "connection": "acctAuth",
            "callOrder": 0,
            "stageNumber": 0,
            "http": {
              "httpHeaders": {
                "Authorization": "${access_token}"
              },
              "url": "https://URL.service-now.com/api/now/table/sys_user_role",
              "httpContentType": "application/json",
              "httpMethod": "GET"
            },
            "listField": "result",
            "keyField": "entitlementID",
            "colsToPropsMap": {
              "description": "description~#~char",
              "customproperty3": "elevated_privilege~#~char",
              "entitlementID": "sys_id~#~char",
              "entitlement_Value": "name~#~char",
              "displayname": "sys_name~#~char"
            }
          }
        }
      }
    }
  },
  "acctEntParams": {
    "entTypes": {
      "Group": {
        "call": {
          "call1": {
            "connection": "acctAuth",
            "processingType": "http",
            "http": {
              "url": "https://URL.service-now.com/api/now/v1/table/sys_user_grmember?sysparm_limit=10000",
              "httpContentType": "application/json",
              "httpMethod": "GET",
              "httpHeaders": {
                "Authorization": "${access_token}"
              }
            },
            "listField": "result",
            "acctKeyField": "accountID",
            "entKeyField": "entitlementID",
            "acctIdPath": "user.value",
            "entIdPath": "group.value",
            "pagination": {
              "nextUrl": {
                "nextUrlPath": "${headers?.Link?.split(';')?.size()==5?headers?.Link?.split(';')[2]?.replace('rel=\"prev\",<', '')?.replace('>','')?.trim():headers?.Link?.split(';')?.size()==4 && headers?.Link?.split(';')[2].contains('rel=\"next\",<')?headers?.Link?.split(';')[1]?.replace('rel=\"first\",<', '')?.replace('>','')?.trim():null}"
              }
            }
          }
        }
      },
      "Roles": {
        "call": {
          "call1": {
            "connection": "acctAuth",
            "processingType": "http",
            "http": {
              "url": "https://URL.service-now.com/api/now/table/sys_user_has_role?sysparm_limit=10000",
              "httpContentType": "application/json",
              "httpMethod": "GET",
              "httpHeaders": {
                "Authorization": "${access_token}"
              }
            },
            "listField": "result",
            "acctKeyField": "accountID",
            "entKeyField": "entitlementID",
            "acctIdPath": "user.value",
            "entIdPath": "role.value",
            "pagination": {
              "nextUrl": {
                "nextUrlPath": "${headers?.Link?.split(';')?.size()==5?headers?.Link?.split(';')[2]?.replace('rel=\"prev\",<', '')?.replace('>','')?.trim():headers?.Link?.split(';')?.size()==4 && headers?.Link?.split(';')[2].contains('rel=\"next\",<')?headers?.Link?.split(';')[1]?.replace('rel=\"first\",<', '')?.replace('>','')?.trim():null}"
              }
            }
          }
        }
      }
    }
  }
}

 

Please add status threshold config

{
"statusAndThresholdConfig": {
"accountThresholdValue": 500,
"deleteLinks": false,
"correlateInactiveAccounts": true,
"inactivateAccountsNotInFile": false
}
}


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

Where in the config should this be added?

dgandhi
All-Star
All-Star

Config looks correct. Can you update some metadata of these test account in target and try to do recon in saviynt and see if the meta data is updated in Saviynt. If the metadata is updated successfully but status is still not then the issue would be in the status field. But this will help you to narrow down the issue.

Thanks

Thanks,
Devang Gandhi
If this reply answered your question, please Accept As Solution and give Kudos to help others who may have a similar problem.

I will try this, should atleast tell me if the account is being updated in saviynt.