PermissionSet pstCoveo = [SELECT Id,Name FROM PermissionSet WHERE Name = 'Coveo_Dealer_Portal']; // Coveo_Dealer_Portal permission set Id String permissionSetId = pstCoveo.Id; // Retrieve all active users List users = [SELECT Id FROM User WHERE IsActive = true AND (Profile.Name = 'API User' OR Profile.Name = 'Bobcat Sales Support Representative' OR Profile.Name = 'E-Commerce Sales Specialist' OR Profile.Name = 'General_Sales Read Only' OR Profile.Name = 'IRW API' OR Profile.Name = 'Marketing User' OR Profile.Name = 'Marketing_Coop' OR Profile.Name = 'Marketing_Internal User' OR Profile.Name = 'Marketing_Training Administrator' OR Profile.Name = 'Media Internal User' OR Profile.Name = 'Sales_Dealer Development' OR Profile.Name = 'Sales_District Manager' OR Profile.Name = 'Sales_National Accounts' OR Profile.Name = 'Sales_Regional Director' OR Profile.Name = 'System_IBB' OR Profile.Name = 'Vendor_Inside Sales Agent' OR Profile.Name = 'Dealer User' OR Profile.Name = 'System_Data Administrator' OR Profile.Name = 'Marketing_User' OR Profile.Name = 'System Administrator') LIMIT 10000]; Set userIds = new Set(); for (User user : users) { userIds.add(user.Id); } // Get existing permission set assignment for these users Map existingAssignments = new Map(); for (PermissionSetAssignment psa : [ SELECT AssigneeId FROM PermissionSetAssignment WHERE AssigneeId IN :userIds AND PermissionSetId = :permissionSetId ]) { existingAssignments.put(psa.AssigneeId, psa); } // Prepare list for new permission set assignments List permissionSetAssignmentsToInsert = new List(); for (User user : users) { if (!existingAssignments.containsKey(user.Id)) { permissionSetAssignmentsToInsert.add( new PermissionSetAssignment(AssigneeId = user.Id, PermissionSetId = permissionSetId) ); } } // Insert the new assignments if (!permissionSetAssignmentsToInsert.isEmpty()) { try { insert permissionSetAssignmentsToInsert; } catch (Exception e) { System.debug('Error during permission set assignment: ' + e.getMessage()); } }