Microsoft Dynamics CRM 2015

Calculated and rollup fields, hierarchies; online 7.1 added alternate keys, change tracking, upsert

If you are maintaining this today

CRM 2015 is out of support. Mainstream support ended on 14 January 2020 and extended support on 14 January 2025, against a release date of 11 February 2015.

The trap with this version is that “CRM 2015” names two different feature sets. Version 7.0 was released as CRM 2015 on-premises and CRM Online 2015 Update. Version 7.1 was CRM Online 2015 Update 1, an online-only release, and it is where alternate keys, upsert, change tracking and plug-in trace logs first appeared. The 2016 SDK says the features added in CRM Online 2015 Update 1 became available to on-premises organizations with CRM 2016, with one exception: the Parature integration stayed online only.

So an on-premises CRM 2015 system does not have the 7.1 features. Code or guidance written for them will not work there, however current it looks.

The same split shows up in solutions. Exporting from 7.1 offered a target of 7.1 (the default) or 7.0. Choosing 7.0 left out anything new in 7.1, so that organizations still on the earlier release could install the solution.

What changed for customizers

Source: Microsoft’s archived CRM 2015 “What’s new for developers”.

Area 7.0: CRM 2015 and CRM Online 2015 Update 7.1: CRM Online 2015 Update 1 (online only)
Calculations Calculated and rollup fields Rollup fields gain AVG and work with activities
Business logic Business rules can run on the server, with branching and default values Custom actions callable from workflows and dialogs
Data model Hierarchical relationships, hierarchy query operators, hierarchical security Alternate keys; Date Only and Time Zone Independent date behaviours
Integration Web proxy classes for the /web endpoint with OAuth Upsert, change tracking, ExecuteTransactionRequest, optimistic concurrency, the Web API preview
Diagnostics Plug-in trace logs stored as records
Form script Business process flow client API; deprecated methods removed Quick create, device type and date-control additions

Business rules run on the server

Source: the archived CRM 2015 “What’s new for developers”.

Business rules move common logic out of form script so a customizer can change it without a developer. In 7.0 they gained branching with OR and If-else, default values, and the ability to be evaluated on the server.

That last point matters for anyone writing integration code. A business rule evaluated on the server applies to every client, including custom clients and integrations. When code from any client breaks the rule, it receives the error message the rule specifies, so integration code needs error handling that copes with rules someone adds later without telling you.

Calculated and rollup fields

Source: the archived CRM 2015 “What’s new for developers”.

Administrators can define fields that hold common calculations without writing code, and developers can rely on the platform to do the calculation instead of doing it in their own. A rollup value can be recalculated on demand with CalculateRollupFieldRequest. In 7.1 rollups gained AVG and support for activities.

Hierarchies

Source: the archived CRM 2015 “What’s new for developers”.

Hierarchical relationships existed before, but 7.0’s hierarchy visualizations and query operators depend on a relationship being explicitly declared hierarchical, through OneToManyRelationshipMetadata.IsHierarchical. Each entity can have only one self-referential one-to-many relationship treated as hierarchical, and the hierarchical relationships on account, systemuser, product and position cannot be changed.

Hierarchical security is an optional additional layer on top of business units, roles, sharing and teams, intended to reduce the number of business units and the plug-in code written to share records programmatically.

Business process flows and field security

Source: the archived CRM 2015 “What’s new for developers”.

  • Business process flows branch. Conditions support If-Else and combining expressions with OR or AND, and a client-side object model lets form script interact with the flow: Xrm.Page gained new events, methods and objects for it.
  • Field-level security covers system fields. Earlier versions allowed it on custom attributes only. Not every system attribute can be secured; the metadata properties CanBeSecuredForCreate, CanBeSecuredForRead and CanBeSecuredForUpdate say which.

Removed, and newly required

Source: the archived CRM 2015 “What’s new for developers”.

  • Previously deprecated form script methods were removed in 7.0. If you are upgrading from CRM 2011, Microsoft pointed to its code upgrade guidance and an updated custom code validation tool.
  • Plug-ins and custom workflow activities need .NET Framework 4.5.2 or later to build.

CRM Online 2015 Update 1 (7.1)

Sources: the archived CRM 2015 “What’s new for developers” for the features, and the 2016 SDK for when they reached on-premises.

This release was online only; on-premises organizations received these features with CRM 2016.

  • Alternate keys. Identify a record by a unique column, or combination of columns, from an external system instead of the primary key.
  • Upsert. UpsertRequest updates the record if it exists and creates it if it does not.
  • Change tracking. RetrieveEntityChangesRequest returns what changed since the data was last synchronized.
  • One transaction for several requests. ExecuteTransactionRequest runs two or more requests in a single database transaction, rolling all of them back if one fails.
  • Optimistic concurrency. An update or delete can fail if the record changed on the server since it was retrieved, instead of silently overwriting another user’s change.
  • Update for specialized operations. Attributes that used to need a dedicated message, such as changing ownerid with Assign, can be changed with UpdateRequest, and some of the specialized messages were deprecated.
  • Plug-in trace logs. Tracing through ITracingService was already available as a debugging aid, and 7.1 added the ability to log it to PluginTraceLog records that can be viewed in the web application.
  • Date and time behaviours. Date and time attributes can be Date Only or Time Zone Independent, where previously every value was time zone aware.
  • The Web API preview. OData v4 at /api/data, enabled from system settings, explicitly not for production and without support. The production Web API arrived with CRM 2016.

What this page still needs

Written from Microsoft’s archived CRM 2015 developer documentation, its lifecycle page and the 2016 SDK. Not yet covered, and not guessed at: security changes beyond field-level and hierarchical security, on-premises infrastructure requirements, and the upgrade path from CRM 2013.

Sources

  1. Dynamics CRM 2015 lifecycle (Microsoft Lifecycle Policy) Microsoft · · Primary, current docs Microsoft support dates for CRM 2015: start 11 February 2015, mainstream support ended 14 January 2020, extended support ended 14 January 2025. The lifecycle table shows end dates at 6:59:59 AM on the following day; the actual end date is the day before.
  2. What’s new for developers (Microsoft Dynamics CRM 2015 SDK, archived) Microsoft · · Primary, archived Microsoft’s archived CRM 2015 developer documentation, in two parts. CRM 2015 and CRM Online 2015 Update (7.0): calculated and rollup fields, hierarchies and hierarchical security, server-side business rules, business process flow branching and scripting, field-level security on system fields, removal of deprecated form script methods, and .NET Framework 4.5.2 as the minimum for plug-ins. CRM Online 2015 Update 1 (7.1): alternate keys, upsert, change tracking, ExecuteTransactionRequest, optimistic concurrency, Update for specialized operations, plug-in trace logs, date and time behaviours, and the Web API preview.
  3. Microsoft Dynamics CRM 2016 / Dynamics 365 SDK (compiled help, Dynamics365SDK.chm, and SDK tree) Microsoft · Primary, archived Private archive: CRM-SDK-Rescue/2016-D365-SDK_from_DESKTOP-Code/SDK Microsoft SDK for the 8.x era, from an owner-held copy: the compiled help (Dynamics365SDK.chm, read as documents, never executed), sample code, schemas and UII material. Its what’s-new topic covers CRM 2016 (8.0), CRM 2016 Service Pack 1 (8.1) and the December 2016 update for Dynamics 365 (8.2). Quote sparingly and cite; do not republish. Its SampleCode/CS/HelperCode/OptionSets.cs lists the component type values the 2016 SDK knew.

Pages covering CRM 2015

Automation

Solutions & ALM

On-Prem