I was recently investigating some of the options with External Content Type (ECT) filters that you can setup in SharePoint Designer. In particular, the following 2 settings did not appear to make any difference if I enabled or disabled them.
- Is Default
- Use to create match list in external item picker
At first I thought I has misunderstood the effect of these settings. The hover over text in SharePoint Designer is actually quite informative and provides the following.
Is Default: This filter is used by default when searching for items in the external picker
Use to create match list in external item picker: Used to create a list of possible matches in the external item picker when user input cannot be resolved
Ok, so this goes some way to confirming what these settings should do, but this is what I see when using the external picker in SharePoint.
The default filter in the external picker is simply the last filter (that accepts user input) I have configured (even if I haven’t checked “Is Default”). No matter what I do in SharePoint Designer I can’t get this setting to work. The only way to set the default filter is to make it the last filter in the list of filters.
As for the match list… if I uncheck the “Use to create match list in external item picker” for all the filters SharePoint still seems to match against all filters. Again this setting appears to have no effect.
Enter much scratching and searching before the answer surfaced. The issue is actually a common issue in both cases and I found it first when investigating the create match list setting. This setting actually corresponds to a property of the filter called UsedForDisambiguation. Here’s an extract from an MSDN article on recommendations for setting up filters for BDC Model Best Practices for Duet Enterprise.
So I wonder what the underlying BDC Model (xml) looks like that SharePoint Designer is creating. Here’s the result of exporting the BDC Model.
As suspected SharePoint Designer is ALWAYS creating elements in the xml model for these settings with a value of either true or false (as you have configured it in SharePoint Designer). But reading the MSDN documentation, SharePoint only looks to see if the element is PRESENT in the xml, and it doesn’t care what value it is. This now explains the behaviour I was experiencing, it was as though every filter had “Is Default” checked and “UsedForDisambiguation” checked.