I was working with a customer recently who tracks custom data elements per client. For example for Acme Inc, the customer may track a field called "Cost Center", but for Slate Rubble, the customer wants to track "Annual Stone Usage" etc. In essence, the requirement boils down to "how do I track unique name-value pairs per client?"

The answer: create a custom object (in the example here let's call it a NVPair), add 4 fields: an autonumber id, a "Name" textfield, a "Value" textfield, and a Master-Detail relationship to the parent object; say Account or Contact. 

We can then add this object as a related list to our Parent object and business requirement solved.
One of the limitation of the solution listed above is that we are using a textfield for the Value attribute. Doing so, may inhibit our ability to use the value in Roll Up Summary fields for example. I am a fan of starting with a simple solution and expanding outwards as the requirements evolve. With this in mind, If this is the case, we can certainly make our NVPair object a little more robust and add ValueType fields to support different data types such as numbers, currency etc. While such a solution certainly adds some more options for dealing with the data contained within the fields, Apex, and Formula fields provide a number of ways of casting values to different types if required. 

Get the latest Salesforce Developer blog posts and podcast episodes via Slack or RSS.

Add to Slack Subscribe to RSS