Referring to Request attributes in Email Template is throwing error when value is not passed

sk
All-Star
All-Star

Team,

We have a use case as part of service account request process, where there are certain request attributes(PAMPREAUTHUSERSADDED) that may or may not be passed while request submission.

When value is passed to request attribute then below parameter is working to get value

${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}

But when value is not passed then getting below error

 
2023-01-23T20:54:01-05:00-ecm-worker-{"log":"groovy.lang.MissingPropertyException: No such property: print for class: SimpleTemplateScript9\n","stream":"stdout","time":"2023-01-24T01:54:00.387230324Z"}
2023-01-23T20:54:01-05:00-ecm-worker-{"log":"\u0009at SimpleTemplateScript9.run(SimpleTemplateScript9.groovy:1)\n","stream":"stdout","time":"2023-01-24T01:54:00.38723523Z"}

How can I check if request_access_attrs has that parameter exist or not before trying to get value?

I tried below variation but didn't work, Can someone help me with right syntax?

 

<% if ((task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString()!="") print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>

<% if (!((task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().trim().isEmpty())) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>

<% if (task?.requestAccessKey?.collect{ it.request_access_attrss }.contains("PAMPREAUTHUSERSADDED")) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>

<% if (task?.requestAccessKey?.collect{ it.request_access_attrss }.includes("PAMPREAUTHUSERSADDED")) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>

<% if (task?.requestAccessKey?.collect{it.request_access_attrss.contains("PAMPREAUTHUSERSADDED")}) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>

<% if (task?.requestAccessKey?.collect{it.request_access_attrss.includes("PAMPREAUTHUSERSADDED")}) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>


Regards,
Saathvik
3 REPLIES 3

sk
All-Star
All-Star

Remove print keyword and try

sk
All-Star
All-Star

I am able to figure out the right syntax to check if parameter exists or not and then get value only if it exists.

Below is the working syntax.

<% if (task?.requestAccessKey?.collect{it.request_access_attrss.collect{it.attributeName}.contains('PAMPREAUTHUSERSADDED')}.get(0)) print "${def res = ''; (task?.requestAccessKey?.collect{ it.request_access_attrss.findAll{it.attributeName.toString().equalsIgnoreCase('PAMPREAUTHUSERSADDED')}.collect{it.attributeValue}}).toString().replace('[','').replace(']','')?.split(',')?.eachWithIndex{ num, idx -> res = res + com.saviynt.ecm.identitywarehouse.domain.Users.get(Long.valueOf(num))?.email + ',';}; return res;}" %>


Regards,
Saathvik