• Charlotte Hellested Broebeck
  • NEWBIE
  • 10 Points
  • Member since 2014

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 1
    Replies
I am trying to develop an Apex triger to cover the following scenario:
When changing Campaign owner any related Open Events change owner as well (default Salesforce behaviour). I want the trigger to reset the Event owner to previous value but only on Events related to a specific Campaign recordtype.
I have written the following trigger that works perfectly but I cannot figure out how to add the Campaign recordtype criteria:

trigger CampaignEventOwner on Campaign (after update) {
    Map<Id,Campaign> changedOwnerCampaigns = new Map<Id,Campaign>();
    
    for (Integer idx = 0; idx < trigger.new.size(); idx++) {
        if (Trigger.new[idx].OwnerId <> Trigger.old[idx].OwnerId) {
            changedOwnerCampaigns.put(Trigger.new[idx].id, Trigger.new[idx]);
        }    
    }
    List<Event> restoreEventOwner = new List<Event>();
    System.debug('changedOwnerCampaigns:' + changedOwnerCampaigns);
    // Find all open events for these campaigns and revert them
    for(Event e : [SELECT Id, WhatId, OwnerId, Last_Assigned_Owner__c 
                  FROM Event
                  Where WhatId in : changedOwnerCampaigns.keySet() AND EndDateTime >= :System.now() AND Last_Assigned_Owner__c <> null]) {
        system.debug('e.OwnerId:' + e.OwnerId);
        system.debug('e.Last_Assigned_Owner__c:' + e.Last_Assigned_Owner__c);
        if (e.OwnerId <> e.Last_Assigned_Owner__c) {
            e.OwnerId = e.Last_Assigned_Owner__c;
            restoreEventOwner.add(e);
        }
    }
    System.debug('restoreEventOwner:' + restoreEventOwner);
    if (!restoreEventOwner.isEmpty()) {
        update restoreEventOwner;
    }
}

Any help would be highly appreciated :-)
I am trying to develop an Apex triger to cover the following scenario:
When changing Campaign owner any related Open Events change owner as well (default Salesforce behaviour). I want the trigger to reset the Event owner to previous value but only on Events related to a specific Campaign recordtype.
I have written the following trigger that works perfectly but I cannot figure out how to add the Campaign recordtype criteria:

trigger CampaignEventOwner on Campaign (after update) {
    Map<Id,Campaign> changedOwnerCampaigns = new Map<Id,Campaign>();
    
    for (Integer idx = 0; idx < trigger.new.size(); idx++) {
        if (Trigger.new[idx].OwnerId <> Trigger.old[idx].OwnerId) {
            changedOwnerCampaigns.put(Trigger.new[idx].id, Trigger.new[idx]);
        }    
    }
    List<Event> restoreEventOwner = new List<Event>();
    System.debug('changedOwnerCampaigns:' + changedOwnerCampaigns);
    // Find all open events for these campaigns and revert them
    for(Event e : [SELECT Id, WhatId, OwnerId, Last_Assigned_Owner__c 
                  FROM Event
                  Where WhatId in : changedOwnerCampaigns.keySet() AND EndDateTime >= :System.now() AND Last_Assigned_Owner__c <> null]) {
        system.debug('e.OwnerId:' + e.OwnerId);
        system.debug('e.Last_Assigned_Owner__c:' + e.Last_Assigned_Owner__c);
        if (e.OwnerId <> e.Last_Assigned_Owner__c) {
            e.OwnerId = e.Last_Assigned_Owner__c;
            restoreEventOwner.add(e);
        }
    }
    System.debug('restoreEventOwner:' + restoreEventOwner);
    if (!restoreEventOwner.isEmpty()) {
        update restoreEventOwner;
    }
}

Any help would be highly appreciated :-)