Query and update via Business Rule
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 12:40 PM
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();
}
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 12:41 PM
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.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 12:44 PM
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 12:51 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-02-2017 02:25 PM
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'));