Perform Identity Request Maintenance corrupting multi-valued Managed+Entitlement attribute on WS connector, stuck IdentityRequests + false NCDs

Hey all — hoping someone has run into this before I sink more time into it or wait on a support ticket.

Setup: IIQ 8.4p2

Web Services connector application (custom REST target, loosely SCIM-shaped but not fully RFC-conformant). Schema attribute groups is flagged Managed, Entitlement, Multi-Valued, type group. Backing target returns group membership as an array of objects like {"value":"6465","display":"Standard"} on GET — nothing unusual for a non-conformant SCIM implementation.

Symptom: First real access request through this app (single “Add Entitlement” for one group) provisions correctly — confirmed on the target app itself, and the Provisioning Transaction log shows committed all the way through. But the parent IdentityRequest never closes: it sits at completionStatus="Pending", executionStatus="Verifying" indefinitely.

Digging into the Identity cube via Debug, the Link’s groups attribute is stored as a raw stringified version of the target’s response object:

{"value":"6465","display":"Standard"}

instead of a flat scalar/list of IDs.

Running Group Aggregation + Account Aggregation cleans this up perfectly — Link shows a proper <List><String>6465</String></List>. But the moment Perform Identity Request Maintenance runs (with “Verify provisioning for requests?” enabled), it flips right back to the malformed Map-shaped string, and logs a Native Change Detection event for it — even though nothing changed on the target side.

What I’ve ruled out:

  • No Before/After Rules on Get Object, Account Aggregation, or Add Entitlement doing this transformation
  • No Customization Rule on the app
  • Response Attribute Mapping on Get Object is a clean, direct passthrough (groups → $.groups)
  • No persisted IdentityEntitlement row exists for this identity/app/attribute (queried directly via Debug) — so it’s not a stale cache being re-synced
  • Identity Refresh (with entitlement/exception refresh options on) successfully rebuilds everything clean; it’s specifically the maintenance task’s verification step that re-breaks it

This really looks like the verification logic in Perform Identity Request Maintenance does its own live connector fetch that bypasses the app’s configured Response Attribute Mapping, and writes the raw unmapped response straight onto the Link.

Questions for the group:

  1. Has anyone seen this specific pattern — verification corrupting a multi-valued Managed+Entitlement attribute on a WS connector?
  2. Anyone know if provisioning verification uses a different/internal fetch path than standard aggregation?
  3. Any known workarounds short of restructuring the schema (we need to keep this attribute multi-valued) or disabling verification (hard no in our SOX environment)?

I will be opening a support case as well, but curious if this is a known quirk of WS connectors + entitlement-type multi-valued attributes on 8.4p2 specifically, or something version-specific/patchable. Happy to share more of the XML if useful.

Thank You!

@MRP4ND4 It looks schema is not configured properly. Could you please share the app xml for review?

In case you want to disable specific attribute from perform maintenance validation, that also you can do.

Set this entry in PIRM task:

<entry key="ignoredVerifiedAttributes" value="pwdLastSet"/>

Please follow this article:https://community.sailpoint.com/t5/IdentityIQ-Forum/Getting-error-message-on-Access-Request-This-request-timed-out/m-p/31564#M30523

Hi Again,

Here is the application .xml file. I will let you know that this app was supposed to be configured via SCIM 2.0. However, the vendor despite claiming to be 100% SCIM compliant wasn’t. Therefore we had to use their SCIM API documentation while integrating the application as a WEB SERVICES application within IIQ..

The way that they gave the values back after making a call was slightly odd and there was quite a bit of customization that had to occur as a result to parse the data properly.

I had ES more or less build out this entire integration because the complexity was far greater than I’m comfortable with..

It was quite a pain to integrate from the get go.. But the other issue, is we are in very highly regulated enviornment.. Which means we have to obey SOX controls and are limited in how we can solution..

So the solution to edit the Perform Maintenance Task wouldn’t be possible for us…

Here is the IdentityRequest UI info too.

Application-ChathamDirect.xml (113.7 KB)