You need to sign in to do that
Don't have an account?
Help to change Lead Trigger to only change Account Owner when none exists
Help with this trigger:
- I don't want to change the Account Owner if there is ALREADY an Account Owner
- This Lead should become an Opportunity for the person who is converting it (and it should be in their name), but it should NOT change the Account Owner at all unless the following is true:
- ADD an Account Owner (to the converter of the Lead) if they are creating a NEW Account from a Lead.
- ADD an Account Owner if there is no Account Owner for the existing Account.
How would I change this trigger to do so?
This trigger was built by someone else a long time ago - and I am not sure I understand all of the pieces. :/
Any help would be appreciated...
Additionally - I have put in a validation rule that does not allow specific users to Change Account Owners - (which is what's causing this to stop working...) - that said - I still don't want them to change Account Owners - I just want them to be able to add an Account Owner if it is null or if they are creating a new Account. (See my validation rule below)... would I need to change that, as well?
trigger Lead_UpdateAccountsOwner on Lead (after update) {
System.debug('DEBUG::------->Lead_UpdateAccountOwner - Converted Account ID : ' + trigger.new[0].convertedAccountId );
//this needs to be updated every time a new Profile is added that converts Leads
List<String> lstOfProfiles=new List<String>();
lstOfProfiles.add('Product Specialist Standard User');
lstOfProfiles.add('Product Specialist System Admin User');
lstOfProfiles.add('Product Specialist User');
lstOfProfiles.add('Product Specialist System Admin User 2');
//this needs to be updated every time a new Role is added that converts Leads
List<String> roleNames= new List<String>();
roleNames.add('PM SuperUser');
roleNames.add('Performance Manager');
//calling function from validating class
Boolean resultp=ProfileValidator.validateLoginUserProfile(lstOfProfiles);
Boolean result = false;
result= ProfileValidator.CheckLoginUserRole(UserInfo.getUSerId());
if(result == true)
{
//get converted account ids in set
set<id> accountIds = new Set<Id>();
set<id> contactIds = new Set<Id>();
for(Lead ld: trigger.new)
{
accountIds.add(ld.convertedAccountId);
contactIds.add(ld.convertedContactId);
}
//query all converted accounts with owenr id
Map<id,Account> map_AssociatedAccounts = new Map<id,Account> ([SELECT id, OwnerId from Account WHERE id in: accountIds and Type = 'Prospect']);
Map<id,Contact> map_AssociatedContacts = new Map<id,Contact> ([SELECT id, OwnerId from Contact WHERE id in: contactIds]);
//change owner of associated accounts
for(Lead ld: trigger.new)
{
Account act = map_AssociatedAccounts.get(ld.convertedAccountId);
if(act!=null)
{
act.OwnerId = ld.OwnerId;
}
Contact con = map_AssociatedContacts.get(ld.convertedContactId);
if(con!=null)
{
con.OwnerId = ld.OwnerId;
}
}
//update accounts
update map_AssociatedAccounts.values();
update map_AssociatedContacts.values();
}
}
VALIDATION RULE: Account_Ownership_Change_Not_Allowed
NOT(ISNEW()) && AND( OR( $User.ProfileId ='00e80000001KC2s', $User.ProfileId ='00e80000001K8tw', $User.ProfileId ='00e30000000eH6i', $User.ProfileId ='00e30000000eH6h', $User.ProfileId ='00e80000001KCUK'), ISCHANGED(OwnerId))
Error Message: You cannot change the Account Owner.