- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-27-2022 04:58 AM
whenever a user becomes part of 'managed by' or 'owned by' to any ci then he should be added to a group.
I have created a new group for that named as cmdb_members.
And Similarly, if user is removed from managed_by or owned_by from any ci then he should be removed from that group if he is not already part of any other ci.
I have used Async business rule
and given filter as Managed_by changes or owned_by changes
here is code that I have tried:-
(function executeRule(current, previous /*null when async*/) {
var mByName = current.managed_by;//to store managed by name
var oByame = current.owned_by;
var poByName = previous.owned_by ;
var pmByName = previous.managed_by;// to store owned by name
var newGroup = new GlideRecord('sys_user_grmember');// to get group table name
newGroup.addQuery('user', '=', mByName ,'||', oByame);
newGroup.query();
while(newGroup.next()){
if(mByName != pmByName || oByame != poByName){ // to check user is changed or not
newGroup.group = current.variables.cmdb_members;
newGroup.insert(mByName);
}
if(pmByName.hasAttribute(false)){
newGroup.deleteRecord(pmByName);
}
}
})(current, previous);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-28-2022 01:38 PM
(function executeRule(current, previous /*null when async*/ ) {
if (current.managed_by != previous.managed_by) { // condition check
addUserToGroup(current.managed_by);// to call function add user to group
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('group', '0902052547b2911058a3f088436d4323');// add filter where to remove
ci.addQuery('user', previous.managed_by);
ci.query();
if (!ci.next()) {
removeUserFromGroup(previous.managed_by);
}
}
function addUserToGroup(sys_id) {
var addUser = new GlideRecord('sys_user_grmember');
addUser.initialize();
addUser.group = '0902052547b2911058a3f088436d4323';
addUser.user = sys_id;
addUser.insert();
}
function removeUserFromGroup(sys_id) {
var remUser = new GlideRecord('sys_user_grmember');
remUser.addQuery('group', '0902052547b2911058a3f088436d4323');
remUser.addQuery('user', sys_id);
remUser.query();
if (remUser.next()) {
remUser.deleteRecord();
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-28-2022 01:38 PM
(function executeRule(current, previous /*null when async*/ ) {
if (current.managed_by != previous.managed_by) { // condition check
addUserToGroup(current.managed_by);// to call function add user to group
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('group', '0902052547b2911058a3f088436d4323');// add filter where to remove
ci.addQuery('user', previous.managed_by);
ci.query();
if (!ci.next()) {
removeUserFromGroup(previous.managed_by);
}
}
function addUserToGroup(sys_id) {
var addUser = new GlideRecord('sys_user_grmember');
addUser.initialize();
addUser.group = '0902052547b2911058a3f088436d4323';
addUser.user = sys_id;
addUser.insert();
}
function removeUserFromGroup(sys_id) {
var remUser = new GlideRecord('sys_user_grmember');
remUser.addQuery('group', '0902052547b2911058a3f088436d4323');
remUser.addQuery('user', sys_id);
remUser.query();
if (remUser.next()) {
remUser.deleteRecord();
}
}