You need to sign in to do that
Don't have an account?

Error in After Update Event Trigger for Case Object
Hi,
There is a custom checkbox field Auto_Close_Reopen__c for case object. For after update event if the Auto_Close_Reopen__c checkbox checked I want to create new case and want to update Auto_Close_Reopen__c checkbox field value to false. We can achieve it by before update case but I want it to make for after update event. I wrote a trigger for it. but I am getting this error message
Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger CaseTrigger caused an unexpected exception, contact your administrator: CaseTrigger: execution of AfterUpdate caused by: System.DmlException: Update failed. First exception on row 0 with id 5009000000mId8xAAC; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CaseTrigger: maximum trigger depth exceeded Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x]: []: Class.CaseHandler.AfterUpdateCase: line 26, column 1
The code of my trigger is
trigger CaseTrigger on Case (after update) {
CaseHandler objCase = new CaseHandler();
if(Trigger.isAfter && Trigger.isUpdate){
objCase.AfterUpdateCase(Trigger.New);
}
}
Code for Handler class of trigger
public with sharing class CaseHandler {
list<Case> lstCloneCase = new list<Case>();
map<Id,Case> mapCase = new map<Id,Case>();
list<Case> lstUpdateCase = new list<Case>();
public void AfterUpdateCase(list<Case> lstCase){
for(Case objCase : lstCase){
mapCase.put(objCase.Id,objCase);
if(objCase.Auto_Close_Reopen__c == true){
Case objCaseNew = new Case();
objCaseNew.Status = 'Open';
ObjCaseNew.Origin = 'Web';
lstCloneCase.add(ObjCaseNew);
}
}
insert lstCloneCase;
for(Id idd : mapCase.keyset()){
Case objCase = new Case(Id = idd);
objCase.Auto_Close_Reopen__c = false;
lstUpdateCase.add(objCase);
}
update lstUpdateCase;
}
}
There is a custom checkbox field Auto_Close_Reopen__c for case object. For after update event if the Auto_Close_Reopen__c checkbox checked I want to create new case and want to update Auto_Close_Reopen__c checkbox field value to false. We can achieve it by before update case but I want it to make for after update event. I wrote a trigger for it. but I am getting this error message
Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger CaseTrigger caused an unexpected exception, contact your administrator: CaseTrigger: execution of AfterUpdate caused by: System.DmlException: Update failed. First exception on row 0 with id 5009000000mId8xAAC; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CaseTrigger: maximum trigger depth exceeded Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x] Case trigger event AfterUpdate for [5009000000mId8x]: []: Class.CaseHandler.AfterUpdateCase: line 26, column 1
The code of my trigger is
trigger CaseTrigger on Case (after update) {
CaseHandler objCase = new CaseHandler();
if(Trigger.isAfter && Trigger.isUpdate){
objCase.AfterUpdateCase(Trigger.New);
}
}
Code for Handler class of trigger
public with sharing class CaseHandler {
list<Case> lstCloneCase = new list<Case>();
map<Id,Case> mapCase = new map<Id,Case>();
list<Case> lstUpdateCase = new list<Case>();
public void AfterUpdateCase(list<Case> lstCase){
for(Case objCase : lstCase){
mapCase.put(objCase.Id,objCase);
if(objCase.Auto_Close_Reopen__c == true){
Case objCaseNew = new Case();
objCaseNew.Status = 'Open';
ObjCaseNew.Origin = 'Web';
lstCloneCase.add(ObjCaseNew);
}
}
insert lstCloneCase;
for(Id idd : mapCase.keyset()){
Case objCase = new Case(Id = idd);
objCase.Auto_Close_Reopen__c = false;
lstUpdateCase.add(objCase);
}
update lstUpdateCase;
}
}
Please refer below link for more details...how we should use recurssion helper to avoid recurssion
Please refer the above code as reference and male use of reurssion helper to avod it..
P.S. If my answer helps you to solve your problem please mark it as best answer. It will help other to find best answer.
Thanks,
Sandeep
Salesforce Certified Developer
All Answers
This error is due to recurssion, As your trigger is firing on after update and yhen again inside trigger you are updating the cases, then again trigger will fire and then again you will update teh case, and so on..so it will go in recurssion..
You need to use a recurssion handler to solve this error..
Thanks,
Sandeep
Please refer below link for more details...how we should use recurssion helper to avoid recurssion
Please refer the above code as reference and male use of reurssion helper to avod it..
P.S. If my answer helps you to solve your problem please mark it as best answer. It will help other to find best answer.
Thanks,
Sandeep
Salesforce Certified Developer