Sailpoint provides the capability of extending different entities like identity, entitlement, bundle, link, certification item, below are the allowed types.
|
Object Type |
Supported Attribute Types |
|
Identity |
string, identity |
|
Bundle |
string, integer, boolean, date, rule, identity |
|
Link |
string, date, boolean |
|
Application |
string, integer, boolean, date, rule, identity |
|
ManagedAttribute |
string, integer, boolean, date, rule, identity |
|
CertificationItem |
string, date, boolean |
Creating CertificationItem Extended Attribute
Usually CertificationItem extended attributes should match Link extended attributes. This allows those extended Link attributes to be included in the detail records of certification access reviews. CertificationItem extended attributes which do not correspond to Link extended attributes will not be populated (unless done so manually through a rule) since there is no way to declare a source for those attributes other than through a Link extended attribute of the same name, but in this article we are exploring the option of creating a Certification extended attribute which doesn't correspond to a link extended attribute but populated through a custom rule.
For creating a extended attribute CertificationItem for the first time, create the ObjectConfig object as below, if already not present from debug page in Sailpoint, provided namedColumn="true" , if the extended attribute has to be searchable and need in a seperate column in database.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE ObjectConfig PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<ObjectConfig name="CertificationItem">
<ObjectAttribute displayName="sampleattribute1 Display Name" editMode="Permanent" namedColumn="true"> name="sampleattribute1" type="string">
<Description>Sample Attribute Description</Description>
</ObjectAttribute>
</ObjectConfig>
Add the corresponding entry in the certificationitemextended.hbm.xml file
<property name="sampleattribute1" type="string" length="450" access="sailpoint.persistence.ExtendedPropertyAccessor"
index="spt_certitem_sampleattribute1_ci"/>
Once this is done, execute the iiq console command to fetch the DB scripts to be executed.
C:\IdentityIQ\WEB-INF\bin>iiq extendedSchema
Home directory: C:/IdentityIQ
Generating database scripts for mysql
Generating database scripts for oracle
Generating database scripts for sqlserver
Generating database scripts for db2
This creates the DDL script files: add_identityiq_extensions.[dbms] which can then be run against the database to modify the IdentityIQ tables and indexes.
mysql > source add_identityiq_extensions.mysql
NOTE: All extended attributes defined in any of the .hbm.xml files are included in the DDL scripts, even if they already exist in the database. Consequently, if the generated script is executed without editing it to remove the unnecessary statements, it will report errors for any already existing columns or indexes as it attempts to recreate them; in most cases (e.g. unless you have configured your database to fail the whole operation on any error), these errors do no harm and the messages can be ignored.
Populating the Certification Item Extended attribute during the Certification Task generation.
Create a Custom CertificationEntityCustomization Rule, below is sample snippet.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE Rule PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Rule language="beanshell" name="Certification Item Customization Rule" type="CertificationEntityCustomization">
<Source>
//import statements
// Add additional conditions to fetch the required Certification Item to update the extended attributes
item.setAttribute("sampleattribute1", "TEST_VALUE");
</Source>
</Rule>
Map this Rule in the System Configuration as below for the entry Key - certificationItemCustomizationRule
<entry key="certificationItemCustomizationRule" value="Certification Item Customization Rule"/>
Now whenever any Certification task is created, this rule is triggered so that extended attributes are set based on the logic.
Populating the Certification Item Extended attribute after the task is created.
There can be cases where we don't need this rule to be triggered for all kind of Certification tasks or we wanted to set the extended attributes in a async. manner i.e. after the Certification task is created, for doing this you can create a custom rule runner task or plugin to fetch the corresponding certification items and set the extended attributes accordingly, below is the sample snippet.
// Logic to fetch the Certification Item object. certItemObj
certItemObj.setAttribute("sampleattribute1", "TEST_VALUE");
context.saveObject(certItemObj);
context.commitTransaction();
context.decache(certItemObj);
@iamksatish kindly suggest " Attempt to resolve method: setCustom1() on undefined variable or class name: item : at Line: 56 : in file: inline evaluation of: ``import sailpoint.api.SailPointContext; import sailpoint.object.AbstractCertifiab . . . '' : item .setCustom1 ( "ACCOUNTSTATUS" ) "
Can you share your code, you should use setAttribute and pass the attribute name and value.
But how we can do without named column and Link Extended linked with CertificationItem Extended extended columns automatically ?
I have followed the same to extend the attribute in the certificationItem and the values are populating properly when the certification is scheduled.
I have created a new named column named "entitlements" in the certificationItem.
However when I am starting the iiq server or when I am connecting to the iiq console, I can see this error in the logs :
ERROR main sailpoint.persistence.ExtendedAttributeUtil:705 - CertificationItemExtended.hbm.xml property Entitlements is not defined in ObjectConfig:Link
Why do I get this error and is it recommended to just add a new named attribute in the link as well.
You can add the names attribute to link as well, but technically for us it didn't give any issue even if you dont have the attribute, but eventually it may get overwritten as well based on link attribute, so please test before you take a decision.
Hi@Rajesh_Thummala ,
please kindly check the excellent White Paper provided here:
https://community.sailpoint.com/t5/Technical-White-Papers/Managing-Extended-Attributes/ta-p/77088
It clearly states:
"CertificationItem extended attributes should match Link extended attributes.".
Thanks,
Daniel