Wednesday, January 17, 2018

Dynamics 365 monthly reading list December 2017

Technical topics (Configuration, customization and extensibility)
Topics for Dynamics 365 business analysts, project managers, power users and end users

Monday, January 15, 2018

Speaking at Dynamics 365 Saturday Amsterdam

I will be delivering a session about chat bots and Dynamics 365 at Dynamics 365 Saturday Amsterdam on the 3d of February. Registration is free.
Dynamics 365 Saturday is a Technical & Strategy event organized by the community with the following credo: “Learn & share new skills while promoting best practices, helping organizations overcome the challenges of implementing a successful digital transformation strategy with Microsoft Dynamics 365”.

Searching in knowledge base articles in Dynamics 365

Knowledge base articles are a base component of the Service Management module in Dynamics 365. The knowledge base is a repository of informational articles that can be used to help customer service representatives resolve cases. Knowledge base articles can be emailed to a customer, which can be sent either through the Dynamics 365 interface or through the Microsoft Dynamics apps for Outlook.
With the introduction of the new knowledge articles entity data model (KnowledgeArticle) in Dynamics CRM Online 2016 Update 1   and Microsoft Dynamics CRM 2016 SP1 (for on premise) (Release documentation 8.1 – January 2017) , the existing entities for knowledge management: KbArticle, KbArticleComment and KbArticleTemplate were deprecated.

You should now use the newer KnowledgeArticle in your code  (See Important changes coming in future releases of Microsoft Dynamics 365), which also support versioning and translation support.
In version 8.1, these knowledge articles became visible in the interactive service hub which was revamped into the Customer Service Hub in version 9.0 (Dynamics 365 July 2017 update). The Customer Service  Hub also contains a number Knowledge Base dashboard - one with "your knowledge base articles" and one specifically for a knowledge manager (see screenshot below).

If you want to learn more about how to work with knowledge base articles, you should really take a look at Reduce call handling times with knowledge articles in the Customer Service Hub . Knowledge base articles are also directly shown in a tab on a case form (see screenshot below).

It is also possible to execute full-text searches against the new knowledge articles using the FullTextSearchKnowledgeArticleRequest which uses the following parameters:
  • QueryExpression: used to set additional query criteria and for which you also need to set the PagingInfo otherwise no results are returned
  • RemoveDuplicates: remove duplicate versions of the same Knowledge Article
  • SearchText: the text to search for in Knowledge Articles
  • StateCode: required parameter which accepts an integer for the different statuses of a knowledge article such as Published, Draft, Approved, etc…
  • UseInflection: searches for all different tenses of a verb or both the singular and plural forms of a noun. Underlying SQL full-text search is used (For more details see Searching for the inflectional form of a specific word
Code sample: searching within knowledge base articles using FullTextSearchKnowledgArticleRequest


Monday, January 08, 2018

Quick tip: finding all users with Dynamics 365 Service Administrator role in Office 365 tenant with PowerShell

Unfortunately the Office 365 Admin Portal, does not contain a predefined view to show all users who have the Dynamics 365 Service Administrator role – this role allows you to manage Dynamics 365 at tenant level (See Use the service admin role to manage your tenant for more details). But luckily you can also retrieve this information using PowerShell.

First make sure that you install the different prerequisites as outlined in Connect to Office 365 PowerShell – next open Windows Azure Active Directory Module for Windows PowerShell. To connect to Office 365, simply type connect-msolservice . Get-MsolRole will give you a list of all administrator roles. You will see that the internal role name which is listed is still "CRM Service Administrator". The last line will export all users with this role to a CSV file

 get-msolrole | select name, description  
 $role = get-msolrole -rolename "CRM Service Administrator"  
 get-msolrolemember -roleobjectid $role.objectid | export-csv d:\temp\serviceadmins.csv  

Sunday, January 07, 2018

Fix for unable to login to Dynamics CRM 9.0 with CrmServiceClient and .NET 4.7

When you try to connect to Dynamics 365 9.0 from within a console app using the CrmServiceClient, you might still encounter an error “Unable to login to Dynamics CRM” even though you have updated to the latest version of the different assemblies ( at the moment of writing).

This might be caused by the fact that you compiling against .NET 4.7 where the default value of the ServicePointManager.SecurityProtocol is SecurityProtocolType.SystemDefault (See What’s new in .NET 4.7 for more details).

If this is the fact, you might need to explicitly change the protocol to TL1.2 - which is a requirement for Dynamics 365 9.0 as announced in September 2017 in Updates coming to Dynamics 365 Customer Engagement connection security  - by adding a line ServicePointManager.SecurityProtocol.SecurityProtocol = SecurityProtocolType.Tls12

Wednesday, December 27, 2017

Bots and Dynamics 365 Part 1 : Introduction and building a Q&A bot

For those of you who want to see a glimpse of the potential of bots in combination with Dynamics 365 check out the Microsoft Data Amp 2017 Keynote (Channel 9 recording) but also some actual reference cases such as
Bots are officially a hype in Silicon Valley  and while stories like It begins – Bots are learning to chat in their own language might depict a bright future for bots due to the recent advances in machine learning and artificial intelligence, developing a good bot will still require a good design and up front thinking about how you want your users to interact with the bot.  The user experience of poorly designed chat bots will frustrate users trying to perform more complex tasks. And even when this will not become a headline such as Tay, the Microsoft that pranksters trained to spew racist comments you will still have disappointed a potential customer.  But companies which start early experimenting with chat bots, are able to leverage advances in natural language processing and artificial intelligence and a number of different bot building frameworks.  The important thing to realize is that building a bot is not so much about the underlying technology but about creating a memorable customer experience – a great example is Lemonade sets new world record which show how AI handles a filed insurance claim in under 3 seconds.

Luckily, building the underlying platform has become a lot easier and Microsoft has also made available a number of different tools to help you in designing a great experience. Microsoft not only provides the Bot Framework (publicly available since April 2016) which includes a Bot Builder SDK and Developer Portal but also launched the Azure Bot Service  in the November 2016. Azure Bot Service has been built on top of the Azure Bot Framework and provides a number of templates to get started with the creation of bots. In theory you can code your bot directly from within the built-in editor but you will probably switch over to Visual Studio afterwards as well as integrate with your source code repository by downloading the generated bot code to your local machine.

One of the basic templates which is available in Azure Bot Service to write your bot is the the Question&Answer template.  To get started you need to built up a knowledgebase with questions and answers, information which might already exists in content such as FAQs, documents,etc…  Microsoft QnA Maker  will be able to use these existing sources and provides both a web interface and REST API that trains AI to respond to user’s questions in a more natural, conversational way. I took the example of and used it as input for QnA Maker to build up a knowledge base. Within QnA Maker itself you can test it afterwards  to see how your bot reacts to specific questions.

The next step is creating a bot using the Azure Bot Service – next to the QnA template there are also other templates available – see Bot Service templates  for more details. You can start experimenting with the bot service framework at a very low cost, the free model allows you to test it out with 10000 messages/month and you will only pay for the consumption of the underlying Azure functions  or you can use the premium pricing model which provides an SLA as well as as access to premium channels. (See Azure Bot Service pricing for more details)

After the bot service has been created, you will still need to connect it to the QnA service that you published previously by filling in the QnAKnowledgebaseId and qnASubscriptionKey in the App Settings of your bot which you can retrieve from the QnA settings page.

User interact with your bot through channels, the Azure Bot service provides fourteen channels such as Cortana, Facebook Messenger, Kik but also embedded web chat.  Web chat is the channel which is enabled by default, and you can start quite quickly by just embedding an iframe in your web 

You can also use a DirectLine (not web chat) channel, and start from the source code available on  to build an embeddable web chat control which is both available as a React component and a self-contained control which is easily usable by non-React websites.

But if you really want to leverage the full potential of chat bots, you will need to integrate the chat bot channel into the core systems and data repositories of your organization such as Dynamics 365 for Customer Engagement and Service Management. From a Dynamics 365 perspective there are some interesting generic use cases for bots:
  • Customer Service – tier one support, bots can simulate 24/7 customer service representatives and act as tier one support and escalate case for follow-up by actual customer service representatives. 
  • Customer Service – appointment scheduling for servicing such as maintenance, repair, etc …
  • Lead generation - an embedded chat bot in your website can answer simple product and pricing inquiries from customers and at the same time create leads.
In a next post I will delve a little deeper into how you can integrate your bot with Dynamics 365 but you can already explore this topic yourself by looking into a number of blog series on this topic such as the series from @NishantranaCRM :
Other references:

Tuesday, December 12, 2017

Musings and rants about solution architecture, EA and consulting

The last year I have been working as a solution architect for a large European company as part of the EA team and I must say, it  has been quite an interesting experience. The vision/ideas that the other architects within EA have about software architecture made me explore a little bit on how software architecture has been perceived by the industry. During in this exploration I stumbled on a number of interesting articles that I want to share:

I also became a big fan of Eric Dietrich (@daedtech) writings – so check out some of his postings

Other architects you might also follow on Twitter include  Martin Fowler (@martin fowler) (author of a number of excellent books you should read as well) , Michael Nygard (@mtnygard)  Matt Stine (@mstine) and Simon Brown (check out his video on  Visualize, Document and explore your Software architecture). Leave a comment if you think I missed a thought leader in the software architecture space on Twitter or other blog post which you consider must reads or just interesting.