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

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY
Hi there,
I create a VF page on case.
And the page don't read the assignment rules.
So, I tried to use trigger.
But giving me a huge error, I don't even know how to figure out.
trigger AtribuicaoDeCasoTr on Case (after insert) { Database.DMLOptions dmo = new Database.DMLOptions(); dmo.assignmentRuleHeader.useDefaultRule= true; Case newCase = new Case(Status ='new'); newCase.setOptions(dmo); insert newCase; }
SF accept the code.
But when I will create a case. This error appears to me:
"AtribuicaoDeCasoTr: execution of AfterInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, AtribuicaoDeCasoTr: maximum trigger depth exceeded Case trigger event AfterInsert for [500J0000001IUue] Case trigger event AfterInsert for [500J0000001IUuf] Case trigger event AfterInsert for [500J0000001IUug] Case trigger event AfterInsert for [500J0000001IUuh] Case trigger event AfterInsert for [500J0000001IUui] Case trigger event AfterInsert for [500J0000001IUuj] Case trigger event AfterInsert for [500J0000001IUuk] Case trigger event AfterInsert for [500J0000001IUul] Case trigger event AfterInsert for [500J0000001IUum] Case trigger event AfterInsert for [500J0000001IUun] Case trigger event AfterInsert for [500J0000001IUuo] Case trigger event AfterInsert for [500J0000001IUup] Case trigger event AfterInsert for [500J0000001IUuq] Case trigger event AfterInsert for [500J0000001IUur] Case trigger event AfterInsert for [500J0000001IUus] Case trigger event AfterInsert for [500J0000001IUut]: [] Trigger.AtribuicaoDeCasoTr: line 8, column 1"
Thanks,.
Everton.
So...How can I do the trigger that I want without get stuck in a loop?
You know how?
Thanks JayDP.
Probably you should post the VisualForce Page code, and explain what it is you are trying to do. As far as I can tell you have a trigger that triggers each time a case is inserted, and it inserts a new case each time it is triggered. So the trigger is triggering itself! Hence the infinite loop. If you are trying to modify the case which is being inserted, try using a beforeInsert instead of afterInsert, and when you are using before insert you can remove the 'insert newCase' line as it will be done automatically.
I nerver used a trigger, just create pages.
Thats why I'm facing some chalenges.
I made the changes and don't appear any errors to me, but still don't read the assignment rule.
The page renders based on the picklist "motivo". I have several options in this field, so this is just a piece of my page
Thanks for helping me JayDP.
Try using Trigger helper class,which would prevent the Trigger to go into loop.
Create an Apex Class in your Org like below :-
public class TriggerHelperClass {
private static boolean flagvalue = false;
public static boolean hasAlreadyfired() {
return flagvalue;
}
public static void setAlreadyfired() {
flagvalue = true;
}
}
And,Use this Class in your Trigger as follows :-
trigger AtribuicaoDeCasoTr on Case (after insert) {
Database.DMLOptions dmo = new Database.DMLOptions();
dmo.assignmentRuleHeader.useDefaultRule= true;
if(!TriggerHelperClass.hasAlreadyfired()){
Case newCase = new Case(Status ='new');
newCase.setOptions(dmo);
insert newCase;
TriggerHelperClass.hasAlreadyfired();//This would prevent the invocation of Trigger in a loop
}
}
Doesn't work :(..
For now I'm using workflow, but I don't want to waste my limit with this.
So, this is important that works and I know it is possible.
Practically same error appears.
"AtribuicaoDeCasoTr: execution of AfterInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, AtribuicaoDeCasoTr: maximum trigger depth exceeded Case trigger event AfterInsert for [500J0000001IVOz] Case trigger event AfterInsert for [500J0000001IVP0] Case trigger event AfterInsert for [500J0000001IVP1] Case trigger event AfterInsert for [500J0000001IVP2] Case trigger event AfterInsert for [500J0000001IVQu] Case trigger event AfterInsert for [500J0000001IVQv] Case trigger event AfterInsert for [500J0000001IVQw] Case trigger event AfterInsert for [500J0000001IVQx] Case trigger event AfterInsert for [500J0000001IVQy] Case trigger event AfterInsert for [500J0000001IVQz] Case trigger event AfterInsert for [500J0000001IVR0] Case trigger event AfterInsert for [500J0000001IVR1] Case trigger event AfterInsert for [500J0000001IVR2] Case trigger event AfterInsert for [500J0000001IVR3] Case trigger event AfterInsert for [500J0000001IVR4] Case trigger event AfterInsert for [500J0000001IVR5]: [] Trigger.AtribuicaoDeCasoTr: line 9, column 1"
Thanks Vinit.
Not sure why it is not working,it should work as per me!!
Do you know if "version setings" in some way affects the funcionality ?
I don't know much about setting dmloptions.etc.. but assuming that you are just trying to modify the case which is being inserted, couldn't you just try something like this:
Everton,
Try below code in your Trigger :-
trigger AtribuicaoDeCasoTr on Case (after insert) {
Database.DMLOptions dmo = new Database.DMLOptions();
dmo.assignmentRuleHeader.useDefaultRule= true;
if(!TriggerHelperClass.hasAlreadyfired()){
Case newCase = new Case(Status ='new');
newCase.setOptions(dmo);
insert newCase;
}
TriggerHelperClass.hasAlreadyfired();//This would prevent the invocation of Trigger in a loop
}
Hope this works :)
I tried both codes and the same happens to me.
I was thinking...
What I need is the case read my assignment rules that means go to the right user.
If I use a code to update the field owner case, this will do what I need.
I'm right?
Can I do this code in VF or I have to do a trigger?
That depends upon your requirement ,
1.) if you want that to happen on a button click,then you need VF page and controller
2.) If you want it automatically,like(insert/update) event you need a Trigger for the same.