Location update upon CI tag

Abishek1998
Tera Contributor

Hi All,

 

So I have a requirement. Based on the CI name the location gets updated. Below is the script provided. The business rule is a before Insert/update business rule on alm_hardware table.

 

When ever the CI ( cmdb_ci_pc_hardware ) gets created with the hardware record, the CI name gets populated in the hardware table. I didn't do this requirement. while this action itself, the location should get updated based on CI name.

 

This is the Log I get when debugging. 

 

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

gs.info('Business Rule Triggered');

 

    var locationID = "760059cedb346b00aa21b4b8f4961942"; // ARN / SKYCITY

    var locationID1 = "30205182db746b00aa21b4b8f496193a"; // NO / OSL / TECH BASE

    var locationID2 = "8e6fa3c247f716103257c331336d434b"; // DK / CPH

 

if (!current.ci) {

gs.info('No CI associated, skipping location assignment...');

        return;

    }

 

    var ciName = '';

 

    // Fetch CI Name using GlideRecord

    var ciGR = new GlideRecord('cmdb_ci');

if (ciGR.get(current.ci)) {

ciName = ciGR.name; // Ensure 'name' field exists in cmdb_ci

    }

 

    if (!ciName) {

gs.info('CI Name is still empty, skipping location assignment...');

        return;

    }

 

    ciName = ciName.toLowerCase();

gs.info('CI Name Retrieved: ' + ciName);

 

    if (ciName.startsWith("arn")) {

        current.setValue('location', locationID);

    } else if (ciName.match(/^(no|osl|trd|svg|boo|tos|bgo)/)) {

        current.setValue('location', locationID1);

    } else if (ciName.match(/^(dk|cph|aal|aar|bll)/)) {

        current.setValue('location', locationID2);

    }

 

    current.update(); // Save the location change

 

})(current, previous);

1 ACCEPTED SOLUTION

Rohit  Singh
Mega Sage

Hi @Abishek1998 

 

What's the issue you are facing? Try to debug your code using gs.info()

 

In before BR don't need to have current.update() , it will work without that also.

 

If my response helped, please mark it helpful and accept the solution so that it benefits future readers.

 

Regards,

Rohit

View solution in original post

5 REPLIES 5

Debasis Pati
Tera Guru

Hello @Abishek1998 ,

Remove current.update and try once.
We should never use current.update in before business rules.

If this helps/recolves your issue please mark it as correct/helpful.


Regards,
Debasis

Hi Debasis,

 

Tried and I still get the same error.

When I try to update the record manually, the location is changed but when CI is created in the cmdb_ci_pc_hardware table and the CI gets added in the hardware table. It is not getting populated

Hi @Abishek1998 ,

 

Check if your BR is getting triggered while insertion. In Action add a message and then check.

 

If my response helped, please mark it helpful and accept the solution so that it benefits future readers.

 

Regards,

Rohit