In OOB data certification task, if we certify any element then the respective CI in cmdb_ci table should display value "certified" for the custom field ''datacertificationstatus" in cmdb_ci table

Sachin Gavhane
Giga Guru

Step 1 : I have created a custom field named "datacertificationstatus" on cmdb_ci table

Step 2 : In OOB data certification task, if any element is certified then associated CIs in cmdb_ci table should display value as "certified" for the above custom field created in cmdb_ci table

find_real_file.png

if we certify above elements then respective CIs in cmdb_ci table should display value as "certified" for the custom field "datacertificationstatus" in cmdb_ci table

1 ACCEPTED SOLUTION

Hi @Sachin Gavhane 

There was a flaw in the script shared before where I forgot to pass the parameter correctly when it need to be certified.

So have updated the script , please use the same and test. I have tested it and works fine for me now.

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var getCI = current.id;
    var gettargetTable = current.table;

    var getAllDetails = CheckCIColumn(getCI);
    if (getAllDetails == true) {
        updateCI(gettargetTable,getCI);
    }

    function CheckCIColumn(CI) {
        var gr = new GlideRecord('cert_audit_result');
        gr.addQuery('id', CI);
        gr.addQuery('state','Pending'); // This will check if there are any un Certified records or not.
        gr.query();
        if (gr.next()) {
            gs.info('There are still record which are not certified. So please certify first');
			return false;
        }else{
			return true;
		}
    }

    function updateCI(gettargetTable,getCI) {
        var gr = new GlideRecord(gettargetTable);
        gr.addQuery('sys_id', getCI);
        gr.query();
        if (gr.next()) {
            gr.short_description = 'certified'; // Please make sure to replace "certified" with its correct back end value here and and also replace "FieldName" with the correct field name which you want to set.
            gr.update();
        }
    }



})(current, previous);

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

View solution in original post

17 REPLIES 17

Sachin Gavhane
Giga Guru

@shloke04  requesting you to help me with the above requirement. Thanks

shloke04
Kilo Patron

Hi @Sachin Gavhane 

Please write a After Update Business Rule on the Table "Audit Results(cert_audit_result)" and use the script below:

BR Details:

Table Name : Audit Results(cert_audit_result)

When: After Update

Condition: State Changes to Certified

Script:

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	var getCI = current.id;
	var gettargetTable = current.table;
	
	var gr = new GlideRecord(gettargetTable);
	gr.addQuery('sys_id',getCI);
	gr.query();
	if(gr.next()){
		gr.FIELD_NAME = 'certified'; // Please make sure to replace "certified" with its correct back end value here and and also replace "FieldName" with the correct field name which you want to set.
		gr.update();
	}

})(current, previous);

find_real_file.png

This is working for me in my PDI.

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hi Shloke,

will this work if there are two CIs in one record of certifying elements?

find_real_file.png

 

In above row there are two CIs , Business Application : kofax total agility  and Name (Application service): kofax total agility (production), for both these CIs the custom field should have value "Certified", so will above business rule will work for both the CIs?

 

 

 

 

@Sachin Gavhane 

Yes it will work for any number of CI which are getting certified.

You just need to set up the Business Rule exactly similar to the way I have mentioned.

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke