While in a CRM design meeting yesterday, we began discussing adding a picklist to one of the CRM forms.  One of the other developers made the following remark: "This field is also on two other forms. Let's make it a lookup instead."  Excellent advice, by the way, so let's discuss why.

Maintenance

If you have the same picklist data in multiple entities, you can accidentally create a maintenance issue.  To keep the various picklists synchronized, changes made to any of the picklists must be replicated within the other picklists.  Not only does this duplicate effort, it also requires someone with customization privileges.

The biggest drawback is that the picklist values must be exactly the same.  If they are not, you run the risk of having value 10 mean "blue" in one Entity and "purple" in another.

By creating and using a custom entity with a Lookup, allows a user with lesser privileges to update the list.  Plus, there is only one copy of the data, with each of the other entities pointing to that same data.

Relationships and Attribute Mapping

Mapping lookups between Entities is a bit easier than picklists because there is only a single copy of the data and you're actually passing a reference from one Entity to the next vs. passing an integer value representing the picklist selection.

 

Just something else to consider when designing customizations for CRM.