I really enjoy the excitement of learning new things, especially through active discussion and target questions and answers. One of the subjects that never lets me down in this area is the concept of person accounts in Salesforce.
Having raved about it in previous posts, I feel obliged to answer a question that was posed about how to actually use person accounts and business accounts in the same org.
The answer could be fairly straightforward: In the standard sales processes, there's no need to mentally make a big distinction between the two. Opportunities are tied to accounts, not to contacts. This means that if a salesperson is trying to close a deal, it doesn't matter if the deal is for a person or for another organization. The opportunity is what's important, and it's always related back to the account entity, person or organization, with which you're doing business.
A trickier question which we're running into at work is: What's the best way to handle people who are both your direct customers and who are contacts at other organizations? Theoretically, the idea of linking the contact to both the business account and to the person account would work. In practice, however, I think if an organization is investing time and energy into this level of constituent mapping, then it would be worthwhile to analyze the business needs and maybe setup some workflow, Apex and Visualforce to take advantage of the data links.
Not to dodge the question entirely, but I think that there are always specific organizational needs that drive people to setup more complex and complete data models. If anyone's interested in discussing a specific use case, I'd be totally game!
Showing posts with label schema. Show all posts
Showing posts with label schema. Show all posts
Saturday, August 13, 2011
Tuesday, August 9, 2011
The Ingenuity of Person Accounts
As I meditated more on the idea in my previous post about people's connections to different accounts, a surprising realization occurred to me: We don't even have to engineer a new object; Salesforce has already done this for us! And the answer is... Person Accounts!
The basic implementation can be done in two simple steps:
Conceptually, the idea is simple: The person is the core piece of the puzzle. Take John Doe, for example. John can be a contact for Acme Corporation and simultaneously be a contact for Zenith, Inc. All that's needed to represent these relationships are a person account record for John, two business account records for Acme and Zenith, and two contact records to link John to the two accounts.
Although I haven't thought this next idea in much more depth, I have an inkling that this model could potentially even replace the Nonprofit Starter Pack's Household object with a "Household Account" record type. Wouldn't that be a beautiful alignment of developer resources? All of Salesforce's main development efforts on Contacts and Accounts could then directly benefit all users in every industry. No more waiting for updates to the NPSP Householding package; just wait for the next seasonal release of Salesforce.
The basic implementation can be done in two simple steps:
- Activate the Person Accounts feature.
- Create
Person_Account__cas a Lookup(Account) field on the Contact object
Conceptually, the idea is simple: The person is the core piece of the puzzle. Take John Doe, for example. John can be a contact for Acme Corporation and simultaneously be a contact for Zenith, Inc. All that's needed to represent these relationships are a person account record for John, two business account records for Acme and Zenith, and two contact records to link John to the two accounts.
Although I haven't thought this next idea in much more depth, I have an inkling that this model could potentially even replace the Nonprofit Starter Pack's Household object with a "Household Account" record type. Wouldn't that be a beautiful alignment of developer resources? All of Salesforce's main development efforts on Contacts and Accounts could then directly benefit all users in every industry. No more waiting for updates to the NPSP Householding package; just wait for the next seasonal release of Salesforce.
Labels:
Account,
Contact,
database,
nonprofit,
Person Account,
record type,
Salesforce,
schema
Friday, August 5, 2011
People, Not Contacts and Affiliations, Are the Way to Go
Poking around the nonprofit space today, I came across the Affiliations for the Nonprofit Starter Pack app on the AppExchange. I installed it, and all it ended up doing was creating a new object called Affiliation that links contacts with accounts. Ugh... I sense a very unpleasant asymmetry here, where a contact record can be related to an account either directly through the Account field or through an affiliation record sandwiched between the contact and another account.
While this structure definitely works to get us through most of our work, is this really the right way forward? If people at the Saleforce Foundation are pouring time and energy into developing something for the greater good, wouldn't it be great if we are assured that their focus is on the right vision?
Regarding affiliations, I don't think the Affiliation object is the right vision.
Here's a thought: Contacts were originally defined as people of interest related to an organization. Somehow, we diverged from this model by redefining contacts as people with a primary connection to a specific organization via the Lookup(Account) field. What's the difference, you ask? The difference is that in the original definition, a Contact record is the link between a person and an account; in the world with Affiliation as a junction between Contact and Account, we've redefined a Contact as the person, which it was never meant to be.
So, by introducing the Affiliation object, we've bastardized the idea of a "contact". How do we pick which Contact record stays with its account? How do we choose between a creating new Contact record and creating an Affiliation record? Is it better to have my Contact record as a child of account A with an affiliation to account B, or the other way around?
The answer: For orgs that want to map out people's relationships to different Account records, introduce the Person object. Then, link every Contact record to the appropriate Person record, and you have the magic sauce that paints the real picture of a person and his or her affiliations.
While this structure definitely works to get us through most of our work, is this really the right way forward? If people at the Saleforce Foundation are pouring time and energy into developing something for the greater good, wouldn't it be great if we are assured that their focus is on the right vision?
Regarding affiliations, I don't think the Affiliation object is the right vision.
Here's a thought: Contacts were originally defined as people of interest related to an organization. Somehow, we diverged from this model by redefining contacts as people with a primary connection to a specific organization via the Lookup(Account) field. What's the difference, you ask? The difference is that in the original definition, a Contact record is the link between a person and an account; in the world with Affiliation as a junction between Contact and Account, we've redefined a Contact as the person, which it was never meant to be.
So, by introducing the Affiliation object, we've bastardized the idea of a "contact". How do we pick which Contact record stays with its account? How do we choose between a creating new Contact record and creating an Affiliation record? Is it better to have my Contact record as a child of account A with an affiliation to account B, or the other way around?
The answer: For orgs that want to map out people's relationships to different Account records, introduce the Person object. Then, link every Contact record to the appropriate Person record, and you have the magic sauce that paints the real picture of a person and his or her affiliations.
Labels:
Account,
affiliation,
Contact,
CRM,
NPSP,
object,
Person,
relationship,
Salesforce,
schema
Wednesday, August 4, 2010
Putting a Name with a User ID in DegreeWorks
I came across a question once about what users all exist in DegreeWorks. I couldn't figure out the issue at first, so I created an SR with the AL and got some pointers that ultimately led me to the following query:
This query showed me the names associated with each of the logins to DegreeWorks.
On a side note: The DegreeWorks schema is not documented in any of the PDF publications. Instead, the schema is explained in files that are created during the server installation inside the
select shp_access_id, rad_name
from shp_user_mst, rad_primary_mst
where shp_access_id=rad_id
order by shp_access_id;This query showed me the names associated with each of the logins to DegreeWorks.
On a side note: The DegreeWorks schema is not documented in any of the PDF publications. Instead, the schema is explained in files that are created during the server installation inside the
.../app/schema/ directory:- dapdb
- raddb
- shpdb
Subscribe to:
Posts (Atom)


