
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-02-2020 03:56 AM
Hi All,
I need your help in the Business application form where I have a user reference field. There is only one filter condition in this field i.e. Active=true
Requirement: A schedule job needs to be created that will compare the Group members of a Group 'xyz' to the complete list of Business Application. It will then add users to the group or remove users from the group based on if or not they are actually defined as the "IT Solution Architect " on Business Applications. The schedule job will run daily.
If selected "IT Solution Architect" is of department that starts with SGRE COG IT, it must be added to APM IT Solution Architect Group, else it should be added to APM OT Solution Architect group.
Can someone please help on how to proceed.
Regards,
Maloy Banerjee
Solved! Go to Solution.
- Labels:
-
Application Portfolio Management

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-05-2020 10:53 AM
Hi
Thanks for all the help. I tried creating a flowchart later to make my script simpler (I directly started with the code instead of creating a proper logic) and got the below solution. It worked.
deleteUser();
addUser();
var count;
var remGrp;
var bApp;
var bApp1;
var itsa;
var otsa;
var usrID;
var usr;
var dept;
var grpITSA;
var grpAddITSA;
var grpOTSA;
var grpAddOTSA;
//To delete a User
function deleteUser() {
remGrp = new GlideRecord('sys_user_grmember');
remGrp.addEncodedQuery('group=3fc297151b1bd050afc47db4464bcb50^ORgroup=afd111371b1428984016eacee54bcbb8'); //Group: APM IT Solution Architect
remGrp.query();
while (remGrp.next())
{
bApp = new GlideRecord('cmdb_ci_business_app');
bApp.addEncodedQuery('it_application_ownerISNOTEMPTY');
bApp.addQuery('it_application_owner', remGrp.user);
bApp.query();
count = bApp.getRowCount();
if (count == 0)
{
remGrp.deleteRecord();
}
}
}
//To add a User
function addUser() {
bApp1 = new GlideRecord('cmdb_ci_business_app');
bApp1.addEncodedQuery('it_application_ownerISNOTEMPTY');
bApp1.query();
while (bApp1.next())
{
itsa = '3fc297151b1bd050afc47db4464bcb50';
otsa = 'afd111371b1428984016eacee54bcbb8';
usrID = bApp1.it_application_owner.toString();
usr = new GlideRecord('sys_user');
usr.addQuery('sys_id', usrID);
usr.query();
if (usr.next())
{
dept = usr.department.getDisplayValue();
if (dept.startsWith("SGRE COG IT"))
{
grpITSA = new GlideRecord('sys_user_grmember');
grpITSA.addQuery('group', itsa);
grpITSA.addQuery('user', usrID);
grpITSA.query();
if (!grpITSA.next())
{
grpAddITSA = new GlideRecord('sys_user_grmember');
grpAddITSA.initialize();
grpAddITSA.group = itsa;
grpAddITSA.user = usrID;
grpAddITSA.insert();
}
}
else
{
grpOTSA = new GlideRecord('sys_user_grmember');
grpAddOTSA.addQuery('group', otsa);
grpAddOTSA.addQuery('user', usrID);
grpAddOTSA.query();
if (!grpAddOTSA.next())
{
grpAddOTSA = new GlideRecord('sys_user_grmember');
grpAddOTSA.initialize();
grpAddOTSA.group = otsa;
grpAddOTSA.user = usrID;
grpAddOTSA.insert();
}
}
}
}
}
Regards,
Maloy Banerjee
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-02-2020 04:08 AM
Hi,
Please share what script you have started with some initial details
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
12-02-2020 10:54 AM
Hi
Below is the Code I have written.
Please let me know how to correct it.
//var itsa = [];
var name = '';
var uniqueArray = '';
var grMemIT = '';
var grMemOT = '';
var usr = '';
var bApp = new GlideRecord('cmdb_ci_business_app');
bApp.addEncodedQuery('it_application_ownerISNOTEMPTY^application_type=Cloud SaaS^name=ZSCALER');
bApp.query();
while(bApp.next())
{
name = gr.it_application_owner.toString();
usr = new GlideRecord('sys_user');
usr.addQuery('sys_id',name);
usr.query();
while(usr.next())
{
dept = usr.department.getDisplayValue();
if(dept.startsWith("SGRE COG IT"))
{
grMemIT = new GlideRecord('sys_user_grmember');
grMemIT.addEncodedQuery('group=3fc297151b1bd050afc47db4464bcb50');//Group: APM IT Solution Architect
grMemIT.addQuery('user',name);
grMemIT.query();
if(!grMemIT.next())
{
grMemIT.initialize();
grMemIT.group='3fc297151b1bd050afc47db4464bcb50';
grMemIT.user=name;
grMemIT.insert();
}
else
{
grMemIT.deleteMultiple();
grMemIT.update();
}
}
else
{
grMemOT = new GlideRecord('sys_user_grmember');
grMemOT.addEncodedQuery('group=afd111371b1428984016eacee54bcbb8'); //Group: APM OT Solution Architect
grMemOT.addQuery('user',name);
grMemOT.query();
if(!grMemOT.next())
{
grMemOT.initialize();
grMemOT.group='3fc297151b1bd050afc47db4464bcb50';
grMemOT.user=name;
grMemOT.insert();
}
else
{
grMemOT.deleteMultiple();
grMemOT.update();
}
}
}
//itsa = name.toString().split(",");
//uniqueArray = new ArrayUtil().unique(itsa);
}
Regards,
Maloy Banerjee
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-02-2020 09:56 PM
Hi,
Did you try running this for some records and verify by adding logs
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
12-02-2020 11:49 PM
Hi
I have tried to update this code and run. The addition of member is working, but the removal isn't. Below is the updated code.
//var itsa = [];
var name = '';
//var uniqueArray = '';
var grMemIT = '';
var grMemOT = '';
var usr = '';
var bApp = new GlideRecord('cmdb_ci_business_app');
bApp.addEncodedQuery('it_application_ownerISNOTEMPTY^application_type=Cloud SaaS^name=ZSCALER');
bApp.query();
while(bApp.next())
{
name = bApp.it_application_owner.toString();
gs.log('Maloy1 - Name: '+name);
usr = new GlideRecord('sys_user');
usr.addQuery('sys_id',name);
usr.query();
if(usr.next())
{
dept = usr.department.getDisplayValue();
gs.log('Maloy1 - Dept: '+dept);
if(dept.startsWith("SGRE COG IT"))
{
gs.log('Maloy1 - StartsWith: '+dept.startsWith("SGRE COG IT"));
grMemIT = new GlideRecord('sys_user_grmember');
grMemIT.addEncodedQuery('group=3fc297151b1bd050afc47db4464bcb50');//Group: APM IT Solution Architect
grMemIT.addEncodedQuery('user='+name);
grMemIT.query();
if(grMemIT.getRowCount()==0)
{
grMemIT.initialize();
grMemIT.group='3fc297151b1bd050afc47db4464bcb50';
grMemIT.user=name;
grMemIT.insert();
}
else
{
if (grMemIT.next())
{
grMemIT.deleteRecord();
grMemIT.update();
}
}
}
else
{
grMemOT = new GlideRecord('sys_user_grmember');
grMemOT.addEncodedQuery('group=afd111371b1428984016eacee54bcbb8'); //Group: APM OT Solution Architect
grMemOT.addQuery('user',name);
grMemOT.query();
if(grMemOT.getRowCount()==0)
{
grMemOT.initialize();
grMemOT.group='3fc297151b1bd050afc47db4464bcb50';
grMemOT.user=name;
grMemOT.insert();
}
else
{
if (grMemOT.next())
{
grMemOT.deleteRecord();
grMemOT.update();
}
}
}
}
//itsa = name.toString().split(",");
//uniqueArray = new ArrayUtil().unique(itsa);
}
Regards,
Maloy Banerjee