Thursday, May 28, 2015

How to remove locked fields from Microsoft Dynamics CRM

Removing unwanted fields from forms

Sometime you would like to remove system fields from the form which are locked. Field lock is the property you can change on custom fields or on the field.

However, there are some fields which are locked on the form even though this property is not checked.
Most of these fields are system fields and are on the case form. So what should you do when you really want to remove these fields from the form?
  • You can hide them using the Visibility switch or by creating a business rule.
  • You can also move the unwanted fields to the section which is hidden (not Visible by default).

But what if you really do not want these fields on the form?


There is a small trick how to remove them completely.
I create a two column tab, then put all the unwanted fields in the second column. Like this:

Then open the Tab properties and switch the tab to one column. Like this:

Then you the unwanted fields are removed and you will get empty tab which can be deleted.

But please be careful, because you may encounter this error when you do this.

So good CRMing,
Michal

Friday, May 22, 2015

CRM 2015 Update 1 - Parature integration

Integration with parature in CRM 2015

You may have already noticed - there is a new configuration area in the Service management of CRM 2015 Update 1, as well as a new Tab KB RECORDS in the Social Pane on the CASE form.
If you have not configured Parature integration yet, you will see Knowledge Base Management hasn't been set up.

In the configuration area it is called "Set Up Knowledge Base Management".

Set Up Knowledge Base Management

Here you can actually integrate CRM with your Parature instance and make the tab on the case form work. It will be searching the knowledgebase from the case form.
Parature configuration
Parature configuration is very similar to the Sharepoint integration. It is good that Microsoft keeps all these settings similar :-)

But what if you don't have Parature and you do not want to have the extra useless tab on your CASE form?

How to remove it?

Well, you have several options how to do it. You can use the Javascript to hide the extra tab.

Personally I find the easiest way to delete the component
You can go to Customizations and edit the form. You will see a component "Conversation tab".

Remove this component.
Then it is gone, but also the activities and notes. So you need to add the Notes component back, that will include the posts and activities as well.
However, it does not allow you to put back the KB RECORDS Tab.

How to add it back to the form?

You can add just the KB RECORD component to the existing form. You will find it in the ribbon (last button on right):

So, that will add KB search in the separate component. If you want to put it back into "Social Pane" the only way in the CRM UI how to do it is to create new form for the case entity. New form automatically includes this component.
I would also suggest to backup the customizations of the case entity before you start playing with this, because that will help you with restoring the KB RECORD tab later if you need it.

Enjoy the CRM!
Michal


Tuesday, May 19, 2015

CRM 2015 Update 1 - Automatic record Creation and Update

Automatically create new records, not just cases

Since CRM 2013 SP1 we had the ability to configure automatic rule that creates cases based on incoming email or social activity.
This worked very nice and in the latest update, this feature was enhanced even more.

Now you can configure the rule to create new records of any type, not just cases.

Automatic record creation


As the source record, you can use the common activities:
  • Email
  • Social activity
  • Task
  • Phone call
  • Appointment
  • Service activity
  • Custom activity
These activities can be converted to any default (system) entity records or custom entity records. For example, you could create a lead, opportunity (system records) or incident (custom record) from an incoming email.

Capture data from external sources

You can also capture additional valuable customer information provided by an external application in the form of JSON (a collection of name-value pairs) and use it to enhance the quality of the target records and set various conditions in the record creation and update rules.

These activities have an Additional Parameters attribute:
  • Email
  • Social activity
  • Task
  • Phone call
  • Appointment
  • Service activity
  • Custom activity


This attribute stores the JSON payload received from an external application.
Be aware, for example Fax, Letter, Campaign activity or campaign response do have this field even official documentation states otherwise.

To capture this information in CRM, you can define channel properties and associate them with a particular rule or share them across multiple rules of the same source type. For example, along with a social post, you can capture important information about the post such as sentiment value. Sentiment value is the property of social activity, so you can use this property in any other record creation and update rule of type Social Activity. .

Here's the correct format in which CRM should receive JSON payload (data received as name/value pair in JSON format) from the external application:

{“PropertyName1”:”Propertyvalue1”; “PropertyName2”:”Propertyvalue2”}

Note 

Any configuration done in the channel properties is only valid if those name value pairs exist in the JSON payload. Also, you must only use parameters received from the external application in the rule item conditions and as record properties. 

Activate or deactivate a rule

For any records creation and update rule to apply to a matching incoming activity, after you add the rule items, you must activate the rule.

How does record creation and update rule work with queues?

In a record creation and update rule, when you specify a queue for a source type, any incoming activity from that source is added as a queue item for that specified queue. That is, if a rule for a particular source activity and queue combination is active, the rule processes the incoming activity on that queue to create or update records.

For an email source type, specifying a queue is mandatory (although the field is not marked as mandatory, the error appears when you try to activate the rule). For all other source types including custom activities, it is optional.

Rules in solutions

The record creation and update rules can be packaged as a part of a CRM solution. Customizers and developers distribute solutions so that organizations can use Microsoft Dynamics CRM to install and uninstall the business functionality defined by the solution.

Keep the following things in mind about using rules in solutions:
  • Any new rule that you created in Microsoft Dynamics CRM Online 2015 Update 1 can't be exported to an earlier release.
  • Any rules upgraded to and edited in Microsoft Dynamics CRM Online 2015 Update 1 can't be exported back to an earlier release.

Why is it called Creation and Update?

This feature can not only create a record, but it can also update existing records.
The primary action area can only contain one step - record creation. It is optional. You do not need to create any record.

When the rule is activated, it can update the related records. You can update the sender record (when originating from email) , you can also update whatever entity you expect to have in the "Regarding" field.
It works like the workflow.

When I was setting up my rules, I have received error like this:
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #F0AC6BEADetail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220970</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #F0AC6BEA</Message>
  <Timestamp>2015-05-18T11:21:12.8868194Z</Timestamp>
  <InnerFault>
    <ErrorCode>-2147088140</ErrorCode>
    <ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
    <Message>Error occured during activating Convert Rule.Please check your privileges on Workflow and kindly try again or Contact your system administrator.</Message>
    <Timestamp>2015-05-18T11:21:12.8868194Z</Timestamp>
    <InnerFault i:nil="true" />
    <TraceText i:nil="true" />
  </InnerFault>
  <TraceText i:nil="true" />
</OrganizationServiceFault>


The resolution is quite simple, there is an error in the Record Creation and Update Rule Item, so check the items and look for errors in the Actions area.

So next time,

Michal

Monday, May 18, 2015

Lead not able to qualify in Microsoft Dynamics CRM

Error during Lead qualification process

Hi,
sometimes it can happen, that you do some incorrect customization, although you have only the best intentions.
If you play around with the Lead qualification, opportunities, contacts and account you may want to modify also connection roles.
But, please be aware!!!!

If you (during the qualification of a Lead) start receiving error like this (valid for CRM 2013, CRM 2015 and CRM OnLine):

Error code is: 2147159520

Message: "An error has occurred. Either the data does not exist or you do not have sufficient privileges to view the data. Contact your system administrator for help."

And in the trace log, you will get something like this:

Crm Exception: Message: An error has occurred. Either the data does not exist or you do not have sufficient privileges to view the data. Contact your system administrator for help., ErrorCode: -2147159520, InnerException: Microsoft.Crm.CrmException: An error has occurred. Either the data does not exist or you do not have sufficient privileges to view the data. Contact your system administrator for help.
   at Microsoft.Crm.ObjectModel.ConnectionService.ValidateConnectionRoleObjectType(IBusinessEntity entityConsolidatedValues, IBusinessEntity entitySuppliedValues, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.ConnectionService.Validate(IBusinessEntity entityConsolidatedValues, IBusinessEntity entitySuppliedValues, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.ConnectionService.Create(IBusinessEntity entity, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.LeadService.CreateLeadParentContactConnectionIfNotExist(IBusinessEntity entity, ExecutionContext context, BusinessEntityCollection connections, BusinessProcessObject bpo)
   at Microsoft.Crm.ObjectModel.LeadService.AddContactAsStakeholder(IBusinessEntity entity, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.LeadService.Update(IBusinessEntity entity, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.LeadService.QualifyLead(BusinessEntityMoniker leadId, Boolean createAccount, Boolean createContact, Boolean createOpportunity, BusinessEntityMoniker opportunityCurrencyId, BusinessEntityMoniker opportunityCustomerId, BusinessEntityMoniker sourceCampaignId, Int32 statusCode, ExecutionContext context)


Then you have most likely deleted the connection role "Stakeholder" from your CRM system.

So the truth is, that when you qualify the Lead, a new Contact and a new Opportunity is created and also connections between these new records are created. The new connection records use a stakeholder role. If this role has been deleted, then the qualification process fails.

Here is the picture how it looks like:

Connection roles


After you qualify the lead, there are 4 new connection records in the connection database:

  • Lead > Contact
  • Contact > Lead
  • Opportunity > Contact
  • Contact > Opportunity

Each of these records contain reference to the Stakeholder role.

The enlightenment from this is: Do NOT delete system Connection roles!!!


I hope this will save you time when you get error like this.
Michal

Wednesday, May 13, 2015

CRM 2015 Product Catalog Localization

How can Sales operations managers or customizers localize the product catalog for different regions?

The Microsoft Dynamics CRM introduced many great new features. One of them is the new product catalog.
I like the families, the bundles, the connection between the products and all other features.

Unfortunately, one great feature is not mentioned much in the official material.
It is the Localization. Microsoft says:

"Sales operations managers or customizers can localize the product catalog for different regions with localization tools."

What it really means, is that you can now have the product names translated into different languages.


Many of our customers who sell their products or services in more countries were asking for this feature, so we had to create custom fields for names and descriptions and modify the reports and the export to work with such a customization.
Now it is not necessary anymore. The product fields such as name can be translated to any language enabled in CRM.

Before you can use this feature, you need to enable more than one language in your CRM. Once you have done that, go to Data management section and click Export Field Translations.
Product Catalog Localization
Three steps to localize product names
You will get a zip file, which contains two XML files. Do NOT modify [Content_Types].xml file. Just open the CrmFieldTranslations.xml file in Excel.
The structure of the file is similar to the file for editing translations of customizations, so if you have done that, it will be very easy to use this file as well.
You can then import the translations back into the CRM in the Data management section. When you import, it is reflected automatically. No need for publishing.

As this is new feature in CRM 2015, it has some limitations:
  • So for now, you can have only product name in different languages, fields such as description or productid are not supported for translations
  • You can translate only name fields of the Product properties and Optionsets names in the properties
  • You can only translate to the languages which are enabled in CRM and the name in different languages appears after the user changes his/her language. If you do not translate to some language, then the default value is used (the one of the basic language)
So I hope, this will help you with this promising feature.
Michal



Friday, May 8, 2015

MB2-707 Microsoft Dynamics CRM Customization and Configuration

My thoughts about CRM Customization exam

Yesterday I have passed MB2-707 Exam. As its title suggests, it is about customization and configuration of CRM.

I had completed similar exams for previous versions of CRM, so I was curious about the new version.
I went through the online course, which is available for MS Partners and can be accessed here:

This course covers all the topics, but it does not go deep enough, so I also suggest to study the Administration guide for CRM 2015.
You can search for it with this keyword: CRM2015_AdministrationGuide.pdf

However, you will most likely get version 7.1 or newer. At this time the certification is based on version 7.0. The new features such as theming are not included, so you can just skip those chapters or if you want the version which fits the exam you can downloaded it here CRM2015_AdministrationGuide.pdf.

Michal

Thursday, May 7, 2015

Dynamics CRM for phones express

New update of Dynamics CRM Windows Phone 8.1 App

Today I received new version of CRM phone application. Version number in the update history i v 1.2.0.0
The only difference I see at the moment is that the name of the app changed to "Dynamics CRM for phones express".
Otherwise no visible difference in the app. In the "about" section of the app, it states the version is 1.0.5603.26714.

Michal

Wednesday, May 6, 2015

CRM 2015 - Script error on some forms

Did you receive this error?


Recently, I have been customizing some forms in CRM 2015 and I started getting this error. Mainly this was on some Case forms.
It is a Javascript type of error, which says:
There was an error with this field's customized event.
Field: window
Event: onload
Error: Unable to get property 'getValue' of undefined or null reference.

I removed all scripts and all business rules, but the error was still there.
Strange thing was, that the standard CASE form was working fine.
So I was investigating the differences between the forms. As you know, the case form contains some locked fields - such as Resolve by, First response by etc...You can recognize them in the form designer - they have red pad lock next to them.


I tried to open the forms which caused errors and add the "locked fields" to them. Then the error disappeared.
I did not want these fields on the form, so I have hidden them by unchecking "Visible by default" property.

I don't know why, but there seems to be some hardcoded script, which needs these fields on the form.

I hope this helps,
Michal