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
Here is my quick review of the last one
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.
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.
This technet article was interesting
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.
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.
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
- Part 1 – Alternate Keys
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.
- Part 2 – Upsert
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
- Part 4 – Plugin Trace Logging
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.
- Part 5 – Entity Change Tracking
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
- Part 6 – Transactional Batching
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
- Part 7 – Optimistic Concurrency
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.
Non developer improvements
A quick summary of what’s in here
Improved CRM navigation
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
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
Track emails with folders
This is a good productivity improvement. It allows you to track emails in CRM by copying them to a folder.
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
CRM Gui Customization changes (non code)
This page is very useful
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.
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
These two images from the page above succinctly show you the potential improvements
Before CRM 2015 SP1
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).