Programming in C#: Exam 70-483 (MCSD) Guide – Available for Purchase

It took some more time than previously estimated however we are glad to announce that the book is now available for purchase.


Please find mentioned below the links where it is available



I would like to thank the entire publication team from Packt, my college batch-mate Jasvinder who worked tirelessly during the review cycle of the book and my co-author Madhav without which the book would not have been possible. Thanks everyone!




Power BI – Tip for Completely hiding hover text

In our last engagement we had a requirement to completely hide the hover text in a Power BI report.

In Power BI, we can disable the hover text by setting the Tool-tip property to No.

Mentioned below screenshot shows how the hover text looks with Tool-Tip property set to “Yes”. Please note that most of the data / columns in the report have been deliberately hidden.

Hover Tip

If we mark the Tool-tip as “Off”, we get the following result


Hover Text

Review that even though we don’t get a Tool-tip with the values in different fields, we still get a hover text on the control.

If we want to completely remove the hover text as well, we can do it by following the mentioned below steps

a) Set the Tool-tip property back to “Yes”.

b) Set the transparency to 100%.

Tooltip to 100.png

Save the report. Now when a user tries to hover over, there wont be any tool-tip present.

Use Color Codes from Option Sets in both Dynamics 365 charts and Power BI

A really good blog which we can use to control the chart colors in Power BI based upon the option set color codes configured in Dynamics. 

Using the blog, we can set the color each record will occupy in a table view in Power BI based upon the value in its corresponding option set field.

crm chart guy

Option Sets in Dynamics 365 has a setting for each value to specify a color code. This color code is used in the new Unified Interface in the entity specific dashboards. This is a welcome addition as it makes it more easy to persist colors to a specific value and have it be consistent throughout the charts and visuals.

option set color code to UI entitiy dashboard

With the August 2018 release of the Power BI Desktop client, we can now also do conditional formatting based on a field with a color code in Power BI reports.

power bi option set color value

Since we can query option sets directly, and get the color code into the Power BI dataset, we can now use the same color scheme more easily between the two solutions. As the option sets are queried, any updates to values, labels, and color codes in the option set, will automatically update on the Power BI side as well.

For querying…

View original post 59 more words

Book First Look – 70 483 Programming in C#

Happy to release the first look of the book 70 -483 Programming in C#. Hopeful about the official release of the book in September this year.

Very thankful to my co-author Madhav and the entire team of Packt for there help during the making of this book. Also thanks to all my colleagues in KPMG for supporting me in this endeavour.


Book Review – The Art of CRM

Just wanted to share a book which i think has been written with great insights to everyday problems which we face while working in CRM.

I happened to read the book during last 3-4 weeks and i think its an excellent read. I think the author has really done a great job in explaining the issues / problems / concepts which we encounter daily while working in CRM. There are also some very good case studies which will provide great insights on different CRM implementations. I think the book bonds well for all set of CRM users irrespective of there roles in the projects. I also felt that for any person who is new to CRM would greatly benefit by reading it.

In all I think its an excellent read.


Dynamics / Click Dimensions – Tip for handling Potential Data Quality Issues

On many occasions we rely on external ISV’s such as Click Dimensions for marketing any event happening in the organisation from Dynamics.

One issue that we often face is how to ensure data quality of the contacts being created in Dynamics from such ISV’s.

For example in one such instance below, we are using Click Dimensions to capture registrations for a contact in Dynamics.

Registration Updated.PNG

Now the challenge is, when it comes to mappings,  Organisation is a lookup in Dynamics but in the Web Content , we can only expose it as a free text. This can cause potential data quality issues, as if the name of organisation does not exactly matches the name in Dynamics , it will not link the Contact with the Organisation.

A potential solution would be to create a custom workflow assembly and follow the mentioned below steps

a) On the Web Content add a mandatory field of Organisation Web Site. In the formatting, using Regex expression, section ensure that users enter the web address in a predetermined format. In the below screenshot, we are doing a custom regex to ensure that no relative paths are present in the URL. This helps us in identifying the parent organisation better.

WebSite Formating.PNG

b) Write a custom workflow on create of contact, and do a lookup on the existing organisations present in the system. If we find a match on the web site link the organisation to the registered contact.

c) Finally to keep organisation web site data clean in Dynamics, enable duplication detection rules in Dynamics.





Dynamics Portals – Error on Entity Form Multiple Controls Same ID were Found

While configuring the entity form in portal we were getting an error “Error in Creating Control ID, as multiple controls with the same ID were found.

After analysis we found that when a lookup attribute in Dynamics is rendered in portals, there are three separate controls . One for the ID, one for text and one for entity name. For example, if the attribute name in Dynamics is “abcd_entity”, when the control is rendered in portals it will have the mentioned below controls

a) abcd_entity_name – For text part of the lookup attribute

b) abcd_entity_id – For ID part of the lookup attribute

c) abcd_entity_entityname – For entityName of the lookup attribute

In my case the control ID “abcd_entity_name” was conflicting with the name of an existing optionset attribute in Dynamics. This was causing duplicate ID’s in the system and was this causing the error on the portal.

When we recreated the optionset attribute so as to give it a different name, the above error got resolved.

.Net / C# Waiting for Multiple Async Responses

While writing programs we can often come across situations when we must wait for results from different asynchronous calls. This is required when the processing is dependent upon multiple responses from external medium like web services. Lets look at the mentioned below code example

public async Task ExecuteMultipleRequestsInParallel()
    HttpClient client = new HttpClient();
    Task google = client.GetStringAsync("");
    Task bing = client.GetStringAsync("");
    Task yahoo = client.GetStringAsync("");
    await Task.WhenAll(google, bing, yahoo);

In the above code , we are executing asynchronous calls to different servers. Suppose we must wait for output from all of them before we can proceed ahead we can use the statement “WhenAll”. This will ensure that the compiler will wait for responses from all the three asynchronous calls before the processing can move ahead.

.Net / Dynamics – Handling Unmanaged Code With “Using” Block

Just wanted to share a coding tip which can help in improving the performance of .Net applications. As Dynamics custom code is build on .Net its helpful in that space as well.

In .Net we can have both unmanaged and managed code. For the sake of keeping the blog short, we will not go into difference between them however, a managed code in dot net is the one in which CLR or “Common language Runtime” automatically reclaims the memory while for unmanaged code such as “SQL Connection”, “File IO Operation” objects CLR does not automatically does that.

In Dynamics, OrganisationServiceProxy object is an unmanaged code resource.

If we are using unmanaged resources, unhandled  exceptions can be very harmful. They can lead to issues related to dangling memory, unclosed connections to file objects etc.

For example, in the above example where we have written a “Dispose” method to free up the memory. Suppose there comes a scenario, when the application throws a scenario before the “Dispose” method is called. In such scenario, the application will never have a chance to reclaim the memory occupied by the unmanaged resources.

To avoid such scenario’s C# provides us a feature of using “Using” block in our code. When we use the using block, whatever happens inside the using block, the dispose method is always called. Lets understand this with the code implementation mentioned below

using (DisposeImplementation d = new DisposeImplementation())

Review that in the above code block we are using a class “DisposeImplementation” inside the using block.

We are not explicitly nullifying the object d, to indicate the garbage collector that its no longer needed. Also we are not explicitly calling the Dispose method to free up the unmanaged resources.

However as soon as the program will go out of scope of the using block the dispose method for the unmanaged code will be called and memory will be claimed back by the compiler.