# Verify Data Type Value Not Working

**URL:** <https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063>\
**Category:** SHF Discussion and Questions\
**Tags:** workflows, sailpoint-identity-security\
**Created:** [June 12, 2025, 5:19pm UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063 "2025-06-12T17:19:55Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![sandashafreen26](https://avatars.discourse-cdn.com/v4/letter/s/e495f1/32.png) [@sandashafreen26](https://developer.sailpoint.com/discuss/u/sandashafreen26)\
**Post date:** [June 12, 2025, 5:19pm UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/1 "2025-06-12T17:19:55Z")

</div>

We have a use case where, during an **access revocation request** , we need to validate whether the user who initiated the request (`requestedBy.id`) is a member of a specific Governance Group. If the user is not a member, the access request should be **automatically cancelled**.

To implement this, we’re using the **Access Request Submission trigger** in a workflow. As part of the flow, we’re making an **HTTP call** (`HTTP Request 6`) to fetch the members of the Governance Group.

The response body returns an array of members, each with an `id`. We then attempt to match the `requestedBy.id` with one of these member IDs using a **“Verify Data”** step with a JSONPath condition like: $.hTTPRequest6.body[?(@.id=={{$.trigger.requestedBy.id}})] We also tried other variants:

- `$.hTTPRequest6.body[?(@.id=="{{$.trigger.requestedBy.id}}")]`
- `$.hTTPRequest6.body[?(@.id=='{{$.trigger.requestedBy.id}}')]`

However, **none of these expressions are evaluating to `true`** , even when the ID is present in the response. As a result, the workflow always follows the “false” path.  
We cannot use the loop operator, because initiating a cancellation action inside the loop causes the **workflow to attempt multiple cancellations** , which fails due to SailPoint’s restriction on one cancellation per request.  
We need a way to check if the `requestedBy.id` **exists within** the HTTP response’s array of Governance Group members, **without looping** , and only cancel **once** , if no match is found.

 ![image](https://global.discourse-cdn.com/sailpoint/original/3X/4/e/4ed03da355a1111537968c9edc3ca432132a439d.png)

Need assistance on:

1. Whether the Verify Data step can check existence within an array of objects using a dynamic value from the trigger payload?
2. If not feasible via JSONPath, is there a recommended approach to avoid triggering multiple cancellation paths?  
 ![image](https://global.discourse-cdn.com/sailpoint/original/3X/c/0/c0d7370e4108e703dd8db662b613457e1fb9af84.png)

---

<div class="post-metadata">

**Author:** ![lipna](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/lipna/32/26364_2.png) [@lipna](https://developer.sailpoint.com/discuss/u/lipna)\
**Post date:** [June 12, 2025, 5:48pm UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/2 "2025-06-12T17:48:14Z")

</div>

> [@](#):
>
> 1. Whether the Verify Data step can check existence within an array of objects using a dynamic value from the trigger payload?

@Sandash, when you try the _Verify Data_ step, it gives you back an array when you are using JSONPath, so it doesn’t just say _true_ or _false_ if there’s a match. To check if something exists in the list, it’s better to use a _Transform JSON_ step first to filter it, then check if the result has anything in it using the length.

> [@](#):
>
> 1. If not feasible via JSONPath, is there a recommended approach to avoid triggering multiple cancellation paths?

Yes. as mentioned above, you can use a _Transform JSON_ step to filter the member list for matching IDs, then use a _Verify Data_ step to check if the filtered result has a length of `0`.

_Here is an Example:_

```auto
$.hTTPRequest6.body[?(@.id=='{{$.trigger.requestedBy.id}}')]
{{length($.transformStepName)}}

```

Good Luck!

---

<div class="post-metadata">

**Author:** ![sandashafreen26](https://avatars.discourse-cdn.com/v4/letter/s/e495f1/32.png) [@sandashafreen26](https://developer.sailpoint.com/discuss/u/sandashafreen26)\
**Post date:** [June 13, 2025, 5:56am UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/3 "2025-06-13T05:56:02Z")

</div>

@lipna , I am not clear on the solution. If $.hTTPRequest6.body[?(@.id==‘{{$.trigger.requestedBy.id}}’)] is supposed to work, then why do I need to check the string length? And how does length = 0 means that the match has been found?

---

<div class="post-metadata">

**Author:** ![jesvin90](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/jesvin90/32/5301_2.png) [@jesvin90](https://developer.sailpoint.com/discuss/u/jesvin90)\
**Post date:** [June 13, 2025, 11:31am UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/4 "2025-06-13T11:31:22Z")

</div>

Hi @sandashafreen26,

In the current workflow configuration, it would be difficult to compare array results.

Have you considered looping through each item in the HTTP request body and comparing it with the identity id.?

The loop input would be `$.hTTPRequest.body[*].id`  
The context - `$.getIdentity.id`

Then you do a string compare on `$.loop.loopInput` contains `$.loop.context` inside the loop.

---

<div class="post-metadata">

**Author:** ![JackSparrow](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/jacksparrow/32/19685_2.png) [@JackSparrow](https://developer.sailpoint.com/discuss/u/JackSparrow)\
**Post date:** [June 13, 2025, 11:37am UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/5 "2025-06-13T11:37:10Z")

</div>

@sandashafreen26 , below is working for me, manually I have added the ID. Can you try storing `{{$.trigger.requestedBy.id}}` in a variable and then use the variable in verify data type step?

```auto
$.hTTPRequest.body[?(@.id=="118ea97a8e1b44bbbce6467b82d53854")]

```

 ![image](https://global.discourse-cdn.com/sailpoint/original/3X/b/b/bb444b929f0bd062ad761da52769255e527a795d.png)

---

<div class="post-metadata">

**Author:** ![sandashafreen26](https://avatars.discourse-cdn.com/v4/letter/s/e495f1/32.png) [@sandashafreen26](https://developer.sailpoint.com/discuss/u/sandashafreen26)\
**Post date:** [June 16, 2025, 8:29am UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/6 "2025-06-16T08:29:53Z")

</div>

@Theja_G but I cannot hardcode the ID, i need to pass it as a variable. $.hTTPRequest6.body[?(@.id==‘{{$.trigger.requestedBy.id}}’) and this ain’t working

---

<div class="post-metadata">

**Author:** ![sandashafreen26](https://avatars.discourse-cdn.com/v4/letter/s/e495f1/32.png) [@sandashafreen26](https://developer.sailpoint.com/discuss/u/sandashafreen26)\
**Post date:** [June 16, 2025, 8:32am UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/7 "2025-06-16T08:32:50Z")

</div>

@jesvin90 , a cannot use the loop operator, because if none of the condition is True then I have to initiate a access request cancellation action inside the loop. It causes the **workflow to attempt multiple cancellations** , which fails due to SailPoint’s restriction on one cancellation per request.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/sailpoint/original/2X/f/f2136700ed5e3703e0b85e02f6be799dacca7735.png) [@system](https://developer.sailpoint.com/discuss/u/system)\
**Post date:** [August 15, 2025, 8:33am UTC](https://developer.sailpoint.com/discuss/t/verify-data-type-value-not-working/144063/8 "2025-08-15T08:33:01Z")

</div>

Closed on August 15, 2025, 8:33am UTC

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
