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

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


Download Link

If you want to download the CRM 2015 SDK you can below, it also has the


Pre Release

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: Clone product records

Sample: Add products to a bundle

Sample: Calculate Price plug-in



Hierarchical Data

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.

Value Description
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.
1 Calculated attribute
2 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.

rollup attribute formula can’t reference another rollup attribute.

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.

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

Custom help

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

2 thoughts on “CRM 2015 – Hosk takes a peak at the CRM 2015 SDK

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s