When is it best to use an option set?
If situation asks that you need to allow users to pick one or more option from a list, do not rush into thinking that an option set is the solution for any list scenario. Ask yourself or the user these questions:
- Are there going to be many future changes to the options?
- Will options need to be removed from the option set in the future?
If the answer to any of the above questions is yes, then you might end up with some issues and possible high maintenance on the long run.
The option set scenario
Think about it. Let’s say you implemented some option set on a form, and a week later, the client/user decides that 2 of the options are no longer required and need to be removed.
However, these options have already been assigned to records, and just deleting them would break the integrity of the data. Yes you could use some JS to try and hide the options from the drop-down list, but using JS to solve every bad decision would get you into different bad scenarios in the future.
Or even more interesting, they decide that some of the options will need to be changed (maybe change of context, meaning, etc), which means any previous usage will also change. Making these kind of changes would alter your historic data, and trust me, your MI/BI team won’t be happy with what you’ve just did.
The alternative solution to an option set
If you’re already established that this could potentially be a high maintenance feature, with options being added/removed from selection all the time, here’s a better solution:
- Create a new entity
- If everybody in the Organization will be using this new ‘picklist’ then set the Ownership as ‘Organization’ (it means the entity cannot be assigned or shared)
- In the new entity add the option set options as records
- Assign the following permissions to the roles that will need access to add/remove/maintain options:
- Full Organization Access on the Custom Entity
- Assign the following permissions to the roles who will need to assign these options to records in other entities
- Organization Access for Read, Append, Append To
- Now if you want to use this entity as a picklist on another entity form, create a lookup field from any entity to this entity
Benefits of using this approach?
By following this scenario, you provide more flexibility and ensure that data integrity is kept intact on the long run.
If the client/user decides that some of the options need to be deleted so they are no longer available for selection, users with appropriate access can just make the record/s inactive. This will not show the records in the Lookup View, but it will keep all the previously related records for reporting purpose, hence preserving data integrity.
Remember, the most obvious choice (in our case an option set) is not always the best choice!