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
Kris Ryan SAKris Ryan SA 

trigger to create custom object records

Hi,
I am trying to create a trigger that creates an associated record when a record is created in a custom object called Project__c. I am not much of a coder, but thought I would give this a whirl.

I get all sorts of errors when it triggers.

Can someone please review and let me now what needs to be changed? I would greatly appreciate it!!

Here is the scenario.
The user creates a Project Charter. When that charter is approved, we create a Project and tie them together. There are 12 action steps on the Charter. The business unit wanted us to create Project Tasks associated to the new project from the 12 action steps on the Charter. My trigger, for now, is only working with the first action step.

Code:
trigger ProjectTasksFromActionSteps on TASKRAY__Project__c (after insert,after update) {
    
    Set<Id> pcIds = new Set<Id>();
    
    for (TASKRAY__Project__c recProj : Trigger.new){
        if(recProj.Created_from_Project_Charter__c != null) {
            pcIds.add(recProj.Created_from_Project_Charter__c);
        }
    }
    
    if(pcIds.size() > 0){
        
        Map<Id,Project_Charter__c> pcEntries = new Map<Id,Project_Charter__c>(
            [select Date__c,
             Project_Title__c,
             Action_Step_1_Title__c,
             Action_Step_1_by_When__c,
             Action_Step_1_Description__c
             from Project_Charter__c
             where id in :pcIds]
        );
        
        List<TASKRAY__Project_Task__c> newTasks = new List <TASKRAY__Project_Task__c>();
        
        for(TASKRAY__Project__c recProg : trigger.new){
            
            Project_Charter__c recPC = pcEntries.get(recProg.Created_from_Project_Charter__c);
            
            if (recPC.Action_Step_1_Title__c != null) {
                
                TASKRAY__Project_Task__c recTask = new TASKRAY__Project_Task__c(
                    OwnerId=recProg.OwnerId,
                    TASKRAY__Project__c=recProg.Id,
                    Name=recPC.Action_Step_1_Title__c,
                    TASKRAY__trStartDate__c=recPC.Date__c,
                    TASKRAY__List__c='Planned',
                    Task_Classification__c='Project'
                );
                
                newTasks.add(recTask);
            }
        }
        if(newTasks.size()>0){
        insert newTasks;
        }
    }
}
Kris Ryan SAKris Ryan SA
This is the error I get:
We can't save this record because the “Project Charter Updates” process failed. Give your Salesforce admin these details. This error occurred when the flow tried to create records: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: ProjectTasksFromActionSteps: execution of AfterInsert caused by: System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, dlrs_TASKRAY_Project_TaskTrigger: maximum trigger depth exceeded Project trigger event AfterInsert Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert Project trigger event AfterUpdate Project_Task trigger event AfterInsert: [] Trigger.ProjectTasksFromActionSteps: line 44, column 1. You can look up ExceptionCode values in the SOAP API Developer Guide. Error ID: 578710667-48667 (1551055234)