Most of the cool new features unveiled by Microsoft, are available in CRMOnline only. But, full text search is one of the features that is OnPremise only. It was made available with CRM2015 Update 0.1. By default, this is turned off. In order to turn on this feature you’ll have to head over to “Settings” area and select “Yes” next to “Enable full-text search for Quick Find”
While testing out this feature in our DEV environment, I uncovered, what I consider, a major bug with the feature. The bug is this:
If you have turned on full text search, you lose the ability to alter the length of the text fields on any customisable entity.
If this OK in your case, you have nothing to worry. For others, read on.
- Use the query below to identify the full text indexes and the entity text fields
SELECT b.name AS [Table Name], c.name AS [Index Name], d.name AS [Entity Name], e.Name AS [Text Attribute] FROM sys.fulltext_indexes a INNER JOIN sys.objects b ON a.object_id = b.object_id INNER JOIN sys.indexes c ON c.object_id = b.object_id AND c.index_id=a.unique_index_id INNER JOIN EntityAsIfPublishedLogicalView d ON d.basetablename = b.name INNER JOIN AttributeAsIfPublishedLogicalView e ON e.EntityId = d.EntityId WHERE d.iscustomizable = 1 AND e.AttributeTypeId = '00000000-0000-0000-00AA-11000000001E' AND e.IsLogical = 0 AND e.IsCustomizable = 1 ORDER BY d.name, e.Name
- Try to increase of decrease the length of any of these fields from the entity customisation area. If you try to save the attribute after increasing or decreasing the length, you will get a generic SQL exception.
Our test environment, that doesn’t have full text search enabled, doesn’t suffer from this issue. I was thinking of manually deleting the full text index from the base table and then updating the attribute length, but I didn’t do so, as I haven’t fully analysed the impact of doing this.
The downloaded error file doesn’t help to identify the root cause of this issue.
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=184.108.40.206, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:
System.Data.SqlClient.SqlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #85B87978Detail:
<OrganizationServiceFault xmlns:i=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://schemas.microsoft.com/xrm/2011/Contracts”>
<ErrorDetails xmlns:d2p1=”http://schemas.datacontract.org/2004/07/System.Collections.Generic” />
<Message>System.Data.SqlClient.SqlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #85B87978</Message>
<InnerFault i:nil=”true” />
<TraceText i:nil=”true” />
CRM wants to drop and recreate the full text index on the entity base table, when the length of any text field in that entity is updated. When it tries to do this, SQL throws an error.
So, my recommendation at this stage is not to use this feature, until this bug is resolved in the upcoming updates.
Just wondering, if isn’t there any way to turn off the Full Text search, change the field lengths and turn on the feature again?
Once you turn off the full text search, it takes couple of hours for the full text indexes to be deleted. Once the indexes are gone, you should be able to make the change and turn the full text search on again. If you moving the solution from Dev->Uat->Prod, you’ll have to do this in all the three environments, which is a pain.
Ah! I see.
Does this happen on CRM 2016 also ?
I don’t know, as I don’t have access to a 2016 onprem instance.