Remove existing member that are not in the xlm import in sys_user_grmember table
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-01-2024 07:31 AM - edited 05-01-2024 08:51 AM
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