Wee11
(Wee Tong)
February 2, 2023, 8:20am
1
Hi Everyone,
I like to request assistance with displaying challenger comments on the advanced access review live report. I followed the guidance by putting in value.getCompletionComments() but it shows nothing.
Could anyone advise on how to display the challenge comment on task definition?
below was the script
return value != null ? value.getCompletionComments() : null;
Wee11
(Wee Tong)
February 2, 2023, 8:21am
2
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TaskDefinition PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TaskDefinition created="1658912524340" executor="sailpoint.reporting.LiveReportExecutor" id="c0a83874823e125981823ee448340210" modified="1675318730425" name="Advanced Access Review Live Report" progressMode="Percentage" resultAction="Rename" subType="Access Review and Certification Reports" template="true" type="LiveReport">
<Attributes>
<Map>
<entry key="report">
<value>
<LiveReport title="Certification Report">
<DataSource dataSourceClass="sailpoint.reporting.datasource.CertificationLiveReportDataSource" objectType="CertificationItem" type="Java">
<QueryParameters>
<Parameter argument="type" defaultValue="Group" property="parent.certification.type" valueClass="sailpoint.object.Certification$Type"/>
<Parameter argument="tags" property="parent.certification.tags.id"/>
<Parameter argument="certificationGroups" property="parent.certification.certificationGroups.id"/>
<Parameter argument="groups" property="parent.certification.groupDefinitionId"/>
<Parameter argument="creationDate" property="parent.certification.created" valueClass="daterange"/>
<Parameter argument="signedDate" property="parent.certification.signed" valueClass="daterange"/>
<Parameter argument="expirationDate" property="parent.certification.expiration" valueClass="daterange"/>
</QueryParameters>
</DataSource>
<ReportForm>
<Reference class="sailpoint.object.Form" id="c0a83874823e125981823ee447c6020f" name="Advanced Access Review Report Form"/>
</ReportForm>
<Columns>
<ReportColumnConfig field="nativeIdentity" header="rept_cert_col_account_id" property="exceptionEntitlements.nativeIdentity" sortable="true" width="110"/>
<ReportColumnConfig field="firstName" header="rept_cert_col_first_name" property="parent.firstname" sortable="true" width="110"/>
<ReportColumnConfig field="lastName" header="rept_cert_col_last_name" property="parent.lastname" sortable="true" width="110"/>
<ReportColumnConfig field="manager" header="rept_cert_col_manager_name" property="parent" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.*;
return value != null ? ReportingLibrary.getCertificationItemManagerName(context, value) : null;
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="certName" header="rept_cert_col_cert_access_review" property="parent.certification.name" sortable="true" width="110"/>
<ReportColumnConfig field="certGroupName" header="rept_cert_col_cert_grp_name" property="parent.certification.certificationGroups.name" sortable="true" width="110"/>
<ReportColumnConfig field="tags" header="rept_cert_col_tags" property="parent.certification.tags.name" subQueryKey="id" width="110"/>
<ReportColumnConfig field="entitlementType" header="rept_cert_col_entitlement_type" property="type" sortable="true" width="110"/>
<ReportColumnConfig field="entitlements" header="rept_cert_col_entitlement_desc" property="exceptionEntitlements" scriptArguments="bundle,violationSummary" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.*;
return ReportingLibrary.describeCertificationEntitlement(value, scriptArgs.get("bundle"), scriptArgs.get("violationSummary"), null);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="application" header="rept_cert_col_application" property="exceptionEntitlements.application" sortable="true" width="110"/>
<ReportColumnConfig field="instance" header="rept_cert_col_instance" property="exceptionEntitlements.instance" sortable="true" width="110"/>
<ReportColumnConfig field="identity" header="rept_cert_col_name" property="parent.identity" sortable="true" width="110"/>
<ReportColumnConfig field="status" header="rept_cert_col_status" property="summaryStatus" sortable="true" width="110"/>
<ReportColumnConfig field="decision" header="rept_cert_col_decision" property="action.status" sortable="true" width="110"/>
<ReportColumnConfig field="newValue" header="rept_cert_col_newValue" property="action" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.datasource.*;
return DataSourceUtil.getRemediationModifiableNewValue(value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="remediationCompleted" header="rept_cert_col_revoke_completed" property="action" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.ReportingLibrary;
import sailpoint.tools.Util;
import java.lang.String;
String status = ReportingLibrary.getRemediationStatus(context, value);
return Util.isNullOrEmpty(status) ? "" : status;
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="decisionMaker" header="rept_cert_col_decision_maker" property="action.actorName" sortable="true" width="110"/>
<ReportColumnConfig field="comments" header="rept_cert_col_decision_maker_comments" property="action" width="110">
<RenderScript>
<Source>
return value != null ? value.getComments() : null;
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="challengeComments" header="Challenger Comments" property="action" width="110">
<RenderScript>
<Source>
return value != null ? value.getCompletionComments() : null;
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="exclusionExplanation" header="rept_cert_col_exclusion_explanation" property="parent.certification" width="110">
<RenderScript>
<Source>
if (value != null){
List archivedEntities = value.fetchArchivedEntities(context);
if (archivedEntities != null
&& archivedEntities.size() > 0
&& archivedEntities.get(0) != null) {
return archivedEntities.get(0).getExplanation();
}
}
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="recommendation" header="rept_cert_col_recommendation" property="recommendValue" scriptArguments="id" sortable="true" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.ReportingLibrary;
return ReportingLibrary.getRecommendedDecision(context, value, scriptArgs.get("id"));
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="recommendationReasons" header="rept_cert_col_recommendation_reasons" property="id" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.ReportingLibrary;
return ReportingLibrary.getRecommendationReasons(context, value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="recommendationTimestamp" header="rept_cert_col_recommendation_timestamp" property="id" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.ReportingLibrary;
return ReportingLibrary.getRecommendationTimestamp(context, value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="autoDecisionGenerated" header="rept_cert_col_auto_decision_gen" property="id" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.ReportingLibrary;
return ReportingLibrary.getAutoDecisionGenerated(context, value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="autoDecisionAccepted" header="rept_cert_col_auto_decision_acc" property="id" width="110">
<RenderScript>
<Source>
import sailpoint.reporting.ReportingLibrary;
return ReportingLibrary.getAutoDecisionAccepted(context, value);
</Source>
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="classifications" header="Classifications" property="id" width="110">
<RenderScript>
<Source>
import sailpoint.object.CertificationItem;
import sailpoint.service.classification.ClassificationService;
import sailpoint.tools.Util;
CertificationItem item = context.getObjectById(CertificationItem.class, value);
List names = new ClassificationService(context).getDisplayableNames(item.getClassificationNames());
return Util.listToCsv(names);
</Source>
</RenderScript>
</ReportColumnConfig>
</Columns>
<InitializationRule>
<Reference class="sailpoint.object.Rule" id="c0a83874823e125981823ee4466f020a" name="Certification Report Customizer"/>
</InitializationRule>
</LiveReport>
</value>
</entry>
</Map>
</Attributes>
<Description>Displays information about all advanced certifications in detailed format.</Description>
<RequiredRights>
<Reference class="sailpoint.object.SPRight" id="c0a83874823e125981823ee3c14b004a" name="FullAccessAdvancedCertificationReport"/>
</RequiredRights>
<Signature>
<Inputs>
<Argument name="exclusions" type="boolean"/>
<Argument multi="true" name="certificationGroups" type="CertificationGroup"/>
<Argument multi="true" name="groups" type="GroupDefinition">
<Description>rept_input_cert_report_groups</Description>
</Argument>
<Argument name="creationDate" type="date">
<Description>rept_input_cert_report_create_dt</Description>
</Argument>
<Argument name="signedDate" type="date">
<Description>rept_input_cert_report_signed_date</Description>
</Argument>
<Argument name="expirationDate" type="date">
<Description>rept_input_cert_report_exp_dt</Description>
</Argument>
<Argument multi="true" name="tags" type="Tag">
<Description>rept_input_cert_report_tags</Description>
</Argument>
<Argument name="challengeComments" type="string">
<Description>Comments from the challenger.</Description>
</Argument>
</Inputs>
</Signature>
</TaskDefinition>
Wee11
(Wee Tong)
February 2, 2023, 9:32am
3
Attached reference to the challenger’s comments from the IQ database.
Wee11
(Wee Tong)
February 7, 2023, 1:49am
4
Hi Guys,
Could I get some assistance on this?