4

We would like to have an email alert sent to the manager of the departed employee once the user record is deactivated. In that email, we would like to include a link to all that employee's open records and ask the manager to reassign. Can we do this off the User Record?

5

It is not currently possible to create a Workflow to be triggered off the User Record. Its quite a popular idea, so feel free to promote it :) http://success.salesforce.com/ideaview?id=08730000000Br80AAC

You can do this using a trigger on User - the bit to send an email would be easy. Identifying all open records would be slightly more difficult, depending on the Volume. A report seems the most suitable container, depending on the Records which need to be intimated, whether Opportunities, Activities, Cases or others.

I would recommend embedding links to Reports showing Accounts, Opportunities, Cases, Activities, etc owned by the leavers.

The manager can then either use Mass Transfer for the supported Standard Objects, and for other objects, export the Report as CSV, update the owners in the CSV and upload it via Apex DataLoader.

  trigger UserAfter on User (after update) {

    Map<Id, List<User>> mgrToUserMap = new Map<Id, List<User>>{};

    //Collect all the managers who have leavers
    for(User u : trigger.new){
    if (!u.IsActive && u.ManagerId != null){
        List<User> currUsers = mgrToUserMap.get(u.ManagerId);
        if(currUsers == null){
            currUsers = new List<User>{};
            mgrToUserMap.put(u.ManagerId, currUsers);
        }
        currUsers.add(u);
    }
    }// end for

    if(!mgrToUserMap.isEmpty()){
    Messaging.reserveSingleEmailCapacity(mgrToUserMap.size());

    for(Id mgrId : mgrToUserMap.keySet()){

    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    mail.setTargetObjectId(mgrId);
    mail.saveAsActivity = false;

//only send one email for all leavers per manager
    String emailBody = '';
    for(User usr : mgrToUserMap.get(mgrId))

//SEND LINKS TO REPORTS SHOWING ACCOUNTS, OPPORTUNITIES, CASES, ACTIVITES OWNED BY LEAVER
    emailBody += 'Your subordinate :<b> ' + usr.FirstName + ' ' + usr.LastName + ' </b>has left the organization.<p>' +
         'To view the Accounts owner by this User <a href=' +  System.Url.getSalesforceBaseURL().toExternalForm() + '/'+usr.Id+'>click here.</a> <p>';

    mail.setHtmlBody(emailBody);

    Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
    }

    }

    }
1

An After update trigger on user Object can be written which sends an email once the user is deactivated to his manager obtained from the manager look up of the user and based on user Id of the user the Ids of the open records (Cases or oppurtunities) can be collected and sent in the body of the email .The Ids are enough to figure the record in salesforce .The managers can be trained appropriately to use Ids to view record and change the owner.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.