Dynamics 365 Bootcamp in Zurich

I forgot to invite you at Dynamics 365 Bootcamp in Zurich, next Friday and Saturday (June, 8th – 9th, 2018).

we can meet and talk about technologies, Microsoft Dynamics 365 and more, more, more…

or you can follow my speech 🙂

See you next weekend

Ops.. the link 🙂 http://365saturday.com/dynamics/zurich-switzerland-bootcamp-2018/


MB2-716: Customization and Configuration

Today I passed the Microsoft Dynamics 365 exam on Customization & Configuration (MB2-716). I just would like to share the preparation tips that I’ve done to get this certification nailed down.

Note: You will not find any question that related to the exam here and I won’t give you any of it, as it is part of the NDA.

Source #1: Dynamics Learning Portal

Source #2: Revision Notes

Another source that is really helpful to help me passing this exam is Neil Parkhurst’s revision notes: https://neilparkhurst.com/2016/07/14/mb2-712-certification-microsoft-dynamics-crm-2016-customization-and-configuration-revision-guide/. The content is for Dynamics CRM 2016. However, 80-90% of the content is still applicable for Dynamics 365.

Source #3: Hands on Experience

As the wise man says “Experience is the best teacher”, hands-on experience with the system is a must!

So, without breaching the NDA, below are the topics (not exhaustive and I’m not covering all topics here) that I hope would help you to prepare for the exam:

… now enjoy the training and good luck!!

Dynamics CRM 365 App for Outlook permission error

Today I received an error on my outlook when I tried to open Dynamics 365 from Outlook:

“We’re sorry

We are unable to show Dynamics 365 App for Outlook because current user role does not have required permissions. Please contact your administrator to have required security role assigned to the Dynamics 365 App for Outlook solution.

Activity ID: 06d17b42-05a5-4a0d-802c-d5706678f455 Date: Wed, 07 Mar 2018 13:10:23 GMT Error: Don’t have permissions to retrieve AppforOutlookModule id, request failed Trace: Error: Don’t have permissions to retrieve AppforOutlookModule id, request failed at Anonymous function

After some test, I found that my security role was wrong.

For App Entity I need to have Create, Write permission!

After this update, all is working fine.

Generic SQL Error – RetriveMultiple with ConditionOperator.Contains in CRM

Today someone “me” wanted to change the requirements of the wrap I have over the CRM web services so I could reuse the method more often, but to do so I need to transform the method more standard. So I changed the ConditionOperator.Equal to ConditionOperator.Contains. But was giving me an error “Generic SQL Error” while using in the ConditionExpression. The requirement was to get all the records from an entity that contains a specific field with a certain attribute value.

Before, using Equal:

Microsoft.Xrm.Sdk.Query.ConditionExpression condition = new Microsoft.Xrm.Sdk.Query.ConditionExpression(FieldName), Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, AttributeValue);

After, using Contains: You need to add % to the attributevalue but don’t work if the table or indexed view is not full-text indexed, therefore you need to use Like.

Microsoft.Xrm.Sdk.Query.ConditionExpression condition = new Microsoft.Xrm.Sdk.Query.ConditionExpression(FieldName), Microsoft.Xrm.Sdk.Query.ConditionOperator.Contains, “%”+AttributeValue+“%”);

After, using Like: You need to add % to the attributevalue

Microsoft.Xrm.Sdk.Query.ConditionExpression condition = new Microsoft.Xrm.Sdk.Query.ConditionExpression(FieldName), 
Microsoft.Xrm.Sdk.Query.ConditionOperator.Like, “%”+AttributeValue+“%”);

MSCRM365 Hide Warning notification in the Email.

Before to start with this post I have to say that this is AN UNSUPPORTED solution! Think about that before to use.

Now I can start to explain: I created an email template with style and script tags inside. In MSDCRM365 emails that are seen as an unsecure email and we have a yellow message notification in the body.

That is not a problem because the mail is sent but there is a “bad yellow” notification on the body:

The way to do that is to comment the Javascript code inside the formcontrols.js file in the Microsoft Dynamics CRM codes:

$get(‘WarningWithOpen’, this.$v_2).style.display = ‘block’;

$get(‘WarningWithOpen’, this.$v_2).style.display = ‘none’;//robm 12-08-2016 ‘block’;

(change all the occurences)

And add the following row in the AcrivitiesWallContent.css.aspx file:

.emailnotification {display: none;}




What’s being Deprecated in Dynamics 365 Version 9

What’s being Deprecated in Dynamics 365 Version 9

In this post you can find what Microsoft is deprecating in CRM features:

  • Dialogs are deprecated

Dialogs are now being deprecated and can be replaced by using Business Process Flows or the new Mobile Task Flows. Dialogs were introduced by Microsoft starting Dynamics CRM version 2011.

  • Standard SLAs for Customer Service are deprecated

Service level agreements (SLAs) are a formalized method to help organizations meet service levels when they provide customer service and support. They are being replaced by Enhanced SLAs.

  • Mail Merge is deprecated

Mail merge had many limitations and was cumbersome to use. Instead the new Word Templates functionality can be used.

  • Outlook Client is deprecated

Outlook Client should be replaced by the new Dynamics 365 App for Outlook.

  • Relationship Roles are deprecated

Relationship roles should be replaced by Connection Roles.

  • Silverlight (XAP) web resource is deprecated

HTML 5 should be used instead of Silverlight in web resources.

  • Email Router is deprecated

Email router should be replaced with server-side synchronization feature. This feature is easy to use and configure.

  • Service Scheduling using the Service Activity is deprecated

Service Scheduling using the Service Activity should be replaced by Unified Resource Scheduling included with Dynamics 365 for Field Service.

  • Parature is deprecated

Parature can be replaced by Knowledge Management feature.

  • Announcements are deprecated

Announcements never really provided any value within CRM and will be deprecated.

  • Some of the Client APIs are deprecated

Some of the Client APIs are deprecated in the current release to reorganize the Xrm client API object model to better align with the need of using the same client scripts without having to change them based on the context or the client (web client or the new Unified Interface) where they run.

  • Contracts, Contract Line Items and Contract Templates are deprecated

This has been replaced by Entitlements in Dynamics 365 for Customer service.

MSCRM – Default entities and status code

Today I want talk about Status and Status Reason. Status and Status reason are both optionsets. Option set have an int value and a text value. The text value is meta data and the int value is held in the database on the database field.

Default entities have two status values

• Active = 0
• Inactive = 1

Status reason have different default values:

Status Reason
• Active = 1
• Inactive = 2


Microsoft MVP 2017/2018 – Business Solutions – Dynamics CRM

I am proud to announce that I just received my 2nd Microsoft MVP Award for my focus in Business Solutions – Dynamics CRM.


I would like to thank my employer which is supporting me in the best possible way year over year, my current and former colleagues, the Microsoft MVP community and of course Microsoft employees in Redmond and all over the world.

#CRM2016 – Get all teams by user in C#

public Microsoft.Xrm.Sdk.EntityCollection UserTeams(Guid UserID)

    QueryExpression query = new QueryExpression("team");
    query.ColumnSet = new ColumnSet(true);
    LinkEntity link = query.AddLink("teammembership", "teamid", "teamid");
    link.LinkCriteria.AddCondition(new ConditionExpression("systemuserid", ConditionOperator.Equal, UserID));

      return service.RetrieveMultiple(query);
    catch (Exception ex)
       // Do your Error Handling here
       throw ex;