Share all details related to your problem, including any error messages you may have received.
It is not possible to view in the certifications page a certification automatically triggered, created and launched with a mover event. Why is that?
I know this certification is being created since when I looked for certifications in the debug’s object browser it is possible to view that the certification was created and is active.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Rule PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Rule language="beanshell" name="Rule-IdentityTrigger-Mover" type="IdentityTrigger">
<Description>This rule detects when a User is considered a Mover.</Description>
<Signature returnType="boolean">
<Inputs>
<Argument name="log">
<Description>
The log object associated with the SailPointContext.
</Description>
</Argument>
<Argument name="context">
<Description>
A sailpoint.api.SailPointContext object that can be used to query the database if necessary.
</Description>
</Argument>
<Argument name="previousIdentity">
<Description>
The identity before the refresh/aggregation (this will be null when an identity is created).
</Description>
</Argument>
<Argument name="newIdentity">
<Description>
The identity after the refresh/aggregation (this will be null when an identity is deleted).
</Description>
</Argument>
</Inputs>
<Returns>
<Argument name="result">
<Description>
A boolean describing the result of the rule.
</Description>
</Argument>
</Returns>
</Signature>
<Source><![CDATA[
import java.util.Map;
import java.util.HashMap;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.SearchResult;
import javax.naming.NamingEnumeration;
import sailpoint.api.IdentityService;
import sailpoint.object.Application;
import sailpoint.object.Identity;
import sailpoint.object.Link;
import custom.utils.LDAPUtils;
private boolean verifyDomain(String name, Identity newIdentity, Identity previousIdentity) {
///verifying domains
}
private boolean verifyextMover(String name, Identity newIdentity, Identity previousIdentity) {
///verifying if it is mover and returning new values, according to changes
}
// By default there is no change, i.e. no Mover event
if(newIdentity != null && previousIdentity != null) {
String name = newIdentity.getName();
if(!newIdentity.isInactive()) {
// Verify if identity is ext or int
String type = newIdentity.getAttribute("type");
// If value is null or empty, do nothing
if(type == null || type.isEmpty()) {
return false;
}
Boolean isGenericMover = verifyDomain(name, newIdentity, previousIdentity);
if(type.equals("ext")) {
if(isGenericMover) {
return verifyextMover(name, newIdentity, previousIdentity);
} else {
return false;
}
} else if(type.equals("int")) {
return isGenericMover;
} else {
return false;
}
}
} else {
return false;
}
return false;
]]></Source>
</Rule>
Snapshot of the mover event creating the certification: