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
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 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.
There is a good white paper on access teams
Access Teams with Microsoft Dynamics CRM 2013
Business Process Flows
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
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.
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.
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.
If you didn’t make it to Amir Jafri and Chris Brooks’ session at Convergence titled, “Developer’s guide to integration with Microsoft Dynamics CRM”, I recommend that you go to the Virtual Convergence site and check it out. They covered the developer-specific material very well and gave good examples.