I have a Web Services SaaS connector (authoritative source) which needs to post back updates to the managed account for a handful of attributes. The Update Account HTTP operation uses a raw JSON body to deliver the required attributes to be updated:
{
"globalid": "$plan.nativeIdentity$",
"accountName": "$plan.AccountName$",
"email": "$plan.Email$",
"firstName": "$plan.firstname$",
"lastName": "$plan.lastname$",
"activeAccount": "$plan.adAccountActive$",
"lastLoginEvent": "$plan.lastLogonEventTimestamp$"
}
The first 3 attributes (nativeidentity, AccountName and Email) are rendered correctly, however the remaining attributes are missing from the body as the request builder believes the $plan.*$ attributes are empty or incorrectly configured. This is confirmed by both the platform hosting the REST end-point (Azure integration Services) as well as the ISC logs (see below):
:"BaseHttpRequestBuilder.ts Exiting prepareRawBody() for JSON : {\"globalid\":\"HI200999\",\"accountName\":\"john.doe\",\"email\":\"john.doe@devlab.acme.com\"}","requestId":"8ea2fd575f6
The logs also record the removal of the attributes that are empty:
[2026-02-24T17:33:53.424+08:00] DEBUG | connectorMessage ▶︎ {"AppType":"Web Services SaaS","commandType":"std:account:update","invocationId":"f65082ab-914c-48d6-bc2f-4e09c043e58a","message"
:"BaseHttpRequestBuilder.ts Value for placeholder plan.lastname \"\n + \"is empty. Skipping...","requestId":"8ea2fd575f6f40c3a58d1111faf58d50","timestamp"
:"2026-02-24T09:33:52.987Z","version":61}
My assumptions according to the documentation and online research are as follows:
- If the mapped attribute is null, the attribute is silently removed from the JSON body
- The $plan object maps to the identity itself (not the Web Services SaaS source schema)
- Attribute names are case sensitive
- The default CREATE provisioning policy is used for the Update Account operation - an UPDATE provisioning policy does not need to be created (although I did try creating this as well)
I have confirmed that the above attributes are indeed populated on the identity itself. I have tried every combination of case (camel, proper, lower) for all attributes, confirmed the spelling and the presence of each attribute in the source schema, create account configuration, attribute sync configuration and CREATE provisioning policy to no avail.
To further add confusion to the above, the Identity Events list for the identity that I have been manually syncing during testing shows 3 modify account passed events: 1 for the account name, 1 for the email address and 1 for the active account. The first 2 make sense as these appear in the JSON payload, however the active account does not.
Finally, on the identity account itself, under synced attributes, whilst all the above attributes appear, only the global id, first name and last name are populated, the remainder are null (double dash).
Anyone have similar issues or can shed any light on where to focus troubleshooting from here, would be greatly appreciated - I am out of ideas!