Sunday, October 6, 2013

Dealing with CONTACTS – Salesforce.com


  • What to do if a contact moves from one account to another account? What if a contact becomes inactive?
  • How can I mass rearrange the contacts? (Resulting out of an organizational restructure)
  • Can I build a custom Contact object? What OOTB features will I lose?


Contacts are an essential part of any application and needs to be managed effectively. During solution design and training's I have come across variety of questions revolving around how to deal with contacts in a given scenario.
This pushed me to put together some notes on managing Contacts, few of the best answers from community  and few apps on app-exchange to help manage Contacts efficiently in your Salesforce org.

Managing Contacts Effectively (experts opinion)

  • Never move a Contact from one Account to another; this would have the effect of "dragging" over history records that are totally unrelated to the new Account and confusing users.
  • Create a custom Checkbox field named “Active” (default =checked) to identify if the contact is currently employed with at the account. Should the contact shift to another Account (also present in your org) then create a new contact record and mark it active and remember to mark the previous record as Inactive.
  • Going a step further, you might go ahead and build some Validation Rules to prevent user from adding activities on Inactive accounts. Or creating separate Record Types and Page Layouts for active and inactive Contacts, and building a Workflow Rule with a Field Update which would update the Contact record type and page layout (this would make the contact record inaccessible to users)
  • Inactive Contacts – Check the standard “Email Opt Out” checkbox field. This will prevent users from adding them in an email a campaign.

Mass Update Contacts (Re-parenting)

  • Create a Report and Export the Account and Contact data you need.
  • Make sure you have the following Columns Account. Name, Account.ID, Contact. Name, Contact.ID, Contact.AccountID
  • "Re-parent" the Contact.AccountID with the value of the "new" account, then update the Contact object using the Data Loader.

Standard Contact Object vs. Custom Contact Object

There are instances where people run out of field limits and workflow rules on a standard contact object and start contemplating on creating a Custom Object to handle the same. Well this is STRICTLY not advisable as you would be losing a lot of OOTB functionalities, increasing the technical debt in your system, creating an unintuitive data structure for users and invest huge efforts in administering the same. Some major OOTB functionalities which you would lose:
  • Mass email
  • Convert
  • Task & Events
  • Outlook integration
  •  Integrations with 3rd party apps
  •  Campaigns and campaign members
  •  Roll up contact tasks to account
  •  Lose on all current and future contact functionality
  • Automatically change contact owners when changing account owners, without a master-detail relationship

Consider reaching out to Salesforce.com before planning to recreate something which is already provided. Salesforce.com is pretty receptive to such requests.

Few FREE Contact related Apps on AppExchange:

  • DupeCatcher  enables Salesforce users to identify, block and dedupe leads, accounts, and contacts in real-time at the point-of-entry. Retain full control of the identification and merging process, eliminating any fear of loss while cleansing data.
  • Opportunity Contact Roles Validation Require Opportunity to have identified Contact Role or Primary Contact Assigned at a certain stage in the Opportunity Selling Process. Easily customizable validation rule to fit your specific selling methodology.
  • CLAM (Merge contacts) Provides 2 methods of merging Contact, Lead and Account objects – single merging allows the user to manually merge together 2 records at the click of a button. Multiple merging allows the user to merge multiple sets of 2 or more duplicate objects.
  • Mass Update Contact Address Copy the account's billing address to selected contacts within that account using a Visualforce interface. Because it uses Apex, no API access is required. Mass Update Contact Address now supports column sorting!

Security Model of an ORG and the Marketing + Sales Process are two main parameter considering which you decide on what kind of contact management methodology you would want to use. There is no single Salesforce best practice for Contact management, so you should always select a solution that meets your business needs.

Should you have a specific scenario you are looking a solution for, please feel free to leave a comment or drop an email.

Courtesy: