The Zurich release has arrived! Interested in new features and functionalities? Click here for more

Query and update via Business Rule

Tony K
Kilo Sage
Kilo Sage

I wrote the following business rule which should upon insert take the part number from the current record and search against a specific part table number, then update two fields if a match is found.

This currently is not working, I'm unsure how to capture the current value to search against the part number table.

// queries the part number table

var target = new GlideRecord('u_supplier_quality_part_numbers');

target.addQuery('u_part_number', current.u_part_number);

target.query();

if (target.next()) {    

 

        target.u_drawing_number = current.u_drawing_number;

  target.u_drawing_revision = current.u_drawing_revision;

        target.update();

}

If I hard code in values, the business rule updates fine.

// queries the part number table

var target = new GlideRecord('u_supplier_quality_part_numbers');

target.addQuery('u_part_number', '12345');

target.query();

if (target.next()) {    

 

        target.u_drawing_number = '5555';

  target.u_drawing_revision = '1355475';

        target.update();

  }

6 REPLIES 6

Pradeep Sharma
ServiceNow Employee
ServiceNow Employee

Hello Anthony,



Please make sure you have created an AFTER business rule and also verify the column values.


For testing purpose, you can print the values on log table and check once.


Chuck Tomasi
Tera Patron

When things don't behave like I expect, I stop dot-walking to field names and start using getValue()



// queries the part number table


var target = new GlideRecord('u_supplier_quality_part_numbers');



target.addQuery('u_part_number', current.getValue('u_part_number'));



target.query();


if (target.next()) {  



        target.u_drawing_number = current.getValue('u_drawing_number');


        target.u_drawing_revision = current.getValue('u_drawing_revision');


        target.update();


}




As Pradeep noted, ensure this is in an AFTER business rule.



Reference:


Business Rules Best Practices - ServiceNow Wiki  


Also, if you've got access to Istanbul - don't forget about the debugger!



Script debugger


current.getValue u_part_number in this line is a reference field. does getValue still work then?



target.addQuery('u_part_number', current.getValue('u_part_number'));