Monday, August 30, 2021

Power Platform Customizable Help Pages

Model Driven App customizable help allows us to host our help contents in a website (can be SharePoint or any other preferred hosting option). 

To know more about customizable help please read here


Default help button takes users to Microsoft Documentation for Dynamics 365, which is helpful for a implementation which are inline with default capabilities and features. However most of the times we work with projects which are tailored to customer business process.

This help documentation is not so useful when there is a client specific customizations and users require to refer to user guide to know more about the implementation. Unfortunately the user guides are rarely updated & subsequent changes or updates are to be distributed to end-users whenever there is an update. 

What can be done to keep user guides updated with minimal effort, maintained within Dynamics and easily available to users with contextual help. That's where customizable help comes handy. Basic idea is to store the user guide within Dynamics which can be retrieved and shown in a web resource and URL of web resource can be used as customizable help URL.

I have tried to design a basic help storage entities within Model Driven app, which can be configured for contextual data like which entity, what context (weather help is requested from a form) and language.


Rich Text editor allows us to easily copy or create help contents with images etc hosted internally within Dynamics. 
If your project has existing User Guides in word or pdf it can be easily copied and pasted into the Rich Text field.

A Web Resource which retrieves help content based on the URL params in the customizable help feature. Sample web html here

Unmanaged solution for this help implementation is available here

Once imported, Customizable help can be configured in Power Platform Admin center, under Environment Settings -> Features.

Enter Global custom help URL as "/WebResources/helpcc_helppage.html" and enable Append parameters to URL.


Help Pages can be configured by navigating to Help documentation App


Create Help content



If everything is configured correctly as above, clicking help button will take you to help page as per context.


This allows business analyst or consultant to maintain the user guide with latest version. This solution allows us to expand the concept to required horizontal leveraging on power platform capabilities like "Approvals", Versioning etc., as required.




Tuesday, January 7, 2020

GrapesJS Editor - A PCF control for creating HTML content

Hello there,

My Second PCF Control which is based on ideas from PCF Gallery, please meet GrapesJS CMS Editor a PCF control to create HTML content for multi-line text fields.

Possible use case that i could think of would be to create a New letter from CRM and send it via Email.

Please Refer below Image on how to add the custom control into your form



Sample Email Editor Screen is as below


Sample Email Received:

Source Code can be found here, CRM Solution can be found here

Users can add flip switch control and PBL to showhide default and custom PCF as required in Modal Drivern Apps. That way both email editors can be used as needed.

Guides for Power Apps Components Framework which helped me out are below
  1. Microsoft Docs
  2. PCF Gallery

Please add issues directly to GitHub to help track and fix



Tuesday, November 26, 2019

My First PCF Control - Activity analyzer (using Chartjs)

After a little deepdive and with help of PCF Gallery I was able to create my First PCF control, meet Activity Analyzer a humble PCF Control which shows activity subgrid in doughnut chart. 

With limitless possibilities with PCF control this humble can be grown into hulk. 

For all the fellow Dynamics CRM developers, PCF would be easy to pickup if you have worked on HTML, JS based webresources. Initial trouble i had is with TypeScript which is new to me but was similar to Javascript.

Please Refer below Image on how to add the custom control into your form



Parameters for the Control are as below
  1. View Used : Current View to which the control is added
  2. Activity Names: Names of the activities to be displayed in Chart
  3. Activity Color: Color code for the activities mentioned in param 2.
  4. Chart Type: type of the chart to be displayed (e.g.: pie, bar, doughnut, etc)
  5. Chart Title: Title of the Chart to be displayed.


Source Code can be found here, CRM Solution can be found here

Guides for Power Apps Components Framework which helped me out are below
  1. Microsoft Docs
  2. PCF Gallery


Tuesday, March 13, 2018

Dynamics CRM User Settings Solution

HTML based Dynamics CRM user settings utility which will help to Administrator to set the User settings for Dynamics CRM Users.
This tool was inspired by User settings Utility in Xrm Toolbox, when we hit a limitation that Executable cannot be run in the client environment and there was a 2FA authentication required. This caused me to develop this built in Dynamics CRM html component which can be run from CRM to control the user settings.
You can download the solutions from here

You can view the Source code here in Github


How do i Run this rool?

  • This is an un-managed solution, so you can follow the regular steps to install the solution.
  • After Installation and publishing the components refresh the page.
  • Navigate to Settings->Solution, you can see the User Settings Utility button in the ribbon as below

  • Click on the button to open the user settings utility. Left pane will be the list of users, right pane will be the personal settings option that can be modified.

  • Once user is selected from the list, user settings will be retrieved from CRM and shown. Administrator can modify the settings as required and click on save to update the settings back to CRM. 
  • Multiple Users can be selected from the list of users, and bulk update the values to the selected values from the list of options. If no change is intended for the options then Option  "No Change" can be selected.


Friday, December 16, 2016

Dynamics CRM Modules Explained - Episode 4

We were looking through the Service Module of the Dynamics CRM in the  previous post and other modules in before posts Episode 12.

Service Calendar:


It is similar to the calendar in outlook, just that it helps to view all the scheduled services for the resources in a Day, Week & Month view. User can add an service activity, Appointment, Reschedule/ Schedule a service, resolve conflicting services which takes place in same time with same resources.


Service Level Agreement

SLA is one of the best features of service module which helps to keep track of the case being solved/responded and necessary actions being taken in the agreed time. SLA can be utilized to track performance of the service person & can help Managers to know why a single case would be open for a long long time.

Case Routing

Case can be routed to Service person's according to the configuration of the company and this process can be automated. we will discuss detail on this topic in upcoming posts.

Case Resolution

Case can be resolved along with time spent on the case by the sales person, Case resolution details are being captured & if required a closed case can be re-opened or a child case can be created on the case when required scenario occurs.

Thats all for the modules of the CRM in brief!!.

In the next posts we will be talking on the basic configurations (Settings Module) that are available in the Dynamic CRM along with examples (No coding one's ) following by extending Dynamics CRM

Dynamics CRM Modules Explained - Episode 3

Recap:

So far i have tried to explain the basics of each module of Dynamics CRM and we have got a chance to read through Marketing and Sales Module. if you directly got here then i recommend you to read the first two series of blogs Episode 1 & Episode 2 before going to this.

Service Module

Service module in MS CRM deals with maintaining post sales service of the business, so when you get a product (e.g. Television) you will get a warranty,which will be dealt by the service personnel in the product company upon repair or troubleshoot installation as per the agreed warranty. Exactly the same is what the service Module is dealing with.

Service module has few main entities and concepts as below:
Case entity, is the main entity of the Service module around which all the functionalities are built.

When a customer calls to a call center or walks to a service center then want to rise a complaint on the product/service he purchased, Service center agent can rise a complaint (Case) in CRM. Case Table consist of details like customer, case description, and previous similar cases, subject and Articles that related to this subject. Entitlement that is available for the customer. Any ongoing other cases for the customer. Let us take a look deep into the case.


Entitlement/Contract

Any warranty or service maintenance agreement between the seller and customer is mainly maintained in Entitlement/contracts, so basically entitlement says something like how many cases solved/ how many hours can be spent on solving in a given validity of the agreement. when a case is created for the customer based on the configuration of the entitlement the remaining number of cases/hours of service is reduced accordingly.

Queues

When multiple Sales person working on the service center, Queue helps to assign/pick up cases from it once the service personnel is available. A case can be routed to a queue automatically based on configuration in MS CRM.


Articles/KB Articles

Articles are the known issue resolution guides which can be updated when a new issue is encountered and tagged to a particular subject. Thus when a similar case arises from future then the resolution can be used to solve the same. Article can be self help guide which can be emailed or can be published in the self help portal in MS CRM. New Articles entity supports html formatting and rich content editor.

Services

Service is the type of service package that is offered and it explains what will be covered in the service and terms of the service offered. for example when we buy a New mobile the warranty usually goes like this phone is 12 months warranty for internal part failure and manufacturing defects, any issues occurring with manual handling will not be covered. Thus the mobile warranty service is a Type of service that will cover only manufacturing faults and internal part failure within the stipulated time.

Service usually need resources, like to repair a mobile we need resources like Service person, Tool set, Repair station which need to be scheduled. In Dynamics CRM service offered by company can be configured and required resources can be added to it. thus it will help in scheduling the service which will take up and schedule required resources.

Rest of the service module in next post!! 

Till then cheers!!

Thursday, December 15, 2016

Migrating apps from Microsoft.Xrm.Client to Microsoft.Xrm.Tooling

Original Post is here

Today I had a task to migrate couple of apps that used Microsoft.Xrm.Client assemblies to new Tooling assemblies. In this article I will describe steps to use to migrate your own apps to use latest (and recommended) tools to connect to your CRM Instances from code.
Let’s assume that we have an application that uses Microsoft.Xrm.Client assembly to connect to CRM and it stores connection string to CRM in app.config file as it shown on following screenshots:
App1
App2
Also I assumed that NuGet (and not your local hard drive) was as a source for referenced assemblies. To start migration open “Manage NuGet Pakages…” dialog:
App3
Update (if it is required) SDK assemblies to use latest versions available:
App4
Uninstall Microsoft.CrmSdk.Extension package:
App5
Install latest tooling package:
App6
After all operations list of your NuGet packages should look like following:
App7
Following change should be applied to code – removal of references to namespaces Microsoft.Xrm.Client and Microsoft.Xrm.Client.Services and changing of code for getting of service instance from
to
with adding of reference to Microsoft.Xrm.Tooling.Connector namespace.
Don’t forget to change your connection string according to this article.
If your code throws exception like
An unhandled exception of type ‘System.TypeLoadException’ occurred in Microsoft.Xrm.Tooling.Connector.dll Additional information: Could not load type ‘Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior’ from assembly ‘Microsoft.IdentityModel.Clients.ActiveDirectory, Version=3.13.8.999, Culture=neutral, PublicKeyToken=31bf3856ad364e35’.
open installed NuGet packages and downgrade Microsoft.IndentityModel.Client.ActiveDirectory to 2.28.3 version:
App8
After that your code should work fine:
App9