The rise of Microsoft Dynamics CRM

human-evolution

If evolution really works, how come mothers only have two hands? Milton Berle

Microsoft Dynamics CRM has evolved at a frantic pace in the last 6 years I have been working with it.

The effort and development put into the product means it’s exciting to work with because Microsoft Dynamics CRM is constantly being improved, new features added, new companies purchased and add on’s created.

For people who use Microsoft Dynamics CRM to deliver customer projects it means you need to work hard to keep up

  • Understand how new features work, where and when they should be used
  • Create code correctly, so it can be upgraded
  • Learn new products Microsoft has purchased, ADXStudio, Parature, Field Services, Microsoft Dynamics Marketing, etc, etc.
  • Take Microsoft Dynamics CRM certifications for each version
  • Learn the differences between CRM online and CRM on-premise

I have blogged why it’s important to keep up to date before and the benefits

Should you keep up with releases and how?

Rapid rise

Microsoft had arrived to the CRM game late and launched CRM 1 in 2003 and stuttered along slowly.  The Microsoft Dynamics CRM wikipedia page notes CRM 3 was the first which saw reasonable uptake by customers.

I started working with Microsoft Dynamics CRM 4 released in 2007, which was a good place to start because the previous versions have been described as difficult to work with by colleagues.

Microsoft released a version of CRM Online and CRM 4 saw Microsoft pass 1 million users.

What I have enjoyed about working with Microsoft Dynamics CRM is the speed and breath of change in the product.  During CRM 2011 onwards Microsoft have developed the front end and back end of Microsoft Dynamics CRM at a frantic pace.  It makes working as a CRM professional challenging dealing with the new versions and changes, often leading to upgrades needed all customization to be rewritten.

Looking at the releases it struck me the speed of innovation and releases of Microsoft Dynamics CRM.

In 5 years Microsoft has released 4 new versions of CRM

  • CRM 2011
  • CRM 2013
  • CRM 2015
  • CRM 2016

Screen shots

Looking at the screenshot of CRM 4, makes me feel nostalgic and glad I don’t have to use CRM 4 anymore

CRM 4

Here is the sexy CRM 2015/2016

CRM 2016

CRM 2016 form

The head start Microsoft gave it’s CRM competitors has had moved from challenger in 2007 to leader in 2015.

The post from Leon Tribe on Gartner Trajectories of CRM solutions shows the gradual move from Microsoft Dynamics CRM.  The picture is taken from Leon Tribe’s post in June 2007 was a challenger and the Microsoft Dynamics CRM Online doesn’t even get a mention!

The Gartner Magic Quadrant shows Microsoft Dynamics having both its online and on premise versions in the leader category and recognized as winner in the CRM magazines Market Leader wards.  Microsoft kindly highlight these in their Analyst coverage page, below I have shown two

Gartner Magic Quadrant for the CRM Customer Engagement Center – read report

In recent years Microsoft has focused on improving the CRM online functionality and administrator tools to where the differences in on premise and cloud are negligible.

SalesForce

Microsoft started behind Salesforce but have been catching up the functionality with every release and now the product functionality is similar, it‘s difficult to say there is one clear winner.  The advantages Salesforce has over Microsoft Dynamics CRM is its large customer base, created due to its head start.

There are some good comparisons between Microsoft Dynamics CRM and Salesforce

Microsoft CRM Professionals view Salesforce as the main competitor to Microsoft Dynamics CRM, for tenders you are competing with Salesforce.  Microsoft made an unusual move in 2015 and partnered with Salesforce, causing confusion in the Microsoft Dynamics community.

I wrote a blog post – Why did Microsoft partner with Salesforce?

There were rumours Microsoft was trying to buy Salesforce

I can understand why Microsoft attempted to buy Salesforce

getting rid of the competition

stop wasting money competing agaisnt each other

Create shared services

Microsoft can create products/services to be used by both CRM services e.g. Azure services, Office products, PowerBI, etc.

It‘s the same tactics Resco used when buying CWR mobile CRM activities

Why Resco acquiring CWR’s mobile CRM is important

Microsoft CRM Online is growing

Microsoft is focusing on the Microsoft Dynamics CRM Online version and according this press release, Microsoft CRM is growing fast

Dynamics products and cloud services revenue grew 9% in constant currency with Dynamics CRM Online seat adds more than doubling year-over-year

Cloud solutions are growing in popularity with customers and CRM Online solutions are growing in complexity as developers understand the limitations of Microsoft Dynamics CRM Online and how do you work with them?

Solution architects are improving at designing cloud solutions and integrating with Mobile devices.

Conclusion

Microsoft Dynamics CRM has evolved as a product and the type of CRM projects are changing, there are lots more cloud solutions, mobile devices and portals.

In the future projects could involve machine learning, big data and integration with lots of devices and plugging into the Internet of things.  The social CRM functionality keeps growing in CRM.

With change comes opportunity but take advantage you must be prepared to learn new skills and approach CRM projects differently.

picture from thezoom 

Source control and Visual studio team services

Do the right thing. It will gratify some people and astonish the rest. Mark Twain

VSTS – Visual studio team services, previously known as Visual Studio Online

Developers have to use source control and system to manage bugs.  I have used lots of source control over the years

  • Visual Source Safe
  • CVS
  • GIT
  • Subversion

I have set up source control, versioned, branched and of cause suffered merge hell.  Source control features on The Frustrations of a CRM Developer.

Source control has saved my bacon many times.  I worked at one company which didn’t use source control, which was extremely scary.

Like most applications they get picked up and moved to the cloud and made into a service. Personally I’m beginning to prefer services because it takes the pain of hosting and maintaining a server and you don’t need to go through an IT team to fix problems.

Most developers refer to it as TFS, the team services has not caught on yet and is adding to the confusion at the moment.

When TFS/VSTS is done well its a benefit, a central location for work items and bugs, offering a way to log and maintain your work items. It’s used to create release documents (blog link), link work items with code and offer a history for bugs.

When TFS/VSTS is done badly is a curse, it slows things down and can be difficult to get developers to use.

Start as you mean to go on and get it right at the start of the project.

It takes effort but it‘s best to start a project or phase by putting all the user stories, solution backlog or work items into VSTS/TFS at the start.

  • it sets the standards for everyone
  • all development and work on requirements/bugs is captured, you have a history
  • burn down is done using graphs out of the box
  • once setup the effort to maintain is minimal

As a developer VSTS gives you a history of the effort in developing and for bugs it leaves an audit trail of effort.

It‘s always good to have information in central systems rather than people’s computers and heads because it allows work items/bugs to be picked up by other developers.

VSTS allows users to raise bugs directly and monitor progress, this self service functionality can save hours of keying information from emails and phone conversations.

One final great use of VSTS is to create release notes by exported fixed bugs from VSTS, which I blogged about below

CRM 2015 – Best practices for CRM Deployments 

One unusual aspect of VSTS is it charges you for building the solution by the minute.  I’m not sure about charging for builds, it doesn’t seem right

VSTS Training

Microsoft has good training resources for VSTS, a great overview and 3 hours of video training.

Overview with documentation

Video tutorial

 

How are you going to test the logic of your code

Simple systems are not feasible because they require infinite testing. Norman Ralph Augustine

Developers must be able to isolate and test their code easily and often in their own development environment.  If you don’t test your code you will let more bugs into production environments and this will cost you more time and effort in the long term.

Developers must be proud of their work, be craftsman and create quality code.  Poor quality code is a drop in standards which can spread to multiple developers like a virus – Bad code is like a virus, don’t get infected.  As a team/group you can choose to raise standards and get all members to raise their game or you can let standards drop.

Keep your standards high, your code quality and Never leave a CRM developer stranded

Questions

I get questions from Hsok CRM blog readers asking me to resolve problems they are having or asking for advice.  Below are two good examples

If I could offer some advice about asking questions

  1.  Be polite, say hello, how much you love my blog and then your question 🙂
  2. Investigate the problem yourself first.  Google the problem, try things, ask your friends/colleagues and then if you still have problems ask the problem on the CRM forum
  3. Provide me (and the CRM forum) with as much information about the problem as possible e.g. CRM version, what you are doing and why, what you have tried, the results of your research.  More information = greater chance of someone/me helping you.

I received an email from Martin who had read my blog posts on unit testing with Microsoft Dynamics CRM

Martin was working on writing a webservice and found unit testing was a great way to test the logic of the code without having to deploy the code in the production environment which was tricky.

Isolate the logic of your code

Logic is the beginning of wisdom, not the end. Leonard Nimoy

 

Unit testing is about isolating and testing the logic of your code.  The main benefits of unit testing

  1.  You think about designing and structuring your code to make it easy to test the logic
  2. You and any developers can rerun your tests
  3. It’s easier to refactor the code because you can test it still works.
  4. Developers who unit test, think more about what they are testing

Thinking about what you are doing, questioning how you are designing the code and thinking about what the code is doing helps create better code.

First draft code works but is sloppy and complex with lots of dependencies.  First draft writing, you must edit your work to remove sloppy code and improve the overall code quality.

UNIT TESTING ALLOWS YOU TO EDIT CODE AND BE ABLE TO TEST THE CHANGES

If you haven’t got unit tests, you might break the code and not know about it, unless you test the code and all areas which uses the code.

How do you know the logic works

When a junior developer has written a plugin, web service or piece of code, I always want to know how they have tested the code works.

Before I started writing unit tests, I used to have a console application which connected to the development CRM environment and ran my plugin code.  I could do this because I wrote the plugin code as a separate piece of code which was passed a CRM connection and entity.

If you cannot run through the logic of the code on your own dev environment then you are making it difficult to test.  Difficult tasks are often not done by developers short on time.

Unit tests are the best way to test the code but a console app so you can step through the code is a good second.

 

Martin’s email about the

Use Case for Mocking WebServices

Hi Hosk,

Unit Testing is at first somehow abstract but we had some requirements to use a 3rd party WebService, where Mocking saved us a lot of time.

The WebService-Provided only allowed connection from whitelisted IP’s. Our customer only ordered the smallest Internet Package from his ISP.

Every 24 hours the customer had a new public IP. So we couldn’t get a connection form the cooperate network. Upgrading the ISP-Packing was also impossible.

The Webservice-Provided refused to add the whole ISP-Subnet. Our customer had already an Azure Cloud Service with a reserved (static) IP. So we decided to deploy our Code there.

Deploying and debugging is somewhat unhandy in this scenario. It take approximately 15 Minutes to deploy the Cloud Service and start Debugging.

I decided then to Mock the SOAP-Service so I could easily develop locally. This was a big time saver.

Maybe this Story helps other to understand what you can also address with Unit Tests/Mocking. Another possible Use Case for it is when you only have a production System and don’t wan’t to mess it up or when you must pay for every requets you submit to the 3rd Party WebService.

Managing Microsoft Dynamics CRM 2016 online service updates

I like to go full bore into something. If you have a backup plan, then you’ve already admitted defeat. Henry Cavill

If you don’t manage backups they will manage you into a whole bunch of trouble

Microsoft Dynamics CRM Online delivers two service updates a year, you can delay but you have to update your Microsoft Dynamics CRM online once a year.  One service update is mandatory.  You can delay a CRM online service update but you cannot hide from it.

When Microsoft Dynamics CRM Online was first released I wondered what Microsoft Dynamics CRM online subscribers did before sandbox instances, how did they test the service updates for their Microsoft Dynamics CRM online.  If you consider the on premise version of CRM is often 6 months behind you need a Microsoft Dynamics CRM online to test the new functionality.

There are two key questions you need to ask

  1. How do I test my Microsoft Dynamics CRM Online?
  2. How do I develop for Microsoft Dynamics CRM Online?

 

Microsoft Dynamics CRM Online update facts

  • There are 2 service updates a year.
  • You will receive an email with the schedule update date.
  • You can reschedule the update to a date and time to suit you.
  • Your Microsoft Dynamics CRM online instance will not be updated unless you approve it.
  • You can choose to not apply an update.  The next update becomes mandatory, meaning you have to apply the minimum of one update per year.
  • Best practice (says Microsoft) is to run the latest version of Microsoft Dynamics CRM Online
  • Best practice (says Hosk) is to delay updating your version of Microsoft Dynamics CRM online for 1 or 2 months, to allow any nasty bugs to be fixed by Microsoft.  I discuss something similar in this blog – Should you keep up with Microsoft Dynamics CRM release cycle?

Best approach to updating CRM online

Make sure Microsoft Dynamics CRM online updates don’t break none of your customizations by testing the whole system.

Microsoft has made this process easier by introducing sandbox instances, which allows you to create an environment copy of production on a non production (sandbox) instance.

Microsoft added sandbox instances, you get one free if you 25 enterprise users or they cost £90ish plus data costs a month.

Learn about Microsoft Dynamics Sandbox instances here with a good technet article

You can apply the Microsoft Dynamics CRM online service update to the sandbox instance and test your customisations, if it works without problems you can schedule the service update to the Microsoft Dynamics CRM online production instance.

Microsoft created a great technet article – Manage Microsoft Dynamics CRM Online instances

It has two scenarios on updating Microsoft Dynamics CRM online.

Be Prepared

Be Prepared… the meaning of the motto is that a scout must prepare himself by previous thinking out and practicing how to act on any accident or emergency so that he is never taken by surprise. Robert Baden-Powell

I wrote Why you should write code and customizations like a boy scout and you must be prepared to manage your service updates.

You must be prepared in advance when the service update is available, what’s in the service update and how you will test your CRM instance.

The customer needs to be ready to test the customisations and sign off the update has not effected your customisations.

You can delay one service update but this will put more pressure on the next one, you must ensure there are resources and time to test the update.

Don’t let a service update sneak up on you and don’t underestimate the effort needed to test all the customisations

The customer will need to have some resources ready and be in a position to sign off so you can schedule the service update to your product CRM Online environment….Time is ticking.

Microsoft Dynamics CRM Online service update waits for no one.  The customer needs to be made aware of the process, cost and time constraints.

  • Time – One service update is mandatory per year.
  • Cost – Cost of a sandbox environment.
  • Effort – You will need a CRM admin to create the sandbox instance.  Resources will be needed to test the customisation, you will need a test plan.
  • Sign off – Someone needs to sign off the sandbox environment
  • Schedule – Schedule the production service update

Practice

The practical usually turns out to be different from the theory.  Make sure you are comfortable with creating and configuring sandbox instances.

Know where to look for service updates and how to schedule them.

Production deployments are not difficult but it’s important they are done right