0

I use a flow action to update Enrolment records. It works for a smaller batch size around 500. But it doesn't work for a larger batch like 1500 records. Debug log doesn't give any errors I broke the update list to lists of 500 records. but the update operation still not working public class SBAddEnrolmenttoBatchFlowActionClass {

public class flowInputs {
    
    @InvocableVariable(required = true)
    public List<Id> EnrolmentIds;
    
    @InvocableVariable(label='Most Recent Support Batch ID' required = true)
    public ID SupportBatchId;
} 

@InvocableMethod (label = '1.SB_1_Add_Enrolment_to_Batch_LEP')

public static Void addEnrolments(List<flowInputs> enrolments){
    
    List<Id> EnrolmentIds = enrolments[0].EnrolmentIds;
    system.debug('E List1 ' + EnrolmentIds );
    ID SupportBatchId = enrolments.get(0).SupportBatchId;
    List<Enrolment__c> enrolList = [Select Id, LEP_Points_in_Batch__c, Most_Recent_Support_Batch__c from Enrolment__c Where Id =:EnrolmentIds];
    system.debug('E List ' + enrolList );
    
    for (Enrolment__c e : enrolList){
        system.debug('UPDATED***t ' +   e.Most_Recent_Support_Batch__c );
        e.LEP_Points_in_Batch__c = Null;
        e.Most_Recent_Support_Batch__c = SupportBatchId;
    }
    
    List<Enrolment__c> enrolList1 = new List<Enrolment__c>();
    List<Enrolment__c> enrolList2 = new List<Enrolment__c>();
    List<Enrolment__c> enrolList3 = new List<Enrolment__c>();
    List<Enrolment__c> enrolList4 = new List<Enrolment__c>();
    
    
    
    if(enrolList.size()<500){
        for(integer i=0; i< enrolList.size();i++)
            enrolList1.add(enrolList[i]);
    }
    if(enrolList.size()>=500 && enrolList.size()<1000 ){
        for(integer i=0; i< 500 ;i++)
            enrolList1.add(enrolList[i]);
        for(integer i=500; i< enrolList.size();i++)
            enrolList2.add(enrolList[i]);
    }
    
    if(enrolList.size()>=1000 && enrolList.size()<1500 ){
        for(integer i=0; i< 500;i++)
            enrolList1.add(enrolList[i]);
        for(integer i=500; i< 1000;i++)
            enrolList2.add(enrolList[i]);
        for(integer i=1000; i< enrolList.size();i++)
            enrolList3.add(enrolList[i]);
    }
    if(enrolList.size()>=1500 && enrolList.size()<2000 ){
        for(integer i=0; i< 500;i++)
            enrolList1.add(enrolList[i]);
        for(integer i=500; i< 1000;i++)
            enrolList2.add(enrolList[i]);
        for(integer i=1000; i< 1500;i++)
            enrolList3.add(enrolList[i]);
        for(integer i=1500; i< enrolList.size();i++)
            enrolList4.add(enrolList[i]);
    }
    if(!enrolList1.isEmpty() && enrolList1 != null){
        update enrolList1;
    }
    if(!enrolList2.isEmpty() && enrolList2 != null){
        update enrolList2;
    }
    if(!enrolList3.isEmpty() && enrolList3 != null){
        update enrolList3;
    }
    if(!enrolList4.isEmpty() && enrolList4 != null){
        update enrolList4;
    }
    
    system.debug('UPDATE*** COMPLETED'); 
    
    
} 
  

}

1
  • what does "not working" mean? Breaking your updates into 4 DML steps accomplishes nothing. Most likely issue is you are hitting a SFDC limit. Try delegating your invocable's work to an async transaction (i.e. queueable) where limits are higher
    – cropredy
    Mar 23 at 16:03

0

You must log in to answer this question.

Browse other questions tagged .