PowerApps and the Common Data Service for Apps

Following my article The new PowerApps and CDS for Apps run on xRM!, I'm happy to share with you my first steps in the CDS for Apps and PowerApps "Model-Driven App" world!
The Common Data Service (CDS) enables customers and partners to build and deliver rich LOB applications using data from the Dynamics 365 family of services and Office 365. CDS is ubiquitously available in Dynamics 365, Office 365 and as a standalone aPaaS platform through PowerApps.

Creating a new CDS for Apps environment

Creating a new CDS environment is quite easy, but you need an appropriate subscription! Check out the PowerApps Plan 2 subscriptions ($40 / user / month). It's available for a 30 day trial.

Now that you're licensed, simply log into the Microsoft Business Platform admin center (or in the PowerApps admin center, in fact it's the same thing). Here, you will find all your existing Dynamics 365 Customer Engagement and Common Data Service for Apps instances / environments:



Click on "New environment", fill-in a name, a region (the region must be the same as your Azure AD if you plan to create a database), and the type of environment (Production or Trial).


After you click create, you will be prompted to configure the base language and currency (yes, just like CRM!)


After creating the database, just wait a few minutes and your instance should show up (and it will display the Dynamics 365 Administration Center as well!).

As you can see in the screenshot below, it offers the same options as a "classic" Dynamics 365 Customer Engagement instance: you can edit the instance Name, URL, Type (Production / Sandbox), Security Group, and you can also copy it to a sandbox (even a Dynamics 365 Customer Engagement one).


If you navigate to the instance, you will be surprised (or not) to see that the sitemap only includes the Settings and Trainings areas. No more default areas for Sales, Service and Marketing as we used to know:


But wait, there is more!
Microsoft has accomplished quite a tour de force! They completely striped down the environment from what used to be core business entities such as Lead, Opportunity, Case, Campaign... Those are now included in dedicated solutions and packaged as apps.
The Default Solution contains in fact very few functional objects: Account, Contact and Activity entities. The rest is just configuration related. Out-of-the-box, the system contains only 56 entities (these are the entities visible in the solution, if you browse the metadata, there are 312 entities, a lot of them technical, but still no opportunity, case, etc.). To give you a comparison, vanilla instances of Dynamics 365 Customer Engagement (with no applications such as Field Service, Sales, etc. installed) contain 130 entities in the Default Solution.

Now that's pure xRM, isn't it?


There are also only a few dashboards and reports:


4 security roles (on top of System Administrator, of course):


What solutions are installed by default?

  • Common Data Services Default Solution. This unmanaged contains all customizations you have done from PowerApps (https://web.powerapps.com/).
  • CDS Management. A managed solution that only contains the "Environment Maker" security role.
  • Base Custom Controls Core. This managed solution contains 52 controls (based on the new Custom Control Framework).

What about users?

You will find in the Security / Users part of the instance the full list of users of your Office 365 tenant. That's right, even those who don't have a single PowerApps or Dynamics 365 Customer Engagement license!

I've created a dummy user with a simple Office 365 E3 license to check if he could access the instance with a proper security role, and it works. I was even able to configure Server-Side Synchronization for his Exchange account. There was however no options to enable / configure the Dynamics 365 App for Outlook.


What about model-driven apps?

You can either create Apps from the CDS for Apps instance, in the classic Dynamics UI (either is Settings / My Apps, or within a Solution), or you can create an App from the PowerApps interface:




Whether you create the App from the CDS instance (the Dynamics 365 experience) or from PowerApps is quite similar. It will open the the app designer (https://xxxxx.crm.dynamics.com/designer/app/...) of your CDS instance. The only difference is that the App you create from PowerApps will have CDS Default Publisher prefix.

Just like any app, your App can contain system or custom entities, and you will be able to customize the system the same way you did on a classic Dynamics 365 Customer Engagement instance.

Here, I have created a little Model-Driven App for my dummy user containing a "Show" custom entity. The user was able to access it from the Web:


And from the mobile Dynamics 365 for phones application:



What about customizations done from the PowerApps side?

You can easily create and modify Entities, Fields, Keys, Relationships, Views, Business rules, shared option sets, directly from within the PowerApps user interface. New fields and entities will be prefixed with the CDS Default Publisher prefix (just like new apps), and all new or modified customizations will be added to the Common Data Service solution.


What data integration options does PowerApps bring to the table?

PowerApps comes with some Power Query Data integration options. Here are the available sources as of today:


Final words

The new CDS for Apps is a fantastic opportunity for customers and ISVs to easily create new cost-effective business applications on top of the same robust foundation that powers Dynamics 365 Customer Engagement.
I was surprised my dummy user did not need a PowerApps Plan 2 license to access the CDS for Apps instance and app, but this could because this is all brand new.

I tried to trick the system and install the Dynamics 365 Sales Application, but it failed, maybe because of missing dependencies or by protection mechanism to prevent people to add Dynamics 365 Customer Engagement apps on basic PowerApps Common Data Service for Apps environments.



Comments