Dynamics CRM Solution Architecture

Hello readers!

I just completed a series of very animated presentations on Solution Architecture for Dynamics CRM in a few different cities in the east of Canada. I thought I would share the slide deck.

As a summary, I complied a few thoughts about the CRM Solution Architect’s role and typical design consideration. Enjoy the content and feel free to reach out to me with questions and comments.

EditAble CRM Grid by AbleBridge

I recently spent some time trying out the AbleBridge EditAble CRM Grid for Microsoft Dynamics CRM 2013. In this article, I’m providing an overview of the product that can help you make an informed decision if you are looking for a rich data grid experience for your Dynamics CRM implementation.

Installation

AbleBridge EditAble CRM Grid can be installed in CRM Online and On Premise. There are two main steps to install the add-on.

  1. CRM Solutions

    There are 2 CRM solution files to import (Core & Data Grid) to your organization.

  2. License Configuration

    Once the solution files have been imported, a license XML file must be generated by AbleBridge. It contains a key that’s tied to your organization and customer, it also brings in information such as user count and expiration date.

Solutions Components

The solutions files (Core & Data Grid) are very small (less than 1.5 MB combined) and they import very quickly, showing how lightweight the add-on is.

The Data Grid solution contains around 150 components, mostly web resources (images, javascript and HTML), some plugin steps and a few CRM entities. As you can see in the screenshot in the previous section, the configuration screen is HTML/JavaScript based, not Silverlight as we’re accustomed to see with CRM add-ons. The entire solution is actually HTML/JavaScript based, there is not a single trace of Silverlight in the solution which personally makes me very happy J.

EditAble CRM Grid Configuration

After the solutions have been imported, you can navigate to the Settings àAbleBridge Data Grid list view to take a look at the existing EditAble CRM Grids or create new ones.

To create a new EditAble CRM grid, create a new Data Grid Configuration record. Doing so will take you to a wizard that will guide you through the configuration steps of your view. The basic steps are

  • Grid basic configuration information
    • Grid name
    • Entity to show in the grid
    • Grid “mode” (Editable or Read Only)
  • Columns Selection & Configuration

  • Record Selection setup: select whether you want records to be shown based on a specific filter (entity list view) or related to a parent record (child entity sub-grids)

Notice that at step 2 above (add and configure columns), we do not get the option to add columns from related entities. When using the AbleBridge EditAble CRM Grid, you can get the same behaviour by configuring a custom field in the grid (not described in this article). I am told it will have more native support in a future release.

Once you have gone through the basic grid configuration wizard, you are presented with the Grid configuration record itself. It presents many more options to configure the grid. Let’s review some of the options. We’ll go through most sections of the configuration record so you can see all available config options.

Ribbon Buttons

As you can see in the image above, a few buttons have been defined and provide with the ability to

  • Refresh Grid Definition: this will take you back to the configuration wizard I talked about earlier to redefine your grid’s basic configuration
  • Publish Grid Configuration: same concept as CRM customization, a Grid Configuration needs to be published for users to see its latest configuration
  • Preview: you can preview a grid layout and functionality. This is a nice feature to allow you to make sure that your configuration is correct before publishing it.
  • Copy: used to copy a grid configuration

General Section

The available options for the general section are the row functionalities and the display options.

Grouping Section

I particularly like this feature. It can be viewed as an alternative to the out of the box dashboards that are not available with the grid. Plus if users are used to the “Group By” functionality in Excel, this gives them a very similar type of experience.

Columns Detailed Configuration

For each column, you can set additional details such as their visibility, read only, alignment and enable grouping. You can also change the column order.

Additional Options

There are more options available. I wanted to point out two options in particular

  1. Filters: like a regular CRM view, you can select filter criteria that will be applied to the EditAble CRM Grid
  2. Custom Events: you can write code using AbleBridge EditAble CRM Grid custom API. Your code can fire at different type of events (grid events, column events or toolbar button – yes you can create your own toolbar button for a grid)

Viewing the Grid

The views are web resources. They can be configured to be visible in the sitemap or as sub-grids. Below are a few examples of grid configuration.

Quick Recap

The AbleBridge EditAble CRM Grid is a very good add-on for Microsoft Dynamics CRM. Being able to edit grids inline is a feature that’s been missing in CRM for a long time and as consultant, we very often get ask to inline editing feature. AbleBridge brings that, and more.

User Interface

The user interface is good looking and light weight, all JavaScript and HTML based. The grid themselves look like OOB CRM grids and the configuration is straight forward.

Feature Set

The feature set is very rich, enabling for deep customization of the grid. A few examples are columns sizing, ordering and visibility, grouping, export to Excel. The grid respects the CRM security (security roles, teams, FLS). AbleBridge also provide the ability to write code that can be executed on various events such as grid load, refresh, column change, toolbar button clicked.

The grid currently supports four languages (English, Danish, French and German) and more can be added upon need/request.

Unfortunately, with the grid we lose the ability to have the charts displayed with the view and everything that comes with it. But grouping and calculated fields (sums, counts) are a good alternative for summarizing and filtering data. The other thing that bothered me is not having the possibility to easily add columns from related entities which is a set back from the OOB views. Finally, we faced some issues with users running IE8, we didn’t spend time fixing it and moved them to a different version. It would be interesting to know if there is an easy fix or if IE8 is not really supported.

Licensing
AbleBridge EditAble CRM Grid offers the classic two license models:

  • Monthly Subscription option (pay a monthly price per CRM org based on the number of users)
  • License Purchase option (one-time fee based on the number of users)

In addition to that, you can pay for annual maintenance which covers compatibility with supported version of Microsoft Dynamics CRM (only applies to license purchase option, included in monthly subscription model).

AbleBridge’s grid is one of the most expensive editable grid add-on for CRM in the market. I think a lot of it has to do with that fact that they came out with a zero-Silverlight based product from the beginning, understanding HTML5/JavaScript is the future (or present and future). They also offer a very rich set of features that I haven’t see in competitors’ products.

Hope this helps!

SSIS Tools for Dynamics CRM

ETL is an everyday subject in medium to large enterprise ERP or CRM project implementations. When it comes to Dynamics CRM, there are many different ways to insert, update and delete data. Using Microsoft’s SQL Server Integration Services (SSIS) is a good solution because of its cost (included in the SQL Server suite), development environment familiarity (Visual Studio, SQL Server Management Studio).

The problem with Dynamics CRM in this context is that its database is not supposed to be accessed directly to read, create, modify or delete data (read operations are OK using Filtered Views). These operations must be done via the application’s API. Fortunately, there are third party tools that provide a “bridge” between SSIS and CRM through custom SSIS components. These tools transform their SSIS components into MS CRM API calls in the background, allowing to perform ETL by using Microsoft’s recommended and supported approach.

Here are some tools that I’ve seen or heard of that will help do your MSCRM data processing with SSIS:

  • Kingsway Soft’s SSIS Integration Toolkit for Microsoft Dynamics CRM
    • Notes
      • Supports CRM 3.0, 4.0, 2011, 2013 and Online
      • Comes with 4 major components: Connection Manger, Source Component, Destination Component, Option Set Mapping Component
    • Pricing Information
      • Free Developer License
      • Single Server Perpetual License @ USD $1295
      • Single Server One Year License @ USD $695
      • Single Server Annual Maintenance and Upgrade @ USD $295
      • Enterprise License – Contact for details
  • RSSBus‘s Dynamics CRM SSIS Components
    • Notes
      • Supports CRM 4.0, 2011 and Online (presumably 2013 as well but no official word on that on their website)
      • Free 30 day trial available
    • Pricing Information
      • Full SSIS Component Subscription (multiple workstation, Royalty-Free distrubiton) @ USD $999
      • Single Machine License @ USD $359
  • Team4 SSIS Connector for Microsoft CRM
    • Notes
      • Supports CRM 4.0, 2011
      • It looks like the product hasn’t been updated in a while given the lack of update on the website
    • Pricing Information
      • Connector is Licenses per server @ EUR 4600
  • CozyRoc Dynamics CRM Source and Destination Components
    • Notes
      • Mature product
      • The web site doesn’t mention support for CRM 2013 (it is supported though)
    • Pricing Information
      • Varies based on the Components you buy
      • Between $400 and $2500
  • Devart’s SSIS Data FlowDevart’s SSIS Data Flow Components
    • Notes
      • Devart has a large portfolio of data integration products
    • Pricing Information
      • Single License @ USD $249.99

 

Cheers!

Silverlight, HTML5 and Dynamics CRM

The Glory Days of Silverlight

Silverlight is Microsoft’s plugin for web-browsers that enables running rich Internet applications, with features and purposes similar to those of Adobe Flash such as multimedia, graphics, animations etc. Shortly after Silverlight was introduced to the market in 2007, Microsoft quickly started to build knowledge around how to write and deploy rich applications and integrate them with Microsoft Dynamics CRM starting at version 4.0.

When you thinking about it, the need for custom UI integration with Dynamics CRM has always been there since the earlier versions. As CRM solution providers, most of us have been in situations where we can come up with a complex data model and we feel like the out of the box UI capabilities won’t be user friendly enough to drive user adoption. Situations like that created the need to build more user friendly interfaces to simply make people’s lives easier when they start using the CRM/XRM application.

To better illustrate, here are a few examples of when we would want to write a custom UI components in CRM

  • Display a tree view of related records with parent/child relationship.
  • Display complex search results: I’m thinking about PowerSearch which is a Global Search add-on for CRM. If you want to search for multiple entity types at once, a custom UI is required to display all results on a single page/view
  • Display timesheets, Gantt project management charts in Professional Services Automation solutions such as Assistance PSA and XRM1 (view screenshots below)

The Decline of Silverlight and the Rise of HTML5

With the emergence of HTML5, it seems we are headed towards a future in which browsers will support HTML5 tags natively thus enable rich content without the need of plugins like Silverlight or Adobe Flash. If some of us as individuals don’t believe this is true, Microsoft and Adobe seem to believe it is since they both dropped or significantly slowed down the evolution of their platforms. Silverlight’s latest major release (version 5) came out in 2011 in a world in which we see companies releasing software solutions at a very fast pace. The emergence of HTML5 have been well documented over the past year. There are still a lot of skeptics out there and that is understandable given how long it’s taking for the HTML5 standard to be completely defined and made available in all browsers.

Dynamics CRM: HTML5/JavaScript or Silverlight

What does this all mean for us Dynamics CRM integrators? The need to have custom UI controls is still existent and it will not go away even with all the new flexibility that we get with CRM 2013. Some data models will always be complex enough to require a better UI to give the solution its best chance of being used. In addition to that, there are still plenty of CRM add-ons built by Microsoft Partners that still use Silverlight 5 as a key piece of their solution. Below is a decision matrix that I came up with for us CRM Solutions providers going forward in making a technology decision when building new UI pieces for MSCRM.

What about the upgrade question? You have Silverlight controls and are wondering if you should built new controls in HTML5 and JavaScript. It’s your decision. Silverlight is not dead, Microsoft is still supporting it and it will for a long time. If you want to learn the new technology and have the time and money to do so, then go for the HTML5 remodeling. Keep in mind that it is a risk given that we have no idea what the lifespan of HTML5 will be.

What about buying an add-on that heavily relies on Silverlight controls? I don’t have a problem with that as long as it’s OK for you to install Silverlight on all client computers. Moving controls from Silverlight to HTML5/Javascript is A LOT of work and represents a significant amount of work for the add-on solution providers. They will upgrade when the time is right for them to do so (hopefully).

Run multiple requests with one service call using ExecuteMultipleRequest

If you have been developing on for Dynamics CRM for a while, you probably asked yourself this question at least one: why is there not a way to send multiple service requests with a single call to the organization service. It’s finally here. It was introduced with UR12 on CRM 2011 and is of course available for CRM 2013. The request type is ExecuteMultipleRequest. It’s really simple to use. Here are the steps and code snippet below:

  • Create a collection of entity records you need to action on (create or update or delete)
  • Create the ExecuteMultipleRequest object and add the settings:
    • ContinueOnError
    • ReturnResponse
  • Add a request for each entity to the request collection
  • Call the IOrganizationService Execute method and passing the ExecuteMultipleRequest object in parameter
public void ExecutePluginOperation(LocalPluginContext obj)
{
IOrganizationService service = obj.OrganizationService;
IExecutionContext context = obj.PluginExecutionContext;

Incident incident = (context.InputParameters["Target"] as Entity).ToEntity<Incident>();
EntityCollection entitesToCreate = GetEntitiesToCreate(incident);

ExecuteMultipleRequest requestWithResults = new ExecuteMultipleRequest()
{
// Assign settings that define execution behavior
Settings = new ExecuteMultipleSettings()
{
ContinueOnError = true,
ReturnResponses = true
},
// Create an empty organization request collection.
Requests = new OrganizationRequestCollection()
};

// Add a CreateRequest for each entity to the request collection.
foreach (var entity in entitesToCreate.Entities)
{
if (entity.Id == Guid.Empty)
{
CreateRequest createRequest = new CreateRequest { Target = entity };
requestWithResults.Requests.Add(createRequest);
}
else
{
UpdateRequest createRequest = new UpdateRequest { Target = entity };
requestWithResults.Requests.Add(createRequest);
}            }

// Execute all the requests in the request collection using a single web method call.
ExecuteMultipleResponse responseWithResults = (ExecuteMultipleResponse)service.Execute(requestWithResults);
}

Notes:

  • You can only make multiple requests that make changes or create entities of different types (e.g. Contacts, Accounts)
  • You can make multiple requests of different types (create, updates and delete requests in a single call)

It’s a very nice performance optimization in certain scenarios!

Start your CRM Development in Azure!

I attended a presentation by Microsoft TFS ALM MVP Wes MacDonald on Windows Azure  a couple of weeks ago. If you have some level of MSDN Subscription, Microsoft is giving away free $$$ for Windows Azure services.

Knowing that, I decided to use some of my free $$$ to do some CRM development in  Azure. The idea is to create a Virtual machine and just get a feel of the overall experience. To kick things off, we need to activate our Azure Benefits by logging onto our MSDN subscriber account. Navigate to “My Account” and you will see the list of Subscription Services you get based on your level. Click on “Activate Windows Azure” and go thought the activation process. It takes a few minutes.

After that, the rest of the steps are pretty standard. You need to create a VM. There are a couple of options when it comes to doing that.

  1. You prepare your own VM using HyperV and run SysPrep. When that step is completed, you can upload your VM to Azure and boot it…
  2. You can pick from a Template Virtual Machine. In my case, I selected Windows Server 2012 and SQL Server 2012 SP1 (saves me some time)

Once you have done all the steps to create your VM (with Template), you get a RDP file that enables you to connect to your Virtual Machine in Azure. From that point on, it’s standard CRM installation. If you are used to building CRM VMs for development on a local laptop or workstations, typical steps are installing Active Directory, promoting your machine to Domain Controller and installing CRM. It took me about an hour tops to complete the installation (without the development tools i.e. Visual Studio).

For the price and if you are always going to have internet access, it’s much easier to use an Azure Virtual machine for your development. Here are my arguments for doing it:

  • Powerful servers
  • Quick install, fast and easy access (you get to select the data center where you want to VMs to be… Select something close to your location, East US for myself)
  • Possibility to have a separate server for each installation components (SQL, CRM, AD, SharePoint etc…) at a very low cost which you can hardly do on VMs on your local machine
  • Low cost (good discount for MSDN account holders, plus you are only charged when your VMs are running)
  • Azure UI very simple and intuitive
  • Easy integration with Visual Studio 2012 and 2013
  • No need to maintain your own infrastructure and deal with network, hardware and software maintenance

After trying this, I’m leaning towards using moving all my personal development activities to Azure. The cost is low and controllable and it gives me flexibility when it comes to building a better server infrastructure for my CRM Development which I could never have if I work on my laptop (as powerful as it is). Also, it’s worth noting that I am only focusing on infrastructure here but Windows Azure enables you to do much more (Web hosting, storage/backup, mobile, media etc.). If you are looking for a cloud solution, you should take a hard look at Windows Azure!

Cheers

Customizing your CRM platform the “right way”

Over the course of my consulting experiences, I have learned to work with different platforms and products “the right way.” This means that when you are using a product (for example Microsoft Dynamics CRM), you are agreeing to use the product in the ways specified by the makers of the product. It’s like when you buy a car, there are parts that go with it and if you need to change them, you need to get them from the manufacturer. When you start modifying the car with custom parts, you lose your manufacturer’s warranty. Same thing with a phone, you jailbreak it, you don’t get support anymore. The reason behind that is very simple. When you make changes that are not prescribed by the maker of a product, it’s possible that you altered the way the product works (i.e. you may have broken it or it may break in the future), therefore the manufacturer can no longer support it because it doesn’t know if it still works as designed.

When it comes to software and especially in the case of CRM, it is very important not to break that contract. There are a few things to consider if you do and they are very well documented:

  • Unsupported changes are dangerous by nature, you don’t know what the impact is on things that you are not supposed to have control over
  • They will probably break in the future (after a patch or upgrade)
  • They can bring tons of other issues (performance, testability, bugs…)

If you are buying a product that is integrated with Dynamics CRM (ISV solution), always ask this question to the vendor: “Is you product and/or integration built in a supported way by following all Microsoft customization guidelines and APIs”? See the table of what should be your reaction based on the answer below

Answer My2cents What to do
No That’s just bad. It will either stop working at some point or it will break something. Run away!
I don’t know If the vendor doesn’t know, it means he/she is not really aware of what the impact of unsupported customizations are. That sends a wrong message and represents a serious risk. Run away or hire a technology expert to validate that all is supported.
Yes Perfecto! The vendor knows what it means and understand the importance of supported customizations. It’s a go! To protect yourself, make sure it’s mentioned in your purchase contract.

As consultant and community contributor, I keep seeing a lot of web application and ISV providers that integrate with different CRM or other platforms by simply checking out how to do stuff online and customization the platform in unsupported ways to achieve their goal and sell their product. Keep in mind that working with a platform requires the due diligence of working with experts who know how to customize it. Taking shortcuts can seem like a great idea to quickly go to market but consequences can be bad and the result is often hiring experts to figure out what is wrong when they should have been brought in from the beginning.

It’s OK to use unsupported customization as long as you are aware of the risks and are willing to live with them.

You can read more on unsupported customization for MS Dynamics CRM on the links below.

http://dynamicsuniversity.com/blog/customizing-microsoft-dynamics-crm-2011-supported-or-not-supported
http://gustafwesterlund.blogspot.ca/2012/06/unsupported-customizations.html
http://gonzaloruizcrm.blogspot.ca/2011/08/risks-of-unsupported-customizations-in.html

Cheers