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
TraceyTracey 

DML Error : CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY on before update trigger

Could somebody help me with this problem? I'm trying to Split an EmailCc values into separate email fields but I get the above error when I try and deploy this trigger to my production server.

 

 

 

trigger Acceleration_EmailCCSplit on Case (before insert, before update) {

    Map<String, Case> CaseMap = new Map<String,Case>();    Map<String,

Case> CaseMapOld = new Map<String,Case>();    Map<String, String> CaseMapOldNew = new Map<String,String>();

 

 

     for (Case casedata : System.Trigger.new)

   {

         if (casedata.EmailCC__c!=null) {

               System.debug('# EmailCC Outside 1.1 EmailCC__c ' + casedata.EmailCC__c);

            if (System.Trigger.isInsert) {              System.debug('# EmailCC Outside 1.2 System.Trigger.isInsert ' + System.Trigger.isInsert);

               CaseMap.put(System.Trigger.oldMap.get(casedata.id).EmailCC__c, casedata);

               CaseMapOldNew.put(casedata.EmailCC__c, casedata.EmailCC__c);

            }

                  if (System.Trigger.isUpdate) {

                       System.debug('# EmailCC Outside 1.3 System.Trigger.isUpdate ' + System.Trigger.isUpdate);

                        if (casedata.EmailCC__c != System.Trigger.oldMap.get(casedata.id).EmailCC__c){

                           System.debug('# EmailCC Outside 1.4 EmailCC is difference to previous version');                           System.debug(

'# EmailCC Outside 1.5 EmailCC Old = ' + System.Trigger.oldMap.get(casedata.id).EmailCC__c);                           System.debug('# EmailCC Outside 1.6 EmailCC New = ' + casedata.EmailCC__c );

                           CaseMap.put(System.Trigger.oldMap.get(casedata.id).EmailCC__c, casedata);

                           CaseMapOldNew.put(System.Trigger.oldMap.get(casedata.id).EmailCC__c,casedata.EmailCC__c);

                   }

              }

          }

    }

 

// List<Case> UpdateCases = new List<Case>();

 

System.debug('# EmailCC Outside 2.0 List Count ' + CaseMap.size());

System.debug('# EmailCC Outside 2.1 List keySet() ' + CaseMap.keySet());

for ( Case casedatalist : [SELECT EmailCC__c, Email_CC_1__c, Email_CC_2__c FROM Case Where EmailCC__c IN : CaseMap.keySet() ])

{

        System.debug('# EmailCC list Inside 2.2' + casedatalist.EmailCC__c);

        casedatalist.EmailCC__c = CaseMapOldNew.get(casedatalist.EmailCC__c);

        casedatalist.Email_CC_1__c = '';        casedatalist.Email_CC_2__c = '';

 

        Integer y = 0 ;

for(String s : casedatalist.EmailCC__c.Replace(',',';').Split(';')) {

y = y + 1 ;

System.debug('# EmailCC__c - s ' + y + ' :: ' + s);

if ( y == 1 ) {System.debug(

'# EmailCC__c - 1 found ' + s);

casedatalist.Email_CC_1__c = s;

} else if ( y == 2 ) {System.debug('# EmailCC__c - 2 found ' + s);

casedatalist.Email_CC_2__c = s;

}

// UpdateCases.add(casedatalist );

}

// Update UpdateCases;

 

}

}

prabhutumprabhutum

Tracey,

 

Based on what I have seen in the past, this error usually refers to some system exception.  Something as following,

 

>>CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CaseTrigger: execution of BeforeUpdate

>>caused by: System.Exception: Too many SOQL queries: 21

 

You may want to inspect the error message closely to find the rootcause of the issue.

 

Regards,

Pr@sh...

 

prabhutumprabhutum

Not sure if this is the main issue but I don't think one can use "oldMap" for "Insert" triggers.

 

For sanity check try removing "Before Insert" from the trigger signature and see if you can compile it now. If so, you may have to modify the trigger to use newMap wherever possible and when you need oldMap ensure the code is within isUpdate block.