Fit Requirements into D365 Features, Not Features into Requirements

I would like to present my advance apologies if you disagree with me but give another thought about it. OK, let’s start with the conclusion first and then we will discuss in detail.

Fit Requirements into D365 Features, Not Features into Requirements

For some time, I noticed that whenever Dynamics Product team release some new cool features into D365, we start talking about them and by all means we try to utilize these new features in our next implementation no matter whether requirements need these features or not. I’m not saying don’t use new features but here my point is to do proper Fit-Gap analysis and identify whether the new feature is needed in our next implementation or not. If requirements can easily be achieved by the features which are available from CRM 4.0/2011, then go ahead and design your system using those old features. There is no harm to use them, you don’t need to impress someone who is sitting next to you. Take the accountability and trust your guts!

new-features

Example: Let me drag you into the Music industry and we will analyse through this example.

  • Every day some new songs are coming, we start listening them dozens of times a week.
    • Why? because we love it at that moment, but it doesn’t mean we will use this song for some special event or occasion.
  • We still love to listen to the songs of 90’s or older.
    • Why? because our mood wants to listen to them, even they are old but still we love it!

So, our mood and special event or occasion become our Requirements and Songs become our Features.

p.s. Ed Sheeran and Katy Perry are my recent favourites.

Advertisements

D365 v9: Limitations of Virtual Entity

Let’s first discuss the definition and architecture of the Virtual Entities. Following excerpt from Technet.

A virtual entity is an entity in the Dynamics 365 platform metadata without the associated physical tables for entity instances created in the Dynamics 365 database. Instead, during runtime when an entity instance is required, its state is dynamically retrieved from the associated external system. Each virtual entity type is associated with a virtual entity data provider and (optionally) some configuration information from an associated virtual entity data source.

Because of this, there are a couple of limitations associated with Virtual Entities.

D365-Virtual Entity

Limitations of Virtual Entities

Hight Impact:

  1. GUID (primary key) in the source system.
  2. Auditing is not supported means no track of what got changed?
  3. Dynamics Security model can’t be implemented.

Low Impact:

  1. They are read-only (which seems reasonable because its only one way pull).
  2. You can’t create an Activity type custom entity.
  3. Workflows are not triggering, even Business Process Flows are not available.
  4. Duplicate Detection is not available, so when you’re pulling data you need to implement that logic.
  5. Roll Up and Calculated Field calculation not supported.

Next time, when you are considering to use Virtual Entities try to do Pros/Cons according to the requirements you are planning to achieve. With current design and limitation of Virtual Entities, it cannot be considered for all the scenarios. In the meantime, if you found any other limitations, then feel free to write down in comments and I’ll incorporate them in the article.

Ciao!!

[Issue] Dashboard: Click on record, Opening new record

Recently, one of my colleagues faced a little weird issue. Let me try to explain the issue and then we will look for the resolution.

Issue:

In the Dashboard, an activity view is placed and whenever he is clicking on the record in the view, a new activity creation form is opening rather than the activity record form with proper data. Weird!!

Even, we tried to check it in different browsers such as IE, Firefox, Chrome or Safari, but the behaviour is same.

Dashboard-Activity-View-Issue-0

Dashboard-Activity-View-Issue-1

 

Resolution:

  • Go to Settings – Customization – Customization the System – Entities – Activity –  Views – <open concerned view>
  • Add Columns – <select any column> – click on OK.
  • Select this newly added column in view and click on ‘Remove’ button.
  • Click on Save and Close & Publish all Customization.
  • Do Ctrl + F5 and behaviour start working as expected.

Happy Hump Day!!

Dynamics 365 v9 – NOT IN support for Advanced Find

Let’s discuss all the new features of Dynamics 365 v9 updates. One of the interesting ones is ‘NOT IN Support for Advanced Find’.

Purpose of this new feature is to find all those Cases that do not contain a Task using Advanced Find.  Let’s kick in to play with it.

Go to Dynamics 365 – click on Advanced Find

Scenario # 1:

  • Look for: Cases
  • in the below pane, do ‘Tasks (regarding) = Contains Data”
  • Click on Results button.

This query will return all the Cases which have at least one Task associated with it.

D365-v9-NOT-IN-Advanced-Find-1

If you click on the ‘Download Fetch XML’, you will find the below info:

D365-v9-NOT-IN-Advanced-Find-3

Scenario # 2:

  • Look for: Cases
  • in the below pane, do ‘Tasks (regarding) = Does Not Contain Data”
  • Click on Results button.

This query will return all the Cases which don’t have any Task associated with it.

D365-v9-NOT-IN-Advanced-Find-2

If you click on the ‘Download Fetch XML’, you will find the below info:

D365-v9-NOT-IN-Advanced-Find-4

This feature is indeed very needed one. Hope it will help the D365 community in a greater good.

Dynamics 365 v9 – Multi-select Option Set

Let’s discuss all the new features of Dynamics 365 v9 updates. One of the interesting ones is ‘Multi-select Option set’.

Purpose of this new feature is to select multiple values in the option set. Let’s kick in to play with it.

Go to Settings – Customization – Customizations – Entities – Contact – Fields – New

  • Data Type: MultiSelect Option Set

All the other features are same as any other Datatype. Even Global options set is also possible.

D365v9-MultiSelect-Option-Set-1

After creation of the field, place it on the form, editable grid and view. Click on Publish All Customization. Now, let’s see how is the look and feel?

On the Form

D365v9-MultiSelect-Option-Set-2

On the View

Few things I notice on this column:

  • Sorting is not available which seems reasonable.
  • Resize of the column using resize selector not working in Chrome, but works in IE.
  • Filter option is available.

D365v9-MultiSelect-Option-Set-3

On the Editable Grid

Few things I notice on this column:

  • Group by is not available.

D365v9-MultiSelect-Option-Set-4

Show D365 Sales data into D365 Operation

The first solution comes to mind is to use iFrame and easy peasy life. But, hold on Mr. Consultant!! iFrame approach is not the supported. 😦

  1. So, the supported approach for such requirement is to use the Dynamics CRM SDK (using Web services) and show the data into the temporary tables or controls in D365 Operation or Financials. The effort of this approach is quite intense and need a good understanding of  D365 Sales and D365 Operation is needed.
  2. Another approach is using Common Data Service. Very powerful, but not very flexible. Give a try to this one first, if you got stuck then use the Option # 1.
  3. Another approach is using the pre-built Flow Templates. Easy to implement, robust and less onboarding time for a new comer. When you are working with this option, actually you’re utilizing the Common Data service at the backend.

Flow-Dynamics-365

My take on this is to go with Option # 3. FYI, I’m also learning about PowerApps and Flow at the moment, so I’ll keep updating this article with the passage of time.

Qualify Lead dialog box in Dynamics 365 Sales

One of my clients is migrating from Dynamics CRM 2011 to Dynamics 365 Sales and Qualify Lead dialog box is missing. Since this feature is not anymore available from CRM 2013 and onwards, but Client is Client and after all, they are our bread and butter. Having said that, I need to provide an intuitive and robust solution to mitigate it. So, here we go:

  1. We can select the existing contact and account directly in the lead record. If none of the value is selected, an Account and a Contact gets created.
  2. Create a new workflow/dialog, create a new custom button, on the click of button call newly created workflow/dialog from a JavaScript web resource.
  3. Create a new HTML web resource which is similar to existing Convert Lead dialog box. Create a new custom button and call your newly created HTML web resource.

If you take my advice, I would recommend going with Option # 1 as it has less effort and everything is available Out-of-box. Thanks.

Showing picture(entityimage) into CRM Online Report

Author: Zohaib Uddin Khan

Credit: For this tip & trick, thanks to Andrew Butenko

I need to prepare a CRM Online report which shows the picture of the ‘Contact’ or any other entity. The schema name for the picture attribute is ‘EntityImage’. Since I’m preparing the report for the CRM Online, so I can only use FetchXML. I used the ‘EntityImage’ attribute in the FetchXML as I used other attributes but a picture is not appearing. Further analyzing the ‘EntityImage’, I noticed that it is only returning the string data while I was expecting binary data into it.

At this point, I posted my question to the ‘Dynamic CRM’ community and Andrew Butenko provided a solution to handle this case.

Solution:

  • Create a new ‘Multiple Lines of Text’ attribute. (Make sure the maximum length)

EntityImage-CRM-Online-Report-1

  • Write an Update Plugin on the Contact entity, which will store the value in Base64. No need to write a Create plugin as a picture can only be set after the creation of the record. Following one line will convert the data of ‘EntityImage’ into ‘Base64’ string.

entity[“cewa_entityimagebase64”] = Convert.ToBase64String((byte[])entity[“entityimage”]);

  • Now, open the Report, place the image placeholder and set the values accordingly. The following line of code will do the trick.

System.Convert.FromBase64String(Fields!cewa_entityimagebase64.Value)

EntityImage-CRM-Online-Report-2

After browsing the report, you can see image started appearing in the CRM Online Report.

EntityImage-CRM-Online-Report-3.png

Report Server has RDLSandboxing enabled

Today, while uploading a report in the Dynamics 365 Online, I faced the following exception:

Report-Server-RDLSandboxing-Enabled

After clicking on the ‘Download Log File’ button, I got a more detailed exception and it informed me that ‘Microsoft.VisualBasic.Interaction’ has been referred which is not allowed in the Dynamics 365 Online (seems reasonable).

Report-Server-RDLSandboxing-Enabled-1

Since I was not exactly sure at what places I used it nor how many times were it used, so I opened the *.rdl file into Notepad++ and do the Find and replace. In this way, I removed all the instances of Microsoft.VisualBasic.

Report-Server-RDLSandboxing-Enabled-2

After removing the references to Microsoft.VisualBasic, I upload the report and it works properly. Bingo!!