Hosk’s Top Dynamics 365 Articles of the week – 27th January

Quotes

Quality is never an accident. It is always the result of intelligent effort. John Ruskin

#HoskWisdom Favoutes this week

  • The only limitation to what you can develop is the person developing it #HoskWisdom
  • The end always triggers a beginning #HoskWisdom
  • The pressure to make things complex will be great but you must keep it as simple as possible #HoskWisdom
  • Don’t waste words, make every one count #HoskWisdom
  • Don’t blame other people for your failures #HoskWisdom
  • Constantly talking about doing something is a barrier to doing something #HoskWisdom
  • It’s not just what you say but how you say it #HoskWisdom
  • if you tried your hardest you have nothing to regret #HoskWisdom
  • If something has no value, stop measuring it #HoskWisdom
  • Contributing to a successful team is better than achieving personal goals #HoskWisdom
  • Don’t over think and under act #HoskWisdom
  • The difficulty working with cowboy coders is dealing with the all shit that comes from their code and horses #HoskCodeWisdom
  • Increasing people on a project increases complexity of working, colloborating and communicating #HoskWisdom
  • When I see someone crying when their football team has lost, I want to tell them they need to take football more seriously #HoskWisdom
  • Respect silence, its thinking time #HoskWisdom
  • You cant solve all of life’s problems in a day but you can start with one of your own #HoskWisdom

Want more #HoskWisdom then follow #HoskWisdom or follow @BenHosk

Articles of the week

awesome-1

Using Portal Capabilities in Dynamics 365 (CRM)

Good run through portal capabilities, a detailed step by step guide

Best of the rest

The difficulties of scaled agile projects

Dynamics 365 SDK refreshed (11 January 2017)

10 Types of Dynamics 365 Project for IT Decision Makers

Getting around Delegated Admin Restrictions

Read Barcode Value Using Barcode Scanner Control in Dynamics 365

Step by Step Guide to Setting up your Dynamics 365 Portal Trial

Working with JSON objects in Dynamics CRM Plugins

Smart Buttons in the Ribbon Workbench

ALM for Microsoft Dynamics CRM 2011: CRM Solution Lifecycle Management

Everyday is a school day, yomi fields are for phonetic spelling

Programming/Scrum

5 Steps To Better Agile Retrospectives

Trello board on better retrospectives

It’s Not Just Standing Up: Patterns for Daily Standup Meetings

CannotMeasureProductivity

Other

Maker’s Schedule, Manager’s Schedule

Leadership That Gets Results

Servant leadership – the leadership theory of robert K. greenleaf

Effective Leadership Styles for Scrum Masters

Five books every ScrumMaster should read

Béla Guttmann: the mastermind who was more than just a curse

Stephen Hawking’s Productive Laziness

To Everyone Who Asks For ‘Just A Little’ Of Your Time: Here’s What It Costs To Say Yes

everything Ryan Holiday wrote in 2016

how to improve success rates in NFL drafts

David Foster Wallace: The String Theory

Great course for Scrum masters

How to build a great team and culture

The Hosk – currently reading

The Hosk – just finished reading

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

CRM 2016 – Tips on passing the MB2-712 customization and config exam

All the CRM 2013 content to help you pass the exam

#HoskCodeWisdom

When you are going through project hell, don’t stop to create the nice to have features #HoskCodeWisdom
Quick fixes are never quick and usually add technical debt, so take longer and do it properly #HoskCodeWisdom
If not managed properly, adding more people to a project can slow it down instead of speeding it up #HoskCodeWisdom
Don’t waste time adding functionality the user might like but hasn’t asked for #HoskCodeWisdom
Never optimize code unless you have to #HoskCodeWisdom
Scrum master should never have answers they should ask the team for answers #HoskCodeWisdom
Writing code is simple but writing simple code is the hardest thing you can code #HoskCodeWisdom
You need to love code with your heart and write code with your head if you want to be good programmer #HoskCodeWisdom
Creating bugs bothers good developers #HoskCodeWisdom
If you don’t find writing code fun, you will never be good developer #HoskCodeWisdom
If you don’t control technical debt, it controls you and the horse you rode in on #HoskCodeWisdom
You cannot be the master coding because some days the code wins and you lose #HoskCodeWisdom
When programmers think they are good, code will find a way for you to waste a whole day on something which doesn’t work #HoskCodeWisdom

CRM 2016 – Release management, Solution packager and why you should automate your deployment

I have always found that plans are useless, but planning is indispensable.

–Dwight Eisenhower

I found this articles on Microsoft Dynamics CRM and the application life cycle, I thought I would share them.  These

Deployment best practices

The articles above got me thinking about the CRM deployments best practices but which focuses on manual deployments and the best practices involved with that.

Another consideration is organising your solutions – CRM 2016What’s the best way to organise solutions in Microsoft Dynamics CRM

make surec ustomizations are kept at a high standard

Here are a few bet practices to follow
  • ID on lookups
  • early binding
  • Unit tests
  • never change production
  • CRM Configuration mover
  • Automate where possible

Automate your deployments

When I wrote the article on deployment best practices I only worked on projects which deployed projects manually and I had no experience with the solution packager.

I believe automating the deployments would be the best practice because manual deployments are

  • Manual deployments are boring
  • Manual deployments take a lot of time
  • Manual deployments can go wrong due to use error
  • it‘s a waste of developer
  • More environments more time wasted

The question CRM developers should ask is why are most CRM projects not using the solution packager?, it‘s best practice, it saves time, fewer deployment mistakesso why isn’t it standard practice.

Companies and project managers don’t give time for the team to learn and setup the solution packager because it‘s time spent on infrastructure with no business value.  Setting up the solution packager for Dynamic CRM projects is short-term pain for long-term gain.

The solution packager allows you to commit your customisations into source control because it breaks down the customisations into xml files.

One of the reasons I moved to Capgemini is because they have a DevOps team for Dynamics CRM projects.  Capgemini focus on delivery high quality large difficult projects, to do this you need to think long-term, focus on keeping quality of customisations high, keep technical debt low and automate where you can.

Now I have worked on a project with DevOp, the solution packager, continuous integration I am of the opinion all Enterprise CRM projects should have this setup.

Having a dedicated DevOps team or someone who has learnt to use the solution packager and creating builds will help the process.  Building automated build environments takes experience and the job falls to a developer they will take time to get up to speed in the same

Benefits of the Solution Packager

The solution packager is a powerful tool which can automate importing solutions between environments but it has a number of other useful benefits.

Automated deployments

Importing solutions is a boring and time consuming which should be automated to not waste developers time, allowing developer to concentrate on creating customisations.

If you can automate a boring task then you should automate it #HoskWisdom

The solution packager enables scripted automated deployments and some other benefits

Track changes

The solution packager gives you control and visibility on what changed, who changed it, what it was for and when.  The solution packager shows CRM changes, including customisation change (form, fields, views) gives visibility of those changes.  This enables CRM developers to check in changes to tasks and stories

Data

The solution packager can be scripted and incorporated in builds using Visual studio Team Services (VSTS).  Automating the build processs allows data to be imported into different CRM environments (a step which is often missed or done incorrectly).  Automating data import keeps the guids the same between environments.  CRM 2016The importance of keeping the same guids between CRM instances

Solution Packager articles

Here is a collection of Solution packager articles if you want to learn more

Conclusion

The article started out with links to the ALM – CRM lifecycle but morphed into clarifying the purpose and benefits of using the solution packager to automate solution deployment.

The solution packager allows automated builds/continuous integration which can save time and reduce import errors.  The solution packager breaks down CRM customisation to XML files which can be checked into source control (VSTS/GIT) and linked to individual tasks and stories.

Solution packager isn’t easy to configure but the benefits are worth it, companies and projects should see it as an investment in quality, long-term benefits which pay dividends on large CRM projects.

 

CRM 2016 – How to reassign all records of a user

If you want to build a ship, don’t drum up people to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea.

Antoine de Saint-Exupery

Moving all the data, users and customizations from one CRM 2016 online instance to another, one thing you need to consider is users, creating the users and record ownership.

In Microsoft Dynamics CRM you cannot delete user records, the mantra for Microsoft Dynamics CRM is You don’t delete records, you disable them

Some developers can get annoyed about not being able to delete users and go to drastic measures of deleting the users in the SQL database (if it’s on premise).   DONT DO THIS!

When users are added to Microsoft Dynamics CRM, background tasks are kicked off and the user is added to the business unit team and a bunch of other stuff.  If you manually delete the user then there will be links to the users guid in the system but with no user to link to.

This is why you use the CRM SDK because it will add, delete and update records in the correct way which triggers necessary background tasks.

This is an unsupported customisation, when you sign up to become a CRM developer you should be made to sign the oath – I can view the Microsoft Dynamics CRM database but I am never allowed to change it’s values directly.

If tempted to use unsupported customisations read this, Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM

The quick answer is Microsoft won’t support your CRM if something goes wrong, even if the fault is a bug in Microsoft Dynamics CRM.  Putting unsupported customisations is basically invalidating your warranty for support.

What users?

You can’t delete user records but this doesn’t mean you need to take across the disabled users across to your different CRM.   Looking at the user records I found many of the disabled users had left the company.

You can easily find these disabled users by using the view Disabled Users.  If you are not going to take these users to the new tenant then you need to think about assigning the records because if you copy the records and the user guid isn’t there, you might get an error.

I wanted to take the enabled users but something to remember

Disabled users can still own records

Usually when you export and import records, if the process can’t find the user then it defaults to the user which is importing the records.  Is this correct or should another user own those records.

It was important I assigned the records to the correct owner in the old CRM because in the new CRM online I wouldn’t be able to tell what records were owned by different disabled users, all the records would be assigned to the importing user.

User records

When I started thinking about what records a user might have

  • Account
  • contacts
  • activities
  • emails
  • leads
  • etc, etc

You might think how will you find all the records a user owns, thankfully Microsoft have a very useful Reassign records button on the user record

Reassign All

get yourself over to users – Settings –> Security –> Users

On the User record you will see a Reassign Records button

CRM 2016 reassign all records

CRM 2016 reassign all records 1

When you press the button it must reassign it will reassign the records and pops up this message

CRM 2016 reassign all records 2

When all the records are assigned the message disappears.

One thing to note, there is no way to know which users you have assigned records so you have to monitor this yourself.

For some reason when I reassigned some users and then clicked on another user, I got an error when trying to reassign those records.

CRM 2016 reassign all records 3

To resolve the problem I had to refresh my browser.  I’m not sure the cause of the error, my guess would be perhaps the plugin (or what ever does the reassigning) was already executing or perhaps the table was locked.

Workflow users

You must make sure users who own workflows are not disabled or have the license removed because this will stop the workflow from running.

Workflow’s suddenly not working is not a problem when moving from one CRM instance to another because the workflows get assigned to the user importing the solution file.

This is a problem in existing CRM instances when a user leaves the company, when you disable the users and/or remove their CRM licence any workflows they have running will stop.

Creating the users

With office 365 and Microsoft Dynamics CRM online adding users is a four step process.

  1.  Add the users into Office 365
  2. Assign the users CRM licences
  3. Assign the users to the correct business units
  4. Assign the users security roles

Office 365 does allow you to bulk import and allows you to download a template.

Once you have created the users then you can assign the records and the records can keep their original owners

CRM 2016 – How to enable languages

You can never understand one language until you understand at least two.
Geoffrey Willans

 

Someone asked why can I only see English as the available language?

 

Microsoft Dynamics CRM support multiple languages and has language pack you can install and enable, this article will talk about how to do it and the differences between CRM Online and CRM on-premise

Languages

You select the base language when you create you a CRM instance, like the base currency this cannot be changed.

If you want more languages available to users, you need to install language packs and these install more language settings onto the CRM server.

Language translation works by all the text fields in Microsoft Dynamics have a guid/unique reference and Locale ID.  The language the user selects in their personal settings format options will set the Locale ID (LCID) also known as loc code

You can see the list of all LCID’s here – Locale IDs Assigned by Microsoft, below are some examples

  • English – United States 1033
  • English – United Kingdom 2057
  • German – Germany 1031
  • French – France 1036

CRM On-Premise

For Microsoft Dynamics CRM On-Premise  you need to download language packs and install them.

Instructions for CRM On-Premise are found in the links below

Install and enable a Language Pack

Install or upgrade Language Packs for Microsoft Dynamics CRM

The language pack can be downloaded here

I believe it downloads all the language packs and then you need to select the specific country, which means you need to know the LCID code for the language.

CRM Online

So how do you install language packs for CRM online when you don’t have access to the server to install the language pack?

It turns out it’s easier.

Navigate to

Settings –> Administration -> Languages

Install Language pack

Then you see a list of languages and all you need to do is tick the one you want

Install Language pack 1

but be warned this can take several minutes and disrupt access to Microsoft Dynamics CRM.  I’m guessing it’s a bit like installing a Solution file and something you want to do out of hours.

Install Language pack 2

You press OK and then it loads the language and it will take a few minutes

Install Language pack 3

How to select a language

Once you have imported the language, it will then be available to user to select in their personal settings.

It’s important to note, this is a personal setting and not a system setting, you cannot change the language for CRM, it’s stuck on the base language

click the cog on the top right –> Languages

Install Language pack 4

You can set the user interface language and the help language, it’s possible to set these to different values if you want.

Other Language considerations

I remember working on a CRM 2011 project and having problems with OptionSet, these caused problems with multiple languages because the values in the OptionSets were not translated into different languages.

I did a quick internet search and there is some great material on this and Microsoft have a solution to this

 

CRM 2016 – Import error – A validation error picklist is outside of the valid range

Hosk the master of the CRM error blog post said no one ever, steam rolled into another frustrating error.  Exporting and importing data rarely goes without problems because data always finds a way to get itself into a non importable format

The task

I was importing 300 opportunities from a CRM 2015 Online instance to a CRM 2016 online instance.  There was much data and the customer didn’t want to pay so I was using free solutions and not Kingsway SSIS or Scribe

Instead I am using the excellent Lucas Alexander’s Dynamics CRM Configuration Data Mover v1.10.  If you have used the CRM configuration data mover before it’s awesome and you should definitely check it out.

If you haven’t heard or have never used the Dynamics CRM Configuration Data Mover then read the introduction blog page below

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

If you want to know about the guids or understand a bit more about my thoughts on the CRM Configuration data mover read the blog post The importance of keeping the same guids between CRM instances

Import error

I was important an opportunity record and I got this error message using Dynamics CRM Configuration Data Mover.

If you have never used the Dynamics CRM Configuration Data Mover read the introduction blog page below

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

If you want to know about the guids and understand my thoughts on the CRM Configuration data mover read the blog post The importance of keeping the same guids between CRM instances

2016-06-22 23:52:06,459 RECORD ERROR: a4115b45-e37e-e511-812b-fc15b426e6e8, opportunity, OPERATION: CREATE, MESSAGE: A validation error occurred.  The value of ‘crm_picklist’ on record of type ‘opportunity’ is outside the valid range.

As error messages go this is pretty informative, I looked at the field and found it was a picklist.  Out of range errors usually occur when your code goes through a loop and tries to reference a value in an array with a number larger than data in the array.

I searched the Hosk CRM blog for the answer because I remember a similar issue with Status Reason.

I found this blog post, which was interesting but didn’t help

CRM 2015 – how to find Statecode value

Next was this one, it seemed

CRM 2013 – Understanding Status and Status Reason – think before deleting them

which pointed to this blog

CRM 2013 – What happens when you delete a status reason currently in use

I felt these were pushing me down the right path and the problem was probably linked to OptionSet items which were referenced on the records but which had been removed.

The way OptionSets work is they have a text value and in another database field they contain an integer.  I was guessing those records which didn’t import had an integer number which didn’t exist in the new CRM system but how could I find them.

Looking at the opportunity records I could see this field was a required field but there were 80 records which were blank.  The blank records means CRM didn’t know what to show but how could I tell what integer value was held?

My previous problem was investigated by using SQL queries (look at CRM database data but don’t change it – Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM)

I wondered if FetchXML would return the integer values.

I used the awesome XRMToolBox which has the great FetchXML Builder by Jonas Rapp in it.

Data import error 1

You can download this in the Plugin store.  I had some problems with the plugin store but found a solution – XRMToolBox – loadFromRemoteSources error

I created a fetchXML query to select the opportunity records and the field from the error

Data import error

You can see the some of the records are bringing back text values which are no longer valid values for the global OptionSet.  When I imported these records into a new CRM instance this invalid values caused an import error.

When you remove OptionSet values make sure you migrate the records with those values before you delete the value and you will avoid this problem.

A great feature of the FetchXML builder is you can run query and then click on the records which opens them in CRM.

The problem was many of the records were inactive (Won/Lost) which meant I had to reopen them to update this field.  This then reset the won date which caused a bit of a headache.   There was a field of last updated, so I used that to set the date of won/closed

There is a slight but in the FetchXML builder which when you open a record by double clicking the results

https://hoskcrm.crm4.dynamics.com//main.aspx?etn=opportunity&pagetype=entityrecord&id=8b16f2d8-46fa-e511-8157-c4346bac0f38#470

it puts a double forward slash before the main.aspx, this stopped me from reopening the record but if removed one of forward slashes then I could click the reopen button

so from

https://hoskcrm.crm4.dynamics.com//main.aspx?

to

https://hoskcrm.crm4.dynamics.com/main.aspx?

I could then edit the records and fix the records which weren’t importing.

Failed to Generate Excel Error

I was getting a bit concerned because I was only missing 50 records, I thought I could manually import these but when I tried to export the data from CRM to Excel I was getting this error

Data import error 2

This was a bit of show stopper because it didn’t give me any details about the cause of the potential problem.  I was trying to export all the fields from the opportunity and I was wondering if this was too much data but when I tried to remove the fields with no data I was still getting the error.

I could export the data using FetchXML but it didn’t allow me to copy the header and there was a lot of columns.

If you get this error this blog post has a potential solution

How to Solve the ‘Failed to Generate Excel’ Error When Exporting in Microsoft Dynamics® CRM

It thinks the error is caused by different columns having the same name but I haven’t checked this out yet.

 

 

 

 

CRM 2016 – What you need to know about Themes

The introduction of Themes in Microsoft Dynamics CRM 2015 added much called for functionality to allow customers to change the branding of their Microsoft Dynamics CRM instance.  With this one feature Microsoft removed one a major driver for unsupported customizations in Microsoft Dynamics CRM (Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM)

I’m studying for the MB2-712 – CRM 2016 customization and configuration exam and one of the new topics is Themes, in this post I will show what Themes do and some of the limitations of themes.

Themes are awesome

Themes added much demanded branding functionality, it allows you to change colour scheme of your instance of Microsoft Dynamics CRM and add your company logo to replace the words Dynamics CRM.

Lots of customers asked to change the colour scheme but these changes could only be done using unsupported customizations.

The main functionality of themes is

  • Add a logo to CRM
  • create entity specific colouring
  • Change navigation colours

Where do I find themes

One of the trickiest aspects to themes is finding out where they have the functionality, it’s hidden away in
Settings –> Customization –> Themes
Themes 1
  Themes 2

Add a logo

The most common task you will need to do is add a logo.

You need to create a new theme first, the easiest way to do this is to clone the default solution

Open your new theme

theme 4

Select the Logo lookup.  You will need to create a new web resource

theme 3

Select logo and publish the theme.  Just because Microsoft allows you to select themes, it won’t stop you creating ugly colour schemes

theme 5

Quick start

Quick 2 minute video introducing you to themes

CRM 2015 – Theme’s youtube video

This technet article explains in detail what you can do and the limitations of themes

These two blog posts go into themes in details, showing you what each change does and where it’s used.

One  criticism I have with themes is choosing the colours is difficult because you have to type in the correct color code and who knows that.  Luckily CRM MVP Guido Preite has made a fantastic Dynamics CRM theme generator

Dynamics CRM Theme Generator

It allows you to easily pick colour and preview your choices, awesome work Guido

Interesting use for Theme’s

Themes can enable people to easily identify what environment they are on.  When you have lots of environments

  • Production
  • Pre-Production
  • Q&A
  • Test
  • Dev

It can be difficult to know which environment you are on, particularly if you have numerous Microsoft Dynamic CRM’s open at the same time, which is something developers often do because they are comparing values between environments.

In the CRM 2011 days we use to put an unsupported change which changed the a label on the CRM, sorry I mean other CRM developers did this sort of thing, I would never put an unsupported change into CRM 🙂

Themes allows you to set different CRM environments as different colours, increasing the chance of someone not accidentally updating production.

Useful resources for Themes

After publishing this blog post, Natraj Yegnaraman got in touch to send me these two interesting blog posts he wrote on Themes.

Bookmarklet: Theme Colour Picker

This is great Bookmarklet which adds colour picking functionality to the form

Using Stylish to enhance CRM

This isn’t related to themes but it allows the labels to be fully shown

Limitations

The default theme is called CRM Default Theme

The default theme is type System and Default Theme = Yes

This technet page has some good limitations

What can you change or adjust?

  • Logo
  • Logo tooltip
  • Navigation bar color
  • Navigation bar shelf color
  • Header color
  • Global link color
  • Selected link effect
  • Hover link effect
  • Process control color
  • Default entity color
  • Default custom entity color
  • Control shade
  • Control border
Themes cannot be included in Solutions.  This means you need to export and import them between organisation.
After importing a theme you must publish it.
When you publish a theme, previously published theme will become unpublished
The limitations below are from the technet article
  • Even though the theme colors are applied globally throughout the application, some legacy UI areas, such as gradient buttons, will retain the default colors.
  • Certain areas must use dark or light colors to contrast with the default icon colors. The icon color isn’t customizable.
  • An entity can’t be displayed in different colors under different Sitemap nodes.
  • The Sitemap nodes colors aren’t customizable.

Thoughts on Microsoft Dynamics CRM Strategy

All failure is failure to adapt, all success is successful adaptation.”
― Max McKeownAdaptability: The Art of Winning in an Age of Uncertainty

Strategy is about shaping the future.  Look at how you can win, where the opportunities are, create actions develop knowledge, skills and resources to deliver the strategy.

Strategy is important because what brought a company success in the past might not work in the future, you must keep evolving at a company.

Successful companies are those who adapt to their changing environments, those who understand the direction of an industry, create and deliver strategies suited to opportunities arising from change.

“Change is inevitable, progress is not.”
― Max McKeownThe Truth About Innovation

Do I need to know about strategy

Individuals need strategies to progress, the skills and knowledge you have might not be in demand in the future, you must learn new skills, technologies to adapt to new roles.

You might think I don’t need to know this, it doesn’t affect me, I go to work, do my job and go home at 5.30 but what about?

What technologies will in the next Microsoft Dynamics CRM project, it could be CRM Online, portal, Azure services, Machine learning, gamification.  Could you deliver this project or will they need to hire someone else?

What are you going to learn next? if you pick one new technology used in Microsoft Dynamics CRM which is it? why did you choose that? is it the best choice?

You are making strategic decision’s daily but if these are not linked with your future vision, you could be investing your time and energy into areas not helping to progress your career.

Plain and Simple

I’m reading the excellent book Leadership:Plain and Simple: Plain and Simple (2nd Edition).  It discusses when John Harper become UK Managing director of Hasbro (a global toy company), when he came in things were in bad shape, losing money, morale and confidence were low.  His plan was to energise and engage the workforce.  He closed the company for a day and they discussed the ideas

  1. What is the future we want want and how great can we be?
  2. How do we play to win and perform at our best
  3. How do we build relationships internally and with customers, so we can deliver the future together as a team.

The questions are direct and decisive, they create a vision of the future and create a strategy to make it happen.  A leader cannot do the work himself, he needs to inspire the workforce deliver the vision.

These quotes highlight the role of a leader and limitation of a leader because without an engaged workforce they have no one to implement the strategy

A leader has the vision and conviction that a dream can be achieved. He inspires the power and energy to get it done.”
— Ralph Lauren

“A leader’s role is to raise people’s aspirations for what they can become and to release their energies so they will try to get there.”
— David Gergen

The book Playing to Win: How Strategy Really Works simplifies strategy to these two questions

  1. Where to play?
  2. How do you win?

Successful companies answers to these two questions seems obvious

Apple

  • High end smart phones and gadgets
  • beautifully designed, easy to use, high quality gadgets

Facebook

  • Social interaction
  • easy to use, different methods

Microsoft and Microsoft Dynamics CRM

To help me understand the questions I would answer the questions if I was head of the Microsoft Dynamics CRM division.  I wrote about the evolution of Microsoft Dynamics CRM in the blog The rise of Microsoft Dynamics CRM

1 – What is the future we want want and how great can we be?

The Microsoft Dynamics CRM strategy filters down from the global strategy of Microsoft – Mobile First, Cloud First.

  • The future for Microsoft Dynamics is Microsoft Dynamics CRM Online.
  • Improve the Microsoft Dynamics service,  redesign the internal design of to incorporate azure’s scalability to improve performance.
  • Improve the mobile functionality to match Resco
  • Microsoft Dynamics CRM act as a hub, linking to many specialist services (Machine learning, Big data analysis), Microservices/app structure.
  • Portals used more, allowing CRM deployments to offer self service portals, contractor functionality and extending CRM to none CRM users.
  • Social CRM to really take off

2.  How do we play to win and perform at our best?

Ask yourself what is Microsoft good at? why do people choose Microsoft Dynamics CRM?  Office Integration, competitively priced, cloud solutions/Azure functionality is world class.  Microsoft are constantly innovating Microsoft Dynamics CRM and surrounding products.

  • Keep improving Microsoft Dynamics CRM
  • Purchase strategic Microsoft Dynamic Solutions/companies
  • Keeping prices cheaper than Salesforce.
  • Microsoft can continue to benefit from improved Azure functionality and an increase in Azure services and data centres.
  • Microsoft must improve their mobile application or buy Resco
  • Strategic purchased of related services.

3 – How do we build relationships internally and with customers, so we can deliver the future together as a team.

Microsoft work hard to embrace Microsoft Dynamics CRM partners and help enable them to sell Microsoft Dynamics CRM (although perhaps more focused on larger partners and enterprise solutions).  The training materials Microsoft offer is pretty good and the Azure training is really good.

Microsoft offer a competitive price for Microsoft Dynamics CRM Online.

Internally hiring the best people who want to make a difference.  Under Satya Microsoft have started to innovate rather than copy.   This outlook should be brought to the Microsoft Dynamics CRM division to create innovative new functionality and have a workforce engaged to deliver it.

Hosk’s Dynamic CRM Practise

How would I answer those questions with my virtual Hosk’s Dynamic CRM Practise and what strategy would I come up with.

1 – What is the future we want want and how great can we be?

When implementing CRM solutions I find lots of cautious companies who wary about signing up for the project due to earlier bad experiences with IT projects and failed CRM projects.  There are many companies who have lost confidence in their existing Microsoft Dynamics CRM supplier.

Microsoft Dynamics CRM companies don’t sell products they sell people, processes, technical knowledge and experience (I know companies who create products).

The future  vision is to create a reputation for being an innovative company delivery quality projects, collaborating with the customer.  You want your CRM company to be the best in their sector and who put quality and customer satisfaction at the top.

It‘s difficult to differentiate through price alone, focus on being the best choice to deliver CRM projects for the customers requirements with regards to experience, vision and capability (skilled people, resources).

When a customer buys CRM from your company

  • you know the reason,
  • the staff know the reason
  • the customer knows the reason.

To win business you must have strengths which other companies cannot match.  Pick an area of expertise and become the best at it

2- How do we play to win and perform at our best

The future for Microsoft Dynamics CRM practices is to specialise in an industry or technological service.  The Microsoft Dynamics CRM industry is crowded with lots of companies offering similar services and at similar prices.  Ask yourself why would someone buy CRM from my company?

  • price?
  • experience?,
  • an existing solution?

Most successful Microsoft Dynamics CRM resellers and the ones Microsoft have purchased, they focused on a specific area and become the market leader.

FieldOne – The best Field Services company in the Microsoft Dynamics CRM space (the only one I know to be honest).  They were so good Microsoft brought them, which is an indication you are doing something right.

Parature – Fantastic self-service portal, knowledge base, which can run alone and is slowly (very slowly) being integrated with Microsoft Dynamics CRM.

FantasySalesTeam – Microsoft Dynamics CRM and Gamefication (Hosk blog –  Is Gamification in a Microsoft Dynamics CRM a gimic?)

Resco – The leading Microsoft Dynamics mobile application/framework (Hosk blog – Why Resco acquiring CWR’s mobile CRM is important)

My strategies

  • Focus on Microsoft Dynamics Online solutions and specialise in delivering complex Microsoft Dynamics CRM projects online.  Align skills with Microsoft’s vision – Mobile, Cloud (Azure)
  • Concentrate on delivering FieldOne projects.  Field services is a growing marketing with Microsoft Dynamics CRM.
  • Get a head with Azure Machine learning and CRM.
  • Focus on 2 sectors, Create solutions to speed up projects.

3 – How do we build relationships internally and with customers, so we can deliver the future together as a team.

You need leaders, who can create a vision, mission and goals and explain this to the organisation.  Everyone should understand what the company strategy is and it’s goals.

Employees

You need to engage the employees so they will deliver the strategy.  Fully engaged employees not only understand the strategy but add to it with ideas, energy and hard work.  Engaged employees feel valued, listened to and believe they are making a difference, this leads to quality work.

If you think about the difference in amount and quality of work when you were engaged on a project compared to other projects, the difference is huge.

Staff must have the skills/training to deliver projects to high standards, customer satisfaction is vital.  The focus is on quality projects, quality individual performance and constant improvement.  In the Microsoft Dynamics CRM industry you are mostly selling people.  Happy, motivated and engaged in order to deliver great projects.

Team is important in Microsoft Dynamics CRM community, the number of technologies/products and services used in Microsoft Dynamics CRM projects is growing, the team must collaborate, talk, support and share knowledge to deliver quality projects to meet customer expectations and enhance the reputation of the company.

Customers

Great relationships with customers come from delivering projects which meet business requirements and delivered on time.

Conclusion

Writing this article helped me understand I haven’t thought deeply about the subject before and my  thoughts and ideas were other people’s or snippets of articles I had read.   I could see some of original thoughts on the subject emerging but more work is needed to come up with a viable strategy for the Microsoft Dynamics CRM industry.  I’m not sure my Hosk CRM practise would have done particularly well with the strategy outlined above.

It‘s difficult to create strategies without understanding the current Dynamics CRM market, identifying where the Dynamics CRM industry is heading and what opportunities are available.

I hope you found the article interesting, please leave some comments on the subject

If you are interesting in learning more, I recommend these two books

ALL VIEWS AND OPINIONS ARE PERSONAL OPINIONS OF THE HOSK 

CRM 2016 – How to rename the default business unit

Our greatest weakness lies in giving up. The most certain way to succeed is always to try just one more time. Thomas A. Edison

I came across an annoying bug, I couldn’t rename the Default business unit because the parent business unit is mandatory.

History of default business unit renaming

The renaming of business units is a long and extremely interesting subject…..said no one ever.

The default business unit or parent business is automatically created using the name of your organisation.  In CRM 4 I don’t think you could rename any business units.

In CRM 2011 they allow you to rename business units which were not the default

CRM 2011 – You can rename and delete business units

In CRM 2013 (according to my study notes) you couldn’t rename the default business unit in CRM 2013

CRM 2013 – MB2 703 – Manage user access, Teams and sharing

Another interesting fact

default business unit team cannot be re-parented, deleted or renamed and it’s members cannot be modified.

In CRM 2015 you could rename the default business unit, well it’s possible but Microsoft make it difficult for you to do because the parent business is a mandatory field but if you are editing the default business unit it has no parent business unit, which means you can’t save the record.

CRM 2011 forms?

I tried using God Mode JavaScript shortcut but this didn’t work and I’m guessing this might be because this form is an old school CRM 2011 style form?  What is it doing in CRM 2016!

rename business unit 2

You can see the annoying required Parent Business unit field

Solution

There are a few ways to resolve the problem but the easiest way is to go to

  • Settings –> Customization’s
  • Entities –> Business Unit
  • Open the field – Parent Business – parentbusinessunitid

rename business unit

  • Change the Field Requirement from business required to optional

rename business unit 1

  • Save and publish customisations.
  • Change the name of the Default Business Unit – Save
  • change the Field Requirements of the Parent Business field back to required and publish

Mission accomplished

If at first you don’t succeed, try, try again. Then quit. There’s no point in being a damn fool about it. W. C. Fields

 

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 

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.