• Irene Shure
  • NEWBIE
  • 10 Points
  • Member since 2015
  • Lakeshore Learning Equipment

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 3
    Questions
  • 2
    Replies
Hello,

I've been getting the "System.LimitException: Too many SOQL queries: 101" error. Please help.

Here is my trigger. Error is on the highlighted line.

trigger SetRepTrackableTask on Task (before insert, before update) {

    Set<Id> contactIds = new Set<Id>();
    for(Integer a = 0; a < Trigger.new.size(); a++) {
        contactIds.add(Trigger.new[a].WhoId);
    }
    
    Map<Id,Contact> contacts = new Map<id, Contact>([Select Email from Contact Where Id in :contactIds]);
    Map<Id,RecordType> recordTypes = new Map<id, RecordType>([Select Name from RecordType Where Name in ('Log a Call','Task')]);
    
    Set<Id> ownerIds = new Set<Id>();
    for(Integer a = 0; a < Trigger.new.size(); a++) {
        ownerIds.add(Trigger.new[a].OwnerId);
    }
    
    for(Integer a = 0; a < Trigger.new.size(); a++) {
        try {
            if(
                (Trigger.new[a].WhoId != NULL
                    && contacts.get(Trigger.new[a].WhoId).Email != NULL
                    && Trigger.new[a].Subject.contains('Email:')
                    && Trigger.new[a].Description.left(Trigger.new[a].Description.indexOf('Subject:', 0)).containsIgnoreCase(contacts.get(Trigger.new[a].WhoId).Email)
                    && ! Trigger.new[a].Description.left(Trigger.new[a].Description.indexOf('Subject:', 0)).contains('From:'))
                || (Trigger.new[a].Subject.contains('Mass Email'))
                || (recordTypes.get(Trigger.new[a].RecordTypeId).Name == 'Log a Call' && Trigger.new[a].Type != '')
                || (recordTypes.get(Trigger.new[a].RecordTypeId).Name == 'Task' && Trigger.new[a].Type.contains('Bid Opening'))
                || (recordTypes.get(Trigger.new[a].RecordTypeId).Name == 'Task' && Trigger.new[a].Type.contains('Conference'))
                || (recordTypes.get(Trigger.new[a].RecordTypeId).Name == 'Task' && Trigger.new[a].Type.contains('Other'))
                || (recordTypes.get(Trigger.new[a].RecordTypeId).Name == 'Task' && Trigger.new[a].Type.contains('VIP'))
            )
                Trigger.new[a].Credited_Task__c = true;
            else
                Trigger.new[a].Credited_Task__c = false;
                
        } catch (Exception e) {Trigger.new[a].Credited_Task__c = false;}

        if(Trigger.new[a].Type != NULL)
            Trigger.new[a].Activity_Type__c = Trigger.new[a].Type;
    }
}

Thank you.
Hello.

I have a test class for a trigger that has a 100% code coverage when I run it in Sandbox. However, when I try to validate it in live, I get the following error:
System.DmlException: Update failed. First exception on row 0 with id a07A000000d5UuvIAE; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CCPSSupEvent: execution of AfterUpdate caused by: System.DmlException: Insert failed. First exception on row 1; first error: INVALID_CROSS_REFERENCE_KEY, invalid cross reference id: [] Trigger.CCPSSupEvent: line 118, column 1: [] 
Stack Trace: Class.Test_CCPSSupEvent.myTestMethod1: line 30, column 1


Here is my trigger:
trigger CCPSSupEvent on CCP__c (after insert, after update) {

  if(checkRecursive.runOnce()) {   
        String calendarSubject;
        string ssName = '';
        
        if (System.Trigger.isInsert) {
            List<Event> events = new List<Event>();
            
            for (CCP__c c: Trigger.New) {
                
                if(c.Is_Rep_Required_to_Attend__c == true) {
                    calendarSubject = '@@@ CCP1 - ' + c.Name;
                } else  {
                    calendarSubject = 'CCP1 - ' + c.Name;
                } 
                
                if (c.Must_Deliver_On_Datetime__c != null) {
                
                    // add to the Sales Support calendar
                    if (c.Additional_Support__c != null) {  
                        events.add( new Event(
                            OwnerID = c.Additional_Support__c,
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = calendarSubject,
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                    }
                
                    // add to the Sales Support public calendar
                    if (c.Additional_Support__c != null) {                
                        User u = [Select Full_Name__c from User where id = :c.Additional_Support__c];
                        ssName = u.Full_Name__c; 
                        
                        events.add( new Event(
                            OwnerID = '0234B000000V3cX',
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = ssName + '-' + calendarSubject,
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                    }   
                }         
            }
            insert events;
        } 
        
        else if (System.Trigger.isUpdate) {
        
            Set<Id> OldWhatIds = new Set<Id>(); 
            Set<ID> OldOwnerIds = new Set<Id>();                
            List<Event> events = new List<Event>();
            
            for (CCP__c c: Trigger.New) {
                
                if(c.Is_Rep_Required_to_Attend__c == true) {
                    calendarSubject = '@@@ CCP2 - ' + c.Name;
                } else  {
                    calendarSubject = 'CCP2 - ' + c.Name;
                } 
                
                if (c.Must_Deliver_On_Datetime__c != null
                    && c.Additional_Support__c!= System.Trigger.oldMap.get(c.Id).Additional_Support__c) 
                {        
                    if (c.Additional_Support__c!= null) 
                    {    
                        events.add( new Event(
                            OwnerID = c.Additional_Support__c,
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = calendarSubject + '--1',
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                        
                        User u = [Select Full_Name__c from User where id = :c.Additional_Support__c];
                        ssName = u.Full_Name__c;
                
                        events.add( new Event(
                            OwnerID = '0234B000000V3cX',
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = ssName + '-' + calendarSubject + '--1',
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                    }                    
                }
                OldWhatIds.add(c.ID);
                OldOwnerIds.add(System.Trigger.oldMap.get(c.Id).Additional_Support__c);
            } 
            List<Event> OldEvents = [select Id, WhatId, OwnerId from Event where WhatID IN : OldWhatIds AND OwnerID IN : OldOwnerIds];
            delete OldEvents; 
                  
            insert events;
        }                                
    }
}

Here is my test class:
@isTest (SeeAllData = true)
public class Test_CCPSSupEvent {
    static testmethod void myTestMethod1() {
        User u1    = [select Id from User where alias='lyogi' LIMIT 1];
        
        String OrderNumberX  = '9991111';
        String OrderNameX    = OrderNumberX + '-Test CCP Record x';
        String OrderNumberY = '9992222';
        String OrderNameY   = OrderNumberY + '-Test CCP Record y';
        User SSupID1              = [select Id from User where Alias = 'NTarb' LIMIT 1]; 
        User SSupID2              = [select Id from User where Alias = 'KMurp' LIMIT 1];
        String SSup1              = SSupID1.Id;
        String SSup2              = SSupID2.Id;
                       
        RecordType RecRetailID    = [select Id from RecordType where Name = 'Retail Assistance'];
        String RecRetail          = RecRetailID.Id;
        
        System.RunAs(u1) {
        
            CCP__c c1 = new CCP__c(Name = OrderNameX, Order_Number__c = OrderNumberX, RecordTypeID = RecRetail, Must_Deliver_On_Datetime__c = System.today().addDays(2), Is_Rep_Required_to_Attend__c = false);
            insert c1;
            
            checkRecursive.resetAll();
            List<CCP__c> c2 = new List<CCP__c>();
            for(CCP__c c2u:[SELECT Id, Must_Deliver_On_Datetime__c, Additional_Support__c, Is_Rep_Required_to_Attend__c FROM CCP__c WHERE Order_Number__c = :OrderNumberX]) {
                c2u.Additional_Support__c = SSup1;
                c2u.Is_Rep_Required_to_Attend__c = true;
                c2.add(c2u);
            }
            update c2;
            
            checkRecursive.resetAll();
            List<CCP__c> c3 = new List<CCP__c>();
            for(CCP__c c3u:[SELECT Additional_Support__c, Is_Rep_Required_to_Attend__c FROM CCP__c WHERE Order_Number__c = :OrderNumberX]) {
                c3u.Additional_Support__c = SSup2;
                c3u.Is_Rep_Required_to_Attend__c = false;
                c3.add(c3u);
            }
            update c3;                
            
            checkRecursive.resetAll();
            List<CCP__c> c4 = new List<CCP__c>();        
            for(CCP__c c4u:[SELECT Id FROM CCP__c WHERE Order_Number__c = :OrderNumberX]) {
                c4.add(c4u);
            }
            delete c4;
    
            checkRecursive.resetAll();
            CCP__c c6 = new CCP__c();
            c6.Name = OrderNameY;
            c6.Order_Number__c = OrderNumberY;
            c6.RecordTypeID = RecRetail;
            c6.Is_Rep_Required_to_Attend__c = true;
            c6.Must_Deliver_On_Datetime__c = System.today().addDays(3);
            c6.Additional_Support__c = SSup2;
            insert c6; 
            
            checkRecursive.resetAll();
            List<CCP__c> c7 = new List<CCP__c>();
            for(CCP__c c7u:[SELECT Must_Deliver_On_Datetime__c FROM CCP__c WHERE Order_Number__c = :OrderNumberY]) {
                c7u.Additional_Support__c = null;
                c7u.Must_Deliver_On_Datetime__c = null;
                c7.add(c7u);
            }
            update c7;  
            
            checkRecursive.resetAll();
            List<CCP__c> c9 = new List<CCP__c>();        
            for(CCP__c c9u:[SELECT Id FROM CCP__c WHERE Order_Number__c = :OrderNumberY]) {
                c9.add(c9u);
            }
            delete c9;
        }
    }
}
I would appreciate any help. Thanks.
Irene
Hello,

I wrote an Apex trigger that creates 2 calendar events (one for a user and one for a public calendar), when a field of a custom object is updated with a user's name. The trigger works and creates the 2 entries but when I edit the user to another name, it creates a new entry. It does not update or remove the old event. 

Please help modify my code so that it can update or remove calendar events that have been updated. This is what I have so far:

trigger CCPSSupEvent on CCP__c (after insert, after update) {
    
    String calendarSubject;
    string ssName = '';
    
    if (System.Trigger.isInsert) {
        List<Event> events = new List<Event>();
        
        for (CCP__c c: Trigger.New) {
            
            if(c.Is_Rep_Required_to_Attend__c == true) {
                calendarSubject = '@@@ CCP1 - ' + c.Name;
            } else  {
                calendarSubject = 'CCP1 - ' + c.Name;
            } 
            
            if (c.Must_Deliver_On_Datetime__c != null) {
            
                // add to the Sales Support calendar
                if (c.Additional_Support__c != null) {  
                    Event evt = new Event(whatID = c.ID, OwnerID = c.Additional_Support__c);
                    evt.ActivityDate = c.Must_Deliver_on_Date__c;
                    evt.ActivityDateTime = c.Must_Deliver_on_DateTime__c;
                    evt.Subject = calendarSubject;
                    evt.Description = 'CCP Event - ' + c.Name;
                    evt.DurationInMinutes = 120;
                    evt.Type = 'CCP';
                    evt.CCP_Master_Event__c = True;
                    evt.Location = c.Customer_Name__c;
                    events.add(evt);
                }
            
                // add to the Sales Support public calendar
                if (c.Additional_Support__c != null) {                
                    User u = [Select Full_Name__c from User where id = :c.Additional_Support__c];
                    ssName = u.Full_Name__c; 
                    
                    Event evt = new Event(whatID = c.ID, OwnerID = '0234B000000V3cX');
                    evt.ActivityDate = c.Must_Deliver_on_Date__c;
                    evt.ActivityDateTime = c.Must_Deliver_on_DateTime__c;
                    evt.Subject = ssName + '-' + calendarSubject;
                    evt.Description = 'CCP Event - ' + c.Name;
                    evt.DurationInMinutes = 120;
                    evt.Type = 'CCP';
                    evt.CCP_Master_Event__c = True;
                    evt.Location = c.Customer_Name__c;
                    events.add(evt);
                }   
            }         
        }
        insert events;
    } 
    
    else if (System.Trigger.isUpdate) {
        
        List<Event> events = new List<Event>();  
        for (CCP__c c: Trigger.New) {            
            if(c.Is_Rep_Required_to_Attend__c == true) {
                calendarSubject = '@@@ CCP2 - ' + c.Name;
            } else  {
                calendarSubject = 'CCP2 - ' + c.Name;
            } 
            
            if (c.Must_Deliver_On_Datetime__c != null
                && c.Additional_Support__c!= System.Trigger.oldMap.get(c.Id).Additional_Support__c) {
                    
                if (c.Additional_Support__c!= null) {    
                    events.add( new Event(
                        OwnerID = c.Additional_Support__c,
                        WhatID = c.ID,
                        ActivityDate = c.Must_Deliver_on_Date__c,
                        ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                        Subject = calendarSubject + '--1',
                        Description = 'CCP Event - ' + c.Name,
                        DurationInMinutes = 120,
                        ShowAs = 'Free',
                        Type = 'CCP',
                        CCP_Master_Event__c = True,
                        Location = c.Customer_Name__c)
                    );
                    
                    User u = [Select Full_Name__c from User where id = :c.Additional_Support__c];
                    ssName = u.Full_Name__c;
            
                    events.add( new Event(
                        OwnerID = '0234B000000V3cX',
                        WhatID = c.ID,
                        ActivityDate = c.Must_Deliver_on_Date__c,
                        ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                        Subject = ssName + '--' + calendarSubject,
                        Description = 'CCP Event - ' + c.Name,
                        DurationInMinutes = 120,
                        ShowAs = 'Free',
                        Type = 'CCP',
                        CCP_Master_Event__c = True,
                        Location = c.Customer_Name__c)
                    );
                }
            }
        }        
        insert events;
    }                                
}

I am a newbie and would appreciate any help.

Irene S.
 
Hello.

I have a test class for a trigger that has a 100% code coverage when I run it in Sandbox. However, when I try to validate it in live, I get the following error:
System.DmlException: Update failed. First exception on row 0 with id a07A000000d5UuvIAE; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CCPSSupEvent: execution of AfterUpdate caused by: System.DmlException: Insert failed. First exception on row 1; first error: INVALID_CROSS_REFERENCE_KEY, invalid cross reference id: [] Trigger.CCPSSupEvent: line 118, column 1: [] 
Stack Trace: Class.Test_CCPSSupEvent.myTestMethod1: line 30, column 1


Here is my trigger:
trigger CCPSSupEvent on CCP__c (after insert, after update) {

  if(checkRecursive.runOnce()) {   
        String calendarSubject;
        string ssName = '';
        
        if (System.Trigger.isInsert) {
            List<Event> events = new List<Event>();
            
            for (CCP__c c: Trigger.New) {
                
                if(c.Is_Rep_Required_to_Attend__c == true) {
                    calendarSubject = '@@@ CCP1 - ' + c.Name;
                } else  {
                    calendarSubject = 'CCP1 - ' + c.Name;
                } 
                
                if (c.Must_Deliver_On_Datetime__c != null) {
                
                    // add to the Sales Support calendar
                    if (c.Additional_Support__c != null) {  
                        events.add( new Event(
                            OwnerID = c.Additional_Support__c,
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = calendarSubject,
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                    }
                
                    // add to the Sales Support public calendar
                    if (c.Additional_Support__c != null) {                
                        User u = [Select Full_Name__c from User where id = :c.Additional_Support__c];
                        ssName = u.Full_Name__c; 
                        
                        events.add( new Event(
                            OwnerID = '0234B000000V3cX',
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = ssName + '-' + calendarSubject,
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                    }   
                }         
            }
            insert events;
        } 
        
        else if (System.Trigger.isUpdate) {
        
            Set<Id> OldWhatIds = new Set<Id>(); 
            Set<ID> OldOwnerIds = new Set<Id>();                
            List<Event> events = new List<Event>();
            
            for (CCP__c c: Trigger.New) {
                
                if(c.Is_Rep_Required_to_Attend__c == true) {
                    calendarSubject = '@@@ CCP2 - ' + c.Name;
                } else  {
                    calendarSubject = 'CCP2 - ' + c.Name;
                } 
                
                if (c.Must_Deliver_On_Datetime__c != null
                    && c.Additional_Support__c!= System.Trigger.oldMap.get(c.Id).Additional_Support__c) 
                {        
                    if (c.Additional_Support__c!= null) 
                    {    
                        events.add( new Event(
                            OwnerID = c.Additional_Support__c,
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = calendarSubject + '--1',
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                        
                        User u = [Select Full_Name__c from User where id = :c.Additional_Support__c];
                        ssName = u.Full_Name__c;
                
                        events.add( new Event(
                            OwnerID = '0234B000000V3cX',
                            WhatID = c.ID,
                            ActivityDate = c.Must_Deliver_on_Date__c,
                            ActivityDateTime = c.Must_Deliver_on_DateTime__c,
                            Subject = ssName + '-' + calendarSubject + '--1',
                            Description = 'CCP Event - ' + c.Name,
                            DurationInMinutes = 120,
                            ShowAs = 'Free',
                            Type = 'CCP',
                            CCP_Master_Event__c = True,
                            Location = c.Customer_Name__c)
                        );
                    }                    
                }
                OldWhatIds.add(c.ID);
                OldOwnerIds.add(System.Trigger.oldMap.get(c.Id).Additional_Support__c);
            } 
            List<Event> OldEvents = [select Id, WhatId, OwnerId from Event where WhatID IN : OldWhatIds AND OwnerID IN : OldOwnerIds];
            delete OldEvents; 
                  
            insert events;
        }                                
    }
}

Here is my test class:
@isTest (SeeAllData = true)
public class Test_CCPSSupEvent {
    static testmethod void myTestMethod1() {
        User u1    = [select Id from User where alias='lyogi' LIMIT 1];
        
        String OrderNumberX  = '9991111';
        String OrderNameX    = OrderNumberX + '-Test CCP Record x';
        String OrderNumberY = '9992222';
        String OrderNameY   = OrderNumberY + '-Test CCP Record y';
        User SSupID1              = [select Id from User where Alias = 'NTarb' LIMIT 1]; 
        User SSupID2              = [select Id from User where Alias = 'KMurp' LIMIT 1];
        String SSup1              = SSupID1.Id;
        String SSup2              = SSupID2.Id;
                       
        RecordType RecRetailID    = [select Id from RecordType where Name = 'Retail Assistance'];
        String RecRetail          = RecRetailID.Id;
        
        System.RunAs(u1) {
        
            CCP__c c1 = new CCP__c(Name = OrderNameX, Order_Number__c = OrderNumberX, RecordTypeID = RecRetail, Must_Deliver_On_Datetime__c = System.today().addDays(2), Is_Rep_Required_to_Attend__c = false);
            insert c1;
            
            checkRecursive.resetAll();
            List<CCP__c> c2 = new List<CCP__c>();
            for(CCP__c c2u:[SELECT Id, Must_Deliver_On_Datetime__c, Additional_Support__c, Is_Rep_Required_to_Attend__c FROM CCP__c WHERE Order_Number__c = :OrderNumberX]) {
                c2u.Additional_Support__c = SSup1;
                c2u.Is_Rep_Required_to_Attend__c = true;
                c2.add(c2u);
            }
            update c2;
            
            checkRecursive.resetAll();
            List<CCP__c> c3 = new List<CCP__c>();
            for(CCP__c c3u:[SELECT Additional_Support__c, Is_Rep_Required_to_Attend__c FROM CCP__c WHERE Order_Number__c = :OrderNumberX]) {
                c3u.Additional_Support__c = SSup2;
                c3u.Is_Rep_Required_to_Attend__c = false;
                c3.add(c3u);
            }
            update c3;                
            
            checkRecursive.resetAll();
            List<CCP__c> c4 = new List<CCP__c>();        
            for(CCP__c c4u:[SELECT Id FROM CCP__c WHERE Order_Number__c = :OrderNumberX]) {
                c4.add(c4u);
            }
            delete c4;
    
            checkRecursive.resetAll();
            CCP__c c6 = new CCP__c();
            c6.Name = OrderNameY;
            c6.Order_Number__c = OrderNumberY;
            c6.RecordTypeID = RecRetail;
            c6.Is_Rep_Required_to_Attend__c = true;
            c6.Must_Deliver_On_Datetime__c = System.today().addDays(3);
            c6.Additional_Support__c = SSup2;
            insert c6; 
            
            checkRecursive.resetAll();
            List<CCP__c> c7 = new List<CCP__c>();
            for(CCP__c c7u:[SELECT Must_Deliver_On_Datetime__c FROM CCP__c WHERE Order_Number__c = :OrderNumberY]) {
                c7u.Additional_Support__c = null;
                c7u.Must_Deliver_On_Datetime__c = null;
                c7.add(c7u);
            }
            update c7;  
            
            checkRecursive.resetAll();
            List<CCP__c> c9 = new List<CCP__c>();        
            for(CCP__c c9u:[SELECT Id FROM CCP__c WHERE Order_Number__c = :OrderNumberY]) {
                c9.add(c9u);
            }
            delete c9;
        }
    }
}
I would appreciate any help. Thanks.
Irene