public class LeadMerge {
@future
public static void updateLeadAfterMerge(Map<Id, String> mapLeadIdLeadSource) {
List<Lead> listLead = new List<Lead>();
for(Id leadId : mapLeadIdLeadSource.keySet()) {
listLead.add(new Lead(Id = leadId, Lead_Source_Detail__c = mapLeadIdLeadSource.get(leadId)));
}
update listLead;
}
}
Trigger:
trigger LeadMergeTrigger on Lead (after delete) {
Map<Id, String> mapLeadIdLeadSource = new Map<Id, String>();
for(Lead l : trigger.old) {
if(String.isNotBlank(l.MasterRecordId)) {
mapLeadIdLeadSource.put(l.MasterRecordId, l.LeadSource);
}
}
if(mapLeadIdLeadSource.size() > 0) {
LeadMerge.updateLeadAfterMerge(mapLeadIdLeadSource);
}
}
Note:
Lead_Source_Detail__c is a custom field created in Lead to capture deleted lead’s Lead Source.