# Velocity template in define varaiable in workflow

**URL:** <https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546>\
**Category:** SHF Discussion and Questions\
**Tags:** workflows, sailpoint-identity-security\
**Created:** [August 6, 2024, 11:13am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546 "2024-08-06T11:13:33Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:13am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/1 "2024-08-06T11:13:33Z")

</div>

Hi team,  
does anyone has tried to provide the velocity template as the varaiable in the define variable operator in workflows. Is there any possibility for it.

 ![image](https://global.discourse-cdn.com/sailpoint/original/2X/7/764f115835bb4fbe7fe2cd3c7833224440d196d8.png)  
when I tried I am getting not a valid json  
the expression I used is as follows  
#if({{$.trigger.stafftype}}==‘N’)fd4708bf2dcd49ddb5e0c241a9c30438 #elseif (!{{$.trigger.stafftype}}==‘N’ && !{{$.trigger.studenttype}}==‘N’)fd4708bf2dcd49ddb5e0c241a9c564438#{else}e5d708bf2dcd49ddb5e0c241a9c30438#end

I need this varaiable to store the sourceid where depending on the trigger input I want to create account in the three different sources.  
but I want to minimize it by writing only one create account step where the source id will be from the define varaiable step.

Hope I will find my solution, Thanks in advance

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 11:16am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/2 "2024-08-06T11:16:24Z")

</div>

Hi,

Velocity Templating is not supported in ISC Workflow. Instead what you can do is use “Compare String” action to compare if sourceId is equal too source1 then do the action you want and if false, add another “Compare String”. This would create a if-else ladder and you can define your workflow action in there.

Regards,  
Animesh Tarodia

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 11:19am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/3 "2024-08-06T11:19:02Z")

</div>

As you mentioned you need only one “Create Account” operation then in each ladder use define Variable to store the sourceId, name each variable as “x” in the Define Variable action and frame the JSONPath expression as “$[‘defineVariable’,‘defineVariable1’,‘defineVariable2’].x”. This way it outputs only the non-null value.

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

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:21am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/4 "2024-08-06T11:21:10Z")

</div>

Thanks Animesh, can we use velocity template in the http request body is there any possibilty for that.

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 11:21am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/5 "2024-08-06T11:21:35Z")

</div>

No, only JSONPath expressions are allowed.

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:24am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/6 "2024-08-06T11:24:39Z")

</div>

Ok, Thanks. I will try the above approach.

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:34am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/7 "2024-08-06T11:34:23Z")

</div>

Do I need to use the expression at the sourceid field in the create account http request

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 11:38am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/8 "2024-08-06T11:38:24Z")

</div>

In defineVariable, you would define the sourceIds and when you would use `$[‘defineVariable’,‘defineVariable1’,‘defineVariable2’].x`, this will directly get you the intended sourceId to use in sourceId field.

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:43am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/9 "2024-08-06T11:43:08Z")

</div>

![image](https://global.discourse-cdn.com/sailpoint/original/2X/f/fb967a0c533f89ec6cfb9256fa9258bec9dad7c6.png)  
i have defined three define varaiables in the same format  
In the create account if I given this expression  
 ![image](https://global.discourse-cdn.com/sailpoint/original/2X/7/77d4e8f7fa63ac7c6b4c3dc3f8a65958a2181ff1.png)  
I am getting invalid json

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:44am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/10 "2024-08-06T11:44:51Z")

</div>

if u don’t mind can u just post the json for this workflow

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 11:48am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/11 "2024-08-06T11:48:53Z")

</div>

I think you are just missing curly braces. Try using `{{ $[‘defineVariable’,‘defineVariable1’,‘defineVariable2’].x}}`

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:53am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/12 "2024-08-06T11:53:47Z")

</div>

> [@atarodia](#):
>
> $[‘defineVariable’,‘defineVariable1’,‘defineVariable2’].x

I have added them to still getting the same error

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 11:56am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/13 "2024-08-06T11:56:03Z")

</div>

Can you share your json payload?

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 11:59am UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/14 "2024-08-06T11:59:51Z")

</div>

{“attributes”:{“email”:“{{$.trigger.email}}”,  
“sourceId”:“{{$[‘defineVariable1’,‘defineVariable3’,‘defineVariable2’].x}}”,  
“username”:“{{$.trigger.name}}”,“userpassword”:“{{$.trigger.password}}”}}

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 12:09pm UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/15 "2024-08-06T12:09:07Z")

</div>

ok its working fine I have used curly quotes instead of straight quotes

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 12:09pm UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/16 "2024-08-06T12:09:45Z")

</div>

I was able to reproduce the issue. I added another `Define Variable` action and referenced that variable in my http request and that produced the intended json response.

```auto
			"Define Variable 3": {
				"attributes": {
					"id": "sp:define-variable",
					"variables": [
						{
							"description": "",
							"name": "sourceId",
							"transforms": [
								{
									"id": "sp:transform:trim:string",
									"input": {
										"postfix": true,
										"prefix": true
									}
								}
							],
							"variableA.$": "$['defineVariable','defineVariable1','defineVariable2'].x"
						}
					]
				},
				"displayName": "",
				"nextStep": "HTTP Request 1",
				"type": "Mutation"
			},

```

---

<div class="post-metadata">

**Author:** ![atarodia](https://avatars.discourse-cdn.com/v4/letter/a/f17d59/32.png) [@atarodia](https://developer.sailpoint.com/discuss/u/atarodia)\
**Post date:** [August 6, 2024, 12:11pm UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/17 "2024-08-06T12:11:07Z")

</div>

Here’s the JSON I used for HTTP Request,

```auto
{
  "attributes": {
    "email": "{{$.trigger.email}}",
    "sourceId": "{{$.defineVariable3.sourceId}}",
    "username": "{{$.trigger.name}}",
    "userpassword": "{{$.trigger.password}}"
  }
}

```

---

<div class="post-metadata">

**Author:** ![Tulasi](https://sea1.discourse-cdn.com/sailpoint/discuss/user_avatar/developer.sailpoint.com/tulasi/32/34596_2.png) [@Tulasi](https://developer.sailpoint.com/discuss/u/Tulasi)\
**Post date:** [August 6, 2024, 12:11pm UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/18 "2024-08-06T12:11:56Z")

</div>

Thanks for ur efforts, I will work on it.

---

<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:** [October 5, 2024, 12:12pm UTC](https://developer.sailpoint.com/discuss/t/velocity-template-in-define-varaiable-in-workflow/75546/19 "2024-10-05T12:12:07Z")

</div>

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