Announcing the Saviynt Knowledge Exchange unifying the Saviynt forums, documentation, training,
and more in a single search tool across platforms. Read the announcement here.

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
If this reply answered your question, please Accept As Solution and give Kudos to help others facing similar issue.
3 REPLIES 3

sk
All-Star
All-Star

@avinashchhetri @amit_krishnajit @rushikeshvartak : Any thoughts?

 


Regards,
Saathvik
If this reply answered your question, please Accept As Solution and give Kudos to help others facing similar issue.

Remove print keyword and try


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

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
If this reply answered your question, please Accept As Solution and give Kudos to help others facing similar issue.