Help(ing you) in Deciding Microsoft Dynamics CRM 2015 Custom Help Implementation

Last couple of weeks ago myself and Elaiza Benitez are collaborating in writing up some posts for the new custom help feature introduced in Dynamics CRM 2015: Help(ing you) in Microsoft Dynamics CRM 2015 with Microsoft Word and Help(ing you) in Microsoft Dynamics CRM 2015 using Office 365 and Microsoft SharePoint online. In the previous posts we mentioned the ways to implement custom help in Dynamics CRM 2015. Custom help is really important aspect in user adoption where the end users (who use the system) can find a guidance on how they will work with the system without the need to contact the trainers or support help desk to solve their lack of knowledge, especially when the organisation just rolled-out a brand new CRM system.

So, in this post I will share my thought on how we could compare the approach and get which one as the best fit to the situation. The first part that drives the decision is whether we would like to implement the custom help globally or per-entity based. Now let’s compare the pros and cons of each implementation and I will give my thought on what would be the typical scenario where the approach will be suitable/applicable.

Decision

Global Custom Help

Global custom help is applied system wide, regardless whether an entity is system entity (out of the box) or custom entity, when this functionality is enabled every time the user clicks on the help icon, they will see the custom help instead of the standard out of the box Dynamics CRM help page. Global custom help option might works the best with the next option (Append parameters to URL) so that the help site can redirect or point to the right resource. One of the sample of the implementation with minimum amount of code is covered by Scott Durow in this post. Now below is the analysis on the implementation:

Typical usage for:

  • Organisation wide implementation that has lots of custom entities and renamed most of the system entities, with minor or no 3rd party solutions involved.
  • Requires a centralised location to manage the help content (SharePoint for example).
  • Works well for an implementation where you have high level ownership of the system.

Pros compared to entity-based custom help:

  • Centralised location of help settings (system-wide settings).
  • Easier to maintain the content (will always be in the same location, depends on your routing/pointing logic).
  • Depends on the implementation, non-solution aware help might be helpful if you want to give different help content to a different instances.

Cons compared to entity-based custom help:

  • Not solution aware, needs a bit of admin task to make sure each CRM environment has pointed to the right help content.
  • You could not pick and choose on which entity that you would like to implement the custom help, which leads to the need to provide the content for each entities that you have in CRM (more work to be taken care of).
  • In alignment with the above point, you need to make the help content for each new custom entity created.

Entity-Based Custom Help

Entity-based custom help is applied on per entity basis. So you could specify on which entity the custom help will be applied. In implementing entity based custom help there are many options available, such as using CRM web resource, external web CMS/SharePoint or any other web pages that available to your users (intranet/public site).

Typical usage for:

  • ISV vendors to point the help content to your website knowledge article.
  • Small implementation that has minor customisation.

Pros compared to global custom help:

  • Solution aware, no changes required wherever the solution is deployed.
  • Tailored for each entity, no need to route the help to the specific topic/entity.
  • Have the flexibility to implement only to certain entity (ability to pick and choose).

Cons compared to entity-based custom help:

  • Need to configure the custom help on each entities that you would like to have the custom help (with greater flexibility there is more responsibility).
  • The help content can be scattered all over the place (e.g: help content for entity A is in SharePoint, however the content for entity B is in web resource).

Mixed Approach

You could mix the usage of global and entity-based custom help. The behaviour is the Entity-Based custom help will win. Example: You provide the global custom to http://www.bing.com/ (so the user know how to use search engine 🙂 ) and specified the custom help for contact entity to your SharePoint page. So, when users click to open the help on other entity for contact, they will see http://www.bing.com/. And when they open the help page on contact, they will see the SharePoint page.

This behaviour is useful when you would like to have a default location for custom help, but for certain entity the help will be given specifically. This is in accordance with ISV mindset that their content will be displayed wherever their solution are deployed.

Conclusion

I hope my thought can help-ing you in deciding the custom help implementation, please feel free to comment and add some ideas/feedback 🙂

Unsupported Customisation: Importing CRM 2011 Managed Solution to CRM 2015

Recently I worked on a piece of demo that requires a solution from codeplex with a solution file that have not been updated for CRM 2015. What I have left is the CRM solution that the author exported from CRM 2011 and what I have for the demo environment is a new CRM Online tenant that based on CRM 2015. While I could reverse engineer of the author’s works to fit into CRM 2015 solution (thanks to the author that providing the source code in Codeplex), but what I would like to know is whether the customization will works fine in CRM 2015 or not. So for testing I would like to import it into my demo org. As I posted before on the CRM solution compatibility matrix, CRM solution that exported from CRM 2011 definitely could not be imported to CRM 2015. This will throw an error as “You can only import solutions with a package version of 7.0 or earlier into this organization. Also, you can’t import any solutions into this organization that were exported from Microsoft Dynamics CRM 2011 or earlier.solution-import-error

Given I know the content of the solution majority are just web resource items, such as html pages, javascript files and CSS files, plus the customization still follow CRM 2015 best practice, the problem just coming from the solution that contain these items was exported from CRM 2011. So, after thinking a while and reading through each components of the solution, I found out that the component that restrict the solution import was coming from the version and SolutionPackageVersion attributes in ImportExportXml element in solution.xml. So, I tried to change it with the value that I derived from a CRM 2015 solution:

<ImportExportXml version="7.0.0000.4013" SolutionPackageVersion="7.0" languagecode="1033" generatedBy="CrmLive" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

Voila, now I could get the CRM 2011 solution to be imported to my CRM 2015 environment.

NOTE: Don’t ever try this for production environment and I share this only for testing/demo purpose only. Please always use the supported customization way.

New Data Integration Tool: Skyvia – Salesforce to Dynamics CRM Data Migration Revisited

Recently I’ve been introduced to a new data integration tool named Skyvia. So, I think it’s a good idea to give it a try and some review, given it is a free tool (at this moment, not sure whether they are going to go with licensing in future).

Skyvia is cloud based data integration service that has multiple connectors to multiple cloud CRM platforms, such as: Dynamics CRM, Salesforce, Zoho and SugarCRM and also cloud storage, such as Dropbox, Google Drive (unfortunately OneDrive is not there yet) and SQL Server.

So, when I tried to give it a go, I found it quite simple and intuitive to use.

There are 4 operations (called package) that Skyvia supports:

  1. Import
    Skyvia-ImportPackages
  2. Export
    Skyvia-ExportPackage
  3. Replication
    Skyvia-ReplicationPackage
  4. Synchronization
    Skyvia-SyncPackage

So, in my case I revisited my post on migrating from Salesforce to Dynamics CRM using this tool.

To get started, I create a new import package, for the Source component, this tool has these following options:

Skyvia-Source

And for the Target component, this tools has these following options:
Skyvia-Target

Select both Source and Target components, in this case I chose Salesforce as the source and Dynamics CRM as the target, enters the credentials for both components.

Then click on “Create New Task” button to configure the process. It will open up the configuration “Wizard” that will go through the source and target component mapping as the following screenshots. For sample purpose, I tried with Account object (entity):
Skyvia-SourceSalesforce
Skyvia-DynamicsCRMTarget
Skyvia-Mapping
Once the task configured, it’s the time to configure the schedule:
Skyvia-Schedule
Once everything configured properly, click on Save button to keep the changes.
Skyvia-Saved
Once the process kicks in or executed manually by clicking “Run” button, it will log the process under Run History table
Skyvia-RunHistory
So I just double check on my Dynamics CRM instance, there are new records that come from Salesforce!
Skyvia-Outcome

Edit: For more detailed technical documentation that will give clearer understanding of each configurations: http://skyvia.com/resources/docs/index.html

In conclusion, this is a good tool for simple cloud data migration/integration, however for more complex requirements I still need more advanced tools such as SSIS + Connector or Scribe.

Tips on Working with Dynamics CRM 2015 Calculated and Rollup Fields

Dynamics CRM 2015 release brings a rich tool for system customizers to be able to do their work with less dependency with code. The most useful features in Dynamics CRM 2015 is the Calculated and Rollup Fields.

First of all there are some good post from fellow MVPs regarding these new features:

Calculated Fields (by Leon Tribe): http://blogs.msdn.com/b/mvpawardprogram/archive/2014/12/15/dynamics-crm-2015-calculated-fields.aspx

Rollup Fields (by Jukka Niiranen): http://niiranen.eu/crm/2014/12/analyzing-customer-behavior-data-crm-2015-rollup-fields/

So, I did my hands on with these new features to test and found out that some limitations in regards these new features:

  1. Currently there is no way to upgrade/update existing fields (Simple) to calculated or rollup fields. This situation could be common when there are some fields that calculated through other methods before (plugin/WF/js) that would like to be updated with the new functionality.
  2. The calculated or rollup fields need to be created first in metadata before it could be configured. Therefore if the configuration process was not completed during the creation of the fields there is potential “orphan” calculated/rollup fields that do nothing.
  3. The rollup fields are calculated asynchronously through the system job, therefore there will be some delay to get these fields to be calculated.

CalculateRollup

I hope this helps!

Whitelist Addresses Used By Microsoft Dynamics CRM

Recently I’m working in an environment that controlled their network access through a proxy server. When I’m going to test some feature of CRM 2013 on CRM online, I could not be authenticated properly. So, after a quick discussion, apparently it is caused by some of the URL addresses that used by Dynamics CRM is blocked in the proxy settings. So, in case anyone encounter similar situation, the list described in this KB article might help: http://support.microsoft.com/kb/2655102

North America based organizations:
http://clientconfig.passport.net/ppcrlconfig.bin
• http://disco.crm.dynamics.com
https://login.live.com
https://dev.crm.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• .windows.net
• 
.microsoftonline.com

South America based organizations:
• http://disco.crm2.dynamics.com
https://dev.crm2.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• *.windows.net
• *.microsoftonline.com

Europe, Africa and Middle East based organizations:
http://clientconfig.passport.net/ppcrlconfig.bin
https://login.live.com
https://dev.crm4.dynamics.com
http://disco.crm4.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• .windows.net
• 
.microsoftonline.com

Asia / Pacific area based organizations:
http://clientconfig.passport.net/ppcrlconfig.bin
https://login.live.com
https://dev.crm5.dynamics.com
http://disco.crm5.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• .windows.net
• 
.microsoftonline.com

Dynamics CRM 2013 SP1 Plugin Registration Tool Revamped!

Today I checked the Dynamics CRM forum to answer some of the questions there. One of the question that I tried to answer was regarding the plugin registration tool. The screen shot that uploaded by the question shows different UI of plugin registration tool that I usually use.

Then I check the latest SDK for Dynamics CRM 2013 SP1 (6.1): http://www.microsoft.com/en-au/download/details.aspx?id=40321. The SDK now provides the new Registration Tool under Tools > Plugin Registration (No longer in the “Bin” folder)

Below is the comparison of the old & new layout of the plugin registration tool:

OldPluginRegToolNewPluginRegTool

The new Tool definitely is no longer using Windows Form Application. The new tool has different authentication method than the old tool, where we don’t need to specify the discovery URL (where we usually need to go to Settings > Customization > Developer Resource):
NewAuthentication

The Online Region Selector now helps us to construct which CRM discovery server to be connected to (where crm5 is my region):

RegionSelector

Overall functionality of the tool does not change. There are some details that added to the new Plugin Registration tool

NewDetailsWindowNewPropertiesWindow

One thing that made me curious is the usage of the “Gear” button (usually it’s setting) that cannot be clicked. Perhaps it’s a bug??

Gear_Button

 

 

Dynamics CRM 2013 Certification is Available on Prometric

 

Today I found the new certifications for CRM 2013 on Prometric website when I was checking my previous exam result.

Image

 

Looking forward to do the MB2-703 – Microsoft Dynamics CRM 2013 Customization and Configuration. The exam currently only available in English.