Skip to main content
Hello Team,

My requirement is to restrict non-admin users from deleting opportunity team member when the stage is close won. I tried using declarative method but no success, so trying using trigger. Here's my code.

trigger PreventOppTeamDeletion on OpportunityTeamMember (before delete) {

    Id profileId = UserInfo.getProfileId();

    String profileName = [SELECT Id, Name from Profile WHERE Id=:profileId].Name;

    

    for(OpportunityTeamMember otm : trigger.old){

        if(profileName != 'System Administrator' && otm.Opportunity.StageName =='60 - Closed Won'){

            otm.addError('You are not allowed to Delete Opportunity Team Member. Please contact System Administrator.');

        }

    }

}

The issue here is I'm not able to pull the stagename from Opportunity, its giving null value. Can someone help me with this.

Thanks!
1 answer
  1. Feb 18, 2022, 1:53 PM
    HI Ratnadeep,

    Try below code

    trigger PreventOppTeamDeletion on OpportunityTeamMember (before delete) {

    Id profileId = UserInfo.getProfileId();

    String profileName = [SELECT Id, Name from Profile WHERE Id=:profileId].Name;

    set<id> opporuntiyid= new set<id>();

    for(OpportunityTeamMember opt:Trigger.old){

    opporuntiyid.add(opt.OpportunityId) ;

    }

    Map<Id,Opportunity> memberMap = new Map<Id,Opportunity>([SELECT Id, StageName FROM Opportunity where id IN: opporuntiyid]);

    for(OpportunityTeamMember otm : trigger.old){

    if(profileName != ‘System Administrator’ && memberMap.get(otm.OpportunityId).StageName ==‘Closed Won’){

    otm.addError(‘You are not allowed to Delete Opportunity Team Member. Please contact System Administrator.’);

    }

    }

    }

    If this information helps, please mark the answer as best. Thank you
0/9000