When CRM 2013 was first released the first question that came into my mind is what’s new for CRM developers and like most questions the data is initially difficult to find because I’m never quite sure where to look.
In this instance Microsoft have written a very good article on the subject which can be found the CRM 2013 SDK
It has the full list there but I will focus on some of the highlights
Entity images
certain entities can have one entity image. This feature can be turned on for an entity but can not be turned off again. You cannot have more than one entity image. For more information, see Entity Images.
Access teams
Access team is a dynamic Team that is used to share records. It works by having a subgrid on the record and any users added in can then see the record.
This is a bit of a mixed bag in my eyes. It’s seems like a good idea, creating stages which are cross entity for a business process. At the moment the only place I can imagine this working is on the sales process, I can’t recall any customer project where they would want a business process but this could be just because I haven’t really used CRM 2013 in a customer project yet.
Real Time Workflows
Hazaar, workflows that can run instantly, well done Microsoft some great functionality, the only question I have is what took you so long.
but you should consider that Real Time Workflows are not quite as efficient as Plugins but don’t take my word for it read this great article by CRM MVP Scott Durow
This is probably one of the most powerful new features added into CRM 2013, it basically allows you to create custom messages to trigger code (javascript/plugins). This is one of the functions I haven’t yet looked into because it seems a bit tricky to start with and this is probably the reason it is one of the least documented new features in CRM 2013.
Data encryption
There is now field level data encryption which means encrypted fields can’t be audited and have other considerations regarding searches etc. For more detailed Field-level data encryption.
Mobile
There is vastly improved mobile, I’m afraid I haven’t really looked into it at the moment
Quick start for developers
New documentation has been added that provides an easier and faster learning experience for developers or non-developers new to Microsoft Dynamics CRM technologies. For more information see Getting started with managed code application development.
Solution version compatibility changes
Starting with this release, solutions exported from a newer version of Microsoft Dynamics CRM cannot be installed into older versions. This includes major/minor version differences. For more information see Version compatibility.
What I think this is saying is you can import CRM 2011 solutions into CRM 2013
but you can’t import CRM 2013 solutions in CRM 2011 (why would you want to do that)
Autosave and no duplicate detection
I have put these together because I think one has a knock on affect to the other. Auto saving has meant that the duplicate detection can no longer function when saving records (because they are saving all the time without all the previous duplicate detection criteria).
Lync/Skype Phone number fields
You can have Phone fields in CRM which when clicked will open Lync or Skype
Quick Create Form
it’s not part of the SDK but you it’s certainly something developers can use.
Business Rules
You can now hide/show and modify fields without having to write JavaScript
JAVASCRIPT
there are a bunch of new JavaScript functionality added.
One of the main new JavaScript functions is now the ability to have field level notifications and instead of using JavaScript alerts you now have notifications which pop a message at the top of the screen.
This is useful because Microsoft don’t like you using alerts because they don’t work very well in the mobile application but now with notifications you can still show a message to the user and the same code will work with standard CRM and Mobile.
• Xrm.Page.context.client.getClient() – Returns client type i.e. outlook, web or mobile.
• Xrm.Page.context.client.getClientState() – Returns client state i.e. online or offline.
• Xrm.Page.data.refresh() – This is one interesting as it refreshes the data on the form without even reloading the page. This also enables developers to pass a callback method.
• Xrm.Page.data.save() – Save the form
• Xrm.Page.data.getIsValid() – Returns true is form is valid for save else false
• Xrm.Page.data.setFormDirty() – Sets the form dirty for force save.
• Xrm.Page.data.entity.getPrimaryAttributeValue() – Returns the value of primary attribute
• Xrm.Page.ui.setFormNotification(message,level,uniqueId) – Sets the notification on top of the form.
• Xrm.Page.ui.clearFormNotification() – Clears the form notification
• Xrm.Page.ui.refreshRibbon() – Refreshes the ribbon. This method does not work on CRM for tablets
• Xrm.Page.getControl(“field_name”).setNotification(“Notification”) – Sets the notification for a specific field right next to the field label. This can often be used as a custom tool tip.
• Xrm.Page.getControl(“new_name”).clearNotification() – Clears the notification
• Xrm.Page.getAttribute(“new_precision”).setPrecision(2) – Override field precision
• Xrm.Page.getControl(“createdon”).setShowTime(true) – Toggle show time at form
• Xrm.Page.getControl(“field_name”).addCustomFilter(fetchFilter, entityType) – Allows developer to add custom filter to a lookup view.
• Xrm.Page.getControl(“field_name”).addPreSearch(handler) – adds pre trigger filter to the lookup
• Xrm.Page.getControl(“ownerid”).removePreSearch(handler) – removes the trigger
• Xrm.Utility.openWebResourceDialog(webResourceName, webResourceData, width, height) – opens a sepecified webresource as a web dialog window.