Remove existing member that are not in the xlm import in sys_user_grmember table

Johnson13
Tera Expert

When sys_user_grmember xml exported from Prod and import into lower instance via the  sys_user_grmember header, if there are existing member(s) in the group that is not in the xml import, the existing member should be remove. 

Here is my business rule, but it is not working. 

 

(function executeRule(current, previous /*null when async*/) {
    // Check if the current record is inserted via XML import and if current record has valid data
    if (current && current.source == 'sys_user_grmember' && current.xml_payload) {
        var xmlMembers = []; // Array to store members from XML import
       
        // Parse XML and get member details
        var xmlDoc = new XMLDocument(current.xml_payload); // Assuming xml_payload field contains the XML data
        var membersXML = xmlDoc.getElementsByTagName('user'); // Assuming 'user' is the XML tag containing member details
       
        // Extract member details from XML and populate xmlMembers array
        for (var i = 0; i < membersXML.length(); i++) {
            var memberID = membersXML[i].getAttribute('sys_id'); // Assuming 'sys_id' attribute contains member user sys_id
            xmlMembers.push(memberID);
        }
       
        // Query group members and remove members not in XML import
        var groupMember = new GlideRecord('sys_user_grmember');
        groupMember.addQuery('group', current.group); // Assuming 'group' is the reference field to the group
        groupMember.query();
       
        while (groupMember.next()) {
            var userID = groupMember.getValue('user'); // Assuming 'user' is the reference field to the user
            if (xmlMembers.indexOf(userID.toString()) == -1) {
                groupMember.deleteRecord();
            }
        }
    }
})(current, previous);
 
 
0 REPLIES 0