There is no out of the box support for multi-select pick lists in Dynamics CRM but since the latest UI improvements in CRM2013 you can use a standard N:N Relationship with form sub-grid to get a most respectable multiple selection form field.
For example, if we wanted a ‘Languages Spoken’ pick list on a Contact Form:
- Create a custom entity (e.g. Language)
- Create a custom N:N relationship (E.g. Language->Contact)
- Edit the ‘Active Languages’ view and remove the created on field – leaving just the name field. This is so that we only see the language name in the inline sub-grid control.
- Edit the Contact form and insert a sub-grid selecting ‘Languages’ as the entity, also set ‘Show Label on form. The key is to insert it into a single column section so that it looks like it is a form field.
You will then get a nice control that allows you to add languages by typing in the inline lookup control:
This beauty of this approach over other more bespoke ones is that it is fully supported and the data is searchable from within Advanced Find. Often the simplest solutions are the best!
Tipped to the jar by Scott “The Ribbon Man” Durow
thx for this tip,but.. one question….
am i right, that we can not have predefined entries?
i mean, normally a picklist has its values, which are not editable for a standard user and if i use n:n relationship, there are no predefined entries,or??
thx pit
You’re quite right, it’s not an exact replacement in terms of UI experience. Sounds like you expected multi-select listbox or set of checkboxes.
However, from functionality point of view, your “predefined entries” are the exactly related entity records, the only difference being is that they are not visible and to “check the box” you need to associate a record. The user is limited to the content of Language entity in the example above. Take away create permission on that entity and user will only be able to add/remove Languages Spoken but not to create new languages. So while UI is a bit different, functionality is exactly the same as multi-select lists.
This works very well and I like the usage. Question: How do you import a large set of data to prepopulate these choices? Continuing with your example, if I already have a set of people and the languages they speak, I can import the people into Contacts, but how do I populate the set of languages for each person and associate those with the appropriate Contact records?
Thx
Dave,
You can use N:N import tool of XRMToolbox to import large set of N:N records.
https://xrmtoolbox.codeplex.com/
Dave,
Your choices fall broadly into two categories:
1. Use a Tool
Tools such as Scribe or Simego Data Studio allow you to create N:N relationships.
You could also use Andrii’s importer tool – a33ik.blogspot.co.uk/2012/07/n-to-n-importexport-webresource.html
If you have SSIS skills you could also use KingswaySoft’s SSIS toolkit that supports N:N relationships – http://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-crm
2. Write Code
Using the SDK WebServices you can easily call the Associate method to create N:N relationships – http://msdn.microsoft.com/en-us/library/gg309247.aspx
Another options is to create a custom entity to represent the intersect (manual N:N entity) – then create a plugin that fires on create of this entity and performs the associate automatically. You can then import these custom records using the standard import and then delete them after the plugin has fired.
Hope this helps,
Scott
To achieve this through JavaScript check below post
http: //mscrmtutorials.blogspot.in/2014/04/multi-select-checkbox-in-ms-crm-2011.html
Hi Ravi,
not sure how copying someone else’s solution without attribution does justice to both their efforts and your reputation.
Regards,
George
Careful George, your solution looks an awful lot like the one I posted some time ago http://www.forceworks.com/dynamics-crm-2013-feature-dive-multi-select-option-list/
🙂
It does, indeed 😀
I’ll pass this info to Scott Durow (author of this tip) whom you probably know at least indirectly – he is the father of the Ribbon Workbench.
This is exactly what i need but the issue is that it isn’t searchable in advanced find as you’ve described from what I can see, and that’s something that is very important to what I’m trying to do. Any ideas?
I agree Shaun. From my testing of this solution, the big drawback seems to continue to be that I can’t easily filter on a Contact’s languages spoken in the AF filter. Scott…do you know of a way to do this. Your post indicated that it is searchable. I am on the latest release of 2015 including the May service release. The Searchable property is set to yes in the relationship definition but nowhere is it found in the Related Fields in the Filter Selections of AF.
Thanks,
Paul
I agree with Paul, the issue is we can’t search the entity record associated with a multiselected field. The solution works fine, but has quite a few limitations..
1. We need to save the entity record before we get can add the multi-select item.
2. Reporting limitations
3. Ability to search
BR/Satya
Has anyone found an answer to the Sorting and Filtering of records? e.g. view all “English” and “French” speaking contacts?
I don’t think this will work for a Appointment Activity entity. I tried and could not see the Appointment Activity in the drop down. Is there any other alternative?
Thanks !
Raj,
this is using N:N relationships. Where do you have an N:N relationship to Appointment Activity?
George
Yes, we want to have it for Appointment Activity.
We have a entity as Strategies. When a Marketer has a Appointment Activity then we also want the marketer to list what strategy / strategies the appointment was about (it could be one or many)? The Appointment activity does not allow N:N relationship.
Thanks !
Has anyone found an answer to the Sorting and Filtering of records? e.g. view all “English” and “French” speaking contacts?
I too am looking to leverage the values added in reporting and specifically, populating Marketing Lists. What I’m currently trying is adding additional fields that would populate ‘Yes’ or ‘No’ using Business Rules. For example, if the subgrid contains ‘Office Closure’ then update value of ‘Office Closure – Notice’ to Yes. I then create the dynamic Marketing Lists to pull in the Contacts who have that ‘Office Closure – Notice’ marked yes. Logically it seems like it would work- but for some reason the Business Rule is failing. I’ve tried making the condition ‘equals’ and ‘contains’ with no luck. Opened a ticket with Microsoft to see if they have any suggestions.
Caitlin, If you find a way to make this work, please post it here! I’m simply looking to create a dynamic marketing list based on the values from my new subgrid. Thank you!
Has anyone found a solution to searching and filtering records associated in a sub-grid? i.e. what Anju asked earlier?
To make the relationship appear in advanced find change the Display Option field on the relationship to Use Plural Name – then save and publish all. Languages will now appear on related entities list.
I think I can attribute this to Gonzalo Ruiz..