Hosk’s Top CRM Articles of the week – 28th September

I have been de-cluttering my stuff the last week, unsurprisingly I have too much stuff, which makes it difficult to tidy it all the way.

This book is amazing, it has changed me from a messy person to a tidy person who now folds his pants and socks! because as the author says “folding is fun”

The Life-Changing Magic of Tidying: A simple, effective way to banish clutter forever

The two key points which have changed the way I view tidying.  You are not deciding what to throw out but what to keep.  If an object doesn’t give you joy then get rid of it.

“Keep only those things that speak to your heart. Then take the plunge and discard all the rest. By doing this, you can reset your life and embark on a new lifestyle.”
― Marie Kondo, The Life-Changing Magic of Tidying Up: The Japanese Art of Decluttering and Organizing

 

The other key concept is once you have decluttered, everything has it’s place.  All of your items should have a distinct place and you put an item back in it’s designated place.

Buy the book, it’s awesome and if you click the link from this page I will get 5 pence or some huge amount :-).  I will be buying some for Christmas presents

Quote of the week

Knowledge alone is static. Know-how is knowledge in motion – Gold rule of software engineering

Joshua Levy

Article the week

Understanding the Microsoft Dynamics CRM Performance Center

Microsoft have added an awesome tool to show you the performance of your CRM forms but then it seems to get hardly mentioned.

The Cobalt blog is the best explanation of how it works I have read.

The most important bit which I keep forgetting, how to get the form up

Hit Control+Shift+Q to open the Performance Center window

Dynamics CRM performance troubleshooting

Good blog with lots of tips on finding performance issues

 Best of the Rest

CRM Web API Preview – Generate Strongly Typed Objects from Metadata Document

Great blog post on using the new Web API preview to create strongly typed objects and I personally loved strongly typed objects

What happens when you publish a duplication rule

have you ever wondered, me neither but someone has.

Online proctored Microsoft certification exams are now available

You can do your CRM exams in your pants in the comfort of your own home, beware they will use your laptop webcam to check your are not cheating.

CRM 2015 – Advanced find to return all enabled users with a security role

A Hosk blog talking about advanced finds

A list of CRM blogs you should be following

A small list of great CRM blogs you should be following

What’s new in CRM 2016 and why you should read the preview guide

Hosk’s looks at the CRM 2016 preview

Getting Cortana to Work on Australian Windows Phones

It’s good to see people putting Cortana to work

Microsoft Dynamics CRM 2013 White Papers & Technical Documentation

A great list of all the CRM 2013 white papers

CRM 2011 – How to set up a lookup using Javascript

How to set a lookup using JavaScript

Storing the “Last Activity” on a Microsoft Dynamics CRM record

Good blog to show you how to store the last activity, who needs machine learning

CRM 2011 shortcuts

CRM has lots of shortcuts, who knew

CRM Plugins – Stopping infinite loops and understanding PluginExecutionContext.Depth

How to stop infinite loops in your plugins, it’s all about the depth

How to get the server time in Dynamics CRM?

You never know when you need to get the server time, it’s like hammer time but better

Great list of CRM version numbers, Release Dates, Build Numbers, and Collateral 

It’s hard to remember build numbers, so luckily someone has collated them all in one list for you

how to Manage Microsoft Dynamics CRM Online updates

A great article from Microsoft about managing updates, you can turn them off to have one a year.

CRM 2015 – Why filtered views are useful

Filtered views are more awesome than you know

New Forms Authentication in ADFS 3.0 and IFD for Dynamics CRM

ADFS 3!

Lookup Field vs Option Sets in Dynamics CRM

Which is better, when should you use a lookup field?

MobileCRM: A different mindset in projects

great article on how to approach mobile CRM projects

Entity Image updater tool

It’s a tool to update entity image

Programming

he Golden Rule of Software Engineering

code reviews

other

Sleep May Be One of Our Most Powerful ‘Antibiotics’

Tires, coffee and people

Tim Ferris Morning Rituals podcast

How Do Excellent Performers Differ from the Average?

a dozen things I’ve learned from charlie munger about mistakes

tips on Writing Funny by Scott Adams

Keeping Things Simple and Tuning out Folly

Solitude and Leadership

What Two Teenagers Learned From Watching Every Best Picture Oscar Winner

Previous top picks

Hosk’s Top CRM Articles of the week – 21st September

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things

Advertisement

Is Gamification in a Microsoft Dynamics CRM a gimic?

To answer the question in the title, Microsoft certainly doesn’t think so because they have just acquired FantasySalesTeam.

Microsoft Acquires FantasySalesTeam, an Innovative Sales Gamification Platform, to Help Organizations Increase Productivity

CRM Gamified were the first company I had heard of using CRM and gamification and have an excellently sounding add on

Motivation Engine

CRM Gamified have a section on why gamification works, the three key principles, which you can see here

  • MOTIVATIONAL INTRINSIC PSYCHOLOGICAL FACTORS
  • DIFFERENT RESULTS ARE ACHIEVED BY CHANGING HABITS
  • KPIS DO NOT CHANGE JUST BY LOOKING THEM OVER

I will warn you this blog post is the Hosk thinking out loud, it doesn’t really go anyway but I thought I would share my thoughts on the subject.  I will add I haven’t used a gamification system yet but there usage is on the rise so maybe it’s a matter of time.

Core CRM

When I think of the core concept of CRM

Customer

Relationship

Management

It strikes me as feeling a bit old fashioned and slow moving when you consider the fast paced world of social media, twitter, instant messaging, the OMNI channel.

some of the benefits of a CRM system is having one source of data which multiples teams and individuals in an organization can use and leverage to effectively do their jobs.

CRM system give workers access to knowledge which can often be tucked away in individuals computers/heads/folders/documents.

CRM system can automate procedures

CRM systems can unify lots of desperate excel spreadsheets, bespoke software, different software all under one new CRM system.

CRM systems are

  • Information
  • People
  • Processes

What is gamification?

Here is a good definition of gamification

Gamification is the concept of applying game mechanics and game design techniques to engage and motivate people to achieve their goals.[1] Gamification taps into the basic desires and needs of the users impulses which revolve around the idea of Status and Achievement.

The main concept is making parts of process into a game and encourage competitive behaviour.

This sounds fun and funky but at it’s core you are measuring workers contributions with a score based system.  The purpose of the employer is to encourage the competitive instinct of your workers and encourage them to obtain more points.

Monitor

The monitoring and measuring (against co workers) seems a bit mean and possibly sinister but the reality is your bosses already compare your performance against your peers and this is traditional how pay rises are allocated, so it’s nothing new or something to fear.

I’m sure there are lots of bosses who would like to know what their employees are doing in more detail, with gamification they can can create a system to monitor and reward key tasks.

Teaching

The game elements interest me because when you play any computer games the points system teaches users how to become more effective at the game and how to get more points through action and the award of points.  It encourages innovation of processes and techniques to game (improve) the system and get more points.

Know who is effective rather than feel

One of the beautiful concepts of gamefiction is it can show you who are the most effective workers rather than using the often unscientific and potentially flawed method of opinion.  gamification makes companies assess the processes they go through and add value to those processes, it makes companies analyse what they do.

Changing Habits

People use habits to do common tasks without thinking too much, your brain goes on an auto pilot.  This is useful because it allows us to conserve some energy but the downsides are habits can be non thinking, doing tasks.  If you have a bad habit it means you instintively and repetitively doing something which isn’t particularly good for you e.g. eating too much, smoking, being messy, not sleeping enough.

At work people can get cultivatae average habits, which I would classify as habits which get your work done slowly.

Gamefication makes people analyse what they are doing and look to improve their working habits, swapping the ineffective habits with more effective habits.  The CRM users will get feedback from the points to help them find their average habits.

CRM gamified have a few articles on why gamefic

Fun

Would gamification make work more fun? hmmm I find this hard to believe but badges and points can motivate people in funny ways.

When the Microsoft Dynamics Community brought out new badges the gamer in me was urged to obtain them for seemingly little reward (does anyone care I have most of the badges is anyone impressed?)

Check out the Dynamics leaderboards here

Learn about Dynamics Community Badges here

I’m sure there are many people who have played a computer game on their computer/tablet/games system in order to get a power up, badge or level up, staying up late and depriving themselves of sleep to get it.

Incentives

Gamification tries to tackle the conceptive of incentivisation.  Are your workforce incentivised to work harder.  When I worked on a helpdesk in one of my first jobs, people were not incentivised to work harder and answer more helpdesk queries because

  • If you solved a query you were rewarded with more queries to solve
  • No one was measuring how many bugs/queries people solved
  • no one was rewarded for working harder.

Sales people are usually one of the few areas of the business who are incentivized to work harder due to commission based pay (e.g. you sell more you get more commission).

Games can be gamed

Games can be twisted by players to get more points.  If a company was using this system for dealing with incidents.  It could lead to players waiting for easy incidents to get more points rather than dealing with the incidents from the most important customers or priority cases.  I imagine there is a balance needed to reward the players but get the focus of the game aligned correctly.

Rules and configurations of games can be change, modified and adapted to ensure they are fairer.  This would be a vital part of the system because if the rules are not fair user adopted will drop.

Not all tasks are equal

The problem  with gamification is some tasks help everyone but the effect can be hard to calculate, not all tasks are created equal.

  • setting up shared information
  • automating processes
  • delivering letters

If sometimes necessary tasks are worth less points people will be less inclined to do them because of the opportunity cost (e.g. they could be doing a task which could get them more points).

Companies would need to think carefully about the rules of the game and possibly insist on a bit of turn taking.

Facts

Reading the interesting article mentioned at the start of this article

Microsoft Acquires FantasySalesTeam, an Innovative Sales Gamification Platform, to Help Organizations Increase Productivity

The facts quoted are impressive

  • Service Corporation International (NYSE: SCI) recently ran a pilot with 130 sales reps and compared their performance to almost 700 others. Those using FantasySalesTeam on average closed 88% more deals at 213% the average contract value.
  • Wireless Zone saw a 176% increase in total sales, 35% increase in specific product sales and a 9% increase in profit in the first month they ran FantasySalesTeam.

It would be fascinating to see the stats of the most successful sales people in terms of phone calls, emails, meetings in comparison to the least successful.  What are the more successful sales people doing, implementing gamefiction will not only highlight the most productive but give you a template as to what other workers need to do to emulate them.

Summary

Gamification is looking at the processes of a companies Microsoft Dynamics CRM system and trying to motivate people to use it more effectively.

I’m fairly certain it could make things more fun (who doesn’t like bettering their fellow workers) and reward people who are working effectively.

Interesting and I look forward to seeing how Microsoft will integrate the new company.

If anyone has any experience with Microsoft Dynamics and gamification please leave a comment I would interested to hear your experiences.

Testing CRM rollups and .NET versions

In this article I will talk about testing patches and how .NET versions can cause odd errors.

Rollups and CRM Version

I had a customer who was using CRM 2013 Service patch 1 and wanted to test their customizations still worked when CRM 2013 SP1 rollup 3 was applied.

Testing a new CRM service pack or rollup involves using a new server and CRM instance.

You can have many CRM organisations deployed on one CRM server but if you upgrade the CRM server it will effect all the CRM organisations and I don’t know any method to roll back rollups.

Why can’t you rollback CRM versions

To understand the question you need to think what happens (could happen) when you apply a rollup

  • Possible changes to the database tables
  • Update to CRM SDK
  • Depreciating certain functional in CRM SDK

Database changes

Microsoft might change the whole structure of the CRM database between service patches and rollups, which is one of the reasons Microsoft recommends you do not write any code/customizations/reports which run directly against the CRM database.  Microsoft provide filtered views and the CRM SDK for you to integrate the CRM database.

I think during the CRM 2013 update Microsoft used to have base and extension tables for each entity. e.g.

  • entitynameBase
  • entitynameExtensionBase

e.g.

  • accountBase
  • AccountExtensionBase

Here is some more information on the merging of tables, which explains how you can run the table merging as a separate job but you have to do it.

Run the base and extension table merge as a separate operation

I have written before about unsupported customizations before – Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM.  The primary reason you should avoid unsupported customizations is if you have to escalate an issue to Microsoft they offer limited support if you have unsupported customizations (because those customizations might be the cause of the behaviour/bug)

New functionality in CRM SDK and CRM

Usually (but not always)

  • Roll ups contains fixes
  • Service packs contain fixes and new functionality

New functionality doesn’t usually break anything but sometimes existing functionality might change.

The key point is the CRM SDK will have changed,

Old CRM SDK functionality depreciated

With one hand Microsoft giveth new functionality and the other hand they take functionality away (depreciate).

You should always read the What’s new for a new release of CRM – Why you should read the What’s new for developers because it lists not only the new functionality but includes what’s being depreciated in Javascript and CRM SDK.

Applied patches but stuff not working

I applied the rollup to CRM 2013 SP 1 rollup 3 but when I tried to test CRM, I noticed I was getting unusual errors.  The core functionality of CRM was working but I was getting errors when the plugins triggered calls to WCF web services.  Below is the error

The Web Service plug-in failed in OrganizationId: 3666c2e6-04f4-e411-80c9-000c292122be; SdkMessageProcessingStepId: 2ccabb1b-ea3e-db11-86a7-000a3a5473e8; EntityName: incident; Stage: 30; MessageName: Create; AssemblyName:
Inner Exception: System.TypeLoadException: Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′.
at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)

To find this error I had to turn on tracing and look into the event logs because CRM was not giving much information.

I have highlighted the key part of the error.

This article was useful

Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib

This seemed a classic DLL type error, this usually occur when you there are differences between .NET versions or DLL’s deployed.

In this particular scenario I could compare the .NET version installed on the working CRM environment and the .NET version and other DLL’s in the new upgraded environment.

So I needed to check the .NET version, Microsoft has a great page on this

How to: Determine Which .NET Framework Versions Are Installed

Be careful because you have to read it carefully.  I was checking the .NET versions in regedit (full instructions in the link above) and the folder said v4.  I was expecting a 4.5 folder, so I assumed it was version 4.

Its a better to know facts rather than making assumptions particularly when trying to find a problem.  In the example above I assumed the .NET versions where the same, which meant I then wasted time investigating other parts of the server and DLL’s looking for potential problems.

If I had read the article more carefully  it more carefully I would have noticed this very important section

The value of the Release DWORD indicates which version of the .NET Framework is installed.

 

The folder will be v4 but if this has been updated it will have a new Release registry value and the number in this registry settings tells you what version of .NET is installed

.NET versions

 

I found there was a DWORD value in the working CRM Server which indicates I had 4.5.1 installed

378675 .NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2

I checked on the server I was updating CRM 2013 SP 1 to rollup 3 and it only had .NET framework 4

What was happening was the web services were compiled with .NET 4.5 but when they tried to run on the new server it couldn’t find the correct dll versions, this caused the odd errors.

What I learnt

Don’t make assumptions – Know don’t assume.

If web services are not working check the .NET versions and look for the secret DWORD registry setting Release.

 

CRM 2015 – What is the CRM Outlook reading Pane?

I have started using CRM 2015 SP1 and the navigation tweaks are awesome.  So I will congratulate Microsoft on the navigation tweaks and wonder how they got it so wrong in CRM 2013!

The Outlook reading pane is a pain, that’s not entirely true but for an hour today it caused rampant confusing and gnashing of teeth.
I will explain the problem I had first.
CRM Developer Joe was perplexed because the CRM form being shown in Outlook wasn’t the same as the CRM form he was customizing.  He asked me why, why, why, why was this happening.
The contact form looked different than the information in outlook, except if you clicked on the contact it opened a CRM form which looked the same?!?!?!
Contact form in CRM Web
contact form

Outlook contact form but it still has fields which were removed from the contact form.
contact form outlook

So what’s the problem?

I haven’t used the CRM outlook add-in for ages, so I had to do a bit of clicking and looking around.

Searching the internet didn’t bring up anything useful, which was odd because if this was a problem then lots of people would have mentioned it.

Think, Think, Think, Think

I wondered if Outlook wasn’t refreshing properly but after un-installing and installing it still didn’t fix it.

I ended up clicking around and looking for settings, I then clicked on view.  Hmmmm Customize Reading Pane, what does that do?

custom reading pane

So I clicked it

custom reading pane 1

 AHA

The data which was being shown was the Reading Pane and the data it shows are not customizable (except you can remove some sections if you want).

What is the CRM Outlook reading pane?

The reading pane is a quick way to view contact information in a read only view.  It’s useful Microsoft have provided some quick view functionality, frustrating you can’t edit it and puzzling I couldn’t figure out where this information was coming from.

If you think of the CRM reading pane working like the normal Outlook reading pane, which shows you some details about an email without you having to open/read the email.

The CRM reading pane works in a similar way, showing you some details about the contain without having to open the contact record.  This works OK except when you have customized the contact record significantly because the new fields won’t be shown in the reading pane and fields you have removed from the form will be displayed

More information

Customize the Reading Pane in CRM for Outlook

Navigating the CRM Outlook Client

How to Hide Tabs in Reading Pane for Dynamics CRM Outlook Client

CRM Developer Toolkit Alternatives

I was glad to see my blog post Where is the developer toolkit for CRM 2015

getting some retweets and very please to see the Connect suggestion now has 51 votes

Dynamics CRM Developer Toolkit for CRM 2015/Visual Studio 2013

please keep voting and hopefully someone from Microsoft will reply.

Silence

It seems crazy the current CRM developer toolkit doesn’t work with Visual studio 2013, it’s over 2 years old with visual studio 2015 coming soon!!

What I find most puzzling is the complete lack of information about when/if there is going to be a new version of the Developer toolkit.

  • If Microsoft are making a new sexier CRM Developer toolkit, tell the CRM community
  • If Microsoft are not going to update the CRM developer toolkit, tell the CRM community so CRM developers can start to think of alternatives.

Microsoft has no obligation to update the CRM developer toolkit and it’s worth remember this was/is a tool they gave to the CRM community free of charge.

The lack of update to CRM Developer toolkit for Visual studio 2013/2015 and no version for CRM 2015 SDK is starting to get to a critical juncture. There will be more and more CRM Developers facing problems.

The problem will be most significant to new CRM developers will find the lack of support for the CRM developer toolkit most confusing.  When Developers struggle to start developing with a tool/software they can easily give it.

Setting up CRM Dev toolkit with Visual Studio 2013

I managed to get the CRM Dev toolkit working with visual studio 2013 and you can read more about it in the blog post below

Getting the CRM Developer toolkit working with Visual Studio 2013

Replacement for CRM Developer toolkit

Jason Lattimer has created some interest templates and with a bit more work could crate a CRM Developer toolkit replacement.

Jason is looking for some feedback on his current work, so please click the link below and give him your thoughts and opinions on his current work and potential features you would like to see.

Possible Developer Toolkit Replacement?

What are the CRM Developer toolkit alternatives?

With Microsoft being ominously silent about the CRM Developer toolkit and with increasing numbers of CRM developers running into compatibility problems, it got me thinking about the alternatives.

Below I list some of the alternatives to using the CRM Developer toolkit, I have three questions

  • Is it available now?
  • Pro’s
  • Con’s

Handcrafting – DIY

Do it yourself, old school style of creating plugins and deploying them using the plugin registration tool.

It isn’t difficult to create plugins/custom workflows, you just need to read the CRM SDK Write a plug-in, extend the IPlugin interface and then deploy the DLL using the plugin registration tool.

Is it available now?

Yes and always will be

Pro’s

It will definitely work and you will have no problems with compatibility.  This is how plugins use to be written in CRM 4 and CRM 2011 before Microsoft created the CRM Developer Toolkit.

Writing plugins this way is usually done using some template plugin code (much like the Plugin class in the CRM Developer Toolkit).

Con’s

It will be slower and probably involve making some templates.  This choice would involve lots of extra framework type of work rather than development.

Hacking CRM Developer toolkit

You can hack the current CRM developer toolkit to get it working with Visual studio 2013 and working with CRM 2015.

blog to get CRM Developer toolkit working with CRM 2015

Getting CRM developer toolkit working with visual studio 2013

Is it available now?

Yes, as long as you have a few hours and a lot of patience you should be able to get the CRM developer toolkit working with CRM 2015 and/or Visual studio 2013.

Pro’s

It means you can use the best current free tool for CRM development.  The CRM development toolkit is probably the standard CRM development tool used.

It makes CRM development easier and learning the to use the tool will give you skills required by most CRM re-sellers.

Con’s

Hacking the CRM Dev toolkit can be tricky and there is a possibility it might not continue to work with future updates.

Hacking the toolkit might be unsupported.  In theory it shouldn’t be because it’s not an unsupported customization but an unsupported development environment.

If you work with a team of CRM developers it means all CRM developers need to hack their development environment, which all adds up to a bunch of wasted time.

CRM Solution Manager

The CRM Solution manager is a paid for CRM Development tool.  You can check out here

The License is a £136 / $209.95 dollars and the license is on per computer basis.  There are discounts for bulk license buying (find the details on the site).  My initial opinion is the price doesn’t seem prohibitive.

I haven’t used the CRM solution manager yet but there is a free 30 day trial and with no CRM developer toolkit coming any time soon, so I plan to give it a test run and give a more in-depth review.

Is it available now?

Yes.

It integrates with  Visual Studio 2010, 2012, 2013 and 2015

Works with CRM versions CRM 2011, 2013 and 2015.

Pro’s

The CRM Developers I know who have used the CRM solution manager have only good things to say about it and none of them want to revert back to CRM Developer toolkit once they have used the CRM solution manager.

I will reinstate I have not used CRM solution manager but basing my review on the functionality specified on the CRM solution manager website.

CRM Solution Manager provides the following features for custom plugins and workflows:

  • Build and publish to CRM with the click of a single button.
  • Automatically merge referenced assemblies using ILMerge and then publish the merged assembly to the CRM database.
  • Register multiple steps and images at once.
  • Ability to bulk enable or disable steps.
  • Ability to bulk delete images, steps, plugins and assemblies.

Web resources

  • Download your web resources from CRM directly into Visual Studio. Then create, update and publish any web resource with the click of a single button.
  • Intellisense for the Xrm JavaScript objects are fully supported for both JavaScript and TypeScript

Creation of early bound proxy classes

CRM Sitemap editor

A significant pro is the CRM solution manager is compatible with most version of Visual studio and the last three version of CRM (2011, 2013 and 2015).

A significant pro is the positive reports given by users of the CRM solution manager.

Con’s

I haven’t tried the tool yet (to be changed in the near future) so I’m basing my review mostly on comments on the CRM solution manager website.

It’s a paid for tool (although not expensive) which means lots of companies will not use the tool because they are unwilling to pay the license cost.  This could cause difficulties if you get used to developer with the CRM solution manager and moving to a company which doesn’t use it.  I don’t foresee this being a problem for experienced CRM developers.

I don’t believe usage of the CRM solution manager is wide spread yet but this could change with the lack of CRM developer toolkit

Microsoft release an updated version of the CRM developer toolkit

Maybe there is a reason Microsoft have delayed releasing an updated version of the CRM developer toolkit.  Maybe Microsoft are going to release a new awesome updated version of the CRM developer toolkit

or maybe Microsoft will just do minimal updates to the current CRM developer toolkit to make it compatible with CRM 2015 and Visual Studio 2013.

Is it available now?

No, I haven’t heard anything to indicate this is the case, a deafening silence on the subject from Microsoft.

There is hope to this suggestion because a new version was displayed in Extreme 2014 (9 months ago).  Just imagine how awesome it will be after 9 months more development has been done.

There is a good comment on the connect suggestion

I’ve reached out to the Microsoft sdk team and requested that they put me in contact with Matt Barbour. I was at eXtreme CRM in Las Vegas where he demoed the CRM Developer Toolkit for CRM 2015. That was in October 2014 which was 9 months ago and we still haven’t heard any news! We were also urged to utilize Connect and assured that Microsoft pays attention to the feedback here. So far there still has not been any response from Microsoft on this thread after being created nearly 5 months ago. Hopefully Matt will be able to provide an update once I can get in contact with him.

Pro’s

Continuity.  The majority of CRM developers could continue using the CRM developer toolkit.

The CRM developer toolkit works well and most developers understand how it works and it’s quirks.  An updated version would allow CRM developers to concentrate on CRM development.

Con’s

If it does happen it’s likely to be some distance in the future, which means it wouldn’t be of much use to CRM developers now.

It’s not available and might never be.

Microsoft release the CRM Developer toolkit as opensource

Microsoft could release the CRM Developer toolkit as an opensource project and allow the CRM community to update the CRM developer toolkit.

Is it available now?

No, it’s just the Hosk thinking out loud.

Pro’s

It would allow the CRM developer toolkit to be quickly updated to work with CRM 2015 and Visual Studio 2013.

The Microsoft Dynamics CRM community has many talented CRM developers who could work on improving the CRM developer toolkit.

Con’s

An open source CRM developer toolkit could become bloated with functionality not needed by the majority

The CRM community creates a CRM Developer Toolkit Replacement

The initial purpose of this blog post was to highlight, promote and push people towards Jason Lattimer’s post

Possible Developer Toolkit Replacement?

The templates idea is good and you can see how you can use it to quickly create plugins, although the current solution would involve you then registering the plugin using the Plugin Registration tool and I think this might put some developers off.

CRM MVP Tanguy makes an interesting suggestion, which you can read in the comments

For plugin deployment, did you think about using class attributes to describe how the plugin should be registered?

 

I think it would be a great idea to store a few fields to indicate how to register the plugin and I think it would need something to select the filter fields and image fields, rather than letting the developer paste a list of strings (which gets created by the CRM developer toolkit in the crmregister file)

The enhanced web publisher would be great because Javascript publishing is not great in the CRM developer toolkit.

 

Features I would like

  • Javascript intellisense
  • Deploying plugins with one click from within CRM project
  • early bound file creation, maybe using functionality similar to the CRM Early bound generator

These are my thoughts, please go to Jason’s page and leave your thoughts, insights and support

Is it available now?

No, Jason is still working on it and hasn’t released it as open source but I believe he is planning to.

Pro’s

The CRM community has a lot of talented and active CRM developer would have a history of creating free tools for particular problems/needs.

An open source CRM Developer toolkit replacement could have the potential to create an excellent tool to aid CRM development and add features at a faster rate than the very busy Microsoft developers.

An open source CRM Develoepr toolkit replacement would hopefully be less likely to arrive in the current situation of no compatible toolkit for a new release of CRM/Visual studio.

Con’s

It would involve CRM developer devoting some of their free time to develop a CRM Developer toolkit replacement.

It could take some time before it contains enough features to seriously rival the functionality in the current CRM Developer toolkit.

 

CRM 2015 SP1 – Turbo forms use asynchronous JavaScript web resource loading

I was reading this blog post from the CRM Lady

Turbo Forms in Microsoft Dynamics CRM 2015 (v7.1.0)

The article points to some good resource learn more about the new turbo forms.

The article from the CRM Team has a wealth of interesting information and lots of healthy warnings for you

Microsoft Dynamics CRM Online 2015 Update 1 – New Form Rendering Engine

What are the new turbo form

Microsoft have been doing lots of tinkering how the CRM forms are rendered.  This graphic shows the effect

// // // // // //

When I saw the graph above my first thoughts were

  1. WOW, Awesome
  2. How did they get such a dramatic improvement
  3. Will this break my customizations

How did Microsoft Improve loading times

I will quote the article

There are 2 main changes that have been made: loading process of the form, and handling of cache.

The article indicates they have moved to parallel loading and are caching more data.

 

Hmmmm Parallel Javascript loading

The increased form loading is great but parallel loading can have some downsides.  I first came across Javascript parallel loading in CRM 2011 rollup 12, you can read about here

To speed up form loading in CRM 2011 they switched to parallel loading and the result meant lots of Javascript methods suddenly stopped working.  The reason for this was because one Javascript file was calling a method on another javascript file.  This worked when the Javascript files were loaded in an order but when you load them all at once sometimes one Javascript file tries to call another dependant Javascript file which is still loading.

So suddenly lots of Javascript errors appeared and all developers had to write a Javascript wait file, like CRM MVP Scott Durow talks about in this article

This is a significant change and could cause lots of errors if you have Javascript code in your OnLoad functions which call other Javascript files.

I noticed a new section appeared in the mdsn article Write code for Microsoft Dynamics CRM forms

Manage library dependencies

As a performance optimization, Microsoft Dynamics CRM forms load JavaScript web resources asynchronously and in parallel. This means that the order in which the libraries are configured for a form does not guarantee that a library will be fully downloaded and initialized before another library might attempt to use one of the objects defined in it.

If you have code that depends on another library to be fully downloaded and initialized, the most straightforward approach is to combine both libraries within a single JavaScript web resource with your code below the library code. A more sophisticated approach is to use libraries such as head.js or require.js to control how the separate libraries are loaded.

 

Is Parallel loading good or bad

There is a quote in blade runner

Replicants are like any other machine. They’re either a benefit or a hazard. If they’re a benefit, it’s not my problem.

Upgrading to CRM 2015 SP1 could cause big problems to Javascript customizations.  It’s good practise to split up your Javascript code to separate files to make it reusable and maintainable but now Microsoft are recommending we put everything in one file.  This could turn out to be one big massive Javascript file, which is ok for performance but maintaining and working with this file is difficult.

This change could catch many CRM developers out because the errors are intermittent, sometimes the javascript files will have loaded in the correct order and work.

It will involve developers writing Javascript code which waits until all the Javascript files load which will cancel out any benefits from parallel loading.

It could be seen as an opportunity to restructure Javascript code to have a self contained loading script and then move other Javascript functions to OnChange events.  This would be a double win of increased loading time due to parallel loading and running less code.

You can use Legacy form loading style

There is a system setting which contains a global setting to control which form loading style you use.

It’s a great idea for Microsoft to put this in because the new speedier form loading code might take some while getting use to it.  When CRM 2011 polaris release came it, it caused a raft of blog posts because CRM Javascript customizations suddenly stopped working.

Settings -> Administration -> System Settings -> General. Select “Yes” under “Use legacy form rendering”

In a perfect world it would have been great to have a entity setting rather than a global setting for the form rendering.

I thought I would write about this because it could effect a lot of people and I never spotted this change until today.

 

What are the limitations of Microsoft Dynamics CRM Online and how do you work with them?

will all CRM instances be online is the future?

Why haven’t I worked on more CRM online projects?

I was contemplating the questions above reading the white paper about creating solutions for CRM online

Microsoft Dynamics CRM Online patterns & principles for solution builders

It’s a white paper highlighting the limitations of CRM online and how Solutions architects will need create solutions to work with the strengths of CRM online and work around the weaknesses.

Is CRM Online the future of Microsoft Dynamics CRM?

Microsoft would like to think CRM projects are all heading online, Microsoft is spending lots of money creating data centres , bringing their top software offerings to the cloud(Exchange, Sharepoint, Dynamics CRM, Azure, Office, etc etc etc).  Making it easy for all the software to work together on-line (e.g. removing barriers)

Microsoft acquired online products to extend Microsoft Dynamics CRM

  • Parature
  • Social Engagement
  • MDM – Marketing

From a cost point of view (looking at it holistically), it seems sensible use massive data centres which are maintained and look after, rather than individual companies having to host servers, hire skilled people to maintain them.

Hosk experience of CRM online

So far I have only been involved in small/simple projects successfully working with CRM online.

The majority of projects I have worked on and have known about have been with CRM On premise.  I wonder if I have worked on complex CRM projects because I am a CRM developer, it’s perhaps more likely the projects I work on will involve complex customizations and with the previous versions of Microsoft Dynamics were better suited to CRM on premise.

I have heard of projects moving from CRM online back to CRM on Premise but no projects moving from CRM On premise to CRM online.

CRM online is growing?

Microsoft Dynamics CRM online is growing in popularity.  I say it but I couldn’t find much information to back that up

Good Momentum For Microsoft Dynamics CRM Reported At Their Fall Analyst Event

The Dynamics product is doing well. The numbers speak for themselves: 12% revenue growth in FY13; Dynamics AX and CRM growing by double digits worldwide and 30% in the Americas and Asia; and CRM Online growing by 80% in FY13, with two out of every three new customers opting for cloud. Microsoft Dynamics has 359,000 customers and 5 million users, while Microsoft Dynamics CRM has 40,000 customers and 3.5 million users.

The post is a few years old but I’m going to going to assume Microsoft Dynamics CRM online is growing.  I will assume Microsoft will actively continue to grow the Microsoft CRM online offering, which will result in more CRM online projects for CRM Developers to work on.

It’s easy to envisage a future where companies pay for virtual cloud servers and services instead of paying for skilled IT guys to look after their own servers.

At the moment my personal view is big CRM projects and complex CRM projects are not a good fit for CRM online.

Limitations of CRM online

Below are some of the limitation of CRM online

Indexing

A lot of CRM projects I have worked on have involved SQL indexing.  I understand indexes are not automatically added because when indexes need to be added it has to be in a specific area which needs a performance improvement.

How does indexing work with CRM online?  how do you find out where the SQL server is running slowly?

The white paper says you can get Microsoft engineers to look at indexes through a support request but I wonder how this works and how effective it is?

Increasing performance – How?

CRM on premise infrastructure is designed to allow more resources to be added in a modular way.  e.g. if you need more performance in the SQL server, you can add more SQL servers.  If you need better performance on the CRM front end, you add more CRM front end servers.

How does this get managed on line?

Data privacy

Some companies don’t want to their data in the cloud no matter how secure Microsoft says it’s is.

Sandboxed plugins

Sandboxed plugins can’t access any 3rd party dll’s, which can be quite limiting

Custom ASP.NET pages

Custom ASP.NET pages can’t be done in CRM online, so no iFrames showing custom pages.

Reports are FetchXML

CRM online reports can only be written in FetchXML because CRM developers have no direct access to the CRM database.

Size of database

Online database charge by the gigabyte.  CRM databases can grow pretty quickly but how do you shrink POA table if gets to big.

The emphasis will be on CRM support engineers to reduce the POA table size but the Microsoft as a company do not benefit from this (because they charge by the GB), so there is conflicting goals.

Reading the document has made me aware of techniques to move data out of the CRM database into services like SharePoint (or similar) but database management could be a full time job.  The alternative of course is there will be so much space available in the future where database size is not an issue.

The current relationship between megabytes and gigabytes could be the same relationship between gigabytes and terabytes in the future and the talk about database size seem silly.

Hosk Thoughts

if Microsoft keep investing in the Online infrastructure and products and more companies use CRM online then I will inevitably get increased exposure to CRM online.

I view CRM Online similar to CRM mobile in the fact it’s the direction the industry is moving but currently this seems to be a slow process and I expect the majority of CRM project to be CRM on premise.

I’m not sure why Microsoft are delaying service updates to CRM on premise?  It’s going to make CRM developers and resellers life increasingly complex and frustrating, delayed enhancements don’t seem appearing enough to change peoples suitability or desire for CRM version.

In my experience big or complex CRM projects are more suited to On Premise solutions and it would be extremely difficult to do these projects online with CRM onlines current limitations.

If Microsoft changed the online version to host servers online and the CRM developers could access the servers then it would be a very compelling argument, a half on line/on premise solution.

Understanding how CRM Online solutions can work

Reading the paper for the first time, I felt it was unusually worded because it highlighted a lot of limitations but portrayed them as benefits

Microsoft Dynamics CRM Online patterns & principles for solution builders

This line jumped out at me

Everybody has felt a little guilty when they wrote some bad code in the past. Well, in Microsoft Dynamics CRM Online, the temptation to write icky code has been removed in a lot of places, especially where it comes to resource utilization.

Thinking about the document it raises some good points because Solution architects will need to design different solutions for CRM Online than they would if their were designing a CRM solution for a CRM on premise.

Developers don’t like being limited but if more CRM Solutions and customizations will be in deployed in the cloud it’s knowledge CRM developers will need to have.  Part of a CRM Developers work practise is to adapt to new versions of CRM and CRM online is a different version to CRM On Premise.

The part of the document I found worrying is the areas it mentions lack of resources which might be available to you.

My experience with CRM performance issues has involved a lot of investigation around infrastructure (networks, resources, etc), SQL database performance (query performance, adding indexes).  Code optimization and database locking investigation.  I will give an honourable mention to the POA table and security configuration as potential causes of poor performance.

Considering the above any investigation would rely heavily on Microsoft support engineers, this is must be a potential concern for any organizations considering large CRM projects online.

These two quotes from the document, which discuss the potential downside of CRM online

no portion of these shared resources are dedicated strictly to the instance running your solution – they’re shared. That means that you must design your solution to accommodate potential scenarios where these resources don’t perform your requests immediately.

Also, be aware that while there are no strict limits on the amount of workflow jobs you can send to the queue, if you or any of your neighbors sharing the resource are using an inordinate amount of resources, you may have a governor placed on your usage

Hard limits with CRM online

Plug-ins 2 minute timeout
SQL 30 second timeout for database transactions
Running workflow jobs Fair use – no specific hard limits, but the resource is balanced across organizations
Direct database access Not allowed

Where the document is really useful is it focuses on how you should construct CRM Online solutions to utilize the strengths of the CRM online offering.

If you have large long running processes then you can create services in Azure to do this work and take the heavy work load, nicely avoiding hitting any of the hard limits set in a CRM Online solution.

I have no experience of CRM Online using Azure so it was interesting to read the methods to  deploy code as

Azure Iaas

Deploy code to IIS in the cloud running in a virtual machine (VM).  The same as hosting a webservice on your own server or usually in a new web application on a CRM server.

Azure PaaS

I’m not quite sure how this works, it seems you don’t configure IIS but just deploy your code and deploy it as a cloud service.  This seems to be more like a windows service (but in the cloud).  The code needs to be written in a certain way to be run a cloud service.

Configuration over code

Microsoft in recent versions of CRM have been steadily improving the no code solutions with improvements giving improved functionality to mobile devices and more customization choice for CRM Online

Code                  GUI Customizations

Javascript     –     Business Rules

Plugins         –      Real time workflows

Managing Storage

CRM online charges by the Gigabyte/per month fee.  CRM Developers need to manage the CRM database size by storing information in other cloud services such as Sharepoint online and azure storage (Microsoft naturally recommend their own products).

The conclusion of white paper

Creating solutions for the cloud is different. It requires thinking about the system architecture in a different way. But making this leap is an imperative for almost anybody selling business or government solutions today. Keeping up with the market requires us to make the necessary adjustments, and allows us to embrace the attendant benefits of building solutions for the cloud.

Initially I thought highlighting the limitations of CRM online was an odd thing to do.  Looking at the document again it’s seems like a good idea because it’s important CRM Developers know the limitations.

Offering advice and techniques to work around these limitations shows you what is possible.  The white paper points to techniques, software and services CRM developers will need to become more familiar with in the future with CRM on line projects continuing to increase in size and complexity.

The increased complexity of CRM online solutions will need developers to create CRM customizations using no code tools such as business rules and real time workflows in conjuction with code deployed and running in Azure services.

This may explain the raft of new synchronization enhancements added into CRM 2015 SP 1, which I talked about in the blog post below

What’s new in CRM 2015 SP1 for developers, customizers and admins

The white paper won me round in the end, highlighting ways around some of the major limitations with CRM online.

Many CRM Developers will have no experience of deploying code in azure and consuming it within CRM.  I would say not just CRM developers but many CRM resellers won’t have experience of creating solutions using code deployed in azure.

This were my thoughts on CRM online, please leave your thoughts, experiences in the comments

What’s new in CRM 2015 SP1 for developers, customizers and admins

When there is a new release for CRM the SDK publishes a what’s new.  I recommend CRM developers read this, I have written a blog post about the subject

Why developers should read the CRM SDK what’s new

Here is my quick review of the last one

CRM 2015 – Hosk takes a peak at the CRM 2015 SDK

CRM 2015 and this update and with this particular update Microsoft seem to be adding lots of useful functionality for developers rather than front end functionality.  This is one of the major development releases for Microsoft Dynamics CRM since I have been a CRM developer.

The consolidation of functionality CRM 2015 is a good idea and will be beneficial to CRM suppliers and CRM developers.

The documentation for CRM 2015 SP1 is excellent.  There are a lot of developer and subtitle updates and added features, all of which are well documentation so thumbs up Microsoft.

My goal of this blog is to summerize the information of the CRM 2015 SP1 update

  • Give useful links
  • condense information
  • Hosk thoughts on the functionality

Useful links for Administrator’s and Customizers

Below is a collection of links about CRM 2015 SP1 in general and not focusing on the Developer enhancements.

CRM Online 2015 Update 1: official pre-release content is here!

This what’s (new is good for non Developer related highlights)

CRM 2015 Update 1 videos

What’s new for administrators and customizers in Microsoft Dynamics CRM 2015 and CRM Online

What’s new for developers

There is so many juicy news bits of functionality, I recommend you read the what’s new for Developers in it’s full glory.

What’s new for Microsoft Dynamics CRM Online 2015 Update 1

Upgrade considerations

This technet article was interesting

Before you upgrade: issues and consideration

IE 10 and 11 are only supported in CRM 2015

Those upgrading from CRM 2013, in CRM 2013 CRM had base and extensionBase tables but these are merged.  There is a section called

Base and ExtensionBase table merge cannot be deferred (if you didn’t know Microsoft got rid of the ExtensionBase table and now only have one table for each entity)

To find out the amount of table data that will be merged during upgrade, see Determine how much ExtensionBase table data will need to merge.

This is a great example why you should never write customizations (web services, reports or plugins,  I’m sure there will be some developers who have written reports based on the extension and base table which will all break when upgrading to CRM 2015.

The page states in place upgrades are not supported for these products (which is worth keeping in mind)

  • Microsoft Dynamics CRM 2013 Reporting Extensions (on-premises only)
  • Microsoft Dynamics CRM 2013 Email Router
  • Microsoft Dynamics CRM List Component for SharePoint Server

Updating CRM 2015 online

I will admit to not knowing if this was changed or if I have just read about it.

Manage Microsoft Dynamics CRM Online updates

The technet article mentions the functionality of delaying and choosing a time to schedule your CRM update.  The bottom line is you have to approve the update before it is applied.

The article mentions you can choose not to deploy an update.  I have wondering what happened to CRM online instances which automatically updated and the chaos in panic testing this would bring about with a set deadline in place.  Some CRM organisation have lots of customizations need a lot of testing.  so it can be some time before a company wants to apply a CRM update

What’s new for developers

My initial plan was to review a lot of the changes in a series of blogs but I noticed today that CRM MVP Daniel Cai has already done it.  He has done a great job, awesome work.  So I changed my plan to build on his good work rather than duplicate it.

New SDK Capabilities – CRM Online 2015 Update 1 release

Daniel has written 9individual blog posts which go into detail about the new functionality and with the all important screen shots.  Daniel has done such a great job there isn’t any point in me doing it again.  I have linked to his blogs and given a quick summary of the functionality.

I recommend all CRM developers read Daniels blog links to get a good idea of the new functionality and don’t just read my quick summary

Fantastic functionality which allows you to create alternative Keys.  Alternative key doesn’t make it initially obvious what the functionality does (to me anyway).  It allows you to create a new unique identifier for a record made up of a combination of columns (e.g. think composite key maybe foreign key).

The columns used to create the alternate key must be either String/Integer/Decimal.

CRM will index these in the background and you can monitor the creation –  Monitor index creation for alternate keys

The result of this means it’s easier to create/update records in CRM and in applications integrating with CRM.

When I read about Upsert I thought it was a joke, Upsert.  The functionality although sounds funny is a great idea.  The premise is it’s an Update and insert.

When using an upsert the functionality checks to see if the record exists, if it does it updates the record. If the record doesn’t exist it creates the record.

Simple but very effective because for integrating applications it avoids the round trip of checking to see if records exist and then choose to create or update.

Another pragmatic piece of code.  This improved functionality allows standard calls to do things like assign values, setting state, before the update you need to use special messages.

This post will give you more details

Perform specialized operations using Update

CRM Online instances can turn on plugin tracing logging, which creates a trace file you can look at.  Very useful considering you couldn’t view any logs before (because you can’t get onto the server).  This would allow you to view the values used in your plugins.

Entity change tracking allows you to detect if the data you retrieve has changed.  This would enable you to do a retrieve and only return the data which has changed from your initial retrieve.

This page from Microsoft will give you more detail and the title explains it’s intended use

Use change tracking to synchronize data with external systems

More CRM integration changes.  This functionality allows you to batch a bunch of actions into one transaction.  You can roll the transaction back if any of them error.  Microsoft Calls this Multiple message execution

Very useful for code integrating with CRM.  Read more on the CRM SDK – Execute messages in a single database transaction

This is a biggie.  This functionality tells you if the data you are going to update has been changed in between you retrieving and updating the information.

It uses a RowVersion value to see if the value being updated is the latest and if so it will throw an error, which means you can retrieve the latest and then update.

CRM SDK link – Reduce potential data loss using optimistic concurrency.

You can now check what version the CRM server is running on.  This offers you the ability to create branches in the code to use different functionality.  This could be useful in commercial solutions or maybe creating solutions to work across different CRM versions.

Try the Web API preview

This is interesting, they are offering you a preview but you shouldn’t use it in production environment (It’s not finished yet I guess).  You might be thinking, why do I care about a preview.   The new web api uses OData v4, OAuth 2, and JSON

It’s this line which intrigues me

The preview release allows you to give feedback and get an understanding of what is coming in a future release. The Web API preview shouldn’t be used on production environments and no support is provided. For more information on the next endpoint,

Learn more here – Web API Preview.

Improved Sub Grid Javascript

You can change the selected view for the Javascript and get the entity references easier

Non developer improvements

A quick summary of what’s in here

What’s new

Improved CRM navigation

quick video

The change now shows all the potential links when you click on an area e.g. sales.

So where before you had to scroll along to see the options, now they are all displayed

The recently viewed is a global tool (e.g. available in many parts of CRM) allows you to view recently viewed records and pin items

Themes

You can change the colours and add a logo.  This is like changing your theme in windows.  It will change all the colours of the bar

Watch a short video (2:45) about themes

Theming post from powerobjects

Onenote integration

Track emails with folders

This is a good productivity improvement.  It allows you to track emails in CRM by copying them to a folder.

folder level tracking

Export to Excel

It shows how much CRM developers use excel to export and import data by the fact I was quite excited by this enhancement.

This has been completely rewritten and you can now import/export 100000 instead of the previous limit of 10000.  This is excellent but strikes me as one of those changes which should have be done a while ago but lets not complain because its in now

New export to excel functionality

CRM Gui Customization changes (non code)

This page is very useful

What’s new for administrators and customizers in Microsoft Dynamics CRM 2015 and CRM Online

This page above includes all the changes and updates for non code customizations, which I sometimes call GUI customizations.  It does also mention some config settings

Older than X

this was limited to months but now you can specify minutes, hours, day, week, years.

Older than 5 minutes

Older than 1 year

Older than 2 weeks

Daniel Cai has written a blog post on this if you want to learn more New Query Operators

Date only field

CRM 2015 SP1 can have Date only fields and Time zone indepdent.  This is different from creating Date and time fields but only displaying the date.  Why did it take so long to add this?

Clear field with Business rules

Microsoft keep adding improvements to business rules which is good and need.  The next improvement allows you to clear fields.

Auto Creating CRM records not just for cases

Previous versions of CRM you could create Cases using emails and other social posts.  The documentation says other social messages but for most people this is emails and perhaps phone activities.

This functionality has been extended to sales and marketing.  So emails and other activities can create System or custom entities.

Rollup fields can use AVG

Rollup field can use AVG in calcluations

Mobile phone and tablet apps have been improved and I will expect this to be mentioned in every new release for the forthcoming future.

Final thoughts

A theme of this update is synchronizing CRM with external systems (applications, web services, 3rd party software).  Microsoft have made it much easier and quicker to synchronise data between CRM and other systems whilst adding functionality for checking data (e.g. to avoid overwriting already changed data)

Microsoft shows you how the changes work together

Synchronize CRM data with external systems

These two images from the page above succinctly show you the potential improvements

Before CRM 2015 SP1

After

I can understand these improvements are very useful but what puzzles me slightly is the sudden motivation to add this functionality into CRM 2015.   If anyone knows the reason or has an idea please add a comment.

Most of the CRM projects I have worked on have been extremely customized and used Microsoft Dynamics CRM for XRM developer.  CRM was the framework to build a solution for the customer.  The new updates in CRM 2015 SP1 take this a step further by making it easier to not only create the main solution but create applications to integrate with the CRM solution.

This fits in with Microsoft’s recent tactics of acquiring applications/software and integrating them with Microsoft Dynamics CRM (Parature, Unified Service Desk, MDM, Social engagement).

Why the advanced find is a CRM Developers best friend

Microsoft caused quite a bit of unrest when they released CRM 2013, suddenly making the Advanced find button difficult to find, if you are interested I wrote about that in this post – Good CRM design should not make users think

In this post I want to write why I love the advanced find functionality in Microsoft Dynamics CRM.

I view the CRM Advanced find as an awesome swiss army knife

To new users and inexperienced CRM developers it looks like a simple tool to search the records in CRM.

To an experienced CRM developer it’s one of the key weapons in the CRM Developers armoury which when used correctly can save you loads of time and make your life a whole lot easier.

It can speed up navigation, help you create queries for your plugins, export and enrich data and even help you fix bugs.  In some cases when being brought onto an existing product, I have used the advanced find to go directly to records of a certain type because I didn’t know where to look in the CRM system.

What is advanced find?

Advanced find is a tool which allows you to create queries against the CRM database.  It allows you to select the fields you want to see in the results and filter the query with conditions.

You can then save this advanced find query as a personal view

The Advanced find is a lot more than just a tool to query CRM because in many situations it can

  • Save you time
  • help you understand
  • view field values and related entity field values
  • speed navigation

The reason CRM Advanced find is so useful (and why users and CRM developers were annoyed when Microsoft made it hard to find) is CRM is really one big database full of useful data.  The CRM GUI

  • view the data using a web browser
  • validate the data input
  • organise the data into forms etc
  • Add security
  • organise using the data
  • Development to automate adding/viewing data

The CRM GUI (website) has lots of functionality for validating and displaying the data.  This is really useful but for CRM Developers they often want to navigate the system quickly and are not interested in the GUI and business logic but just want to get to certain records.

The advanced find lets you search all the records in your CRM database and apply a filter condition to allow you to only bring back the records you are interested in.

One important consideration to remember when using the advanced find is it does apply your security profile, so you will only see what records your security profile has privileges to see.

Quickly find the records you need

The beauty of advanced find is it can bypass most the GUI and get to the record you want you want with a couple of clicks.

It can also bring back groups of records you want, which is more difficult to do with the front end GUI

The great thing is you can save the advanced find into a view so you can repeat the process even quicker next time.

When you don’t know the business logic

In some projects a CRM developer can be brought into the project in the bug fixing phase. It can be difficult to fix bugs when you don’t understand the business logic or how the system works.

Using the advanced find can help you easily navigate to the entity records you are interested because with the advanced find you can view all the entities in alphabetical order.

This can help you if the bug exists on a specific record type and you don’t need to understand the business logic, e.g.

  • Javascript form errors
  • Simple plugin triggering on update

FetchXML is a great place to create your query

When I have to create a query in a plugin, I usually start with an advanced find to get the logic correct.

You can then download the FetchXML and you can see which fields you need to use and how the filters should be structured

You can use FetchXML in Javascript

You can use fetchXML’s directly in your javascript. I usually use OData queries and the odata query tool.   One of the limitations of OData is it doesn’t have a distinct attribute, so there is no way to not retrieve duplicate records.

The query I was interested in doing needed to filter out the duplicates so I did it in FetchXML.  When I didn’t filtered out duplicates (the OData query) it was returning 1500 records, which slowed down the form load but when I used FetchXML with distinct set to true, it returned 25 records.

FetchXML directly in plugins

You can run FetxchXML code directly in your CRM plugins instead of query CRM using  Linq or QueryExpression.

I go through the process in the blog post below

 Build Queries with FetchXML instead of QueryExpression

One of the advantages of using FetchXML in a plugin is you can create the query in Advanced find which can sometimes be easier

Create saved views

Saved views can save you lots of time because you are only viewing the records you are interested in and filtering out all the other entities.

Export data

Using the Advanced find to select not only the records you are interested in but also the fields is very useful.

Being able to export these records and send them to someone who doesn’t have access to CRM is a very handy trick to customers.

Exporting the data will also allow you to move the data between CRM organisations and environments (e.g. Dev, Test, Prod)

Enrich Data – e.g. export, change, import

The good old Enrich data functionality, which is has the good, the bad and the ugly all in one.  It’s called Enrich the data but what it really means is you can export some records and when you import them it will automatically know which records to update.

enrich data

The enriching data functionality works by adding the Guid of the records to the export file (and some checksum columns etc) which are read by CRM when you re-import the data.  If it sees the values it knows you are not importing new data by updating/enriching existing data.

Bulk Edit

Once you have a list of the entities you are interested in, it’s easy to bulk edit those records and assign them all the values.

Bulk editing data in this way can add data which bypasses some of the validation in the GUI forms.  The reason for this is business rules and Javascript do not run because they are only triggered on the CRM form.

You can’t import a CRM 2011 solution into CRM 2015

Whilst I was at work on friday 2nd and everyone else seemed to be still on Christmas holiday, I was reading Develop 1 Limited Blog by CRM MVP Scott Durow

Scott Durow has written a framework called SparkleXRM and he has updated it, which you can read about here

http://www.develop1.net/public/post/SparkleXRM-for-CRM2015-with-process-API-support.aspx

The interesting thing I noticed (and I am probably slow on the update here) is he had to make two versions available one for CRM 2011 and one CRM 2015.

This line stuck out

Now that CRM2015 does not support installing CRM2011 solutions I’ve had to branch and make both CRM2011 and CRM2015 versions available

Hmm I didn’t know and hadn’t thought about CRM 2011 solutions and CRM 2015.  I have some study notes for solutions for CRM 2013 CRM 2013 – Understanding Solutions and how they work but what about CRM 2015.

There is an msdn article called Maintain managed solutions for CRM 2015 and the article has this about version compatability.

Version compatibility

Any solution exported from a newer version of Microsoft Dynamics CRM cannot be imported into an older version of Microsoft Dynamics CRM. This includes major and minor versions. You can install solutions exported from Microsoft Dynamics CRM 2011 and earlier releases of Microsoft Dynamics CRM Online into Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM Online 2015 Update. Solutions exported from Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM Online 2015 Update cannot be imported into earlier versions.

Like most MSDN articles is great for cold hard facts, but it’s written to be consumed by robots and computers, which is my way of saying I sometimes find MSDN articles and CRM SDK very factual but bordering on being hard to understand to non robots.  I will preface this by saying writing documentation is a very difficult job the Microsoft do a great job overall.

I read the article, found it useful/interesting/hard to understand, I reread the article and then thought that didn’t sound right because I thought you couldn’t import CRM 2011 solutions into CRM 2015.

 

What’s the truth about CRM 2011 solutions and CRM 2015

I dangerously decided to use the potentially unreliable world of the internet to find out the truth.

I first came to this forum post

https://community.dynamics.com/crm/f/117/t/146740.aspx

This picture definitely seems to say suggest you cannot import CRM 2011 solutions into CRM 2015.  Microsoft uses package version numbers, which is confusing because what are package version numbers

Package Version numbers

I will take a quick side track from the main topic to understand the package version numbers.  There is an MSDN article called Export a solution for a specific CRM version and this talks about new functionality brought in with CRM 2013 Service Pack 1.

CRM 2013 Service Pack 1 was a major enhancement to CRM 2013 (duh that’s why it was a service pack and not a rollup Hosk) and I’m guessing it must have rejigged some fundamental functionality inside CRM 2013.  So solutions created in CRM 2013 service pack 1 and higher would have dependancies on the new functionality in CRM 2013 service pack 1 which wouldn’t be available in CRM 2013 environments earlier than service pack 1 and CRM 2011 environments.

To combat this Microsoft added some functionality to allow you to export solutions which would work in older versions.

The MSDN article has this table which shows us the package version number

IntroducedVersion Value Solution components introduced
5.0.0.0 Before Microsoft Dynamics CRM 2013 and Microsoft Dynamics CRM Online Fall ‘13
6.0.0.0 Microsoft Dynamics CRM 2013 and Microsoft Dynamics CRM Online Fall ‘13
6.1.0.0 Microsoft Dynamics CRM 2013 Service Pack 1 and CRM Online Spring ‘14

 

I believe CRM 2015 is version 7

Back to Solutions

CRM MVP Jason Latimmer answered the forum post

That was a mistake in the SDK – solutions exported from CRM 2011 won’t be able to be imported into CRM 2015.

CRM 2011 solutions imported into a CRM 2013 environment will function as expected (assuming they use CRM 2015 supported methods) when the organization is upgraded to CRM 2015.

So this suggests you cannot import CRM 2011 solutions in CRM 2015

Next I found this blog post

https://community.dynamics.com/crm/b/magnetismsolutionscrmblog/archive/2014/10/05/upgrading-from-microsoft-dynamics-crm-2013-to-microsoft-dynamics-crm-2015.aspx

Not solutions but upgrades must be CRM 2013 Service Pack 1 or higher

Upgrades to Microsoft Dynamics CRM 2015 must start from Microsoft Dynamics CRM 2013 plus Service Pack 1 or higher.

Finally  I finished with Feridun’s knowledge base

http://fkbase.info/node/224

Solutions

CRM 2013 managed and unmanaged solutions (6.0 and 6.1) can be imported into CRM 2015 (but not CRM 2011)

Verdict

The verdict seems to be you cannot import CRM 2011 solutions in CRM 2015.   This makes logical sense when you consider the changes in CRM 2013 and many of the customizations could be different.

If you had a CRM 2011 solution the best practice would be to upgrade to a CRM 2013/CRM 2015 to check it still worked as expected

So what does this mean

For most people this doesn’t mean anything but if you have a solution you have developed and you want the solution to work in CRM 2015 and earlier versions of CRM then you will need to have two versions.

This probably won’t affect many people because I can’t think of many solutions which would not have changed from CRM 2011 to CRM 2013 (let alone CRM 2015) due to the major GUI rethink in CRM 2013.

It is likely tools and code not touching the front end and using core functionality could be the same.  Core plugin code hasn’t changed much in the from CRM 2011 to CRM 2015 but there is a possibility the CRM 2011 code could be using deprecated methods or the SDK code works differently in CRM 2015.

I would advise people to upgrade the solutions and test the customizations because you can’t be sure they work as expected until you try them.

It does mean if you will need to have two solutions, one CRM 2011 solution and one CRM 2015 solution, in the same way Scott Durow has created two solutions

Why did I blog about this

The likelihood is most people will never have to worry about this scenario, but this is the sort of problem that crops up when people assume they can load up their CRM 2011 solution into CRM 2015.  When you try to do it,  you get errors, a bit of head scratching before you need to import an unmanaged solution into CRM 2013 which you could then export to a managed solution and into CRM 2015.

This is the same version hop you run into if you want to upgrade a CRM version up more than one version e.g. CRM 2011 to CRM 2015, you first have to upgrade to CRM 2013 before you can upgrade to CRM 2015.

 

Upgrade Path

Whislt thinking about solutions, I was thought about upgrading to CRM 2015 and read this blog post CRM 2013 to CRM 2015 Server Upgrade

The blog mentions the upgrade path of CRM must go from CRM 2013 Service Pack 1 to CRM Server 2015.

The only supported upgrade path to Microsoft Dynamics CRM Server 2015 is from Microsoft Dynamics CRM 2013 Service Pack 1 (SP1).

The blog also mentions CRM 2013 server roles are not compatible with a CRM 2015 deployment.  So if I understand the blog correctly it means when you upgrade one server to CRM 2015 the other servers (if you have multiple servers) will become disable and need upgrading too.

I’m not sure when you would have a scenario where you only upgrade some servers but the point about a CRM 2013 server must be at Service pack 1 before upgrading it’s certainly useful to know.

Why Apply rollups before upgrading

When you upgrade CRM two versions e.g. CRM 2011 to CRM 2015, the best practice is to apply the highest rollup or a particular recommended rollup to a certain level before upgrading,

The reason for this is when rollups are applied to CRM they not only include new CRM dll’s/new code and functionality but behind the scenes they can make changes to the CRM database, adding and removing fields.

Adding/removing fields is one reason why you should never create customizations directly agaisnt the CRM database because fields or tables (in reality tables rarely change, but they could!) could be changed/removed during any upgrade or patch release.

Random solution facts

whilst looking for more details on this problem I found this MSDN article, which has a couple of random size issues I wasn’t aware of

Maximum size of solution to import

For Microsoft Dynamics CRM Online the maximum size for a solution is 29.296 MB.

For on-premises organizations, the default maximum size for a solution is 6 MB, but this can be increased as needed.

Really random fact

%d bloggers like this: