# Using Expression Language

**URL:** <https://developer.sailpoint.com/discuss/t/using-expression-language/162296>\
**Category:** Connectivity Documentation Feedback\
**Tags:** va-con-docs\
**Created:** [July 30, 2025, 5:38pm UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296 "2025-07-30T17:38:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![DocsTeam](https://avatars.discourse-cdn.com/v4/letter/d/ecd19e/32.png) [@DocsTeam](https://developer.sailpoint.com/discuss/u/DocsTeam)\
**Post date:** [July 30, 2025, 5:38pm UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296/1 "2025-07-30T17:38:48Z")

</div>

The web services virtual appliance-based connector supports expression language in URLs, Header values, and in the Body section.

* * *
This is the companion discussion topic for the documentation at [https://documentation.sailpoint.com/connectors/webservices/help/integrating\_webservices/expression\_language.html](https://documentation.sailpoint.com/connectors/webservices/help/integrating_webservices/expression_language.html)

---

<div class="post-metadata">

**Author:** ![angelo\_mekenkamp](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/angelo_mekenkamp/32/3386_2.png) [@angelo\_mekenkamp](https://developer.sailpoint.com/discuss/u/angelo_mekenkamp)\
**Post date:** [August 5, 2025, 12:09pm UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296/2 "2025-08-05T12:09:18Z")

</div>

This looks interesting! I do welcome more configuration options like this on the Web Services and Web Services SaaS connectors preventing us from needing to create custom rules.

I do have some questions and remarks based on this documentation, to see if this can really help us resolve the limitations we thus far experience with the web service connector.

1. Is it planned for Web Services SaaS to also support this? If so, when could we expect this?
2. Are `if-else` statements supported in the body somehow? Either using this expression language (`_#` tags), or by using “[Velocity](https://documentation.sailpoint.com/connectors/saas/web_services/help/saas_connectivity/web_services/body.html?Highlight=velocity#:~:text=and%2520Pagination%2520operations.-,Velocity%2520Details,-The%2520JSON%2520request)” (whatever that means) using `$$` tags (I don’t understand the documentation here, nor what you can do with it compared to just `$` tags, or by just using `$` tags. One use case is that update provisioning policy might contain $plan.firstName$ and might contain $plan.lastName$, but the body always expects the value, so we want to first get the current data and then look what needs to be overwritten using something like `#if($plan.firstName$)$plan.firstName#{else}$response.firstName$#end`
3. If `if-else` is not supported for in the body, can we achieve the above use case without having to rely on rules? Perhaps we need to see if we can hack a solution by cleverly using `substring`, `length` and `replace`, but preverably we use something readable and elegant.
4. The examples used in this documentation suggest to me that this was added without a clear insight on what real world examples it can be used for. For example  
`https://domain.com/2/team/members/list/_#$response.data$.length()_#`, `/2/team/members/list/_#'hello'.concat('world')_#` and `/2/team/members/list/_# 5 >= 4_#`. Those examples make no sense at all. Won’t `_#5 >= 4_#` return `true`? Can you please add clear real world examples for which this can be used?
5. What is the added benefit of `concat`? I thought you can already use `"displayName": "$plan.firstName$ $plan.lastName$"` or something like that, so why use `"displayName": "$plan.firstname$.concat(' ').concat($plan.lastname$)"` instead?
6. Suppose I have $plan.endDate$ and the format of this contains date and time (both in variable length) separated by a comma (which only appears here once to separate these two), and I want to only have the bit before the comma. Is there an elegant way to achieve this, or do I need to make a complex combination of the operations to achieve this? Similar question might exist if we need to separate a displayname in the format firstname.lastname
7. Many operations now supported seem to be boolean operations. That is really useful, but mostly only in combination with `if-else` operations.

---

<div class="post-metadata">

**Author:** ![joshb488](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/joshb488/32/11416_2.png) [@joshb488](https://developer.sailpoint.com/discuss/u/joshb488)\
**Post date:** [August 13, 2025, 4:00pm UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296/3 "2025-08-13T16:00:59Z")

</div>

Hi @angelo_mekenkamp,

Thanks for the feedback. Please see my responses to your numbered items below.

1. I can’t say for certain here. I need to refer you to the [Idea Discussions](https://developer.sailpoint.com/discuss/c/feedback/idea-discussions/89) category for this question. You can also find announcements for product updates and releases at [Product News - SailPoint Developer Community](https://developer.sailpoint.com/discuss/c/announcements/product-news/65 "https://developer.sailpoint.com/discuss/c/announcements/product-news/65") and in the [SaaS Release Notes](https://community.sailpoint.com/t5/SaaS-Release-Notes/tkb-p/saas-release-notes "https://community.sailpoint.com/t5/SaaS-Release-Notes/tkb-p/saas-release-notes").
2. This appears to be a question related to implementation. I need to refer you to our [ISC Discussions and Questions](https://developer.sailpoint.com/discuss/c/identity-security-cloud/discussion-and-questions/37 "https://developer.sailpoint.com/discuss/c/identity-security-cloud/discussion-and-questions/37") category for greater help from the community. If the question leads to a doc update, we will be sure to do so. If this is a feature that is not yet supported, then you are invited to suggest it in the [Idea Discussions](https://developer.sailpoint.com/discuss/c/feedback/idea-discussions/89) category.
3. I can repeat what I said in #2 here.
4. Thank you for your input. We’ve created a Jira issue to track the effort and we’ll update the comment thread when it’s been addressed: CONDOCS-7660.
5. Please refer to #2.
6. Please refer to #2.
7. This seems to be an addendum to your `if-else` question, so I need to again refer you to #2.

Thanks,

Josh

---

<div class="post-metadata">

**Author:** ![angelo\_mekenkamp](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/angelo_mekenkamp/32/3386_2.png) [@angelo\_mekenkamp](https://developer.sailpoint.com/discuss/u/angelo_mekenkamp)\
**Post date:** [August 15, 2025, 2:32pm UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296/5 "2025-08-15T14:32:43Z")

</div>

Hi @joshb488,

Thank you for your response!

I do think you are referring me too quickly to the ISC Discussions and Questions category here. SailPoint should have clear documentation on their building blocks, on the elemental functionality supporting by SailPoint. It should be clear which building blocks exists, how it behaves and how it should be implemented.

Only once this is clear, could one go to the ISC Discussions and Questions to discuss on how to combine these building blocks to achieve a specific use case.

If SailPoint documentation is just saying it supports velocity, without specifying what this word/tool/concept means in this concept, perhaps a link to third party documentation, and some elementary examples, then there is no clear documentation on the building blocks and we should go to you, not to the ISC Discussions and Questions page.

Since certain operations are now supported which are generally used in `if-else` statements. I think it makes sense to ask the documentation team if they forget to add this in the documentation. This is something that the general ISC Discussions and Questions group can’t help with.

When in comes to the Web Services and Web Services SaaS connectors, I think there is much room for improvement. Newer developers should be able to read that documentation and understand the functionality and what its general purpose is.

Kind regards,  
Angelo

---

<div class="post-metadata">

**Author:** ![MattUribe](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/matturibe/32/20300_2.png) [@MattUribe](https://developer.sailpoint.com/discuss/u/MattUribe)\
**Post date:** [September 5, 2025, 5:15pm UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296/6 "2025-09-05T17:15:40Z")

</div>

I heartily agree. Adding a new feature is appreciated, but if it’s not documented, then how can the community be of any help?

---

<div class="post-metadata">

**Author:** ![angelo\_mekenkamp](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/angelo_mekenkamp/32/3386_2.png) [@angelo\_mekenkamp](https://developer.sailpoint.com/discuss/u/angelo_mekenkamp)\
**Post date:** [August 28, 2026, 11:29am UTC](https://developer.sailpoint.com/discuss/t/using-expression-language/162296/7 "2026-08-28T11:29:43Z")

</div>

Hi Docs Team,

Your documentation mentions this exact phrase:  
`"name": "_#'hello'.concat('world')_#"`

I tried it as example (but then with `title` instead of `name` since that was the attribute I needed to change.). ISC received a 200OK response and on the target application I saw this value:  
 ![image](https://global.discourse-cdn.com/sailpoint/original/3X/b/b/bb5a5a2dbb2496a46b7d8a1d11892b4516ebe6ad.png)

So the web service connector did not read these \_# commands. Instead it read it as literal string. To me this shows that this bit of the documentation is wrong (or there is a bug). Can you please validate this for me?

Please note I have the following usecase: I have several account attributes (including title) for which I want to perform attribute sync.

The actual body would look something like this if due to attribute sync I need to update title to `foo` and country to `bar`:

```auto
{
  "user": {
    "title": "foo",
    "country": "bar"
  }
}

```

If due to attribute sync I only need to update country to `bar`, the body should look like this:

```auto
{
  "user": {
    "country": "bar"
  }
}

```

Since I won’t be changing the title, it should not be in the body.  
If due to attribute sync I need to strip the title (should be null) and update the country to `bar`, then it should look like this:

```auto
{
  "user": {
    "title": null,
    "country": "bar"
  }
}

```

How can I achieve this using the web service connector?

I tried doing the following:

```auto
{
  "user": {
    "title": "$plan.title$",
    "country": "$plan.country$"
  }
}

```

But in this case, regardless of whether attribute sync wants to keep the title as is (title not visible in the plan) or strip it (title part of the plan as null), this web services connector will omit this data from the body, meaning we can’t strip it. I am trying to see if the expression language can help me, but the documented example doesn’t work.

Kind regards,  
Angelo
