Hi everyone,
I would like to ask you for a help with adding small customization to one of OOTB Report templates (and want to point that this is my very first time playing with Reports so don’t judge me).
I wanted to add column called “Completer” to report template called “Work Item Archive Report” that would show who completed work item that was archived. The main reason for this is that our Compliance team wants to review who completed work items with type “Manual Action” (and I couldn’t find any report that would show this).
I reviewed that Manual Actions work items in archive have this parameter:
So I was trying to add Parameter to Query parameters section like this:
<Parameter argument="completers">
<QueryScript>
<Source>
import sailpoint.object.*;
import sailpoint.api.*;
if (value != null && !value.isEmpty()){
if (arguments.get("isArchive") == true){
List names = ObjectUtil.convertIdsToNames(context, Identity.class, value);
queryOptions.addFilter(Filter.in("completer", names));
} else {
queryOptions.addFilter(Filter.in("completer.id", value));
}
}
return queryOptions;
</Source>
</QueryScript>
</Parameter>
Then I added this field to report form:
<ReportColumnConfig field="requester" header="Completer" property="completers" sortable="true" width="110"/>
And added this argument to Inputs section:
<Argument multi="true" name="completers" type="Identity">
<Description>Person who completed work item</Description>
</Argument>
However, when I execute report using this report template, I receive following error:
sailpoint.tools.GeneralException: Error preparing ProjectionDataSource
at sailpoint.reporting.JasperCsvWriter.write(JasperCsvWriter.java:139)
at sailpoint.reporting.LiveReportExecutor.execute(LiveReportExecutor.java:228)
at sailpoint.api.TaskManager.runSync(TaskManager.java:895)
at sailpoint.api.TaskManager.runSync(TaskManager.java:722)
at sailpoint.scheduler.JobAdapter.execute(JobAdapter.java:128)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: net.sf.jasperreports.engine.JRException: Error preparing ProjectionDataSource
at sailpoint.reporting.datasource.BaseProjectionDataSource.next(BaseProjectionDataSource.java:206)
at sailpoint.reporting.datasource.WorkItemArchiveDataSource.next(WorkItemArchiveDataSource.java:171)
at sailpoint.reporting.JasperCsvWriter.write(JasperCsvWriter.java:103)
... 6 more
Caused by: sailpoint.tools.GeneralException: could not resolve property: completers of: sailpoint.object.WorkItem
at sailpoint.persistence.HibernatePersistenceManager.search(HibernatePersistenceManager.java:2064)
at sailpoint.persistence.ClassPersistenceManager.search(ClassPersistenceManager.java:334)
at sailpoint.server.InternalContext.search(InternalContext.java:880)
at sailpoint.reporting.datasource.ProjectionDataSource.prepare(ProjectionDataSource.java:56)
at sailpoint.reporting.datasource.BaseProjectionDataSource.next(BaseProjectionDataSource.java:203)
... 8 more
Caused by: org.hibernate.QueryException: could not resolve property: completers of: sailpoint.object.WorkItem
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:73)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:67)
at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyType(AbstractEntityPersister.java:4775)
at sailpoint.persistence.HQLAliasContextImpl.getPropertyInfo(HQLAliasContextImpl.java:214)
at sailpoint.persistence.HQLAliasContextImpl.parseProperty(HQLAliasContextImpl.java:242)
at sailpoint.persistence.HQLAliasContextImpl.substituteAlias(HQLAliasContextImpl.java:117)
at sailpoint.persistence.HQLAliasContextStack.substituteAlias(HQLAliasContextStack.java:101)
at sailpoint.persistence.HQLFilterVisitor.addSelectColumns(HQLFilterVisitor.java:577)
at sailpoint.persistence.HQLFilterVisitor.getQueryString(HQLFilterVisitor.java:511)
at sailpoint.persistence.HibernatePersistenceManager.search(HibernatePersistenceManager.java:2046)
Could you tell me if adding this field is even possible? If yes, could you tell me what would I need to do to add it?
Thank you in advanced for everybody who will participate in this topic!