Do you still Customize the Default Solution?

Since the introduction of the solution framework in CRM 2011 (and now Dynamics365), I have not customized the default solution and find no value in doing so going forward.

Apart from their deployment and product shipping functionality, solutions provide a container where I can specifically look at what I am customizing and am working on as it pertains to my own entities.  Whether it is an unmanaged solution in Production or Development (hopefully not in Production), at the very least I have a container that takes me two minutes to create that nicely encapsulates all the changes I have made.

With the Default Solution, I see the world, everything that is in it and everything that is a part of it.  If I were to step away from this solution for a

Read More


Default Solution and Publisher Ids

In writing my last post on Creating your own Dynamics Publisher, I stumbled across the below information on the default solution and publisher Ids within Dynamics.

Both, the default solution and publisher are the same Guids across all Dynamics environments.

DefaultPublisherId  – {d21aab71-79e7-11dd-8874-00188b01e34f}

Furthermore, you can access the Default Solution Id (consistent across all environments).

DefaultSolutionId – {FD140AAF-4DF4-11DD-BD17-0019B9312238}

I did a quick validation between an on-premise CRM 2015 tenant and my online Dynamics instance and both lined up.

Reference: https://msdn.microsoft.com/en-us/library/gg328257.aspx

Read More


Understanding Publishers with Dynamics

A Publisher in Dynamics is the entity by which your solutions are deployed to Dynamics CRM.

No publisher means no solution being deployed.

In any Dynamics install, there is always a Default Publisher which you can use across your solutions (if you like) but exists as the publisher for customizations made to the base system.

Creating a publisher can be accomplished by simply going to Settings >> Customizations >> Publishers and creating your own publisher.

But that’s pretty boring, so we’re going to create one using code.

Creating your Publisher

Once you initialized a connection to Dynamics, put together a little console app and use the following code to create your own Publisher that can be used for deploying your own solutions.

Read More


Retrieving Email Addresses in Outlook

Sometimes it seems that what we thought was the easiest problem to solve actually turns out taking the longest amount of time to figure out.

Case in point – finding the email address of the currently logged in user running Outlook in a VSTO plugin.

If you are looking to do this, see below and let the code set you free.

Recipient CurrentUser = this.Application.Session.CurrentUser;

CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress.ToString()

A little longer and less direct than I would have thought (i.e., at this stage, my user is not a recipient to anything) but the reasoning becomes a little more apparent if I am trying to find the email addresses on a set of recipients on either an appointment or mail message.

.Recipients[1].AddressEntry.GetExchangeUser().PrimarySmtpAddress.ToString()

Read More


A Scaled out CRM Solution Architecture

Recently I started work on a pretty big CRM project and I wanted to apply a more scaled out approach to my solution architecture.  CRM offers a great facility to deploy code in their solutions but when starting a new project you should always ask yourself the following questions before you starting adding entities into your solutions.

  1. What is the frequency of updates that will be requested by the users and to what components?
  2. Are there multiple users contributing to this project?
  3. How big do you expect this project to grow by?
  4. What kind of promotional model is in place for deployments?

I  have found that questions such as these generally drive the overall solution architecture I will put in place on a project.  For instance, if we are working with a client that has

Read More