Custom Target Certification Creation using Script with custom emails

Hi @zeel_sinojia ,

Attaching my entire rule here for your reference to know what I did.

Added entitlement criteria as an application but still I can’t see those access in the generated certification view page

try {
String identityName = “XYZ”;
String certifierName = “CertifierName”;

Map entityFilterMap = new HashMap();
List listOfMapsEntity = new ArrayList();
Map entitlementFilterMap = new HashMap();
List listOfMapsEntitlements = new ArrayList();
CertificationDefinition template = null;
CertificationDefinition certDefinition = null;

  if(identityName!=null && certifierName!= null) {
    String certName = "Custom Target Cert for " + identityName;
    DateFormat dateformat = new SimpleDateFormat(“MM-dd-yyyy HH:mm:ss”);
    Date date = new Date();
    String certificationName = certName + “-” + dateformat.format(date);

template = context.getObjectByName(CertificationDefinition.class,
“Targeted Certification [13/8/25 1:40 PM]”);

CertificationDefinition certDefinition = (CertificationDefinition) XMLObjectFactory.getInstance()
.cloneWithoutId(template, (XMLReferenceResolver) context);
Identity ownerIdentity = context.getObjectByName(Identity.class, “spadmin”);

    String currentTime = java.time.LocalTime.now().toString();
    entityFilterMap.put(“operation”, “Equals”);
    entityFilterMap.put(“property”, “name”);
    entityFilterMap.put(“value”, identityName);
    listOfMapsEntity.add(entityFilterMap); //identity to certify
    
    
    entitlementFilterMap.put(“operation”, “Equals”);
    entitlementFilterMap.put(“property”, “application”);
    entitlementFilterMap.put(“value”, “Active Directory Application”);
    listOfMapsEntitlements.add(entitlementFilterMap);

certDefinition.setEntitlementFilterValues(listOfMapsEntitlements);
certDefinition.setEntitlementFilter(Filter.eq(“application.name”, “Active Directory Application”));
certDefinition.setEntitlementGranularity(EntitlementGranularity.Value);
certDefinition.setCertifyAccounts(false);
certDefinition.setIncludeRoles(false);
certDefinition.setIncludeAdditionalEntitlements(true);
certDefinition.setIncludeEntitlementsGrantedByRoles(true);
certDefinition.setIncludePolicyViolations(false);
certDefinition.setIncludeTargetPermissions(true);
certDefinition.setCertifyEmptyAccounts(true);
certDefinition.setType(Type.Focused);
certDefinition.setEntityFilterValues(listOfMapsEntity);
certDefinition.setEntityFilter(Filter.eq(“name”, identityName));
certDefinition.setEntitySelectionType(“Filter”);
certDefinition.setAttribute(“owners”, ownerIdentity);
certDefinition.setAttribute(“identities”, identityName);

certDefinition.setName(certName + " - " + currentTime);
certDefinition.setAllowItemDelegation(true);
// certDefinition.setAllowAccountRevocation(true);
// certDefinition.setSuppressInitialNotification(true);
certDefinition.setDelegationForwardingDisabled(false);
certDefinition.setCertificationOwner(ownerIdentity);
certDefinition.setOwner(ownerIdentity);
certDefinition.setCertifierName(certifierName);
certDefinition.setCertifierSelectionType(CertificationDefinition.CertifierSelectionType.Manual);
certDefinition.setNameTemplate(certificationName);
certDefinition.setCertificationNameTemplate(certName + " - ${fullDate}“);
certDefinition.setShortNameTemplate(certName + " - ${fullDate}”);
certDefinition.setStagingEnabled(false);
certDefinition.setBackupCertifierName(“IIQADMIN”);
certDefinition.setProcessRevokesImmediately(false);

    context.saveObject(certDefinition);
    context.commitTransaction();

CertificationSchedule certSchedule = new CertificationSchedule(context, ownerIdentity,
certDefinition);
certSchedule.setRunNow(true);
CertificationScheduler scheduler = new CertificationScheduler(context);
TaskSchedule taskSchedule = scheduler.saveSchedule(certSchedule, false);
System.out.println(“:SCHEDULED CERTIFICATION:::::”);
}
}
catch (Exception e) {
e.printStackTrace();
System.out.println(
“Below exception occurred during generation of access review for identity”);
System.out.println(e.getMessage());
}
}

As per above code it has to show XYZ user Active Directory access in the certification

entity page but instead of that it is showing other accounts that were linked to xyz user.

Thanks,

Ashritha.