The current talk around CRM at the moment is all about the Spring Wave AKA the CRM 2016 Update 1. Unlike Dynamics CRM 2015 Update 1, released at the same time last year, On-Premise customers can also take advantage of the latest update now by downloading Service Pack 1. Now it’s worth pointing out that some features, such as Guided Help and Field Service Management, are not made available to On-Premise customers at this time. Nevertheless, I think it’s a really positive step forward that On-Premise customers get most, if not all, of the latest updates as part of the Spring Wave, at the same time as Online customers. I’ve already talked previously about some of the great things to expect as part of the Spring Wave, so I would strongly recommend that organisations look at scheduling in their on-premise upgrade sooner rather than later. The main reason is the simplicity involved behind the actual upgrade process, which is the focus for this week’s blog post:

How to Download Service Pack 1

If you have enrolled your Dynamics CRM installation into Windows Update, then currently SP1 does not appear when your run Check for Updates on your CRM Server (this will change starting from Q3, according this knowledgebase article). Therefore, you will need to download the update manually via the following link:

https://www.microsoft.com/en-us/download/details.aspx?id=52662

There are a number of install files available as part of the update. On first glance, it can be difficult to determine which update file relates to which component of your CRM installation, so I have provided a summary of this below:

CRM2016-Client-KB3154952-ENU-Amd64.exe – Outlook Client (64 Bit)
CRM2016-Client-KB3154952-ENU-I386.exe – Outlook Client (32 Bit)
CRM2016-Mui-KB3154952-ENU-Amd64.exe – Outlook Client (64 Bit) Language Pack – English
CRM2016-Mui-KB3154952-ENU-I386.exe – Outlook Client (32 Bit) Language Pack – English
CRM2016-Router-KB3154952-ENU-Amd64.exe –  Email Router (64 Bit)
CRM2016-Router-KB3154952-ENU-I386.exe – Email Router (32 Bit)
CRM2016-Server-KB3154952-ENU-Amd64.exe – Server Update
CRM2016-Srs-KB3154952-ENU-Amd64.exe – Reporting Extensions

There is also a final file – CRM2016-Tools-KB3154952-ENU-amd64.exe – which I believe may be some kind of utility to perform database upgrades. I have been unable to get this working successfully on my end and, from the looks it, the server update performs the database upgrade as part of the update. If anyone knows what this is for and how it works, let me know in the comments below.

Installing the Update

The update is really simple – this is backed up by the fact that it can be completed in as little as 6 button presses!

After running the self-extracting installer, you will be greeted with the first screen of the setup process:

SP1_Update_1

As is always the case, accept the license agreement:

SP1_Update_2

Then, confirm that you are ready to begin the installation:

SP1_Update_3

The installation process shouldn’t take long (about 10 -15 minutes when I performed it). Once complete, you’ll then be able to view the installation log file and specify whether or not you want to restart the server immediately:

SP1_Update_4

 

As part of the update, your organisations and databases will be automatically updated to the latest version. So, no need to manually perform this yourself after the update.

Reporting Extensions Update

The only thing to point out with this is that this will need to be installed on the same machine as your CRM’s SSRS instance. Depending on your On-Premise deployment, your SSRS instance may be installed on a different server. The actual process of installing the update is identical to the above. Fortunately, however, a server reboot is not required 🙂

Outlook Client Update

Updating the Outlook client is also very similar and straightforward. Any existing connections will still work after the update. You will also need to install the update(s) for any currently installed language pack(s) immediately after this update is complete. In most cases, this will just be the one update for your CRM organization’s base language. Depending on the size and complexity of your CRM deployment, you may need to plan carefully to ensure a successful roll-out; you may be happy to note that the existing CRM client should still work with a 8.1 CRM instance, so you can always choose to defer this part of the update entirely.

The Testing Conundrum

As with any application update, it is always prudent to ensure that you have performed some kind of testing. This can be invaluable in identifying issues that can then be resolved in good time, without causing disruption to colleagues/end-users of the application.

The difficulty in this particular case is that the update appears to automatically update all organizations on a CRM instance in one fell swoop. So you cannot, for example, setup a copy of your primary CRM instance that you can perform a test upgrade on. You would therefore have to deploy an entirely separate CRM instance which you can perform the necessary testing on. You can use a trial key to cover the initial licensing hurdle, but you will still need to allocate hardware and put time aside to get your temporary testing environment setup.

Given that this release is not a “major” release of the application, I would argue softly that you can probably throw caution to the wind and perform the update with a minimal amount of testing, particularly if your CRM instance has not been significantly customised/extended. There does not appear to be anything majorly changed under the hood of CRM for this release that could cause problems (unlike the 2015 Spring Wave release for CRM Online). In order to best inform your decision on this, you should consider the following factors:

  • Are you able to schedule your CRM update over a weekend or extended out of hours slot, and have resources in place to perform any post-update testing? If the answer is yes, then you may be able to get away with not performing any pre-update testing.
  • What is the maximum amount of time your CRM instance can be taken down for during normal working hours?
  • Does your CRM utilise the Email Router, CRM for Outlook and/or multiple language packs? If yes, then performing upgrade testing of these components may be beneficial.
  • Does your business have a spare Windows Server instance that can be used for a test upgrade, without incurring additional cost to the business? If yes, then a major impediment has been eliminated, meaning that you should look at performing a test update.

Has anyone performed an On-Premise upgrade to SP1 yet? Let me know your experience and comments below!

As part of a recent project I have been involved in, one of the requirements was to facilitate a bulk data import process via a single import spreadsheet, which would then create several different CRM Entity records at once. I was already aware of the Bulk Data Import feature within CRM, and the ability to create pre-defined data maps via the GUI interface; what I wasn’t aware of was that there is also a means of creating the very same data maps via the SDK or an .xml import. This was a pleasant surprise to say the least and, from the looks of it online, there is very little in the way of resource available for what is, arguably, a very powerful out of the box feature within Dynamics CRM. Expect a future blog post from me that dives a bit deeper into this subject, as I think the capabilities of this tool could fit a variety of differing requirements; if only the instructions within the SDK were a bit more clearer when it comes to  working with the raw data map .xml!

Whilst attempting to perform a proof of concept test, I uploaded a data map .xml into CRM, which contained references to four different entities. When I then attempted to run the data import using a test file, I encountered a strange issue which meant I could not proceed with the import. This occurred when CRM attempted to map the record types specified as part of the data map:

DataMap_Error

Can you spot the two issues?

The first, more obvious, problem is the yellow triangle on the 3rd entity option and the fact that the Record Type is empty. Whereas the 3 other options will display clearly the Display Names of the entities (e.g. Account, Lead), the Display Name of the problematic entity is not visible at all.

The more eagle-eyed readers may also have spotted the second, more serious issue; the next button is grayed out, meaning we have no way in which to move to next step as part of the data import. With no means of figuring out, exactly, what may be causing the problem based on the above screen, you can potentially expect a long-haul investigation to commence.

As it turns out, the issue was both simple and frustrating in equal measures. It turns out that because the third entity on the list of the above had the exact same Display Name value as another entity within the system, CRM got confused and was unable to display and map with the correct entity. So, for example, lets say you create a custom entity to record information relating to houses, called “Property”, with a Name of “new_property”. Without perhaps realising, CRM already has a system entity called “Property”, with a Name of “dynamicproperty”. It doesn’t matter that the Names of the entities are completely different; so long as the Display Names are, then you will encounter the same issue as highlighted above. So, after renaming the entity concerned with a unique Display Name (don’t forget to publish!), I was able to proceed successfully through the data import wizard.

So why is this frustrating? If, like me, you have worked with CRM for some time, your first assumption would be that the system would always rely on the Name of objects when it comes to determining unique entities, attributes etc. The above appears to be the exception to the rule, and is frustrating for the fact that it throws out of the window any assumed experience when it comes to working under the hood of CRM. Perhaps it was (fairly) assumed that, because the logical names must always be unique for entities, that the data map feature could just use the Display Name as opposed to Name when attempting to map record types. I would expect that CRM is performing some kind of query behind the scene at the above stage of the Data Import wizard, and that the Display Name field value is included as parameter for all entities included in the data map. In summary, I would suggest that this is a minor bug, but something that would be difficult to encounter as part of regular CRM use.

Hopefully the above post will help prevent anyone else from spending 6+ hours from figuring out just what in the hell is going on 🙂 As a final side note, what this problem and solution demonstrates is an excellent best practice lesson to avoid; be sure to provide distinct Display Names to your custom entities.

In anticipation of the Spring Wave release of CRM (which I am really excited about), I have been doing some research into ADXstudio and CRM Portals. As you may already know, Microsoft bought ADXstudio last year and aims to tightly integrate the product under new branding, as an add-on for existing CRM Online customers and a volume license product for on-premise CRM deployments. CRM Portals are shortly going to become more and more relevant in the months ahead, to the point of which they will be crucial for any serious CRM developer/consultant; my principal aim of the above is to get a flavour relating to the products background and Microsoft’s long term direction resulting from the acquisition.

Whilst reading the Microsoft Acquisition FAQ on the Adxstudio website, I stumbled upon this rather interesting Q&A:

9. Are there plans for an Adxstudio certification program?

Adxstudio certification will be a module that CRM Partners will certify on as part as an all-inclusive Dynamics Service Certification (Target launch July 2016)

Although vague in nature, there is enough detail there for us to assume that there will be some changes to the existing exams currently covering the CRM product this year – either modifications to an existing exam, an exam overhaul/replacement or even a brand new exam altogether. Here’s why I think it is incredibly likely to expect at least 1 new CRM exam before the end of the summer, and why this is, arguably, a good thing:

  • I don’t speak with much authority on this first point unfortunately, but taking a cursory glance over the ADXStudio product suggests that there is a lot to learn and cover in order to implement and maintain a portal for your CRM instance. I therefore think it would prove difficult to incorporate the entire lifecycle of CRM Portals as part of an existing exam; indeed, the trend seems to suggest a move towards more specialised exams, given that the MB2-704 exam was, effectively, split into 2 new exams as part of the CRM 2016 release. Having a singular exam that does not distract itself with the breadth of other features within CRM would seem to be the best approach to ensure that professionals fully understand how to use the product.
  • Having a dedicated exam, plus an accompanying Microsoft Learning course, for CRM Portals makes sense as it not necessarily a foregone conclusion that everything will currently be using ADXstudio as part of their CRM deployment. Granted, it has been incredibly popular amongst CRM Partners across the globe. But it is still likely that most CRM professionals would have only at least heard of ADXstudio previously, having no direct experience using the product. By putting in place an exam and Microsoft Learning course for the product, Microsoft will enable those people to dive into the product quickly and effectively and, by association, drive sales of the product in the years ahead.
  • Microsoft have recently announced a price hike for all Microsoft Certification exams, which is expected to take effect for any exam booked globally after June 30th. It might just be a coincidence, but I can see the sense of holding off on releasing any significant new exams until the price hike takes effect. It’s just good business after all 🙂
  • To the chagrin of some within the CRM Community, there has been no new updated exam to replace the MB2-701 Extending Microsoft Dynamics CRM 2013 (although, strangely, updated Microsoft curriculum was released to Microsoft training providers for CRM 2015). This is something which I have been hotly anticipating myself for the past 6 months, given the number of changes involved as part of 2015’s Update 1. One would hope that, in line with Spring Wave release, an Extending Microsoft Dynamics CRM 2016 exam hits in the near future, so that CRM developers can demonstrate their competencies in the latest release(s) of CRM.

Perhaps I am being overly hopeful in anticipating a new exam; it could just be that the existing MB2-714 exam is simply updated to incorporate new content relating to CRM Portal. I think this could be a damaging oversight though, and could have long-term implications in regards to driving adoption of the product. It is incredibly important (one would assume) that Microsoft is able to record as many CRM Portal subscription add-on/volume license purchases, as quickly as possible, for the new product; putting out an olive branch to those within the CRM community who have not yet taken the dive with ADXStudio is an important consideration that can only help achieve the assumed aims of Microsoft’s acquisition last year.

I recently took the plunge and bought an annual Visual Studio Professional subscription. I was already aware that organisations could purchase these subscriptions through a volume license agreement, and also knew about some of the benefits available as part of a subscription. As I begin to immerse myself more and more with Dynamics CRM and how the platform integrates with an increasing array of different Microsoft products, I thought having a subscription would be a good way to keep continually up to date with what is happening in the world of Microsoft. I’ve spent a couple of weeks now utilising the various benefits on offer as part of a subscription, and I am now fairly convinced that anyone who considers themselves to be a serious Microsoft professional should have a subscription, either on an individual basis or through the company they work with. Here’s just a few of the things that I have found beneficial about having a subscription, and why each one makes an important difference:

Azure Credits

Azure, I hope, needs no introduction for those who are currently working within the cloud space. I have been pushing myself towards fully understanding everything that Azure can offer, as the Dynamics CRM product is increasingly starting to offer various types of add-on/integrations with the platform (in particular, machine learning, which is something I am very interested in at the moment). The nice thing about having an (annual) Visual Studio Professional subscription is that you get £35 ($50) worth of Azure credits each month that you can use however you wish. The amount may not seem to be much, but with this you could very easily pay for a development virtual machine, a 250GB SQL database or multiple Basic 2GB SQL databases. Or alternatively, you can use the credit to help subsidise some of the more expensive of the previous options to help create your own personal Azure workbench, website etc. It’s looking more and more likely that CRM professionals will need to have a solid grasp of the Azure platform, what it can offer and how it relates to CRM in the months ahead;  having these free credits gives you an excellent excuse to dive straight in.

Free Dev Software

Perhaps one of the major selling points of a subscription is access to development use only versions of Windows, SQL Server and other Microsoft products. Thanks to the license keys and software on offer, I have been able to successfully setup up my own development server “farm” through the use of Hyper-V – in the process, learning more about the setup and administration of Windows Server 2012 R2, Active Directory and the many other server roles that are required as part of a domain deployment. This is invaluable experience that is almost impossible to replicate via book reading, watching videos online etc. and I would encourage both individuals and organisations to make the appropriate investment in a dedicated development/test environment as an absolute minimum requirement if you are intending to offer some kind of IT provision. One drawback is that the really good software (*coughDynamicsCRMServercough*) is sadly not available as part of the Professional subscription. To get your hands on this, then you would need to look at purchasing an Enterprise subscription, which currently knocks in at a whopping £1,832.09 ($2,999). This is clearly a deliberate choice on behalf of Microsoft, given that you have the likes of enterprise-grade applications like Exchange and SharePoint up for grabs.

Training Courses

One of the surprise benefits I found of having a subscription is access to the Imagine Academy e-learning site. Imagine Academy is geared towards usage by higher education providers as a supplement to any academic courses they may be offering instruction in and gives you access to online versions of most (not all, by the looks of it) of the official courses on offer by Microsoft for Windows, SQL Server, Dynamics and Azure. The courses are a mixture of module-based videos, with some multiple choice knowledge checks and interactive demonstrations (depending on the course you are working through). Whilst I will be quick to admit that these courses are no real substitute for their paid versions within a classroom/lab environment, I have been able to successfully use the courses on offer as a useful revision tool to recently pass the MB2-714 – Microsoft Dynamics CRM 2016 Customer Service exam, something which I was dreading as a result of the splitting out of these exams as part CRM 2016.

Xamarin

Along with some of the other high profile acquisitions made within the last 12 months by Microsoft, it was announced earlier this year that Xamarin had now joined this list as well. As Microsoft begin to take a much more agnostic approach when it comes to which platforms their key applications can run on, the acquisition of Xamarin cements this further by encouraging C# developers to begin to modify their applications so that they can be run on iOS, OS X and Android, without the hassle or effort you would typically expect. Whilst Xamarin is available without the need to purchase a Visual Studio subscription, what you do get is access to some of the “getting started” resources as part of Xamarin University, in order to help developers get to grips with everything the platform has to offer. What’s also good with Xamarin is that you can download it for OS X and write C# code from there; something which I am still trying to get my head around and not something you would have expected to say 10 years ago! I am really interested by the potential that Xamarin has in helping to increase application portability, using a programming language that I have found to be incredibly versatile to help deploy apps onto my preferred mobile operating system, iOS.

Does anyone else have a list of what they think are the best benefits of a subscription, or general feedback on their Visual Studio subscription? Let me know in the comments below!

The introduction of Excel Online within Dynamics CRM was one of those big, exciting moments within the applications history. For Excel heads globally, it provides a familiar interface in which CRM data can be consumed and modified, without need to take data completely off CRM in the process. It is also a feature that can easily be used by CRM Administrators in order to perform quick changes to CRM data. It’s also one of the benefits of using CRM Online over On-Premise, and probably something I should of included as part of my previous analysis on the subject.

As great as the feature is, like anything with CRM, it is subject to occasional issues in practice; particularly if you use bespoke security roles as opposed to the “out of the box” ones provided by Microsoft. We encountered an issue recently where one of our colleagues had a problem importing modified data from Excel Online back into CRM. Our colleague had no problem opening the data in Excel Online, with the problem only surfacing when they clicked the Save Changes to CRM button. The rather lovely looking error message looked something like this:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Principal user (Id=0c6ff908-a6c9-e511-8144-c4346bac5e0c, type=8) is missing prvReadImportFile privilege (Id=fe46d775-ca5c-4a09-af93-99a133455306)Detail:

<OrganizationServiceFault xmlns:i=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://schemas.microsoft.com/xrm/2011/Contracts”>

<ErrorCode>-2147220960</ErrorCode>

<ErrorDetails xmlns:d2p1=”http://schemas.datacontract.org/2004/07/System.Collections.Generic” />

<Message>Principal user (Id=0c6ff908-a6c9-e511-8144-c4346bac5e0c, type=8) is missing prvReadImportFile privilege (Id=fe46d775-ca5c-4a09-af93-99a133455306)</Message>

<Timestamp></Timestamp>

<InnerFault i:nil=”true” />

<TraceText i:nil=”true” />

</OrganizationServiceFault>

When approaching any type of error message for the first time, it can be quite daunting figuring out what it is saying. Fortunately, in this case, there is only one line we really need to be concerned about, which is the <Message>…</Message>. To translate to plain English, this line:

<Message>Principal user (Id=0c6ff908-a6c9-e511-8144-c4346bac5e0c, type=8) is missing prvReadImportFile privilege (Id=fe46d775-ca5c-4a09-af93-99a133455306)</Message>

Means:

I cannot complete this action for Joe Bloggs, because they are missing the Import Source File Read privilege!

(Note: To help translate the above, I made use of the Security role UI to privilege mapping table on MSDN – a handy link to have in your browser favourites)

Giving the user just this privilege did not resolve the issue, producing a completely different error message in the process. Rather then spend an inordinate amount of time replicating the action over and over again, we did a quick Google search to see if there if we could find a list of the minimum level of permissions required in order to complete We were directed towards this forum post, with an answer from CRM MVP Jason Lattimer on what permissions were required in order to resolve the error message:

Required permissions:

* Data Import (all)
* Data Map (all)
* Import Source File (all)
* Web Wizard (all)
* Web Wizard Access Privilege (all)
* Wizard Page (all)

Problem solved you’d think? Well, unfortunately, in this case not. Although at first we thought that things were working fine, as no error message cropped up. When we then monitored the data import job in background, however, it was stuck at Parsing. At this point, we were really beginning to struggle to think of how to resolve the problem. It was at that point we rather desperately took a look at other, successfully completed, System Jobs to see if there was anything obvious we could observe. We noticed that successfully completed Data Import jobs had 3 System Job Tasks associated with them, whereas our stuck had only 1. At this stage, we asked: Could we be missing privileges on the System Job entity? And, lo and behold, when we took a look at the users security role, there were no privileges configured for System Jobs. After a bit more trial and error, adding permissions one by one onto this role, we saw that the Data Import job ran successfully!

So just to confirm for those who may encounter the same problem in future, the full list of permissions required to get Excel Online Data Import working successfully are the ones highlighted above and the following additional privileges too:

Customization Tab

System Job

Create: Business Unit Level

Read: Business Unit Level

Write: Business Unit Level

Append: Business Unit Level

Append To: Business Unit Level

Assign: Business Unit Level

e.g.

SystemJobMinimumPrivileges

What this problem (and the solution) I think demonstrates is the best way in which to approach day-to-day problems that may crop up within CRM:

  • It is reasonable to assume from the outset that the problem is due to a lack of security permissions problems; try not to over complicate matters early on by assuming it could be something completely different. For example, if the task or action that you are trying to perform CRM can be performed using an account/security role with greater permissions, then this will tell you straight away what the problem is.
  • Having good “under the hood” knowledge of CRM is always helpful in a scenario like this, but this may not always be possible for those of you work with CRM sparingly. To help you in this scenario, we can refer to some of the fantastic resources online by the CRM community. Ben Hosking has a great blog post on the importance of thinking in entities when it comes to working within CRM, something which I think applies great in this particular example. By understanding that the System Job is a system entity, we can logically assume that it has its own set of required permissions.
  • In diagnosing the issue in this case, we were able to refer to some of the previous System Jobs records in the system. As part of this, we observed that a System Job that completed successfully had 3 job records related to it. This immediately told us that there was something wrong with the users access to the entity in question (going back to the above, System Job is, after all, a system Entity). Sometimes, being able to understand the difference between an action, when it works and doesn’t work, can give you the information you need to make the logical next step jump on what to investigate further.
  • And, last but not least, access to and the ability to use a search engine is always very helpful 🙂