Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

I want to add assignment group members to attendee table

Purushotham9963
Tera Contributor

In cab meeting , I want to add assignment group members to attendee table 

once we add change to agenda items tab, that change assignment group members should add to attendee tab

please find attachment 

 

 

thanks in advance 


3 REPLIES 3

Vishal_Jaiswal
Mega Guru

Hi @Purushotham9963 ,

Please use approach below and try.

- Create the Business Rule
- Table: CAB Agenda Item [cab_agenda_item]
- Advanced: Check this box.
- When: async
- Insert: Check this box.
- (Leave Update, Delete, and Query unchecked).
- script:

(function executeRule(current, previous /*, gs, script_include*/) {

    // Get the sys_id of the CAB Meeting
    var meetingSysId = current.getValue('cab_meeting');

    // Get the sys_id of the Task (the Change Request) that was just added
    var taskSysId = current.getValue('task');

    var grTask = new GlideRecord('task');
    if (!grTask.get(taskSysId)) {
        return;
    }

    var assignmentGroupSysId = grTask.getValue('assignment_group');
    if (gs.nil(assignmentGroupSysId)) {
        return;
    }

    // Now, get all members of that Assignment Group
    var grMember = new GlideRecord('sys_user_grmember');
    grMember.addQuery('group', assignmentGroupSysId);
    grMember.query();

    while (grMember.next()) {
        var userSysId = grMember.getValue('user');

        // We must check if this user is already an attendee for this meeting
        var grAttendeeCheck = new GlideRecord('cab_attendee');
        grAttendeeCheck.addQuery('cab_meeting', meetingSysId);
        grAttendeeCheck.addQuery('attendee', userSysId);
        grAttendeeCheck.setLimit(1); // We only need to know if one exists (more efficient)
        grAttendeeCheck.query();
        if (!grAttendeeCheck.hasNext()) {

            var grNewAttendee = new GlideRecord('cab_attendee');
            grNewAttendee.initialize();
            grNewAttendee.setValue('cab_meeting', meetingSysId);
            grNewAttendee.setValue('attendee', userSysId);
            grNewAttendee.insert();
        }
    }

})(current, previous);

Regards,

Vishal

Hi @Vishal_Jaiswal 

 

My BS is working fine as Asyc and insert with below script for adding members from assignment to attendees list
but if i remove assignment group , members should remove automatically(do not remove common members)

(function executeRule(current, previous /*null when async */) {

 

    // Get the sys_id of the CAB Meeting

    var meetingSysId = current.cab_meeting;

 

    // Get the sys_id of the Task (the Change Request)

    var taskSysId = current.task;

 

    // Validate both values exist

    if (!meetingSysId || !taskSysId) {

        gs.info('CAB Auto Add: Missing cab_meeting or task reference');

        return;

    }

 

    // Get the Task record

    var grTask = new GlideRecord('task');

    if (!grTask.get(taskSysId)) {

        gs.info('CAB Auto Add: Could not find task record');

        return;

    }

 

    // Get the Assignment Group from Task

    var assignmentGroupSysId = grTask.getValue('assignment_group');

    if (gs.nil(assignmentGroupSysId)) {

        gs.info('CAB Auto Add: No assignment group on task');

        return;

    }

 

    // Get all members of that Assignment Group

    var grMember = new GlideRecord('sys_user_grmember');

    grMember.addQuery('group', assignmentGroupSysId);

    grMember.query();

 

    while (grMember.next()) {

        var userSysId = grMember.getValue('user');

 

        // Check if this user is already an attendee for this meeting

        var grAttendeeCheck = new GlideRecord('cab_attendee');

        grAttendeeCheck.addQuery('cab_meeting', meetingSysId);

        grAttendeeCheck.addQuery('attendee', userSysId);

        grAttendeeCheck.setLimit(1);

        grAttendeeCheck.query();

 

        if (!grAttendeeCheck.hasNext()) {

            // Add new attendee record

            var grNewAttendee = new GlideRecord('cab_attendee');

            grNewAttendee.initialize();

            grNewAttendee.setValue('cab_meeting', meetingSysId);

            grNewAttendee.setValue('attendee', userSysId);

            grNewAttendee.insert();

 

            gs.info('CAB Auto Add: Added user ' + userSysId + ' to CAB meeting ' + meetingSysId);

        } else {

            gs.info('CAB Auto Add: User ' + userSysId + ' already an attendee');

        }

    }

 

})(current, previous);


 

 

Thanks in advance 

 

Thank in advance 

Purushotham9963
Tera Contributor

@Vishal_Jaiswal 

working fine , thank you 
if i want remove the agenda item (change request)  , attendees also needs to remove from list

Thank you in advance