As we come to an end of another year, the Christmas period provides an excellent opportunity to review what’s happened over the year and to plan effectively for what’s in store during the new year. My 2016 has been eventful, to say the least, presenting a good mixture of excitement, new challenges and learning experiences. 2017 looks to present a number of new opportunities for me to continue working with Dynamics CRM/Dynamics 365 for Enterprise (CRM/D365E), to continue developing the blog further with new content and for me to widen my knowledge more generally of Microsoft technologies in the cloud. Here’s my top 6 list of closing observations and thoughts for 2016:

You can’t learn everything about CRM/D365E, so don’t even bother trying

I have really enjoyed working with CRM/D365E over the past couple of years. As I’ve discussed previously on the blog, it gives those who have “dabbled” in various different Microsoft technologies an open and accessible canvas to work with a number of different technologies simultaneously. As a result, the sheer breadth of potential specialisations within CRM was staggering; with this increased tenfold following the introduction of D365E. There is no point, therefore, in needlessly stressing yourself out, attempting to become a CRM/D365E master. This is particularly true given that the rate of changes to the product mean that it is literally impossible to keep up. Instead of being frustrated, you should take joy and satisfaction at whenever you learn something nuanced or niche about the product and focus your study towards either a technical (i.e. developer) or functional (i.e. Sales, Service etc. areas of the product) specialist. There is plenty for you to get your teeth stuck into either way.

2016 has been the year for CRM/D365E

There have been a lot of developments this year with the product formerly known as Dynamics CRM. This blog has covered the vast majority of these changes over the past year, such as:

A lot to take in, I’m sure you’ll agree! And this seems unlikely to let up in 2017 either. We can look forward to the following next year:

  • The release of Dynamics 365 for Business, Microsoft’s successor product for CRM targeted at small to medium size businesses. There is currently scant information available regarding this product, so I am keen to find out more about this at the first available opportunity.
  • The (anticipated) release of brand new exams for Dynamics 365
  • An expected spring update to Dynamics 365 for Enterprise, which is likely to take the product to its next major version

Now is certainly the best time to be involved in working with CRM/D365E, with the enhanced opportunity for those working with the product to develop their skills further and get involved as part of various projects.

Don’t be afraid to make a big change

Opportunities will always present themselves – whether it’s learning about a new technology, getting involved as part of a project at work or even moving from your current role to an entirely different one. These should always be explored eagerly, even if you are daunted by the change that they may make to your current circumstances.

…but also don’t be afraid to admit if this was a mistake

Whenever we set out to make a major change – whether in our professional or personal life – we always have the best intentions on where we want to end up. This can often be borne out of a degree of frustration, which can be compounded further if this change does not deliver what we had hoped for. The important thing to remember with this is not to get angry but deal with the situation calmly, with control and take pressing action to get yourself in a place where you are happy. I am often reminded of one of Tony Robbin’s key messages – take massive action. Do whatever you feel is necessary to get you to the place where you want to be. And don’t be afraid to look backwards as part of this. Certainly, from a professional viewpoint, you should always be ensuring that you never burn you bridges with past colleagues/companies that you have worked with, judge any opportunity on its individual, unbiased merit and never be afraid to admit if you made the wrong decision. Instead, what you have done is had a significant learning experience that has helped to develop you further.

Your team is the most important thing about your job

A lot of studies point to the importance of a line manager in an employees happiness and engagement. Whilst this is undoubtedly important, I think this only tells half the story. What I have come to learn this year is the importance of having good and reliable team members surrounding you – including both colleagues who report to you and those who you report to. Having that almost instant rapport with other colleagues, in terms of how they approach daily tasks, sharing the same values as you and in covering your back, is the single most important thing about your role. If this is not present or not working within your current team, then you very much need to take massive action to get the team in the place where they need to be or start evaluating your options to extricate yourself away from the team. You should ask yourself the following questions when attempting  to determine whether your team is functional and effective or the complete opposite:

  • Do you colleagues communicate openly and honestly with you on a day to day basis?
  • Does your line manager give you the freedom and latitude to complete your job in the best way you see fit?
  • Is your line manager always approachable?
  • When things go wrong, how do your colleagues work towards a resolution? Do they instantly start pointing the finger or do they get actively involved in providing a resolution? What did your colleagues do (if anything) to prevent things from going wrong in the first place?
  • What is the team dynamic like? Is everyone in your team professional in how they conduct themselves?
  • Does everyone have a clear vision of what the team is working towards, and how this fits in with the wider business?

If the answer is no or nothing to most, if not all, of the above, then you should start to think carefully about how you can make a positive change to the working environment.

Looking ahead to 2017: The blog 

At the start of the year, I set myself a personal challenge: start a CRM focused blog and publish at least 1 post a week. So far, I think I’ve done a pretty good job meeting this challenge, although I obviously cannot comment on the quality of the content… 🙂 Whilst I am fully intending to continue posting in the New Year and the beyond, I am currently contemplating some changes to the blog. With the introduction of Dynamics 365, the blog name will soon become retro and outdated. So a new name will likely be required, and possibly a shift in focus towards a more general Microsoft technology focused blog. Watch this space for more info, but for those who have stuck around this year and are still reading, then thank you for your support! I hope I can continue to entertain you in some small fashion in 2017 as well.

Regardless of whether you are a new or existing visitor to the site, I wish you a very Merry Christmas and a Happy New Year!

Getting to grips with how to use Dynamics CRM/365 for Enterprise (D365E) is no easy feat. You can imagine just how difficult it is for an end user to get to grips with how the application works and functions; with more detailed knowledge around customisation and development being an entirely different ball game altogether. Compounding this problem further is the fact that the product has evolved at an increasingly more rapid pace over recent years, to the point where it is literally impossible to become a master of everything that you can do within CRM/D365E. Those venturing into the product for the first time may find their learning journey significantly simplified if they already have a good general knowledge about some of the underlying technology that powers CRM/D365E. This was certainly true in my case; I had a good background already in managing Office 365, writing SQL queries/reports and some experience with C#. This is all incredibly useful knowledge to have in your arsenal and is all directly applicable towards CRM/D365E in some way. For those who are getting to grips with the product for the first time, either without this previous experience or as part of an apprentice/graduate type role, your journey may not be as swift and issue-free. With this in mind, here’s my list of essential knowledge that you can add to your own “swiss army knife” of personal knowledge. Experience and good knowledge of these technologies will not only help you greatly in working with CRM/D365E, but present an excellent learning opportunity for Microsoft technologies more generally and something that you can add to your CV with pride:

SQL Server

What is it? : SQL Server is Microsoft’s proprietary database knowledge, based on the ANSI standard. SQL stands for Structured Query Language and is one the most widely used database programming languages on the planet.

Why Knowing It Is Useful: The underlying database technology that CRM/D365E uses is SQL Server, so having a general awareness of relational database systems work and how SQL Server differs from the standard goes a long way in understanding what is capable from a customisation/development viewpoint. For example, you can very quickly grasp which data types the application supports, as they will all ultimately be based on a supported SQL Server column data type. If you are running on-premise versions of CRM/D365E, then knowledge of SQL Server immediately moves from being a nice bonus to an essential requirement. This is because administrators will need to have good knowledge of how to manage their Dynamics CRM database instance, perform backups and also, potentially, write transact-SQL (T-SQL) queries against your database for reporting or diagnostic work.

Recommended Area of Study: Focusing your attention towards SQL Server Reporting Services (SSRS) report writing will benefit you the most. Through this, you can begin to establish good knowledge of how SQL Server databases work generally, and be in a position to write FetchXML for Online/On-Premise deployments of the application or Transact-SQL (T-SQL) based reports for On-Premise only. Having a good awareness of what is capable via a standard SQL query will also hold your good stead when working with FetchXML, as you can immediately make a number of assumptions about what is possible with FetchXML (for example, filtering results using an IN block containing multiple values and performing grouping/aggregate actions on datasets)

Office 365

What is it? : Office 365 is Microsofts primary – and perhaps most popular – cloud offering for businesses, individuals or home users. Through a wide array of different subscription offers, home and business users can “pick ‘n’ mix” the range of solutions they require – from Exchange-based email accounts to licenses for Microsoft Visio/Project, through to PowerBI.

Why Knowing It Is Useful: Although it is arguable that knowledge of Office 365 is not essential if you anticipate working with on-premises versions of the application, you may be doing yourself a disservice in the long term. Microsoft is increasingly incentivising organisations to move towards the equivalent cloud versions of their on-premise applications, meaning that as much knowledge as possible of how CRM/D365E Online works in the context of Office 365 is going to become increasingly more mandatory. If you are looking to secure a career change in the near future, and have not had much experience with Office 365, then this is definitely an area that you should focus on for future learning. From a day-to-day management point of view for the Online version of the product, some basic awareness of how to navigate around and use Office 365 is pretty much essential if you are going to succeed working with the product on a day-to-day basis.

Recommended Area of Study: Spin up a D365E trial, and you can very quickly start getting to grips with how the product sits within the Office 365 “ecosystem”. Practice licensing users, configuring security group level access to your D365E trial tenant and modify the details on Office 365 user accounts to see how these details are synced through into D365E. The Microsoft Virtual Academy also has a number of general courses related to Office 365 however, due to the frequent updates, it may not always be in-line with the current version. The official curriculum/certification paths for Office 365 may also suffer the same from this but are worthwhile in demonstrating your experience and ability to integrate D365E with the various related Office 365 services.

Active Directory

What is it? : For the rookie, intermediate and experienced IT admins, Active Directory needs no introduction. It is essentially Microsoft’s implementation of the Lightweight Directory Access Protocol (LDAP), having first being introduced in Windows Server 2000, providing a means of managing user, security and access rights for domain objects. There are now two distinct versions of Active Directory that are available – the more traditional, Windows server based, on-premise Active Directory and Azure Active Directory, which is utilised primarily by Office 365.

Why Knowing It Is Useful: User account records for both On-Premise and Online versions of CRM/D365E use Active Directory objects, with a number of important information synchronised between an Active Directory user and the equivalent User entity record. For example, as indicated in this MSDN article, the only way in which you can synchronise a user’s Job Title through to CRM/D365E is by updating the equivalent field on the Azure Active Directory. Active Directory objects are also the only way in which you can authenticate with the application via the Web Interface or other means, with no option to create a database user or other kind of authenticated user type.

Recommended Area of Study: It’s free to set up your own Azure Active Directory, so this is an excellent starting point for getting to grips with the technology. There’s also nothing preventing you from downloading a trial of Windows Server and installing the Active Directory server role on this machine. Once configured, you can then start to create users, update attributes, configure permissions and setup roles that contain collections of privileges. If you already have an Office 365 tenant with CRM/D365E Online, then you can use the Office 365 portal to manage your user accounts and test the synchronisation of attribute values from the Active Directory through to the application.

PowerShell

What is it? : A good way to remember what PowerShell is that it is essentially a blue command prompt window 🙂 . Traditionally only being relevant and important for those working extensively with Windows Server or Exchange, PowerShell is now increasingly important as part of administrating on-premise CRM/D365E, Office 365 and Azure, to name a few. Indeed, one of the major shock announcements this year was that PowerShell became open sourced and can be installed on Linux; representing the increasing demand and importance of Linux-based resources within the Microsoft cloud.

Why Knowing It is Useful: Similar to SQL Server, PowerShell is something that is instantly more applicable for on-premise CRM/D365E deployments. For example, the only way to modify the default number of Dashboard items is via executing the Get-CRMSetting cmdlet against your on-premise organisation. I would also, again, argue having a general awareness of PowerShell can help greatly when performing administration work against an Office 365 tenant that contains a CRM/D365E organisation, such as user provisioning or license assignment. If you are utilising the Azure Service Bus to integrate CRM/D365E for Azure-based applications, then PowerShell immediately becomes a desirable skill to have in your arsenal, allowing you to remotely administer, deploy or update Azure resources programmatically.

Recommended Area of Study: The fact that PowerShell is now open sourced means that there is a plethora of online tools and guides to refer to, and you can be assured that you can get it working on your platform of choice. The GitHub page for PowerShell is a great place to get started. Beyond that, you have a few options about how you can practice further. If you have spun up a D365E trial, then you can choose to hook up PowerShell to Office 365 to see what you can do from a remote management perspective (such as granting Send On Behalf permissions for a shared mailbox). Alternatively, you can run it from your local Windows machine, connect it up to a Windows Server instance or attempt to create new services in Azure and experiment that way.

The recent releases of Dynamics CRM have very much been missing something for developers who work with the product. Whilst a number of exciting new features have been added to the product – the Web API, Interactive Service Hub and Portals, to name a few – there very much feels to be a lack of attention towards surrounding support tools to give developers a head start in progressing their careers and facilitating more agile and efficient development of bespoke CRM solutions. Exams are one area that has been guilty of this, with no up to date exam for developers released for over 3 years. In today’s modern world, 3 years is a lifetime of change and can leave developers in a situation where they are not aware of the latest technologies and potentially developing solutions that will soon be deprecated or lead to additional development time and administrative headroom to manage.

With this in mind, it is pleasing to hear that an updated version of the Visual Studio Developer Toolkit will be released for Dynamics 365 and that a beta version of this tool is now available to be downloaded. For those who have not used the earlier version of this tool for Dynamics 2013 and earlier, it provides developers the mechanism to create Visual Studio project templates that can store all of your related development assets, facilitate the deployment of these assets to your CRM instance from within Visual Studio and allow you to generate early-bound class files of your CRM entities and the requisite template class files for your Plugins; enabling you to focus more on developing your business logic. I have some experience using the tool myself in a sparing manner and have found it somewhat cumbersome to use. For example, I have had issues where I have had to sign into a development CRM system every time the project loads and I have not found it straightforward to use alongside existing CRM solutions. The tool is also only compatible with Visual Studio 2012 and earlier, which means developers running the latest version of Visual Studio will miss out on being able to use the toolkit. Nevertheless, the ability to generate the required code for your plugins in a quick manner is a major boon and, with the new release, a major opportunity is present in order to improve the tool and resolve some of its glaring issues. I’ve been taking a look at the Beta release of the Dynamics 365 Toolkit, and here are some of the new features which I am most excited about and feel will be a big help to developers in the months ahead:

Templates for Mobile App Development

For most standard deployments, the out of the box Dynamics 365 for Tablet/Mobile app will be sufficient for your users. You could even look at developing a simple app using PowerApps. For more advanced scenarios, the SDK would be your next port of call in order to develop a mobile app that connects up with CRM/D365E. This is a popular approach to take when developing a mobile app with a specific function, as it enables you to leverage the full functionality of CRM/D365’s processes as part of your app, whilst ensuring that the data model conforms to a familiar, SQL Server-based model. The analogy I have used before with other developers is that developing for Dynamics CRM is like developing for SQL Server on steroids 🙂

Previously, there were some code examples included as part of the SDK in order to help developers “get started” with developing a Windows Store, iOS and/or Android app that connects to CRM. Now, the Dynamics 365 Toolkit includes a number of Project templates that help with developing a mobile, store and/or universal app:

1

The only caveat with these templates is that they are designed solely for Windows-based devices; for a truly cross-platform application, then you would need to look at utilising a tool like Xamarin in order to meet your requirements.

Configuring Paths to SDK/Plugin Registration Tool

This is a minor new feature, but something that is important and, arguably, essential if you are frequently developing new CRM/D365E developer solutions. Within the settings page for the toolkit, you can now specify the location for your SDK DLL’s and Plugin Registration tool; which will then be used across all of the projects you create in Visual Studio moving forward:

7

This is a huge time-saving step and removes a rather tedious task that is often involved when it comes to setting up your Visual Studio projects.

Configure Microsoft Dynamics 365 Solution Wizard

When you now create a new Dynamics 365 solution template in Visual Studio, you are greeted with a simple and clear wizard that helps facilitates the following scenarios:

  • Specification of a persistent connection to CRM/D365E, that can then be re-used across different projects within Visual Studio and provides a familiar UI experience with the existing tools within the SDK (such as the Plugin Registration Tool):

 

38

 

  • The ability to select or create a brand new solution from within Visual Studio (previously, you only had the option of selecting an existing solution):

2

  • Granular level control of which templates to include in your project – including Plugins, Custom Workflow Assemblies or Web Resources/Assets:

 

6

With all these changes put together, the process of setting up new projects that are targeting a single CRM environment is greatly simplified and you can ensure that your project contains just the assets that you need.

Why the Developers Toolkit is important

One of the major hurdles that developers generally face is having to deal with all of the stuff that is non-development related – setting up environments, installing development tools and resolving environment configuration issues, to name but a few. Whilst all of this is useful experience and gives developers a flavour for how a potential application deployment will look, it can often get in the way of a developer’s primary responsibility; to just code. This is one of the reasons why DevOps is becoming an increasingly more important area of focus for businesses who employ developers, as having an effective DevOps strategy, plan and resource will ensure greater productivity from your existing resource and help to foster an environment where projects are being run the “right” way. The Developers Toolkit is an important tool in your DevOps arsenal, as it works towards meeting all of the above objectives and begins to foster an approach where set standards are followed across multiple projects. It also helps take out the administrative effort often involved with, for example, setting up a Plugin class file manually within Visual Studio. Although the Dynamics 365 Developers Toolkit is still in beta, and not ready for Production use, I would very much hope to see a full release in the near future. Tools of this nature (such as XRMToolBox and the Ribbon Workbench) help to encourage greater efficiency, which is often essential for many IT projects these days.

I was rather surprised to see, when browsing through the software options available to MSDN subscribers, that a non-preview version of Windows Server 2016 was available to download. Further investigation proved that Windows Server had been quietly released in the middle of October, something which I made reference to as part of a previous post on Ignite 2016. For those who have found Windows Server 2012 to be a less than ideal experience, this will likely be welcome news. Some of the new features that are available as part of Windows Server 2016 include:

  • The return of the traditional Start menu: This is no doubt the most pleasing and welcome change to Windows Server, returning Windows Server to a more familiar user environment.
  • Shielded Virtual Machines for Hyper-V: Windows Server 2016 offers additional encryption and security options, that allow you to protect business-critical or sensitive server instances in Hyper-V from being exposed across your network.
  • General Virtual Machine Improvements: This release is very much geared towards widening the options available from a Hyper-V virtualisation point of view, including better performance, increasing accuracy for clock/date settings on virtual machines and “hot spare” type options for swapping out system resources on a Hyper-V image, without taking the virtual machine down.
  • Identity Management Updates: A whole swathe of updates to many of the common Identity services offered by Microsoft, including Active Directory, Active Directory Federation Services and Active Directory Certification Services.

Server administrators will need to start performing exercises to determine a possible upgrade path from older versions of Windows Server to newer versions. Whilst there is not significant rush at this stage to get this done, those who are running Windows Server 2008 instances will have additional impetus to consider upgrading in the near future.

Let’s walk through the actual upgrade process, to determine just how simple or complicated the process is. In the examples below, I’ll be using a standard Windows Server 2012 R2 environment, that does not have any Server Roles installed.

After running the Autoplay, the installation will begin, and you will be prompted first to check for updates before beginning the install:

1

It is always best to get the latest updates, in case any important security patches have been released, so I would recommend keeping the setting as default. If you are in a rush, though, you can opt to do this later, as the install time will be impacted severely. You can also indicate whether you want to send anonymous information to Microsoft about the install process.

After checking for updates, the next major step is entering your Product Key:

4What I quite like about this, and what I believe is a new addition, is that you will be alerted in the message box below if you enter any invalid characters – quite handy, as it means you can correct any errors before entering the product key completely:

5Next, you have to decide what type of install you want to perform – a standard or Server Core installation:

7

What’s worth noting is that you get this option, regardless of whether you are performing the upgrade on a standard or Server Core installation. So if you have determined in the mean time that the lack of user interface is causing you issues managing your server or if you find that your server is only ever accessed/administered via remote PowerShell, then you have a good opportunity to correct this during the upgrade process. Speaking from a purely CRM point of view, we’ve seen previously what is involved as part of setting up Dynamics CRM 2016 on a Server Core installation; suffice to say, it’s not something I would recommend.

Once you’ve made this crucial decision, you’ll then need to accept the standard license terms:

8Then, another important decision. Similar to when you upgrade Windows 7 to Windows 10, you have the option of performing a clean install or an in-place upgrade:

9In this example, the Keep personal files and apps option was chosen, so I cannot advise on the impact of choosing Nothing. I would assume that choosing this would delete everything, including any installed Server Roles. Proceed with this step at your own risk.

Then, you’ll get a rather lengthy Getting Updates window – I would assume that this is the point in the install when the updates are actually downloaded, and the earlier step was a pre-check of some sort:

10Finally, before beginning the install, you are prompted with an interesting warning, which you have to dismiss before the install will begin:

12I believe this is another first for a Windows Server install, in that Microsoft is specifically advising not to perform an in-place upgrade of your Windows Server. There is a certainly a convincing school of thought that backs this up – for example, what if you have a business critical application that suddenly breaks after the upgrade? It is arguably better and safer to setup a new server from scratch and then iteratively test out your server applications one by one, before deciding whether it is safe to upgrade. I would argue that an in-place upgrade is safe so long as any pre-requisite testing has been done using a copy of your server instance – indeed, I have not encountered any major issues since performing an in-place upgrade myself on my development server. But don’t ever throw caution to the wind and assume that you can upgrade without any testing.

The install will then do a final check on disk space; likely throwing an error if there is not enough (Microsoft recommend 32GB):

13

Then, the critical moment! Review the settings that have been specified and then press Install to begin the process:

14The full-screen setup will then start, preventing you from doing anything else on the Server throughout the process:

15The Server will restart several times after that. The whole process took a couple of hours on my test Hyper-V machine, but this was probably due to lack of resources allocated to it! 🙂

After install, you will be greeted with the new Windows Server 2016 login screen, which is not dissimilar from the Windows 10 one – with no clear indication that the upgrade has been completed successfully. I found this rather strange, and had hoped to get some kind of message afterwards to at least say “The upgrade has completed successfully!”. Regardless, the upgrade in my case appears to have been a success, and everything appears to be working fine so far on my test server.

Dynamics 365 and Windows Server 2016

This is a CRM/Dynamics 365 for Enterprise (D365E) focused blog, so it would be remiss of me not to segue way into this. 🙂 The release of the on-premise version of D365E is imminent, and it is therefore not unlikely to assume that the required server versions will include Windows Server 2016. Although the pre-release TechNet articles do not currently confirm this fact, it would seem puzzling if Windows Server 2016 is not eventually included on the list of supported operating systems. Administrators can be comforted by the fact that is likely that Windows Server 2012 will remain on the supported operating system list for D365E for the next couple of versions at least. Those who are venturing into the world of on-premise CRM/D365E for the first time, however, may benefit themselves greatly to start familiarising themselves with Windows Server 2016.

As a final side note, I would be interested to hear if anyone has been able to install Dynamics CRM 2015/2016 on Windows Server 2016 and whether or not you are specifically prevented from doing so. Let me know your experiences in the comments below!