- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2024 07:29 AM
The issue is tied to the last couple lines of the script, the setValue and update.
If I create an entirely new GlideRecord for the table then it works fine, but I thought initialize() should clear out the GlideRecord for re-use?
Any help would be appreciated.
// ********** find and add new stakeholders to register **********
// declare gliderecord and execute query against stakeholder group
var grStakeGrpMem = new GlideRecord('sys_user_grmember');
grStakeGrpMem.addEncodedQuery('group=25dcde621b58a850f30dfc03cc4bcb53'); // EDI Applications Managers group (test sample)
grStakeGrpMem.query();
// variable declarations
var addStakeArr = []; // add stakeholders
// loop through found records
while(grStakeGrpMem.next())
{
if(grStakeGrpMem.getDisplayValue('user') != '') // // push record(s) to array if display value is not null
{
addStakeArr.push(grStakeGrpMem.getValue('user'));
}
}
// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++)
{
var grStakeHolReg = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object and insert new records
grStakeHolReg.initialize();
grStakeHolReg.setValue('user', addStakeArr[i]);
grStakeHolReg.insert();
}
// find and deactivate stakeholders with inactive user records
grStakeHolReg.initialize();
grStakeHolReg.addEncodedQuery('sys_class_name=dmn_stakeholder_register^user.active=false');
grStakeHolReg.query();
while(grStakeHolReg.next())
{
grStakeHolReg.setValue('active', false); // ISSUE IS HERE
grStakeHolReg.update(); // ISSUE IS HERE
}
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2024 10:12 AM
Hi @MBarrott ,
You are initializing variable grStakeHolReg that is being declared inside the loop. Declare it outside and see what changes.
var grStakeHolReg = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object and insert new records
// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++)
{
grStakeHolReg.initialize();
grStakeHolReg.setValue('user', addStakeArr[i]);
grStakeHolReg.insert();
}
Regards, Ivan

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2024 10:12 AM
Hi @MBarrott ,
You are initializing variable grStakeHolReg that is being declared inside the loop. Declare it outside and see what changes.
var grStakeHolReg = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object and insert new records
// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++)
{
grStakeHolReg.initialize();
grStakeHolReg.setValue('user', addStakeArr[i]);
grStakeHolReg.insert();
}
Regards, Ivan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2024 10:44 AM
Hi @Ivan Betev,
Thank you! I felt like it was a simple user-error on my part.
Moving the GlideRecord declaration to the top with the other var declare resolved it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2024 11:37 AM
Hi @Ivan Betev,
Looks like the same issue is occurring when executing the script on the second attempt, after any changes have taken place.
Again, switching to an entirely new GlideRecord resolves it which is weird to me.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-20-2024 01:40 AM - edited 03-20-2024 01:44 AM
Hi @MBarrott ,
What do you mean by the second attempt, and in general what are you trying to achieve by implementing it this way? Performance?
It's always better to follow a single responsibility principle (SOLID).
Btw. we can also do something like this to optimize a bit:
grStakeHolReg.initialize();
grStakeHolReg.addEncodedQuery('sys_class_name=dmn_stakeholder_register^user.active=false');
grStakeHolReg.query();
grStakeHolReg.setValue('active', false);
grStakeHolReg.updateMultiple();
Regards, Ivan