function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
ExploreForceExploreForce 

MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated a non-setup object (or vice versa)

Trigger is thrwing this error: MIXED_DML_OPERATION, DML operation on setup object is not permitted after you have updated
a non-setup object (or vice versa)

trigger PODGroupMemberBeforeInsert on Pod_Group_Member__c (before insert) {

//Map<String,GroupMember> lstGrpMembers=new Map<String,GroupMember>();
set<Id> lstGrpMembers=new set<Id>();
List<Pod_Group_Member__c> podGroupMembers = new List<Pod_Group_Member__c>();

for(GroupMember xGm:[Select UserOrGroupId, GroupId From GroupMember where Group.Name = 'Non-Pod Members'])
{
     lstGrpMembers.add(xGm.UserOrGroupId);
}

system.debug(lstGrpMembers);
User aUser = [SELECT id FROM User WHERE Id = :UserInfo.getUserId()];
list<Id> lstgm = new list<Id>();
for(Pod_Group_Member__c xPod: Trigger.new) {
 
      if(lstGrpMembers.contains(xPod.Pod_Member__c))
      {
         //add to list
         lstgm.add(xPod.Pod_Member__c);
        
      }  
          Pod_Group_Member__c podGrp= new Pod_Group_Member__c();
          //podGrp.Pod_Group__c=
          podGrp.Pod_Member__c = aUser.Id;
          podGroupMembers.add(podGrp);
}  
     if(lstgm.size()>0)
      {
         list<GroupMember> lstg=[select UserOrGroupId, GroupId From GroupMember where UserOrGroupId=:lstgm]; 
         delete lstg;
        
      }
   database.insert(podGroupMembers,false);
     

}

Pls suggest solution!
Ankit AroraAnkit Arora
This is probably due to "delete lstg;" and "database.insert(podGroupMembers,false);" in running in same context.

Would suggest you to first insert a user with different profile (pther than system admin) and then use System.runAs() for "database.insert(podGroupMembers,false);" let me know if that helps.
Prem_PalPrem_Pal
I think you could move th following code in a future method

list<GroupMember> lstg=[select UserOrGroupId, GroupId From GroupMember where UserOrGroupId=:lstgm]; 
         delete lstg;

This way you can separate the context and avoid this error.