Video of my Talk on Cloud Deployment Considerations @ Microsoft London UK offices


I have uploaded a video of my talk at CRM Saturday London back in January at Microsoft UK offices in London. In this session I talked about considerations for implementing Microsoft Dynamics 365 Online versus on-premise and when it is more practical and suitable to choose one over the other.

I hope you like the content!

#MSDyn365 Cloud CRM Online Strategic Business and Technical Considerations #MSDynCRM

Preface: This article is a follow up after a number of #MSDyn365 (Dynamics CRM) conference sessions where I talked about this topic. The presentation slides from the session are at the bottom of this post and I will be publishing a white paper with more details soon. Please comment below if you would like a copy of the whitepaper. This post builds on experiences (plus pains) and lessons learnt during a number of number of large scale multi-thousand users Dynamics CRM Online implementations taking into account data protection, compliance, regulatory issues and strategic considerations.


“The answer is the Cloud, what is your question?” I don’t know about you, but I have heard this sentence (or similar wording) quite a few times in recent years.

While you can argue for or against this statement, the way I see this, is on a case by case basis. Every organisation is unique and every digital & business transformation programme is different.

Having a blanket view or a pre-decided position, in either directions you go, may mean that organisations do not investigate or consider all factors affecting this extremely significant business decision. For this reason, in this article I am not going to recommend one way or the other but I’m inviting all readers to consider and evaluate the variety of factors that impact their move to the Cloud, or not.

Strategic Business and Technical considerations discussed in this article and the attached slides/white paper, are focusing on Microsoft Dynamics 365 Cloud or as previously known Microsoft Dynamics CRM. Technical, Integration and Reporting considerations mentioned may not apply to other Cloud CRM platforms. Unlike Microsoft Dynamics 365, other CRM platforms such as SalesForce may not have an on-premise version.

There are very good reasons for a CTO, CIO, Head of IT or similar leadership roles to decide that the Cloud is too risky and they want to do the implementation on Dynamics 365 on-premise. These reasons should not be trivialised or not considered even in our current Cloud First era. Some of the examples of really valid and common reasons to stay or choose on-premise are:

  • Cyber Security, Data Protection, GPDR, Data Location, etc.
  • Regulatory and Compliance
  • Maintenance, Support, Upgrade and BAU (Business as Usual Operations)
  • License Costs?
  • Technical considerations, Integration, Architecture, Design, Technology Stack & organisation echo system
  • Custom Development, Solution Complexity (including Integration complexity) and keeping up with regular CRM Updates

Each and every reason mentioned above, could literally take a whole article or even more. Hence, I won’t cover these here in this post but I’ll try to talk about them in more detail in the (soon-to-be-published) white paper I’m currently writing about the subject.

You can also listen to my recent talks in various Dynamics conferences where I talk about this subject extensively. A YouTube link will be published here soon <>.

While I won’t go through the details in this article, I am however going to say that I have personally spent days, literally, in never ending meetings to discuss just the regulatory, compliance and data protection aspect of going to Cloud Dynamics CRM with one recent 10K+ CRM implementations. After lots of trips between Redmond, Seattle and London, lots of Skype conferences, etc., we have all reached the conclusion that this highly regulated organisation can safely go to the Cloud CRM option as long as they implement a number of very detailed safeguards. It was a relief to reach that conclusion but it was also a great learning for myself and most of us involved (including our Microsoft colleagues).

Saying that, there are still good reasons that may drive your organisation to stick to the on-premise version. While License Costs may not be a reason any more following the new license model of Dynamics 365, but there are other technical considerations around a) Reporting, b) Integration and c) Technical. I list these below without detail at this stage but hopefully the talk and the white paper covers that sufficiently.

Reporting considerations for choosing Dynamics 365 (not exhaustive list):

  • FetchXML not T-SQL queries: Data Export Service to an Azure SQL database is a good possible solution
  • SSRS Server & unavailable report Scheduling
  • Queries 5 minutes timeout
  • Notes attachments of type images in SSRS Reports – SDK limitation
  • Limit on Charts and Grids of 50K rows

Technical considerations for choosing Dynamics 365 (not exhaustive list):

  • No Physical Access to the Database (e.g. indexing challenges)
  • Bulk Data Access – Data warehouse and BI access to CRM data
  • No access to Server Registry settings (e.g. timeout value changes)
  • Cloud Data Storage and associated costs. Audit Data and Archiving
  • Authentication and Active Directory Synchronisation
  • 2 minutes timeout limit for plugins and custom workflow execution
  • Limit* of 200 Workflows, 300 Dialogues and 300 Custom Entities

* Limit lifted – Now indicative only in Dynamics 365 Online according to this MSDN article:

Integration considerations for choosing Dynamics 365 (not an exhaustive list):

  • Firewall ports opening or,
  • Exposing web services externally for on-premise systems, which consequently require:
  • Data Security considerations
  • IFrames and Cross-Domain reference restrictions
  • Possible SSL requirements for certain
  • Telephony Systems integration (cloud PBX versus conventional PSTN)
  • Express Route as a possible solution


Finally, and perhaps very importantly, please consider the fact that a lot of the new features and capabilities in Dynamics 365 CRM that are Online Only and Cloud Only. A full list (with the MSDN source) can be found in the attached slides (pdf) available to download below. The list includes some significantly innovative and transformational features such as Project Services, Field Services, Relationships insights, Portals, advanced analytics, etc.

When I do this session, I always ask my audience for their opinions and make sure it is an interactive session. This is because the points I mentioned in the article are not a full list of all considerations and I’m sure there will be lots of different views for and against the content. Hence, you are strongly encouraged to share you objective and professional views based on your own learnings and experiences.

I’ll leave you with a snippet from my last talk about this subject in Dublin and I’m looking forward to read everyone’s view in the comments below.

Multiple Persona or Profiles per customer contact in Microsoft Dynamics CRM Online & CRM 2016 on-premise: CRM contact architecture approach

A CRM contact with multiple personas or separate individual profiles is a fairly common scenario in many Dynamics CRM projects. For example:  A contact could be a Managing Director of an organisation while at the same time they are non-executive director in a different firm or sits on the board of a Charity.

In Dynamics CRM, a contact is normally one person. Setting an individual contact to have multiple profiles and personas can be delivered in a number of ways – arguably most of them are not 100% ideal.

First option for delivering the multiple personas for the same individual contact is to create a custom entity for each persona/profile and have the contact record as a parent (or a child) for each one of these entities. Other options, which I wouldn’t recommend, is to create a custom entity for each persona and not include or use the contact entity at all – i.e. you will be re-creating the contact entity multiple times, once for each persona. This is not a good practice and a highly discouraged approach.

Another option which is also not recommended, but more common, is to create a separate contact for each persona allowing for duplicate contacts – for example: John Smith, the Director of company X and another contact, John Smith, sitting on the board of company Y. Again, duplicating contacts is never a good practice.

There are other additional options to achieve the multiple persona scenario in Dynamics CRM such as as customising the contact entity heavily so that it allows for capturing multiple personas on the same form and entity. Again, this might work for some CRM solutions but is not ideal.

Let’s explore the first option further. In this approach, a custom entity for each persona or profile is created while having the contact entity as either a parent or a child for each custom entity. This option is the most commonly used and was unofficially suggested by a highly qualified Microsoft contact for a number of scenarios. One main challenge, among other challenges and limitations of this approach, was to be able to display all contact information within the custom entity for each persona.

For example, let’s say John Smith is an Ex-employee, a Director in company X and also a non-executive director on the board of company Y. You will have 3 persona records (same custom entity or different) all linked to the same contact record. Then, if there is a process where you want to show 1st Persona, you will use data from the 1st Persona form and so on, just using the relevant persona entity record.

However, if you want to show contact information from the contact record such as mobile number or email address, you were left with limited options as you couldn’t directly show this information within the persona entity form. Your options where to copy the contact information across from the contact to the persona record and always keep them both in Sync programmatically. Synchronising the contact information was a lot of overhead of custom development though. The other option was to show the persona without the contact information and then expect users to click their way through from the persona record all the way up to the parent contact record, just to be able to see the persona phone number! This wasn’t helpful either.

Now, in Dynamics CRM 2016 and Dynamics CRM Online, there is a new feature that I found to be very useful to help resolve this limitation in the persona situation or even in other situation where you need to show fields, information or data from the parent record on the child entity form.

My suggestion is to do this using calculated fields. I found this to be very powerful. You can now go to the form of any entity and add a calculated field that shows the data from the parent record. So in our persona example, you could simply have the contact entity as the parent of the persona custom entity and then add a calculated field on the persona entity form. This calculated field is then set to be equal to the relevant parent contact record information such as: mobile number or email address. This is done just like you would do a formula on CRM calculated fields where you are now able to select the parent field from field calculation formula building screen.


This applies to many other situations where you can show data or calculation of data from parent records of any child entity form. I found it to be a powerful new feature with many  other useful uses. Anyone else found this interesting or have other recommended approaches?

#MSDynCRM What’s new in Microsoft Dynamics CRM 2015 Fall Wave Release Code Name Vega

Microsoft today has shared some information on Microsoft Dynamics CRM Fall Wave release – codenamed Vega as part of the Microsoft Dynamics roadmap 2014/2015. There are 3 other releases as part of CRM 2015 (Q4 2014) Fall wave release. These are: 1) code name Hydra: Microsoft Social Listening, 2) Electra: Microsoft Dynamics Marketing and 3) Phoenix: Parature (Dynamics CRM Integration with Parature) as shown in the below Microsoft Dynamics CRM road map (for 2014 and 2015).

Microsoft Dynamics  CRM 2014 2015 Roadmap
Microsoft Dynamics CRM 2014/2015 Roadmap

More details about these 3 other releases will be in future posts.

As for Dynamics CRM Vega, this is a release focusing on Microsoft Dynamics CRM Core product. The Fall Wave release Vega applies to both CRM Online and CRM On-Premise.

So Vega is apparently going to be officially named: CRM 2015. It will be released before end of this year (Q4 2014). It is expected to include some core product features in Dynamics CRM that many have been waiting for!
New features and enhancements in Vega Dynamics CRM 2015 are:

Business Process Improvements:

  • Rule-based branching
  • Single Edit experience
  • Support for multiple entity loops
  • Programmability through Client API
  • Active processes
  • Change of currently active process
  • Move Stages
  • Stage selection and Changing of currently active stage

User Experience Improvements:

  • Multi Entity Search Capability (horraayy!)
  • A new Advanced Search Button
  • Nested Quick Create forms

Mobility Features:

  • The addition of 29 new Languages
  • More Dashboards and new concept of Home-pages
  • Support of “Any Device”
  • Ability to have offline drafts

Enterprise Sales Features:

  • Entity Hierarchy
  • Cross-sell and Up-sell capabilities (also know as Next Buy Actions)
  • External Pricing features
  • Attribute Inheritance
  • Product Relationship
  • Bundles

XRM and Development Advances:

  • Complex calculations (Calculated Fields & Roll-up of values) (Yes!)
  • Hierarchical Relationship Property
  • Ability to query multiple entities
  • Hierarchical Security Models
  • Field Level Security for system fields (out of the box fields)

Analytics and Business Intelligence Enhancements:

  • Power BI in CRM Web client
  • Transactional reporting of CRM on Windows Mobile Client Application
  • Roll up on different fields across hierarchie

Specific for CRM Online (Microsoft’s Online First motto):

  • Self-Service
  • Sign up process Simplification
  • Global Expansion from 42 to 61 Markets (Latin America data centre)
  • Multi-Geographical tenants
  • Scaling out Organisation Synchronisation
  • Minimal downtime Upgrades
  • Addition of Load balancing

Supported OS and Software Requirements:

  • Windows Server –2012 & 2012 R2
  • Windows Client – Vista, Windows 7 & Windows 8
  • ADFS – 2.0, 2.1, 2.2
  • SQL Server – 2012
  • Exchange Server –2010 & 2013
  • Outlook – 2010 & 2013

Software and OS no longe supported:

  • Windows Server 2008 & 2008 R2
  • SQL server 2008 & 2008R2
  • Windows Small Business Server ( all version )
  • 2008 Series Terminal Servers
  • Windows Vista
  • SharePoint 2007
  • Exchange 2007
  • IE 8, IE 9
  • Office 2007

This post has content from this Dynamics Community post

Business Process Flow Vs Dialogs in Microsoft Dynamics CRM #MSDynCRM #CRM2013

Process Enablement in Microsoft Dynamics CRM 2013 is achieved through a number of capabilities including Business Process Flows, Dialogs and Workflows in Dynamics CRM 2013.

When is best to use Business process flows and when best to use Dynamics CRM dialogues is a dilemma that many CRM consultants and developers face.

This post gives a simple comparison table between Business Process Flows Versus Dialogs in Microsoft Dynamics CRM 2013

Point of Comparison Business Process Flows Dynamics CRM Dialogs
Session  Mostly for Multi-Session processes but could work for Single Session ones  Single session capture only.
 Wizard  Using process to reproduce all fields on a form is not recommended approach Misses opportunity to highlight key outcomes that should be addressed  Yes. Dialogs are perfect for a wizard based process.
 Guidance or Control


BPF are intended to guide a user through a process, not to control them. Strict compliance is not well served by Business Process Flows.

 Control.Dialogs are intended to provided a structured strictly controlled processes. Strict compliance is better served by Dialogs
 Linear Information Capture Where there are significant linear information capture processes, then dialogs or forms work well, and provide better mechanisms for this type of information capture.  Dialogs can be useful for information capture if the information is to be used across multiple entities.
 Tracking  Tracking of stage in a processReporting/ management awareness of state of business TrackingQuick insight to user on initial access  You can’t stop a dialog half way through, close it and then re-run it from where you stopped. Business process flows can via current stage and state tracking.
 Complex Processes Guidance Yes. Particularly cross entity and cross person, where mistakes can occur during the
hand offs between parties.Support for infrequently used or inconsistently performed processes, where mistakes are more likely to occur through lack of familiarity
 Yes as well. Dialogs can provide help, tips and guidance text throughout each page of Dynamics CRM dialog.
 Training Business Process Flows can assist by supplementing training.It can be used to support new processes before they are well understood by staff.Used to roll out new or changed processes, minimising need for explicit training Training material or sessions.  Not really. Dialogs are not a good approach for training users or for users who are not familiar with processes.

In summary, Business Process Flows and Dialogs are both equally powerful process enablement capabilities of Dynamics CRM. However, BPFs are more for guidance, multi session, tracking of process status. Business process flows provide the ability to show the current stage of a process allows user to rapidly see where a process is up to, for example reviewing a deal and seeing what has been completed to date. It can also be used to show related information easily e.g. the originating lead for an ongoing opportunity. BPFs are also good for ensuring key steps in a process aren’t missed providing consistent checklist for steps that need to be completed as part of the process. It also provides guidance through complex process flows and can be used for Training.

A Dynamics CRM Dialog on the other hand, is a single session Wizard Form, strictly controlled process which can be used in capturing completely linear information similar to forms but across multiple entities.

Hope this post gives some guidance on the difference in use of Dynamics CRM business Process Flows and Dialogs in a readable comparison table. Please note that this post has used content, text and information published as part of Microsoft’s Process Enablement White Paper (Download Here)

Disabling Microsoft Dynamics CRM 2013 Auto Save feature for a specific entity form or a CRM organisation to avoid undesired execution of plugins or workflows

Microsoft Dynamics CRM 2013 comes with a new auto-save feature which triggers a save action on forms every 30 seconds (approx.). So if you are editing a form, an autosave is triggered automatically by CRM 2013 on regular intervals. This feature means that if you have a plugin or a workflow that first on saving the form, it will be triggered every time the auto save action is fired. This will obviously cause undesirable actions and potentially unexpected consequences to several processes especially in the case of an upgrade from Dynamics CRM 2011 to Dynamics CRM 2013.

To disable the Auto Save feature in Dynamics CRM 2013, you can stop it at organisation level which means NONE of your entity forms will have auto save across both customisable (System) and custom entities and their forms. To do this in Dynamics CRM 2013, you need to go Settings –> System Settings –> General Tab (first tab) –> Enable Auto Save on All forms –> No.

This is shown in the screenshot below:

Enable Disable Auto Save
Enable/Disable Auto Save feature in Microsoft Dynamics CRM 2013


Alternatively, if you want to allow Auto Save to work on some entities but not on others, you can write a small JavaScript web resource which can disable auto save on specific forms of your choice. This web resource JScript library can be enabled on selected forms of your choice.

To do this, you can call “GetSaveMode()” in client SDK to detect the auto-save. You can then call “preventDefault()” to write to the server to prevent the save. Here is the full script:

function preventAutoSave(econtext) {
 var eventArgs = econtext.getEventArgs();
 if (eventArgs.getSaveMove() == 70) {

So here are the steps:

  1. Add the above function “preventAutoSave” as a web resource to your Dynamics CRM JavaScript library. Then,
  2. Add this JScript library to the form libraries of the form you want to disable Auto Save on.
  3. You should then register the function on the onSave event on this form you selected. Make sure you select the option to “pass execution context as the first parameter”.

This will stop auto save from triggering on this form. Repeat the same steps above for any form you wish to disable Auto-Save for.

For more information about Auto Save feature in Microsoft Dynamics CRM 2013 please check my other post which provides introduction to Auto Save functionality in #CRM2013 :


Microsoft Dynamics CRM 2013 and Dynamics CRM Online Fall 13 (ORION) announced today

Microsoft Corp. today announced that it plans to make the next version of Microsoft Dynamics CRM available in the fall of 2013.

Available both online as Microsoft Dynamics CRM Online Fall ’13 and on-premises as Microsoft Dynamics CRM 2013, this major release will deliver more personal experiences to sales, marketing and customer care professionals.

Full details here:

The new release gives people the ability to access their information on a variety of devices;* introduces a new user experience that is fast and fluid, enabling people to access information that is relevant to their jobs; and delivers richer contextual information that helps people have deeper insights into customers and their needs. Microsoft Dynamics CRM also offers enhanced social collaboration capabilities, so users can connect with the right people, and the right resources, at the right time.

There will also be:

• A connection to MarketingPilot,

• Introducing new mobile client applications on iPad and Windows 8 tablets

• Providing capabilities for people to collaborate with each other and share customer knowledge through Yammer right within the CRM solution

• Connecting Lync and Skype seamlessly

• Netbreeze. As part of the Microsoft’s work to bring the capabilities of Netbreeze, its recently acquired social monitoring and analytics service, to customers, the company will also be offering a limited beta of the service available in fall 2013



What’s changing, removed and not supported in the next major release of Microsoft Dynamics CRM – Orion

Microsoft has announced some significant changes in the next major release of Microsoft Dynamics CRM Online and Microsoft Dynamics CRM (on-premises), also known as Dynamics CRM Orion release. These changes are confirmed as of 18/06/2013 but may change before the release date.

Changes include the end of support Internet Explorer 7 for both Online (already ended) and On-Premise Dynamics CRM implementations. Also, Windows XP is no longer supported.

Most importantly, the Dynamics CRM 4.0 endpoints (2007 endpoints) are no longer supported in the next major release and Online organisations migrating from the Microsoft Dynamics CRM Online platform to the Microsoft online services environment (Microsoft Office 365), will need to upgrade or remove those extensions that require the 2007 endpoint.


Full details can be found here:

What’s changing on the implementation side:


What’s changing on the SDK side:



Update: 31/07/2013:

Following today’s Microsoft Dynamics CRM 2013 Blitz day by Microsoft for Dynamics CRM partners, here is a list of the main new features and functionality in Microsoft Dynamics CRM 2013 (Fall 2013):

  • Revamped and completely re-designed User Experience in Microsoft Dynamics CRM 2013
  • Flexible Business process and Process Agility in the new Microsoft Dynamics CRM 2013
  • Microsoft Dynamics CRM 2013 Mobile Client Applications available.
  • Social CRM with Microsoft Yammer Integration with Microsoft Dynamics CRM 2013
  • Outlook Client and Exchange Sync in Microsoft Dynamics CRM 2013
  • Microsoft Online Portal Administration in Microsoft Dynamics CRM 2013
  • Upgrade Process in Microsoft Dynamics CRM 2013
  • Business Rules with Dynamics CRM
  • Client Extensibility in Microsoft Dynamics CRM 2013
  • Extensibility on the Server and Cloud with Dynamics CRM
  • Microsoft Dynamics CRM as a Platform for Business Apps


More Updates soon.

Scribe Insight cross-reference drop-down and pick-list mapping approaches (option sets in Dynamics CRM)

In your Scribe workbench dts package you usually need to map a dropdown (or picklist) to another dropdown or optionset (as in Dynamics CRM). This is a common requirement as part of data migration and data integration projects to link between drop down menus in source system to those corresponding to the target system.

For example, the source system (assume it’s a file) has Salutations values as:



The target connection on the other hand (assume it’s Microsoft Dynamics CRM 2011 system), has option set values as follows:



To achieve this mapping between the id and values of both source and target systems, there are a number of approaches and methods as listed below:


Method 1: Use a cross reference (Xref.ini) file for mappings. This is the standard approach (I claim) for mapping two optionsets in Scribe Insight. All you need to do is create a new file, call it anything such as XREF.INI. Within this file, build all your mappings as follows:



4=Executive Director


As you can see in the file, there are two sections. You can have as many sections as you want all in one file. Each section will map two drop down menus together. The first section, Salutation_Code, maps Mr (id=1 in source file) to Mr (id = 1000000000 in target CRM).

Once you add your mapping section in the file, you can then write a formula to cross reference the value on the target to the source. The formula for the Salutation target field can be something like in this example: FILELOOKUP(S7, “XREF.INI”, “Salutation_Code” )

The following screenshot shows a sample forumula:

What will happen is that, based on the source value (in our case s7), the corresponding salutation in the cross reference file will be inserted to the target

More details can be found on Scribe Insight Online help here:


Method 2: Map and crossreference drop downs and pick lists using Scribe Work bench formulas

In this method, you either create all your option set values in the target Dynamics CRM system to have the same id as the source (for example: 1=1) or you do a formula to manually do the mapping. This could work in cases where there is two or three options but otherwise, it gets too complicated for no real benefit.

The formula can be something like this:

IF(S7=”1″,”100000000″,IF(S7=”2″,”100000001, “”))

In other words, if the source = 1 (Mr), then set the target = 100000000. Else, if source = 2 (Mrs), then set target = “100000001”. Otherwise, leave target blank.

Dynamics CRM automated deployment using dynamics crm developer toolkit from the SDK

Microsoft Dynamcis CRM developer toolkit that comes with the CRM SDK provides a wide variety of useful features. If you have created a Dynamics CRM Solution in Visual Studio using the Developer toolkit add-on that gets installed onto your Visual Studio, you can easily deploy your Dynamics CRM code directly by right clicking on the CRMPackage project of the solution and clicking deploy. This Deploy command will build and deploy all your plugins, custom workflows, web resources, etc.

In a previous post, I wrote about automated deployment of Dynamcis CRM using MSBuild from Visual Studio to your Dynamics CRM Server. In this post though, I will cover how to use the deploy command of the developer toolkit to automate your deployment of Dynamics CRM Visual Studio solutions onto your Dynamics CRM organisation.

The deploy command can be easily accessed from the Visual Studio Command prompt. You can then call the deploy command in the command shell. To make it easier, you can create a batch file that calls Visual Studio command prompt, navigates to where your CRMPackage project is and then finally calls the deploy command. This batch file can then be scheduled to run using a Windows Scheduled Task to automate the deployment of your Solution at pre-scheduled times.

Sample code for the deployment automation batch file to deploy the CRMPackage project is below:

call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
cd C:\Users\YourUser\Documents\Visual Studio 2010\Projects\CRM-Solution-Folder
devenv crm-solution.sln /deploy "debug"  /project CrmPackage

Enjoy! Tried and Tested.