KPMG Crimsonwing is the number 1 Microsoft Dynamics Employer

You have brains in your head.
You have feet in your shoes.
You can steer yourself in any direction you choose.
You’re on your own.
And you know what you know.
You are the guy who’ll decide where to go.
~Dr. Seuss

I read this article today The Top Microsoft Dynamics Employers and I was pleased to see KPMG Crimsonwing being rated as the number 1 Microsoft Dynamics employer rated by recruitment agency Conspicuous.

Reflecting

I attended training on Core consultancy skills lead by one of my colleagues.  I learnt some valuable consultancy skills and I now have some great tools to use.  Part of the training involved giving a 2 minute presentation on any topic, we then got feedback from the instructor and the rest of the group.  It was a useful session because when watching other people present I was focusing on the content of the presentation but the delivery.

  • Stand naturally
  • Don’t put your hands in your pockets
  • Don’t fidget
  • Talk clearly
  • Use your hands
  • The pacing of a talk is important

I had been reading the book Mastery by Robert Greene and got me thinking about careers and pushing yourself.  On the train back from Canary Wharf I wrote up my presentation into the blog post

Why do people stay in boring jobs

I enjoyed CRM development but I wanted to challenge myself, learn new skills and get more experience in designing CRM solutions.

Joining KPMG Crimsonwing

I joined KPMG Crimsonwing in November and it has been a whirlwind few months and I have been challenged and pushed harder than any of my earlier roles.

In my 3 months I have attended these training courses

  • Attending Azure Architect Training course
  • FieldOne Training
  • Core Consultancy Training

The training courses were excellent but to attend the training courses I did self learning prerequisites, which helped introduce me to the topics.

After the training I have been able to use the skills learnt during training which has helped reinforce the topics covered.

Colleagues

Colleagues are a great source of information, opinions, best practices and advice.  Watching how your colleagues approach tasks can help you assess your approach and the strengths and weaknesses of different approaches.

CRM 2016 Online

A lot of CRM resellers have an attitude of CRM On-premise first and CRM online second.  in recent projects the solution has embraced Microsoft strategy of Mobile First, Cloud First

Microsoft’s Mobile First, Cloud First Strategy, Explained

I have been using CRM Online and Azure knowledge to help design cloud solutions.  I wrote this article last year

CRM online solution need different solutions which need to use Microsoft Azure services, it’s great to be involved in these solutions because the cloud and Azure is the way Microsoft Dynamics solutions will be delivered in increasing number.

FieldOne and Mobile

I have been working with FieldOne and it’s been interesting working on a service solution in CRM.  Seeing a mobile application integrate with CRM to offer a great solution is the first time I have seen a mobile application with CRM.  I have written about it in the blog post below

FieldOne – Mobile app thoughts, problems and solutions

Convergence 2015 and 2015 Microsoft Dynamics Inner Circle

It was great seeing the excitement and buzz in the office about Convergence 2015.  KPMG were a platinum sponsor and created a great stand and content.  What would make it even better is if I can attend next time

Being a member of the Microsoft Dynamics Inner circle means KMPG Crimsonwing have a good relationship Microsoft.

Be Better

To become a good CRM professional, it helps working with skilled colleagues to learn from and a leading Microsoft Dynamics CRM company.

KPMG Crimsonwing are working on big exciting CRM projects, using the latest versions of CRM.

If you are good but want to get better, try joining KPMG Crimsonwing to take your career to the next level

Excellence is not a skill. It is an attitude. ~Ralph Marston

 

The post is the opinions of the Hosk and not the opinions of my employer.

Why isn’t code reused in Microsoft Dynamic CRM projects?

Microsoft Dynamic CRM code and customizations are rarely reused between projects and few companies create solutions to share between projects. This means CRM companies need to rewrite the same code again for each project but is there an alternative method.

CRM projects focus on delivering solutions but don’t to reuse solution and code.  In many companies CRM developers can create different versions of the same solution.

When developers work on projects they are focused on delivering a solution to meet the customers requirements.  If time the developer will

  • Improve code design
  • Refactor code
  • Reduce technical debt
  • Unit test code
  • Update documentation

The tasks mentioned focus on long term benefits and the reason they are often omitted.  Improving code design and refactoring make code easy to understand, extend, debug and maintain, these steps are unnecessary but make a huge different in maintaining the code.

The difference between good and average CRM developers can’t be seen in functionality delivered to the customer because they will be the same.

This posts

Why your CRM code and customizations should be simple

The problems with complex code and complex CRM Customizations

It’s difficult to simply code, refactor and improve the design, a reason average developers omit those steps.  Explained beautifull by Martin Fowler

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

Martin Fowler

Simple code reduces time spent debugging, maintaining, understanding and interacting with the code e.g. further phases of development.  This explains why failures in CRM projects often occur after the first release of a CRM solution when the CRM developers struggle with a messy solution.

Other signs you CRM project is doomed can be found in this article 13 signs your CRM project is doomed

I have worked on a project where a plugin had a method which was over 1000 lines long.  This method became a bottleneck in the project because developers struggled to understand what it did or how it worked.  Small changes took hours whilst developers tried to understand the code, work out where to put their fix and testing the fix hadn’t broken existing code was impossible because the code was to complex to unit test.

Custom code

Most CRM projects will have custom entities which exist only in the individual project to either make the customers business processes or needed to deliver the required functionality.

Writing bespoke projects often preclude the project code and customizations being reused because the customers requirements are not needed in other projects.

CRM developers who don’t use solid principles to reduce coupling in their code are unlikely to be able to reuse code.

Code cannot always be be reused because of unique requirements, most of the time CRM developers don’t think about reusing the code or writing it to enable reuse.

New project, new code

Before software can be reusable it first has to be usable.”
– Ralph Johnson (computer scientist)

Reusing code is a great, you can add code which has already been written and tested.  It takes more effort to write reusable code, to write code in a generic way ensuring there are no dependencies on the current project.

Developers are not rewarded for code reuse or encouraged to write reusable code and customization’s by their employers.  Without motivation or reward why would developers go to the extra effort of writing code which benefits developers/company in the long term?

To write of reusable code you need skilled developers, sometimes called craftsman.  Highly skilled developers, take pride in their work and consider long-term implications of their code and who look to reuse code.

Most CRM projects are run with short-term goals in mind, answer these questions about Microsoft Dynamics CRM projects you have worked on?

  • How often do CRM developers reuse code from earlier projects?
  • Do CRM developers know what earlier projects did to understand if any of the code or customizations could be reused?
  • How many projects is the code good enough to be reused?
  • Does anyone look at previous projects to see if they could create a generic reusable project?

Companies don’t reuse code or catalog CRM projects.  CRM professions and CRM developers move companies often, most existing and new developers didn’t work on earlier projects and are ignorant of them.

Interaction with historic projects usually occurs when a bug is raised or through a change request.  If you are unluckily enough to be dragged into an old project, they are legacy projects with code and customizations arranged in a baffling structure taking days to decipher even the simplest of bugs.

Is there another way?

Wouldn’t it be great if new CRM projects were created by plugging together small separate solutions.  It would be quicker to create solutions like this and the code would have already been tested.

CRM developers could look at old projects for common functionality that could be reused in different projects.

Identifying functionality which could converted into a generic reusable solutionIf the solution was useful it could be sold but at a least it could speed up development on new projects needing that functionality.

This would involve taking a long term view of CRM development and ensuring their CRM developers are writing quality code and customizations.

Why doesn’t code get reused

Code reuse has many advantages but I haven’t seen any examples of code reuse in the projects I have worked on. I have listed some potential reasons for this below

Developers

A lot of developers don’t love writing code and to them it’s just a job, this shows in the quality of their code.  They are not passionate about it and certainly wouldn’t classify themselves as craftsman.  I don’t enjoy decorating, I take shortcuts and aim to paint a room as fast as possible.  The lack of enthusiasm and passion for decorating the room, shows in the finished product, I spot bits I missed and drip marks.

The same result can happens with the code of people who don’t enjoy developing,

To write simple code you will have need to want to improve, the best way is to have a mentor but you can get a paper/electronic mentor by reading classic books on programming or have a mentor to teach you.  I recommend

CRM companies have s high churn rate, offering small payment increases to staff based on their current salary.  LinkedIn pressures this model with recruitment agencies offering CRM professionals the current market rate for their skills and experience, more than the current salary plus inflation.

The regular movement of CRM developers leads to a lack of long term thinking and planning.  Why write code with long term benefit if you are not going to be there to gain from it.

Development standards and way of working need a consistent workforce to implement and developers adhere to them.

Project view

CRM solution providers organise effort at a project level, gearing everything around projects.   The approach is understandable because customers pay for projects and effort is focused on money.

Creating reusable code and solutions is an activity which needs to be done around or outside of delivering a project.  It may involve going back and identifying reusable/generic solutions or taking a little bit longer to write reusable code.

Maturity of Microsoft Dynamics CRM

I’m not sure about this but I wonder if creating reusable code/solutions is something which will occur with maturity of companies and developers.

Will companies get tired of recreating everything on each project?

Versions

Microsoft Dynamics CRM currently has a major release every year, this adds a significant challenge to creating reusable solutions and code.

A solution created today could become standard functionality in the next release of Microsoft Dynamics CRM or your solution might not work, with a need to upgrade the solution to be compatible with the new versions of Microsoft Dynamics CRM.

Microsoft Dynamics CRM online is increasing in popularity, CRM online projects use a different architecture than CRM on premise.  This provides a barrier to reusable CRM on premise solutions because those solutions won’t work with the limitations of CRM online.

The long term view I have is CRM providers will create micro services in azure which will integrate with CRM online services, this architecture allows one service to be used on many CRM Online projects.  This architecture model is being used by FieldOne and their autorouting service, which is hosted in Azure.

Size of CRM companies

Small CRM solution providers whose model doesn’t afford to spend time on non project work.  Bigger companies should have an advantage over smaller companies by creating resusable code and solutions but I’m not sure many larger CRM companies do this at the moment.

Summary

It’s easy to point out the problem of lack of code reuse, it’s harder to pinpoint the steps to overcome this.

The CRM project mentality creates project focused code, not reusable or often known about by other developers in a company.

FieldOne – Quick way to add Territories for the UK

Territories play are an important part in FieldOne and to understand the functionality provided by FieldOne you will need to setup territories.

Why do you need Territories

Once you have setup territories you can then use them with your resources at set their location.  The location information is used in

  • Work Orders
  • Scheduling assistant and routing engine
  • Filters on the Schedule board

Once you have Territories setup, you can add locations to your resources and work orders.  You can then schedule resources near to the work orders by searching or FieldOne can help you do this by automatically routing using the routing engine or the Scheduling assistant.

Understanding

“In theory, theory and practice are the same. In practice, they are not.”
― Anonymous

 

I recommend CRM developers add theory to the practical knowledge, which is Why CRM Developers should always start with the CRM SDK.

To get full understanding of something you need theoretical knowledge and practical knowledge, this will allow you to find the limitations and functionality of something.

FieldOne is a great example of this because it’s not really until you start to actively use the system by setting up a demo environment or put in customers data until you really begin to understand how it works.  I call this active learning and it’s where the knowledge and practical experience come together to start creating a solution.

List of Territories

The territory on resources specify which area(s) the resource can be allocated work from.

The first step is you want to download some territories, I have found a list of cities

https://github.com/Gibbs/UK-Postcodes/blob/master/postcodes.csv

postcodes csv

You can see the postcodes have geocode details but in this case I’m not going to use them.

Territory

I now have a data to create some territories, I copy the postcodes csv to a new tab/csv, I deleted all the columns expect region and renamed this  Territory Name.  I selected Remove Duplicates so I had one row for each region, I save the file as Territory.csv

Territory

Territory postcodes

FieldOne can match partial postcodes, so if you add the postcode B32 it will match all B32 postcodes. To link postcodes to a territory you need to import into the entity called Zip Codes.  I used the original postcodes.csv and deleted all the fields except region and postcode and named the region Territory Name.  I saved the file as Territory Postcodes.csv

Territory postocde

Import the file using Import Wizard and select the entity Zip Code

Zip code import mapping

Next step

Zip code import

You will end up with 2700 territory postcodes

Next steps

You now have territories in CRM, the next logical step would be to create resources and then import a territory resource to the resource.

This sets up the territory where the resource can be scheduled for when using auto routing or the resource scheduler, if you do manual scheduling you can select any resource but you would probably filter by resource territory.

Below you can see I created some resources called

Birmingham Depot Truck Driver Test001 (to Test011) and created a service territory of Birmingham.  These trucks can be scheduled for Birmingham jobs

Birmingham Truck driver territory

It’s a quick way to get territories into FieldOne, it’s more likely individual clients will have set territories and the data above won’t be specific for your customers.

The steps above will help you get some default territories in FieldOne so you can start to see how territories and scheduling work.

 

 

CRM 2015 – Best practices for CRM Deployments

“Is life not a thousand times too short for us to bore ourselves?”
Friedrich Nietzsche

With boring repetitive CRM Developer tasks  – share the pain, share the knowledge – Hosk

 

Live deployments of customizations are tedious, stressful and critical events for CRM Developers.  Often done outside of hours to avoid disrupting the users (what about the CRM Dev’s, they have lives too!), if they go well it’s as it should be, if something goes wrong the lightbulbs are swapped to read and end users can be heard shouting SHOW STOPPER.

Despite the importance of production deployments not much time is spent thinking and improving the process, it’s often delegating to someone at the start of the project and they are left to get on with it.  In the article below I look at the different aspects of the production deployment and highlight parts to improve.

Solution Overview

CRM developers need to know solutions inside out, upside down and back to front.  Solultions organise and move customizations between CRM environments but be warned, they can cause problems during importing.  When problems occur importing a solution, knowledge of solutions will help you diagnose and resolve the problem.  It’s important you have a deep knowledge of the CRM SDK and why I am often saying Why CRM Developers should always start with the CRM SDK 

CRM developers need a good knowledge of solutions because solutions are a tool you will use regularly, you need to understand

  • What customizations are included in the solution file
  • what customizations are excluded from the solution file
  • working with multiple solutions
  • Which customizations persist when mutiple solutions contain the same entity
  • What the default solution is and how it works
  • The difference between unmanaged and managed solutions
  • When to use manage or unmanaged solutions
  • dependant components
  • common solution importing problems

CRM production deployments are often done out side of hours because importing a solution can freeze Microsoft Dynamics CRM but did you know you can import a solution asynchronisly using the CRM SDK – Asynchronous Solution Import

All CRM developers should have read CRM SDK Introduction to solutions

I have written a brief summary of the CRM SDK solution content in the article Understanding Solutions and how they work

Solutions use guids and sometimes solutions can get out of sync, this article explains how I got into and out of such a mess

Managed solution problems with out of sync solutions

Solution import Errors

Patching solutions

Solutions package CRM customizations, CRM 2016 has improved solutions to allow patching solutions, which allows you to import a smaller range of customizations instead of the whole entity and related customizations

read articles on patching solutions

Whether you are importing an older full solution or a patch solution, the solution is often only a small subset of the customizations being deployed.
Manual deployment steps
CRM deployments can include multiple manual steps, you should consider what manual steps need to be deployed in each deployment, list them out and practise them
  • Unregistering plugins
  • Workflows to deactivate
  • Data to import
  • Security roles to configure
  • Configuration settings to update
  • Workflows to re-point (workflows using data in the CRM instance, which changes guids between organisations)
  • App pool settings to change
  • update WCF dll‘s and config files
  • update GAC dll‘s (if you have deployed any)

Unregistering plugins is a manual step because solutions are additive, which is a fancy way for saying they don’t remove or delete customizations from a target CRM instance.  Some plugins will need to be deactivated manually, usually using the Plugin registration tool.

Workflow re-pointing happens when a CRM records are used in the logic of the workflow.  CRM records will have an inidividual guid, which is assigned to it on creation of the record.  A record could have the same name in different CRM environments but will have different guids e.g. an Account named Hosk in DEV and PREPRODUCTION will have the same name but different guids.  Workflows use lookup (EntityReference) which has the name of the entity and guid to uniquely identify the record.

Workflows which use CRM records will become unpublished when imported into a new CRM environment because the record guid can’t be found because it doesn’t exist.  The manual workaround for this process is to open the workflow and lookup the correct CRM record and this is what I call Workflow re-pointing.

Solution Configuration

The structure of a solution can minimize the number of  customization’s included in a solution and the potential problems when importing the solution.

A solution with all customization’s could grow when customization’s are added, taking longer and longer to import and maintain.

You can split up the solution to reduce the customization’s changed and deployed.

Two common methods of organizing the Solution file are

Release

You can organise solutions to releases/phases/sprints, including the changes for each major release of functionality.  During development it’s easy for developers to work with the solution.  Developers with experience of the project will find release/sprint solutions easy to understand but new developers won’t find the solution content obvious.

The release solution can lead to many solution files because solutions are not reused but it can stop solution files becoming to large.

  • Release 2.1.1.1
  • Release 2.2.1.4
  • Release 3.1.1.0

Customization’s by type

I have seen a few projects organise solution files by type of customization’s
  • Entities
    • Entities and fields
    • Lists
    • Forms
  • Code
    • Javascript
    • Plugins
    • Workflows
    • Custom workflows
  • Reports

Its easy to create visual studio projects containing similar types of customization’s and it’s straightforward for developers touse.

Over time solution files can grow to be big, this can cause problems with several developers changing the same customization, an example is discussed

How do multiple developers work on a web resource within the CRM environment

There is no right or wrong way to structure a CRM solution, it depends on the project, number of customization’s, number of developers, etc.  You need to create a solution organisation method which is logical and easily understood to the developers working on the project.

Document the deployment process

We create CRM development best practices and standards to ensure CRM development is created in standard way and to the required standard.  All the code/customizations should be similar despite being created by different developers.

The deployment process should be documented and processes created to ensure deployments are done sequently, in the same way by different CRM developers.  The benefit of documenting the deployment is transferring the build knowledge out of an individuals head and into a document other developers can follow.

  • The benefit of documenting the deployment process
  • deployment knowledge is shared
  • steps are not forgotten/missed
  • manual processes are documented

A standard deployment document, to act as a checklists to tick off during the deployment.

Pilots have a checklist when landing.  Pilots are skilled individuals often with thousands of hours experience but without a checklist even experienced professionals can forget a step when the pressure is on.

The Checklist Manifesto: How To Get Things Right

During the pressure of a deployment, it’s easy to miss a deployment step, documentation and checklists will help you avoid this.  Checklists and documentation can help do the deployment in the correct sequence (which might be important).

Don’t leave it to one person

Deploying to a production environment is a dichotomy, it’s a group of simple (and usually boring) tasks but it’s important it goes without problems.  Problems with deployments will affect end users and  impact the customer/developer relationship

When one person is tasked with doing deployments they get the deployment process down to a fine art and becomes a slick deploying machine.  The downside is you have created a deployment dependency and no one else knows how to deploy or is confident to do it.  There is pressure on the deployer moving project and when they go on holiday.

Deploying is a boring task which should be shared out between developers, minimum you should have at least two CRM developers who are comfortable deploying customizations in the production environment.

Don’t use personal users accounts

It’s good practice have a general service account to deploy CRM.  This allows anyone to log onto the production environment with a user account who has the required security roles and access to the server.

If the deploying account is a specific user, when someone else logs in to deploy the solution, their user might not have the required security privileges.

Importing the solution is linked to an individual user, the user won’t want to share their user password details.  A big problem can occur if individual users are not in the office and you don’t use a generic service account, you can’t do a deployment!

Backups

Rule 1.  BACK UP everything, no arguments, no excuses, just do it because if it goes wrong and you can’t roll it back the person deploying will be responsible.

A live CRM instance should have multiple backup strategies such as long term backup strategy, weekly and disaster recovery.

Production deployments needs a short term backup strategy, only used if when a problem is identified during deployment and you need to roll back the changes to leave the CRM and related components in the same state pre deployment.

Make sure you are able to roll back all data changes/config changes.

for on-premise it‘s not only the database(s) which needs to be backed up

  • Configs
  • WCF services
  • Windows applications (often running as services)

What to backup? consider different components and data

  • Databases (CRM, Config, External)
  • files on the CRM Server
  • Data on other services (Sharepoint etc)

Data and SQL stored procedures are kept on a separate database, this best practice.  It seems like added complexity but it’s separates the solutions custom tables and stored procedures from the CRM databases, meaning it won’t stop working when a CRM update/upgrade is applied.

Practice restoring

If you ask CRM Developers if they know how to rollback the changes they will say yes, you restore the database blah blah blah.

If you ask the same CRM developers to do it, they will suddenly look worried.  Most CRM developers haven’t rolled back changes.

The last place you want to learn how to restore a database or roll back solution changes is on a live production deployment.

Practice rolling back changes so if you need to do it, you can.

Data

Guids and data can be a headache, if you import the data on each environment the guids will have different guids.  Data used in workflows will break when you move them between environments.  Deploying workflows can be a long arduous job if you have to re point imported workflows referencing CRM records.

A better method is to ensure the guids of your data are the same in all CRM environments.  You can do this by importing data and specifying the guids, this can be done 3 ways 

Manual Method

Exporting the data out of your DEV CRM (ticking for reimport), turning the files into CSV files, this will have the guid each row.  You can import these into different CRM instances

Create a CRM SDK Console app

You can create a console app to export data out of your DEV CRM into XML or CSV.  Code the console app to import data specifying the guids

Use a Tool – CRM Configuration Data Mover

CRM tool wizard Lucas Alexander has created a CRM configuration Data mover to move the data and keep the guids.  He has written a great blog post to step you through using it

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

Release notes

Creating a release note is a pain, it’s a boring manual job but…. they are very useful.
  • Customer knows what is being imported
  • You have an audit of production deployments (data, list of customization’s)
  • You can see what bugs have been fixed and when
If you put your bugs into TFS you should be able to create release notes by creating a view and exporting.  Like all boring jobs, automate the process and where you can and share the task between developers (e.g. share the pain and the knowledge)

Solutions

Solutions have version numbers, use them.  Don’t deploy customizations without changing the version number.

It’s frustrating and confusing when CRM developers update customization but don’t change version numbers.  This works OK in dev environments but when you have 3 or 4 CRM instances hosted on customer servers it makes it impossible to know what has been deployed.

Solutions have a description, you can use this to add more information about what was released.

Automate

If your deployment has manual steps which need to be done every time or often then automate those steps.

You can use simple bat files to copy files to the correct location and restart IIS, CRM Services. install DLL’s into the GAC, etc.

The danger of repetitive and boring tasks is they can be easily missed.  I worked on a CRM deployment which had 11 CRM servers.  The build process involved installing DLL’s to the GAC, updating solutions, updating Windows services and often importing data.  When doing this repetitive task you enter a zombie like state

clicking, copying, clicking, copying, restarting

The process was boring and took two hours to do a simple deployment.  I created bat files to copy files to the servers.  A bat file on each server, deployed DLL’s and restarted ISS, restarted CRM services.

The benefits were two fold

  • all dll‘s were all deployed and all services restarted
  • The deployment took half the time
  • The deployment wasn’t as boring

I’m sure there were better ways to automate the build but to create the bat files was simple and made the deployments less of a pain for me.

If you can automate parts of the build, do it because automating will avoid mistakes, take less time and isn’t as boring for the person deploying.

Plan and Preparation

On one project one deployment was a whopper, twice as big as the average deployment.

The deployment would take 4 hours but the size of the deployment cause us to plan the deployment in more detail and we were more prepared.  We deployed in 3 hours and it was the smoothest deployment we had done on the project.

Time spent on deployment preparation leads to smoother deployments, make sure you are given adequate time to plan and prepare for the deployment

Pair deployment

You rarely need two people to deploy customization to production but having two developers doing the deployment has advantages

  • It’s quicker with two people
  • reduces mistakes
  • Less likely to miss steps
  • Not as boring with a buddy
  • Deployment knowledge is shared

Two people will ease the pressure and work on a single person deploying.  It’s keeps both people focused during the deployment.  If the deployment goes wrong during the deployment, two heads are better than one.

Summary

This post was meant to be a small post to highlight a few observations I made during a successful production deployment.  The more I though about production deployments the more parts to a successful deployment process I found.

What I found unusual was the lack of time spent on improving production deployments and ensuring they are efficient.

Automating as much of a deployment as possible should be priority because deploying customization’s takes lot of time and there are usually at least four CRM environments to deploy to.

 

Why did Microsoft partner with Salesforce?

When Microsoft teamed up with Salesforce last year it prompted shock and a few grumbles from the Microsoft Dynamics community.

Microsoft makes money selling non crm services and products

  • Windows
  • Microsoft Office
  • Azure
  • Cloud infrastructure
  • Other products

Microsoft Dynamics CRM resellers were frustrated because one of the key advantages Microsoft Dynamics CRM had over Salesforce was its integration with Microsoft products.

The CRM community questioned if the Salesforce partnership would lose Microsoft CRM deals to competing bids from Salesforce?

The first reaction is often an over reaction and Microsoft CRM resellers didn’t lose bids to their Salesforce counterparts en masse after the partnership (integration will take time from Salesforce).  I doubt the key reasons for choosing Microsoft Dynamics CRM as the technology to deliver a project wasn’t due to it’s integration with Microsoft Office.

Why do companies win bids?

What are the key ingredients to a winning bid?
  • People
  • connecting with the customer and understanding their problems and requirements
  • Vision
  • Experience
  • vertical or industry solutions
Competing bids using different technologies are usually close with different strengths and weaknesses.  The key differentiator is the company, people and how well they connect with the customer.

Consider the most common cause of failure of projects isn’t the technology used but the people and the working relationship.

Microsoft Azure

I attended an Azure Architect training course in November last year and am now a Microsoft Azure fan.  Microsoft Dynamics CRM online and Microsoft Azure is used to deliver Cloud solutions.

Integratiing Microsoft Dynamics CRM with Microsoft Azure, letting Azure host processes and heavy customizations and integration pieces of Cloud solutions will be model used in cloud solutions.

During the Azure training I was impressed by the amount of Azure services available and the possibilities.

Companies will move their computing online because why bother hosting your own servers which need space, maintenance and will age, dropping in value when you can do it Online with just an internet access.

Advantages of Azure

  • Pay by the minute, scale down during nights and weekends
  • You can scale up slowly to match demand
  • You pay for what you use
  • You can pop up machines for testing, drop them when finished

Azure changes the way people can think about servers, they are not massive investments they can be short term setups (prototype, testing, customer demo).  You do have to remember to turn off everything you setup :)

Azure has lots of services

  • Different database options
  • Service Bus
  • Apps
  • Web services
  • Web Site
  • Hadoop – Crunching Big Data
  • Azure Machine Learning

The Azure services can integrate with CRM or Salesforce, making the CRM part a part of the solution.  Microsoft Dynamics CRM can be the centre for a cloud solution.

Microsoft Dynamics CRM integrating with Azure you widen the possibilities of potential solutions.  Microsoft Dynamics CRM can be the centre of solutions with acquisitions (Social insight, Parature, MDM) and their services sitting outside of CRM and connecting in and integrating.

This is an interesting article on Microsoft’s change of strategy

Mobile
An interesting article on Microsoft strategy

Azure and integration of services the next step is mobile applications and the internet of things.  If Microsoft brought Resco Mobile app it would encourage mobile development and solutions with CRM.  Microsoft could start to move from lagging with Mobile solutions to start catching up.

My experience of Microsoft Dynamics CRM and mobile integration was zero, I hadn’t worked or seen any projects which had mobile integration, Sales people use laptops with Outlook instead of mobile devices.

Mobile devices are ubiquitous appearing in offices with more frequency, most people use them as lightweight computers accessing email and office.

The internet of things is about seeing where mobile devices can be used be used effectively, for this to happen we need to be looking for opportunities, need developers experienced in writing mobile applications and have business case for them.
Micro services
solutions will link together a web of different smaller services, zure will help integrate these , if a new one comes along you should be able to swap it in or out

Azure machine learning

Analyising your data, learn and make recommendations.  Cross selling or recommendations to existing customers a good example.

There are lots of opportunities to use existing data and pull out insights and recommendations.

Microsoft will want the Machine Learning services to be used in lots of applications, not just CRM.  Machine learning will cuddle  up with the Internet of things , mobile devices will capture more data and Machine learning will use the data to create useful insights and actions.

FieldOne

I have been looking at FieldOne, a Service Management solution built on top of Microsoft Dynamics CRM.  Microsoft brought FieldOne, the solution is being incorporated into Microsoft core product.

Field Service agents need to be on site to do a service e.g. Fix things, inspect, replace, empty, etc.

A integral part of the FieldOne solution is the excellent mobile application which allows the back office scheduling the jobs to get updates from the field agents and schedule jobs more efficiently, reacting to real time information.

The driving forces in the service management industry is keeping costs low.  Costs are managed by scheduling of resources and getting the right person, with the right skills, with the right equipment to the right job.

Doing it wrong costs go up, repeat trips cost more for the same cost

  • Wrong person
  • wrong equipment
  • inefficient use of people/equipment

Summary

Microsoft are selling lots of services which can be consumed by any applications hosted on the internet.

The Azure services will grow in usage,  intergrating of systems in the cloud.  The IT industry will move from focusing on what do I need (in terms of hardware) to deliver required functionality to thinking what does the user need to do and use Azure to trial and scale up when needed.

Azure works in compute, database actions, by the minute, focusing on what you use, meaning the customer pays only for what they use.

Microsoft Dynamics CRM implementations are moving to the cloud using Microsoft Dynamics CRM online, with more mobile applications and integration with Azure services.

Microsoft Dynamics CRM will become the hub of lots of interconnected services, applications and devices.

Instead of focusing on competing with Saleforces, Microsoft is focusing on improving the applications which can integrate with Microsoft Dynamics CRM and Azure services which can be consumed by CRM.

 

FieldOne – Mobile app thoughts, problems and solutions

“IT IS NOT THE PAST THAT MATTERS BUT THE FUTURE.”
Varun Ravikumar

FieldOne is a service management solution built into the core CRM product, a key part of the FieldOne solution is the mobile app.  FieldOne Sky mobile app takes the CRM functionality out of the office to where the field agents are working, keeping the office and the field agent in sync.

See it in action here

Microsoft Dynamics CRM has made dramatic improvements in mobile functionality in it’s own mobile app to provide a rival excellent Resco mobile CRM App.  Resco functionality is slightly ahead of Microsoft CRM mobile application at the moment.

Built on Resco CRM Mobile App

The current mobile application is built using Resco mobile CRM app, this functionality is included when you buy an Enterprise license (things are always changing). The mobile app is a key part of FieldOne, Resco  didn’t want to give free access to the excellent Resco CRM mobile app.

To include FieldOne Sky mobile app, you are not allowed any non FieldOne functionality.

When I opened the mobile application I got an error saying

Customization contains an entity that is not allowed

The reason for this error is you had to pay for mobile access but now it is free with the caveat of no non FieldOne data or functionality available in the mobile app.

To get you FieldOne mobile application working you have to remove all sales entities from the woodford mobile solution, which can take a bit of trial and error to work out what to remove.  This great blog post by Neil Parkhurst lists all the entities not allowed

FieldOne Sky – Customization contains an entity that is not allowed

The other common error you might get is SA.NoUserData error,  another temporary error whilst FieldOne merges its code with the default CRM code.

I blogged the solution to this problem in the post

CRM 2016 – FieldOne – windows emulator SA.NoUserData error

How to test Mobile functionality

When I wanted to test the FieldOne mobile application I instinctively chose the Windows emulator.

The reason for is I haven’t got use to using Windows 8 and downloading apps on my laptop computer, in my mind apps live on phones and tablets.

Microsoft uses apps on Windows computers will be the same as on phones and tablets, which should encourage developers to create them.  The reality is if I’m on my laptop I don’t want to run an app, I want to run either the full program or browser based app and use the benefits of my laptop.

Apps run best on touch screen devices and offer a cut down version of an application on a laptop, it doesn’t make a great experience.   One of the reasons there are not many apps, the main reason is the target market of Windows devices is smaller than Apple and Android.

To test the FieldOne mobile application don’t use the emulator I believe it‘s not going to be updated and possibly removed and it might not be the same as the other mobile applications.

I have tested the mobile app on my personal android device, it works, I tested it on my Windows 8 laptop, full screen is annoying but it works well.

The future for FieldOne Mobile

FieldOne is integrated with the core Microsoft Dynamics CRM so it makes sense FieldOne will be developed in the default Microsoft Mobile application.

It will take time to match the functionality offered in the Resco FieldOne application but with time and will you can do achieve great things.

My first experience of Resco CRM mobile is it’s a great application and made mobile development is easier than I had imagined.

Here is an interesting interview with Ivan Stano, chief operating officer (COO) of Resco.net, Inc

Microsoft Dynamics CRM Still Rich Ground for ISVs, Partners, Says Mobile Solutions Vendor

You can get a free 30 day trial for Resco and I recommend you try it, it’s good fun.

CRM with internet of things

Seeing FieldOne mobile in action, shows me Microsoft Dynamics CRM working with a mobile application.

When I have looked at the CRM mobile application before the functionality was limited and I didn’t see many convincing business cases for mobile applications working with CRM.

I believe mobile applications will become more common and along with Azure apps and Azure Service bus there will be increased integration with Microsoft Dynamics CRM.

The FieldOne service mobile sky application will give many people an introduction to the effective mobile applications working with CRM and give people something interesting to think about.

The out of the box CRM mobile application has improved functionality and offline capabilities, the tools are there and ready to go, don’t be surprised if you find yourself working on a CRM mobile application in the near future.

CRM 2016 – FieldOne – windows emulator SA.NoUserData error

 

FieldOne without mobile integration is like Hosk without CRM!

FieldOne without Mobile integration is like England without queuing

 

My first  FieldOne post, it will be the first of many as I will be using FieldOne a lot in 2016.

I have been getting to know FieldOne and going through the Learning Management System

FieldOne Learning Management System (LMS)

https://fieldone.litmos.com/self-signup/

It’s a great resource with lots of material, the slight complaint I have is some of its out of date but FieldOne is going through changes whilst the product is incorporated into the main CRM product.

Mobile

I wanted to try the mobile application, so I decided to try the Mobile Emulator.  I downloaded the mobile emulator, unzipped it.

I fired up the Mobile Emulator

Mobile Emulator

Go To Setup, fill in your details on the CRM tab

Setup mobile setup

I was getting an error

SA.NoUserData error

or

no permissions

Now What?

I am half way through my FieldOne training, I haven’t used the mobile app or emulator.  I couldn’t see any log files to help, so I was a bit stuck.

I searched the internet and even my blog didn’t come up with any solutions!! (this time)

I tried asking a question on the CRM Forum

FieldOne windows emulator SA.NoUserData error

The weakness of the forum’s is they are answered by CRM users but it means the more common your question the likely someone is to answer it.  In this case no one answered it.

FieldOne is relatively new so there are not many people who have knowledge about it, so for new products there won’t be many people who will have answers.

Neil Parkhurst to the rescue

If you are starting out with FieldOne, bookmark Neil’s blog, it’s an excellent resource for getting started with FieldOne.

http://neilparkhurst.com/category/fieldone-sky/

In his blog he had a section on installing the FieldOne Mobile App

FieldOne Sky – Install Mobile App

In here he had a tip which resolved my problem

I had a problem that my application would not run on some mobile clients, giving an error of “SA.NoUserData” or conflict with meta data. To solve these issues;

2. In CRM, on the system user form add a field called “Allow Mobile Access (Depreciated)” and set this field to “Y”.

 

I went to the user form and added the field – Allow Mobile Access (Depreciated) to the CRM user form.

Add to user field

I opened my user and set the field to Yes.

Started the emulator again and pow, I started syncing

emulator synced

You would have to set all the users you want to have mobile access to Yes

Why?

The question is why is this causing an error.  I think the problem is caused because FieldOne is being integrated into the main CRM product there are lots of fields being depreciated and there might be a few bugs caused by this whilst the code catches up and new fields used.

I think Microsoft is allowing free access to the mobile client but I’m not sure and licensing questions are always confusing and changing.  That’s my guess of the problem.

This forum has the same solution as well.

FieldOne Mobile App – sa.nouserdata

As an extra tip, check you have the latest version of the CRM mobile app