Expand my Community achievements bar.

SOLVED

Parsing External Signal Parameters

Avatar

Level 2

Dear All,

 

I created a workflow where query activity retrieves IDs passed to an External signal activity. My question is I am unable to parse the IDs relevant to query criteria. Below is the syntax of the query condition

 

@namein ($(vars/@ids))

 

what I am passing in external activity is  id = "id1','id2"

 

$(vars/@ids) gets parsed to 'id1\',\'id2'

 

I know that it is escaping single quotes with a backward slash, which I wanted to avoid, and also I tried to use replace function of ACS which was not working as expected, below is the syntax for the same.

 

Replace($(vars/@ids),'\\','')

 

I am expecting the following desired output.

 

$(vars/@ids) = 'id1','id2' which would fit perfectly in my query criteris i. e  @name in ('id1',id2')

 

Any insights would be really helpful.

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Unfortunately you can't achieve what is intended.

For security purposes, any string / variable used in a query is automatically escaped.

You can't use a single input string and use that in an "in" statement.

 

What you could try is:

  • bring in the comma separated values
  • Then use a condition like ',' + ($(vars/@ids)) + ',' LIKE '%@name%'
  • Though note that this won't be able to use any DB index, so shouldd be used with care

View solution in original post

2 Replies

Avatar

Employee Advisor

Hi Shiva,

 

Why are you trying to pass IDs to the external signal activity? The point of this activity is to be started from another workflow.  Now it can be started with expected parameters per below but I don't think that its expected to be able parse out IDs from the previous query.

 

https://experienceleague.adobe.com/docs/campaign-standard/using/managing-processes-and-data/calling-...

 

Regards,

Craig

Avatar

Correct answer by
Employee Advisor

Unfortunately you can't achieve what is intended.

For security purposes, any string / variable used in a query is automatically escaped.

You can't use a single input string and use that in an "in" statement.

 

What you could try is:

  • bring in the comma separated values
  • Then use a condition like ',' + ($(vars/@ids)) + ',' LIKE '%@name%'
  • Though note that this won't be able to use any DB index, so shouldd be used with care