One question that is often asked at the beginning of a CRM Online implementation is how to create a multi-select picklist - an picklist attribute on a form in which you can select more than one value. Unfortunately, multi-select picklists are not available in CRM 4.0 but there are still ways to configure your org to represent this feature. In this post I'll present two options for multi-select picklists that you can create out-of-the-box, no programming required.
Scenario: You need to track one or many hobbies for various contacts.
Create custom attributes for each hobby type: Cooking, Baseball, Soccer, Knitting, etc. Make these attributes a bit type. Settings -> Customization -> Customize Entities -> Contact -> Attributes -> New
Next, open up the contact form and create a new section for your hobbies, and add the fields to this section. Settings -> Customization -> Customize Entities -> Contact -> Forms and Views -> Form. In this example I grouped Hobbies into its own tab:
At this point you can change the bit type to a checkbox or list - whatever you like. Do this by selecting the field on the form -> Change Properties -> Formatting tab.
Advantages of Option 1: This allows your users to easily click through to select various hobbies. It's also very easy to configure. Finally, it's easy to report on these attributes.
Disadvantages of Option 1: If you have a lot of values, this may take up too much screen real estate and actually make it more difficult for your users to navigate. Another consideration to make is how many changes or additions you'll need to make to this list.
Create a custom entity called Hobbies and create a relationship to the Contact. Settings -> Customization - Customize Entities -> New. The form will be simple - just include the name of the hobby and any other details you need to track. In my example I changed the primary attribute of the hobby from "Name" to "Hobby Name". Save all changes.
Next, create the relationship to Contacts as a N:N Relationship. Save, and then publish your changes to the Hobby entity.
Next, set the security roles so that users are only able to add new Hobbies to the Contact, not create new ones. (by default, all privileges for new custom entities are set to "none")This is assuming that you are limiting the create privilege to admins only. (Settings -> Administration -> Security Roles)
Next, create some hobbies.
Now these hobbies are available to users on the Contact form. Alternately you can add multiple contacts to any one hobby at a time.
You can take this one step further by adding the Hobby entity to an IFrame within the Contact form. Eric Boocock posted excellent Instructions for doing this.
Advantages of Option 2: This gives you the greatest flexibility to add new values and track the data rolling up to one Hobby table. It also gives your users some screen real estate back if you have many different types of hobbies. Querying the data is straightforward.
Disadvantages of Option 2: If you've gone through these steps just now you know that this is a more time-consuming process. You should also take caution when changing any of the records in this entity as it will change your data.
Bottom Line: If you have a lot of values in your multi-select picklist you are best served by creating a custom entity and a relationship to its parent record. However, if ease of configuration and ease of use is your cup of tea, you can always create a few different bit entities to add to your form.