Critical bug with Full Text search

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”

Full Text Search

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.

Replication steps

  1. 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
    
  2. 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.

SQL Error

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=7.0.0.0, 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&#8221; xmlns=”http://schemas.microsoft.com/xrm/2011/Contracts”&gt;
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d2p1=”http://schemas.datacontract.org/2004/07/System.Collections.Generic&#8221; />
<Message>System.Data.SqlClient.SqlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #85B87978</Message>
<Timestamp>2016-01-25T10:54:39.1831237Z</Timestamp>
<InnerFault i:nil=”true” />
<TraceText i:nil=”true” />
</OrganizationServiceFault>

Cause

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.

FullTextQuery

FullTextError

So, my recommendation at this stage is not to use this feature, until this bug is resolved in the upcoming updates.

 

Advertisements

Invalid Argument – Data Import

This is basically an extension of Andre’s post -> https://andz88.wordpress.com/2015/05/25/australian-data-centre-bug-workaround-invalid-argument-in-workflowbusiness-process-flow-editor/

This issue seems to be affecting organisations created in APAC region as well, if they have their Personal Preferences -> Format set as English (Australia).

Invalid Argument

I am running v7.1.0.1086.

CRMVersion

The resolution is the same as described in Andre’s post. Change the Format to English (United States).

Bug: Limitation of Action EntityReference Input Argument

Actions are great for lot of things, but there are few bugs/limitations that I experienced and found particularly frustrating. One of such bugs is that you cannot use the attributes of an entityreference input argument on an action step. This is not the same with custom workflow step with an entityreference output. You would be able to use any attribute from the entityreference output off the custom workflow step.Here is the action definition

The entityreference action argument is available in the dropdown and all the properties appear as if they can be used.

Here is the create email step with values from workflow and action argument being used.

I also have a custom workflow step that accepts an entityreference input and just sets the entityreference output.

The custom workflow step input is set the action input argument.

This code for the custom workflow step is quite simple.

using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Workflow;

namespace TestWorkflows
{
    public sealed class ActionParameterToContactEntityReference : CodeActivity
    {
        [Input("Contact")]
        [ReferenceTarget("contact")]
        [RequiredArgument]
        public InArgument ContactInput { get; set; }

        [Output("Contact")]
        [ReferenceTarget("contact")]
        public OutArgument ContactOutput { get; set; }

        protected override void Execute(CodeActivityContext executionContext)
        {
            ContactOutput.Set(executionContext, ContactInput.Get(executionContext));
        }
    }
}

This is the email activity after the action is created.

As you can see, the Email and Firstname properties from the action’s input entity reference comeup as blank, but there is no such issue with the ones retrieved from the custom workflow step.

Bug in Plugin Registration Tool for CRM2013 – 6.1

Today I wasted around half-an-hour trying to troubleshoot why Plugin Registration tool was not recognising my custom workflow activity. When I tried to register the assembly, the tool would not display any custom activity.


The version I was using is 6.1.1143.

I checked the obvious things
  1. Activity class is public
  2. Assembly is signed
  3. Workflow class extends CodeActivity
  4. Built using .net 4.5

Since I could not figure out the reason behind this issue, I tried this in the CRM2015 SDK Plugin Registration tool (v 6.1.0.519).

 
I was able to register the workflow assembly without any issues.  The old plugin registration tool worked without any issues as well. So, currently it seems, it is better to avoid the new plugin registration tool in CRM2013 SDK.