- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-30-2022 11:20 PM
I have three fields in a custom table as below.
Whenever a new record is inserted with all the values I need to write a script to insert the same with labels and values in the sys_choice table with elements as Category and SubCategory. The issue I am facing here is I need to do insert 2 times with different element values for one record inserted in the custom table. Any idea how can I achieve this?
I really appreciate any help you can provide.
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-31-2022 03:49 AM
Hi Raviteja,
Create a business rule on the custom table that executes on "insert".
Check on "Advanced" and add the following script. I've named fields "fuctionalarea" and added fields to enter table name, language, value, and label to set on the choice.
(function executeRule(current, previous /*null when async*/ ) {
if (current.category == '' || current.functionalarea == '' || current.subcategory == '') {
return;
}
var fieldList = ['category', 'subcategory', 'functionalarea'];
var name = current.name; // 'incident';
var lang = current.language; // 'en';
var value = current.value; // 'test';
var label = current.label; // 'test';
for (var i = 0; i < fieldList.length; i++) {
insertRecord(name, lang, value, label, fieldList[i]);
}
function insertRecord(name, lang, value, label, field) {
var grChoice = new GlideRecord("sys_choice");
grChoice.addQuery('name', name);
grChoice.addQuery('element', field);
grChoice.addQuery('language', lang);
grChoice.addQuery('value', value);
grChoice.query();
if (!checkGR.hasNext()) {
var grChoice2 = new GlideRecord("sys_choice");
grChoice2.initialize();
grChoice2.setValue('name', name);
grChoice2.setValue('element', field);
grChoice2.setValue('language', lang);
grChoice2.setValue('value', value);
grChoice2.setValue('label', label);
grChoice2.insert();
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-31-2022 03:20 AM
why not use flow designer for this?
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-01-2022 12:15 AM
Hi Ankur
I am not aware of flow designer.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-31-2022 03:49 AM
Hi Raviteja,
Create a business rule on the custom table that executes on "insert".
Check on "Advanced" and add the following script. I've named fields "fuctionalarea" and added fields to enter table name, language, value, and label to set on the choice.
(function executeRule(current, previous /*null when async*/ ) {
if (current.category == '' || current.functionalarea == '' || current.subcategory == '') {
return;
}
var fieldList = ['category', 'subcategory', 'functionalarea'];
var name = current.name; // 'incident';
var lang = current.language; // 'en';
var value = current.value; // 'test';
var label = current.label; // 'test';
for (var i = 0; i < fieldList.length; i++) {
insertRecord(name, lang, value, label, fieldList[i]);
}
function insertRecord(name, lang, value, label, field) {
var grChoice = new GlideRecord("sys_choice");
grChoice.addQuery('name', name);
grChoice.addQuery('element', field);
grChoice.addQuery('language', lang);
grChoice.addQuery('value', value);
grChoice.query();
if (!checkGR.hasNext()) {
var grChoice2 = new GlideRecord("sys_choice");
grChoice2.initialize();
grChoice2.setValue('name', name);
grChoice2.setValue('element', field);
grChoice2.setValue('language', lang);
grChoice2.setValue('value', value);
grChoice2.setValue('label', label);
grChoice2.insert();
}
}
})(current, previous);