Hi all,
When I am creating custom report I am getting error in HQL query.
ERROR:
Exception encountered while executing Report. Exception: Error preparing ProjectionDataSource
HQL QUERY:
from IdentityRequestItem iri, IdentityRequest ir, Bundle bu
where iri.value = bu.name
and bu.name in (‘Customer Services Agent (Level 1)’)
code:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TaskDefinition executor="sailpoint.reporting.LiveReportExecutor" name="test_roleREPORT" progressMode="Percentage" resultAction="Rename" subType="Lifecycle Manager Reports" template="true" type="LiveReport">
<Attributes>
<Map>
<entry key="auditEventTypes">
<value>
<List>
<String>AccessRequest</String>
<String>EntitlementsRequest</String>
<String>RolesRequest</String>
</List>
</value>
</entry>
<entry key="report">
<value>
<LiveReport title="Access Request Status Report">
<DataSource type="Hql">
<Query>
from IdentityRequestItem iri, IdentityRequest ir, Bundle bu
where iri.value = bu.name
and bu.name in ('Customer Services Agent (Level 1)')
</Query>
<QueryParameters>
<Parameter argument="application_name" property="application_name" valueClass="java.util.List"/>
<Parameter argument="targetIdentities"/>
<Parameter argument="requestors"/>
<Parameter argument="entitlements"/>
<Parameter argument="status"/>
<Parameter argument="requestedDateStart"/>
<Parameter argument="requestedDateEnd"/>
<Parameter argument="completionDateStart"/>
<Parameter argument="completionDateEnd"/>
</QueryParameters>
<QueryScript>
<Source>
// iri.identityRequest = ir.id and
//and iri.value = bu.displayName
// System.out.println("1");
import java.util.*;
import sailpoint.object.*;
import sailpoint.api.SailPointContext;
import sailpoint.tools.GeneralException;
import sailpoint.object.QueryOptions;
import sailpoint.object.Filter;
import java.util.Iterator;
List application_name = args.get("application_name");
String roleString="";
System.out.println("applicationNames::::"+application_name);
if(application_name != null && !application_name.isEmpty()){
QueryOptions qo = new QueryOptions();
System.out.println("Insdie if::::::::::::::::::::::");
String appName=application_name.get(0);
qo.addFilter(Filter.eq("application_name", appName));
System.out.println("QO::::::::::::::::"+qo);
Iterator roleList= context.search(Bundle.class,qo);
System.out.println("appName::::::::::::::::"+appName);
Set<String> application_name_set = new HashSet();
String str="";
while(roleList.hasNext()){
System.out.println("Inside while:::::::::::::");
Bundle s=(Bundle)roleList.next();
str =s.getName().toString();
if (roleString.equalsIgnoreCase("")){
roleString="'"+str+"'";
}
else {
roleString= roleString+","+"'"+str+"'";
}
System.out.println("roleList1::::::::::::::::"+roleString);
}
try{
String ss="Customer Services Agent (Level 1)";
//query = query + " and bu.name in"+"("+ss+")";
System.out.println("query::::"+query);
}catch(Exception e){
System.out.println("1000::::::::::::::::"+e.getMessage());
}
}
System.out.println("Final query::::"+query);
return query;
</Source>
</QueryScript>
</DataSource>
<ReportForm>
<Reference class="sailpoint.object.Form" id="0aaa250d90b415c28190b4d75ab108b6" name="Access Request Status Form - roleform"/>
</ReportForm>
<Columns>
<ReportColumnConfig field="requestId" header="Access Request ID" property="ir.name" sortable="true" width="110"/>
<ReportColumnConfig field="requester" header="Requester" property="ir.requesterDisplayName" sortable="true" width="110">
<RenderScript>
<Source>
System.out.println("requester"+value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="requestee" header="Requested For" property="ir.targetDisplayName" sortable="true" width="110">
<RenderScript>
<Source>
System.out.println("requestee"+value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="requestDate" header="Request Date" property="ir.created" sortable="true" width="110"/>
<ReportColumnConfig field="operation" header="Operation" property="iri.operation" sortable="true" width="110"/>
<ReportColumnConfig field="application_name" header="rept_app_activity_col_action" property="application_name" sortable="true" width="110"/>
<ReportColumnConfig field="entitlementValue" header="Roles" property="iri.value" sortable="true" width="110"/>
<ReportColumnConfig field="status" header="Status" property="iri.approvalState" sortable="true" width="110"/>
<ReportColumnConfig field="completionDate" header="Date of approval" property="ir.endDate" sortable="true" width="110"/>
<ReportColumnConfig field="employeeType" header="Employee Type" property="ir.targetDisplayName" sortable="true" width="110">
<RenderScript>
<Source>
System.out.println("2.4");
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="costCenter" header="Cost Center" property="ir.targetDisplayName" sortable="true" width="110">
<RenderScript>
<Source>
System.out.println("3"+value);
</Source>
</RenderScript>
</ReportColumnConfig>
</Columns>
</LiveReport>
</value>
</entry>
<entry key="reportTitle" value="rept_lcm_entitlement_request_status_title"/>
</Map>
</Attributes>
<Description>Displays information about access requests from LCM in detailed format.</Description>
<Signature>
<Inputs>
<Argument multi="true" name="application_name" type="string">
<Description>rept_input_app_activity_report_action</Description>
</Argument>
<Argument multi="true" name="approvers" type="Identity">
<Description>rept_input_lcm_request_status_report_approver</Description>
</Argument>
<Argument multi="true" name="requestors" type="Identity">
<Description>rept_input_lcm_request_status_report_requester</Description>
</Argument>
<Argument multi="true" name="entitlements" type="sailpoint.object.IdentityItem">
<Description>rept_input_lcm_request_status_report_entitlements</Description>
</Argument>
<Argument multi="true" name="targetIdentities" type="Identity">
<Description>rept_input_lcm_request_status_report_target_identity</Description>
</Argument>
<Argument name="status" type="string">
<Description>rept_input_lcm_request_status_report_status</Description>
</Argument>
<Argument name="requestDateRange" type="daterange">
<Description>rept_input_lcm_request_status_report_status</Description>
</Argument>
<Argument name="completionDateRange" type="daterange">
<Description>rept_input_lcm_request_status_report_status</Description>
</Argument>
</Inputs>
</Signature>
</TaskDefinition>