I discussed why you should read the what’s new, I thought I would split it out of this blog post just in case you didn’t want to read all it but if you did
CRM 2015 SDK – Why you should read the What’s new for developers
If you want to download the CRM 2015 SDK you can below, it also has the
one note of caution, this is a pre release document and things could change before the official release. In practise this is unlikely and most of the functionality will stay the same, but it’s something to be aware of.
Compared to CRM 2013 SDK
My first impression it’s a lot less drastic than CRM 2013 SDK changes. A lot of the changes in CRM 2015 don’t really feel like a major release but more continued enhancements of CRM 2013.
Personally, I think this is a good thing because it’s easier for developers, less of a shock for users (GUI changes and getting used to auto saving).
It has also allowed Microsoft to improve some of the functionality they added in CRM 2013. Business rules enhanced, Business process improved.
Not to mention they have finally added in some Microsoft Connect long time enhancement requests, like
- Field level security for system entities
- improved conditions for advanced finds
CRM 2015 SDK Overview
Below is the list you have probably seen most other blogs, it’s the high level list of CRM 2015 SDK Changes
- Product catalog enhancements
- Use hierarchical data
- Apply hierarchical security models
- Use calculated and rollup attributes created in Dynamics CRM
- Write form scripts that interact with business process flows
- Use field-level security with system entities
- Create business rules instead of writing code
- Add custom help content
- Use two-factor authentication
- New messages in the Organization web service
- New messages in the Deployment web service
- New entities
- New privileges
- New NuGet packages
Let’s have a little peak around some of the new functionality and give you the Hosk first impression. Some of the content below has been copied from the CRM 2015 SDK. You will notice my bits because they will be bits with bad grammar and spelling.
The comments were notes I came up with whilst reading the CRM 2015 SDK, they are not in any particularly order
Product Catalog enhancements
There seems some major functionality added to the Product Catalog
CRM bundles are depreciated and you should use bundles instead! So it seems you group products into bundles, which also allows you to discount bundles.
Functionality has been added so you can create related products. This means you can have substitutes, cross sell, or up sell. The SDK says related products will be displayed as suggestions in opportunities, quotes, orders and invoices.
The SDK also states you can use Custom pricing instead of CRM pricing.
Localized values for certain product properties. I didn’t know this wasn’t already in.
There are some interesting samples, which give a great indication of what you can do with products
Sample: Add products to a bundle
Sample: Calculate Price plug-in
Hierarchy is one of the major enhancements in CRM 2015, so it’s not surprisingly, there is quite a bit in the SDK
Identify and edit hierarchical entity relationships
Each entity can have just one self-referential one-to-many entity relationship that is considered hierarchical
There is a method called OneToManyRelationshipMetadata, so it would seem the hierarchy information is held as metadata.
GUI and Code methods to change hierarchy data
All of these settings can be configured using the customization tools in the web application without writing code, but developers can also define hierarchies pragmatically using metadata APIs or query the metadata to understand which entity relationships are considered hierarchical.
It’s interesting because I wasn’t expecting so many methods to adjust the hierarchy in the CRM SDK, I can’t quite see the need for doing it pragmatically but things usually come clearer when you start to use the new functionality.
Two interesting sections regarding hierarchy
Apply commands to hierarchy visualizations
You will be able to navigate the hierarchy data but the Ribbon button will change to allow you to use some commands on the data.
Apply hierarchical security models
new security model to allow people to view the hierarchy settings
How hierarchical security can be used to control access to entities in Microsoft Dynamics CRM
The hierarchy security model is an extension to the existing Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM Online 2015 Update security models that use business units, security roles, sharing, and teams. It can be used in conjunction with all other existing security models.
there is also something called Position hierarchy, which is associated with job position hierarchy, this is done using the new position entity.
hierarchy is a useful enhancement because it’s common request from users. I didn’t think it would be complex but reading the CRM 2015 SDK it sounds tricky.
Calculated and rollup attributes
Calculated and rollup fields will be read only and calculated by a system user account. The attributes will inherit from AttributeMetaData
All attributes that inherit from AttributeMetadata have a SourceType property that can contain the values shown in the following table.
|null||Not a valid type of attribute to be a calculated or rollup attribute.|
|0||Simple attribute. The attribute isn’t defined as a calculated or rollup attribute.|
Reading the SDK on the Calculated and rollup attributes it seems quite complex with various classic CRM quirks
here are the limitations of calculated and rollup fields
Rollup attributes can’t be used as a workflow event or wait condition. These attributes don’t raise the event to trigger workflows.
The ModifiedBy and ModifiedOn attributes for the entity aren’t updated when the rollup attribute is updated.
A maximum of 100 rollup attributes can be defined within an organization. Each entity can have no more than 10 rollup attributes.
A rollup attribute formula can’t reference another rollup attribute.
A rollup attribute formula can’t reference complex calculated attributes. Only calculated attributes that reference simple attributes in the same record can be used with rollups.
A rollup attribute formula can’t include records in many-to-many (N:N) relationships. It can only include records in one-to-many (1:N) relationships.
Business Rules Enhanced
Business rules allow Or and IF Else statements in the condition
A big change to Business rules is they will be able to run on the server. Currently business rules can only run on the client (web browser, tablet, outlook) but this means the business rules are not triggered when the entity data is changed via a plugin or import but being able to specify a business rule to run on the server will
very useful but developers don’t like writing help or manuals, so I will say nothing about it.
Two factor authentication
This one sprung up from nowhere but what is it for I hear you ask.
This section already has a web page for it
it will allow you to ask for another proof of identity
- Something known (such as a password or PIN)
- Something possessed (such as a smart card)
- Something unique about the user’s appearance or person (such as a fingerprint)
The main supporting service is exchange online, which makes me wonder where this actually gong to be used.
New messages in the Organization web service
some which I thought were interesting
|Request class name||Description||More information|
|CalculatePriceRequest||Defines custom pricing for your products in opportunities, quotes, orders, and invoices.||Use custom pricing for products|
|CalculateRollupFieldRequest||Calculates a rollup attribute value on demand.||Rollup attributes|
|CloneProductRequest||Clones a product family, product, or bundle record, and creates a copy of the record under the same parent node.||Clone a product family, product, or bundle|
New messages in the Deployment web service
These are very interesting, you can delete an organisation and add an organisation from a database backup!
|Request class name||Description|
|AddCrmDatabaseRequest||Adds a CRM database to your deployment from a database backup or from a detached database.|
|DeleteOrganizationRequest||Deletes a CRM organization.|
|RetrieveMonitoringResultsRequest||Retrieves results from the monitoring service operation tests for your CRM deployment.|
|RetrieveUserMappingRequest||Retrieves the mapping information of existing users in a CRM organization.|
Finally this one
|RetrieveCurrentOrganizationRequest||Retrieves organization information from the organization service rather than the discovery service.||Retrieve organization information from the organization service instead of using the discovery service.|
So there you go, a quick whizz through some of the new functionality in the CRM SDK