+ Start a Discussion

Trigger Update After Account Merge

I have an (after insert, after update) on Opportunity. I monitor the (AccountId) for changes.


trigger updateOpportunity on Opportunity (after insert, after update)
    Set<Id> opiIds = new Set<Id>();
    for (Opportunity opp : trigger.new)
        if (System.Trigger.isInsert) {
        if (System.Trigger.isUpdate) {
           if (Util.hasChanges(fieldsTracked, opp, trigger.oldMap.get(opp.Id))) {
    if (oppIds.isEmpty()) {
// Do some stuff


If I physically move the Opportunity from one Account to another, the trigger fires as expected. But when I merge two accounts, the opportunity thereotically changes it's parent association to the new AccountID, and my trigger monitors changes to this filed, but the trigger doesn't fire.


Is there a function to monitor a merge differently than an update? trigger (after merge) isn't accepted, and (System.Trigger.isMerge) isn't accepted either.


Yes the Master is the new Account, and the Opportunity is associated to the old Account which gets deleted after merge. So one would think that the Opportunity is getting updated with a new AccountId, but if (Util.hasChanges(fieldsTracked, opp, trigger.oldMap.get(opp.Id))) still produces 'FALSE'.


When you say your trigger doesn't fire, does that mean the the trigger code isn't executed, or that it is executed but can't determine any changes have been made?



Did you find a solution to catch Accounts merge process?


i have a workflow on a Contact object (ISCHANED(AccountId) rule) that doesn't fire when Account is merged.






A single merge operation fires a single update event for the winning record only. Any child records that are reparented as a result of the merge operation do not fire triggers.

Mark HartnadyMark Hartnady
Thanks @krpr !