I have a trigger that should create a new event after insert or after update of a custom object called Handoff, but only if a custom field (Status) of that new record = "Delivered"
The after insert portion works fine, but the after update portion seems to always create duplicate events (two, to be precise).
I can't quite seem to find where it's going wrong within the trigger... any ideas?
trigger CreateEventAfterHandoff on Handoff__c (after insert, after update) {
List<Event> lstNewEvents = new List<Event>();
for (Handoff__c eve : Trigger.new) {
if (Trigger.isUpdate) {
if (eve.Status__c != Trigger.oldMap.get(eve.Id).Status__c) {
// Field has been changed!
if (eve.Status__c == 'Delivered') {
Event e = new Event();
e.Event_Type__c = eve.Event_Type__c;
e.Meeting_Type__c = eve.Meeting_Type__c;
e.StartDateTime = eve.Meeting_Time_Start__c;
e.EndDateTime = eve.Meeting_Time_Stop__c;
e.Subject = eve.Name;
e.WhoId = eve.Lead__c;
e.OwnerId = eve.User__c;
e.Handoff_ID__c = eve.Id;
lstNewEvents.add(e);
}
}
} else if (Trigger.isInsert) {
if (eve.Status__c == 'Delivered') {
Event e = new Event();
e.Event_Type__c = eve.Event_Type__c;
e.Meeting_Type__c = eve.Meeting_Type__c;
e.StartDateTime = eve.Meeting_Time_Start__c;
e.EndDateTime = eve.Meeting_Time_Stop__c;
e.Subject = eve.Name;
e.WhoId = eve.Lead__c;
e.OwnerId = eve.User__c;
e.Handoff_ID__c = eve.Id;
lstNewEvents.add(e);
}
}
}
insert lstNewEvents;
}
Handoff__c
that does an update onHandoff__c
? If so, this trigger will get executed twice in the update use case. Also field update on workflow. Check your debug log to see what is happening in the transaction; Also see recipe: developer.force.com/cookbook/recipe/…handoff__c
triggers, including those fired via workflow field updates