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
si risi ri 

System.DmlException: Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: []:

Hi all, 
            I am trying to invoke Lead assignment rule when ever certain criteria meets the trigger should fire.
        But I am getting the following error :  execution of AfterInsert caused by: System.DmlException: Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: []: 
        Can anyone guide me where I am donig wrong.Thanks in advance.
My Trigger:
trigger LeadAssignment on Lead (After insert,After update) {
    
    List<Lead> updateLeads = new List<Lead>();
    
    Lead newLead = new Lead();
    for(Lead l : trigger.new)
    {
        if(l.Status == '01-New' || l.Status == '50-Qualified')
        {
            AssignmentRule AR = new AssignmentRule();
            AR = [select id from AssignmentRule where SobjectType = 'Lead' and Active = true limit 1];
            
            Database.DMLOptions dmlOpts = new Database.DMLOptions();
            dmlOpts.assignmentRuleHeader.assignmentRuleId= AR.id;
            system.debug('dmlOpts***********'+dmlOpts);
             
             newLead.setOptions(dmlOpts);
           // updateLeads.add(newLead);
             
                    }
      
    }
    update newLead;
    system.debug('updateLeads************'+newLead);

}
Best Answer chosen by si ri
Maharajan CMaharajan C
Hi,

Try the below trigger:

trigger LeadAssignment on Lead (After insert,After update) {
    
    List<Lead> updateLeads = new List<Lead>();
    
    for(Lead l : trigger.new)
    {
        if(l.Status == '01-New' || l.Status == '50-Qualified')
        {
            updateLeads.add(new Lead(id = l.Id));
        }
      }
    
    if(!updateLeads.IsEmpty())
    {
        AssignmentRule AR = [select id from AssignmentRule where SobjectType = 'Lead' and Active = true limit 1];
        Database.DMLOptions dmlOpts = new Database.DMLOptions();
        dmlOpts.assignmentRuleHeader.assignmentRuleId= AR.id;
        Database.update(updateLeads, dmlOpts);
    }
}

Thanks,
Maharajan.C