Sunday, March 29, 2015

New form engine in CRM 2015 Spring Update

CRM 2015 Update 1 Introduces New form engine

The new version is designed to provide extremely fast form load while maintaining compatibility. The new form engine will not impact end users, because they have the same features, interface, and behaviors as the legacy rendering engine.
There are changes in the page construction, frames handling, data loads, and how scripts are managed (custom scripts will be loaded in separate frames so that the main frame can be retained and reused for subsequent records).
Existing supported customizations, such as Client API, are still supported and so existing scripts should not require any changes. 

Microsoft announced, that the unsupported customizations will likely break with the improved form engine. Any customizations should be tested after the Update 1 will be applied.

Friday, March 27, 2015

CRM - service scheduling - invalid date error

Error when scheduling Service activity - Invalid date

Quite interesting error was introduced in CRM 2015.

The error is: "The specified date format is invalid or the date is out of valid range. Enter a valid date in the format: d/ M/ yyyy"

This error generally does not affect all the users, because it is related to user preferences.
We identified this issue in CRM 2015 Online, we were not able to reproduce this error in CRM 2013.

It happens when you have different date format for the CRM app and for the user.
So if you encounter this error, check your Date format settings in the CRM > Settings > Administration > System settings and also check the personal setting of the user in Set Personal Options > Formats

If these setting differ, then change it to the same setting. I prefer using "Reset button" to restore defaults.

I can imagine that this will cause a lot of troubles to multinational implementations of CRM.


Wednesday, March 25, 2015

CRM Spring 2015 Update - Themes

Now you can modify themes in your CRM 2015

CRM 2015 Spring Update now introduces theme modifications. You can now change the logo and colors of your CRM app.

Just go to Setting > Customizations > Themes

List of themes
List of themes

We have it in the Preview and it is quite obvious, that this feature still needs some tuning (like translations of description text and button labels to all languages).
Anyhow, this is a great way forward and our customer will love it.

Here is the preview of the Theme editor.

Theme editor
Theme editor

Good thing is that the logo accepts pretty much any format, even transparent .ico files are possible.

Only one Theme can be default. You can switch template to default by publishing (Publish)  it.
Users cannot change their theme, so I don't think there is a point of having more templates in the system. But may be in future ?! :-)

So play with it :-)


Update 1.4.2015: Microsoft updated the Themes feature in latest update, sometransaltions have been added, logo handling is different, also some minor errors appeared.

Tuesday, March 24, 2015

CRM - System queues

Microsoft Dynamics CRM - Be aware of 3 hard coded system queues

This issue is in all CRM versions, but to me it started to be really significant when we migrated one customer from CRM 2011 to CRM 2013.

The customer was using dashboards in CRM 2011 intensively. The users were taking queue items from the queue, assigning them and resolving them. This was all possible in CRM 2011.

When CRM 2013 was introduced, the dashboards changed. They are no longer useful for work, but rather just for reading. Whenever user wants to work with the items on the dashboard, they have to open a new window.
So here is our issue. When you open queue which is on the dashboard in the new window, it automatically shows the default filter. We wanted to set the default filter to All queues, but the is not possible. (Usually default filter can be set by clicking Set as default)

We opened a ticket with Microsoft for solving this issue and it turned out, that this is hard coded feature in all CRM versions.

So be aware - in the CRM, there are 3 system filters which cannot be set as default, these are:

  • All Queues
  • All Public Queues
  • Queues I'm a member of

"Queues I'm a member of" is usually the default one. Unfortunately, in our case, we do not have private Queues, so the users are not members of any queue. We use public queues, because all queue items should be visible to all users.

We asked Microsoft if this can be changed and the response was negative. It is in the code and it would be too dangerous to change this.

So if you have a similar scenario, keep this in mind.


New CRM online preview

Microsoft Dynamics CRM 2015 - Update

We have got an access to the preview of new CRM online.
It looks very nice and I am going to post some updates about it later. For now, you can watch this video:

Monday, March 16, 2015

Edit mapping in CRM 2013/2015

How to do a custom field mapping in CRM 2013/2015

I have been doing some more customization of Quote products and Sales Orders products  entities in CRM 2015.
There have been several fields added, so of course we needed to map these fields. In CRM 2011 we had a workaround for mapping in the hidden relationships and it was based on this article:

Now with the new versions of CRM we tested that it is still working.
I was not able to use the URL taken from existing views in the CRM system, but the old URL still works, so even in the new version of CRM we can use link in this format:


I just noted, that when I search for the relationshipid with this link SERVER URL/XRMServices/2011/OrganizationData.svc/EntityMapSet() I could not user Internet Explorer 11, because it was trying to get some feeds from there. So I had to use Chrome.

I hope this will be helpful,

Thursday, March 12, 2015

Goals in CRM - owner vs. manager

Goals in Microsoft Dynamics CRM - owner and manager fields are different

Recently I have come across a fact, that fields Owner and Manager are different from the fields of the same names in other CRM entities.

What I mean?

Goal entity contains two lookup fields that are connected to the users or to the teams - these fields are called Goal Owner and Manager.

Goal Owner - goalownerid is a lookup, where user can fill in a team or system user. So this is the same behavior as an ownerid field in other user-owned entities.

Manager - ownerid is a lookup, where user can fill in only another user. So this behavior is different from regular ownerid field in other user-owned entities.

As you can see, eventhough there is an ownerid field on Goal entity, it is not normal Owner field. And same for the Goal owner field - it is not regular owner field.

I am not sure why Microsoft implemented this in such a way. This must have been some workaround or mistake during development.

However, let me explain what this means for further configuration.

We have tried to setup some goals which are assigned to the teams. So we set the Goal owner (goalownerid) to the specific team.
Manager is then some other user, who is controling the goals.

After the goals are properly set up, we wanted to created a new view where we want to display the goals of the team that the current user is member of.
For regular entities you can do this quite easily. Just go to the views, select filtering criteria and select Equals Current User's Team.
Here is an example of such condition for Opportunities.

Opportunity - Owner - Condition
Opportunity - Owner - Condition

When we tried to do the same for goals, we realized, that we are not able to set such a condition, beacuse the CRM UI does not include it for goalownerid field :-(
The system simply does not work with this field as an owner field, but it thinks it is regular lookup to user.
The condition for Goal owner looks like this:

Goal - Owner - Condition
Goals - Owner - Condition

On the other hand, the field Manager (ownerid), where you can insert only one single user has these conditions available:

Goal - Manager - Condition
Goals - Manager - Condition
This is really strange, isn't it?
So after some testing and trying, we realized, that the only way how to create the desired view is to modify the customization XML. To make it very simple, we have defined the filtering condition which we needed for the Goal Owner field for the Manager field instead (eventhough it does not make sense, because there cannot be a team in that field).

Then we exported the customizations and searched for the view in there.

It looks like this:
              <grid name="goals" object="9600" jump="title" select="1" icon="1" preview="1">
                <row name="goal" id="goalid">
                  <cell name="title" width="200" />
                  <cell name="targetstring" width="150" />
                  <cell name="percentage" width="150" />
                  <cell name="actualstring" disableSorting="1" width="150" />
                  <cell name="inprogressstring" disableSorting="1" width="150" />
                  <cell name="metricid" width="150" />
                  <cell name="parentgoalid" width="150" />
              <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
                <entity name="goal">
                  <attribute name="title" />
                  <attribute name="targetstring" />
                  <attribute name="percentage" />
                  <attribute name="actualstring" />
                  <attribute name="inprogressstring" />
                  <attribute name="metricid" />
                  <attribute name="parentgoalid" />
                  <order attribute="title" descending="false" />
                  <filter type="and">
                    <condition attribute="statecode" operator="eq" value="0" />
                    <condition attribute="goalownerid" operator="eq-userid" />
                    <condition attribute="goalstartdate" operator="this-fiscal-year" />
                    <condition attribute="goalenddate" operator="this-fiscal-year" />
                    <condition attribute="ownerid" operator="eq-userteams" />

To get the desired condition we need to replace the row with this:
<condition attribute="goalownerid" operator="eq-userteams" />

Then save the customization file and import it back.
The view will show the correct results, but be carefull, never modify this view in CRM gui, or you will loose this modification.

In this post, I have screenshots from CRM 2015, but the same behavior is for CRM 2011 and 2013 as well.

I hope this helps.