Monday, March 20, 2017

Developing plugins for analysis – part IV

At the eXtreme365 conference in Lisbon, Portugal I did a session on plugin development with focus on adapting your code to empower the tracing and investigation features available in the Microsoft Dynamics 365 platform.
In this final article from that session I will dig deeper into how use the Correlation Id to trace plugin execution chains.

Missed the previous articles? Read the first, the second and the third.



The Plugin Trace Log offers possibilities to track how execution of different plugins correlate to each other. This is done by identifying log records with same GUID in field Correlation Id.

The correlation id is described in the documentation as GUID for tracking plug-in or custom workflow activity execution, with remark used by the platform for infinite loop prevention, in most cases this property can be ignored.

This means that all trace log records originating form the same request to the platform will have the same Correlation Id. That information is very valuable during plugin analysis as you can follow exactly which user action that led to which plugins executing, and which plugins that executed as a result of the first plugins, and so on.

Sunday, March 19, 2017

Developing plugins for analysis – part III

At the eXtreme365 conference in Lisbon, Portugal I did a session on plugin development with focus on adapting your code to empower the tracing and investigation features available in the Microsoft Dynamics 365 platform.
This is the third article from that session where the Plugin Trace Viewer is explained.

Missed the first articles? Read the first and the second.


The Plugin Trace Viewer

This tool in the “industry standard” XrmToolBox was created to make the potential power of the Plugin Trace Log available to anyone.


The log contains so much information that can make plugin analysis a lot easier, if presented in an intelligent way.

Friday, March 17, 2017

Developing plugins for analysis – part II

At the eXtreme365 conference in Lisbon, Portugal I did a session on plugin development with focus on adapting your code to empower the tracing and investigation features available in the Microsoft Dynamics 365 platform.
This is the second article in a series to describe the essence of that session.

Missed the first article? Read it here.


The Plugin Trace Log

The Plugin Trace Log is basically an entity in CRM. One trace log record contains details about one plugin execution.

The entity has a number of fields that describes some “hard facts” about the execution, such as start time, duration, entity and message that triggered the execution and other details from the execution pipeline.

It also contains a field called Message Block, and this is where your own custom logging information ends up. This is where you tailor your style of logging, this is where it gets interesting.

Developing plugins for analysis – part I

At the eXtreme365 conference in Lisbon, Portugal I did a session on plugin development with focus on adapting your code to empower the tracing and investigation features available in the Microsoft Dynamics 365 platform.
ICYMI: This article is the first in a series to describe the essence of that session.


I was quite surprised to see a crowd of about 60 attendants, of which most were developers already focusing on plugin development.
There is evidently a demand for the deep techy sessions at events such as eXtreme365, where most sessions have a distinctly “higher” perspective on the platform. The fact that this session attracted more people than my competitors on the technical track in this time slot (three sessions led by Matt Barbour, Roger Gilchrist and Julie Yack) makes it even more obvious – “nerdy” sessions like this are really appreciated!

Sunday, March 5, 2017

I get by with a little help from my [base class]

Developing plugins for Microsoft Dynamics 365 (CRM) only using bare SDK libraries make you do the same stuff over and over.
This is why one of the first things I did when starting to work with the platform was to create a helping hand in the form of a plugin base class, implementing IPlugin.

This class soon evolved to a library implementing our own organization service, custom file logging, encapsulate our translation and configuration management entities, and tons of other useful stuff that helps me and my colleagues develop plugins and integration services so much faster and easier than without it. Development speed aside, it makes our code more readable and easier to follow, as most of the background activities are performed in the same way.

Another benefit is that if optimizations to the backing libraries are possible, we can ship the improvements with a few simple clicks to all of our products and customer projects by just publishing a new version of our private NuGet packages, instantly available to any and all consumers.

As these libraries have evolved over the versions, beginning with Microsoft Dynamics CRM 4.0, they quite naturally contain some technical debt, which for me as responsible developer translates to bad sleeping patterns and a nagging feeling that one day I want to rip it all out and rewrite everything. In our day to day work, we improve on the libraries, but want to keep breaking changes to a minimum, which by definition can only increase the debt.


I saw the light

Monday, January 30, 2017

CRM Saturday – XrmToolBox with Jonas Rapp

CRM Saturday is a recurring event where Microsoft Dynamics CRM/365 experts and MVPs gather for a day filled with sessions from both strategic and technical perspectives on everything from user adoption to plugin unit testing to IoT and intelligent analysis.

On Saturday January 28 the event was held in London, UK at the Microsoft offices in Paddington.

As a “senior contributor” to the world famous XrmToolBox by MVP Tanguy Touzard I was invited to do a session on simplifying development using XrmToolBox.


My session covered a brief XrmToolBox background, examples of my own favorite tools, and deep dive demos of FetchXML Builder and Plugin Trace Viewer. Of course you cannot do a demo with some customizations and plugins without using a few other XrmToolBox tools, so I did not only cover my own block busters…

The presentation from the event is now available here: CRM Saturday – XrmToolBox with Jonas Rapp

This contains the full presentation, and also step by step details on the demos performed, as well as some bonus demos that did not fit the tight session schedule.

Note that the presentation also contains reference to a free to use GitHub repository with a simple plugin base class, that can be inherited instead of simply implementing the SDK interface IPlugin to greatly simplify plugin development and logging to the Tracing Service.

The repository is available here:

If you would like to dig even deeper into the tracing service, XrmToolBox and the Plugin Trace Viewer – join me on my session on this topic during eXtreme365 for Partners in Lisbon, Portugal that takes place March 13-15 2017 !


If you have any questions regarding the presentation, demo or the plugin base class, don’t hesitate to contact me!


More information on CRM Saturday:
More information on eXtreme365:

Thursday, December 1, 2016

CRM, xRM, 365, CDS – are we chasing ghosts?

Business Solutions MVP Jukka Niiranen recently wrote yet another in-depth analysis of the path Microsoft is taking from Dynamics CRM, via xRM to Dynamics 365 and the greater ecosystem including CDS, Logic Apps, Power Apps etc.

The article led to a brief but interesting Twitter-discussion between Jukka and a Swedish colleague of mine, Peter Björkmarker. The discussion ended up in another article posted on LinkedIn.

So I dug into the 140+ character reply (a bit of an understatement, indeed) to try to get a grasp of what lies ahead. I had hopes that I could come to my own personal conclusion and my own view on the future based on the new products available and the indications from Microsoft, combined with my own experience in the field. And of course trying to decode what may be hidden between the lines from this NDA-bound MVP…


Reading these articles definitely gives you a lot of insights.

But the lingering feeling I really cannot let go of is that we are chasing ghosts.

We "on the outside" try to understand where Microsoft is heading. And even an MVP for many years, who happens to be one of the most well known and respected in the field, is literally guessing what the company that dubbed him is up to.

zorro1I am trying to find a valid reason for keeping secrets this way, where is the business value in keeping us in the dark?

Is it to keep the interest alive? Like that tall dark stranger with the mask is the most interesting man at the party?

Is it to avoid leaking secrets to competitors? All of a sudden your hottest new features are released by someone else before it has passed your own UAT?

Or are they simply putting new platforms and features out there to see what happens, and take it from there?

Add some whispers in the dark, throw in a few new buzz words… Have us googling, analyzing, blogging and discussing, maintain the hype for a bit longer…


Some may call me cynical.

135000053But I have to ask myself (since there is no point asking "them")

Do they really have that Master Plan we are all trying to figure out?
Or is the secrecy simply a sales stunt?

I honestly think I would prefer it being a sales stunt.
Hiding existing information of this kind from the developer community in general and the MVP group in particular seems a bit too arrogant.

And probably even counter productive. They have a large community of dedicated partners, resellers, developers and MVPs that depend on Microsoft, as well as Microsoft depend on us.
Having us waste time on speculations and ISVs following the wrong guesses is neither an efficient nor a respectful way to do business.

New dimensions

Well, regardless of Microsoft's possibly hidden agenda – of course I have some thoughts on the actual technical aspects too.

I think the xRM platform is really great for a certain type of systems to support processes and information in a business. I do not think xRM will die easily, and I hope Microsoft does not have plans to kill it soon.

The new possibilities opening up with CDS, Power Apps, Logical Apps, Dynamics 365 and the gigantic Azure ecosystem of services adds the means to add a few more dimensions to existing systems.

Our current systems usually have two dimensions – store information and support processes.
Adding tools from the new service flora can add dimensions to open them up and really becoming alive.