Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This is tempting, but dangerous. There are at least twelve groups I needed to apply this to in January 2013 and they all started out CTS STC. However, there are twenty four groups that start out CTS STC, so I would have broken groups that should NOT have all members be team leads. So this script could be useful if it was more limited and input group name input is tested manually to be certain it wasn't going to affect unintended groups before setting the script loose.

Code Block
var groupStartsWith = 'CTS STC Old Campus';

var gr0 = new GlideRecord('sys_user_group');
gr0.addQuery('name','STARTSWITH',groupStartsWith);
gr0.query();
while ( gr0.next() ) {
 gs.log("group name: "+ gr0.name);

 var groupName=gr0.name;
 // set groupName to the group where you want to synchronize team leads to be the same
 // as the set of all members of the group
 // this is especially useful for CTS STC groups
 var gr1 = new GlideRecord('sys_user_group');
 gr1.addQuery('name',groupName);
 gr1.query();
 while ( gr1.next() ) {
  gs.log("group name: "+ gr1.name + " and group full name: " + gr1.u_full_name + " and sys_id: " +  gr1.sys_id);
  gs.log("ORIGINAL group u_team_leads: " + gr1.u_team_leads);

  var leadsString='';
  var gr2 = new GlideRecord('sys_user_grmember');
  gr2.addQuery('group',gr1.sys_id);
  gr2.query();
  while ( gr2.next() ) {
 //  gs.log("user sys_id is: " + gr2.user);
   if ( leadsString.length > 0 ) {
    leadsString+=',';
   }
   leadsString+=gr2.user;
  }
  gs.log("PROPOSED group leads: " + leadsString);
 
  var gr3 = new GlideRecord('sys_user_group');
  gr3.addQuery('name',groupName);
  gr3.query();
  while (gr3.next()){
   gr3.u_team_leads = leadsString;
   gr3.update();
  }

  var gr4 = new GlideRecord('sys_user_group');
  gr4.addQuery('name',groupName);
  gr4.query();
  while (gr4.next()){
   gs.log("UPDATED group u_team_leads: " + gr4.u_team_leads);
  }
 }
}