Thursday, 9 January 2014

Conversion between Person Accounts and Business Accounts

Selling Business to Business

Salesforce.com was designed mainly for the business to business sales model. Their architecture supports this beautifully. Accounts are companies that you work with. Contacts are the people at those companies that you work with. This design is a huge improvement over contact centric databases like Outlook where you may have the same business noted in your database against several different contacts, but in each case spelled slightly differently (like Snapptraffic, Snapptraffic Consulting, Snapptraffic.com, etc)



This architecture presents a challenge however to the business that sells directly to consumers. There is no need for an Account record in this situation. While that consumer might be associated with a company (where they are employed), the business has no need in most cases to track those details and isn't selling to that person's place of employment. I've seen businesses try to adapt the salesforce account/contact architecture to that business to consumer reality in many different ways, but none of them are all that great.

Selling Business to Consumer - Person Accounts

So Salesforce.com decided quite a few years ago to offer a modification to their out-of-the-box architecture that deals with this challenge. It is called Person Accounts. Person Accounts are only available in Enterprise Edition and are only available by request. A Salesforce.com support representative will actually have to enable this in your system by making a permanent modification (that's right - once enabled, they can't be disabled). 

Person Accounts are really just an Account Record Type. They are a hybrid between accounts and contacts where a contact record is "jammed into" the account. They are tied together, so to speak, so that only one contact exists at the account. The resulting record is both an account with all of it's fields and a contact with all of its fields. When doing a lookup from other objects to a person account, if the object has a lookup to a contact record, then the object can lookup to the Person Account. Likewise, if the lookup is to an account, the object can lookup to the Person Account as well.



This structure now provides a user with the means to say that "Billy Bob Smith" is my client. The fact that Billy Bob works at Acme is irrelevant and no longer needs to be entered.

Working with Both Business and Person Accounts

It is a great solution and works very in almost all situations. Some companies work with both businesses and consumers though. Say, for example, a company that paints buildings. Sometimes they'll be selling to an individual home owner, in which case a Person Account would work best. Other times they'll be selling to a business, like a law office, in which case a Business Account would be used. Salesforce supports this, you just create a Business Account when that is required and a Person Account when that is required.

But what happens if you created a Person Account and later realized that you needed a Business Account? Many times a prospect will contact you and you don't realize until later in the process that you're working with a business. 

Conversion Between these Architectures

Due to the fact that these structures are so different between salesforce.com person accounts and salesforce business accounts, salesforce doesn't provide a way to convert between them. They probably could have provided this functionality, but it would have been difficult to deal with custom objects that may be associated with the contact or the account. The lack of this feature has presented problems to many of my clients over the years.

Custom Development To the Rescue

To handle this limitation we normally put a button on the Person Account page layout for "Convert to Business Account" and on the Business Account Layout for "Convert to Person Account". Then these buttons will call visualforce code that does the appropriate conversion.

The conversion process will literally create a new record of the requested type, then re-associate all child objects/records from the originating account type to the new account type. Then finally, the code will delete the originating record.

This conversion has to be custom to handle your specific customizations. For example, maybe you have 3 Business Account Record Types and 2 Person Account Record Types. In a situation like this, you'll need the visualforce page to ask the user which record type they'd like to convert to. Additionally, if there are custom objects, the conversion has to be written with these particular custom objects in mind.

No comments:

Post a Comment