May 10, 2019
So the buzz about the Common Data Service (CDS) has reached a deafening stage. It is the most exciting thing that has come out of the Microsoft Business Applications group in a decade. The possibilities jumped into the category of "endless". So how do you start with something that is endless?
I previously wrote about the Common Data Service here, but let's have a quick primer for this conversation. The Common Data Service (CDS) is basically a database that runs under your applications. You can have many applications running on a single CDS, all sharing the underlying data. That is pretty cool. What are these applications? Well, the list is growing, but includes things like Dynamics 365 Customer Engagement Applications, as well as Custom built PowerApps applications. Also, some other apps managed to get stood up on CDS, like Microsoft Forms Pro for example. Via connectors, you can also consume data from over 250 other sources into your CDS environment.
We have what could appear to be an irony here. For the last several years, we partners have been on a mission to eliminate data silos. All of these multiple applications in use with our customers, that not only create similar data in different places, but usually don't talk to each other. There's been a whole lot of copying and pasting going on, which is not only a pain in the ass, but is inherently error-prone. It is not uncommon for an employee to have five applications open to do their jobs, and that's just silly.
Part of our mission to date with Dynamics 365 has been to consolidate as many of these disparate applications into a single place. A noble goal to be sure, and a message that has resonated strongly with many customers, who suddenly found themselves sitting on a house of cards. The idea of a "Common" Data Service seems to solve all of that. But Microsoft recently announced some licensing changes, and one of the changes was that you can have as many CDS environments, as you have storage capacity to support. Wait a minute. Are we now promoting silos again?
Think about a restaurant that promotes the "Best Burger in the World"... I want that. You go to get "it" and it's available in 20 variations. So wait a minute, is it the best burger, or the 20 best burgers? You ask the cook which one is the "Best burger", and he says, "it depends on what you like on it, but the beef patty, that they all come with is the best grade beef available". I ask if I can have all of the 20 variations of toppings on one burger... he frowns. But how awesome would that be? One awesome patty, with everything on top of it! Why would I want more than one? Well... maybe because peanut butter and barbecue sauce, while I like them both, don't taste good together? So let's see how I relate this scenario to CDS.
So CDS has been out long enough now for many of us to wrap our heads around it, at least enough to be able to explain it to customers. Now, many of us are actively deploying solutions built on CDS, and we are starting to see the scenarios forming. Scenarios that we had not necessarily contemplated before. For example, I am now being asked questions, that never were questions before like, "For this other department, should we add them to our existing CDS environment, or create a new one?" My knee-jerk response, having been a trained silo-buster, was "add them to the existing environment, or course". But is that always the correct answer? And it if was, then why is Microsoft offering them as many CDS environments as they want?
Back in the old days, if you wanted two different departments working in Dynamics 365, that did not share any data, you might have used Business Units. Or, sometimes a second production instance was used, but that had a cost. Today, you can have as many environments as your storage will support, so does that change the thought process? Today, my position on this is based on whether there is shared data. If these two departments will be sharing Accounts for example, then my recommendation would be to create a new app for department #2, specific for their needs, but add it to the existing environment. We certainly don't want to have two separate Account tables to deal with. This is the silo busting approach that we have been working towards for years now.
When might it make sense to create a separate environment? In my opinion, it is when the users are not sharing any data. This is a frequent occurrence in enterprise organizations in particular. Rarely have I seen HR for example, use any of the data that Sales does. In this scenario, I would take Microsoft up on their offer and spin up a separate environment. Could I accomplish this in a single environment? Yes, but it could get messy, and there is no upside any more. It is hard to completely isolate two apps from each other on the same environment. Changes to one, could potentially impact the other, if you are not paying close attention. Data segregation strategies can also get complex to maintain. Fiddle with a workflow condition for App A, and all of the sudden the records in the App B are doing weird things, if you aren't on your toes. There are a lot of ways to get in trouble if you are not right on top of it... and why bother?
On the licensing side there seems to be some confusion also, which is not unexpected. Let's say you have a sales team using the D365 Enterprise Sales app, they also have rights to PowerApps. Let's say a part of that team is focused on Lead Generation only, and not Opportunities. Clearly they will share some data, but they have different roles in the process. You can build another app on the same environment targeted to them, and they are already licensed to use it. But let's say H.R. pops up with a need for an app, and they won't be sharing any common data with sales. If those users also have a D365 Sales license, you can spin up an entirely separate environment for them and they can use that. Better yet, if H.R. does not need any of the sales related entities at all, those users could get by with PowerApps P2 licenses and save some money. However those PowerApps licensed users could not use the Sales App. There... that should be clear.
Okay, I know it is not clear. Licensing is a tricky thing to navigate, but it is important to understand what licenses you need for what you are doing, or you could easily "over-license". Meaning you bought a license that allows for a lot more than what you need, and so you are paying more than you need to. I have found that Microsoft Support is often clueless to the nuances of licensing, and Microsoft Sellers are motivated to sell the most expensive licenses. Even partners struggle with this one sometimes, so it is definitely not something to figure out on your own. Your best bet is a "licensing knowledgeable" partner, which is also a rare find.
I am sure there are other opinions and CDS strategies being used, let me hear yours in the comments.