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.Pagegained 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,CanBeSecuredForReadandCanBeSecuredForUpdatesay 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.
UpsertRequestupdates the record if it exists and creates it if it does not. - Change tracking.
RetrieveEntityChangesRequestreturns what changed since the data was last synchronized. - One transaction for several requests.
ExecuteTransactionRequestruns 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
owneridwith Assign, can be changed withUpdateRequest, and some of the specialized messages were deprecated. - Plug-in trace logs. Tracing through
ITracingServicewas already available as a debugging aid, and 7.1 added the ability to log it toPluginTraceLogrecords 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
- Dynamics CRM 2015 lifecycle (Microsoft Lifecycle Policy) 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.
- What’s new for developers (Microsoft Dynamics CRM 2015 SDK, 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.
- Microsoft Dynamics CRM 2016 / Dynamics 365 SDK (compiled help, Dynamics365SDK.chm, and SDK tree) 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.