Much digital ink has been spilled about the Common Data Service (CDS) and the vision of what it will be in the future as the glue that connects Dynamics applications and model driven apps.
But what is the CDS today?
The Common Data Service is a service that provides one or more databases that include many of the common entities and fields that are in Dynamics 365 Customer Engagement (CRM) and Operations (AX). Administrators can add additional entities, fields, and relationships, but cannot delete or modify the system created components. CDS provides pre-defined templates for integration with AX and CRM common processes.
CDS is also a back-end database for PowerApps. Users creating PowerApps can define their data model in CDS and build an app that stores data in the CDS database.
How do you get to the CDS?
You manage the CDS through the PowerApps website. If you don’t have access to PowerApps, you cannot access CDS.
- Go to powerapps.com and log in.
- Click the Common Data Service tab in menu to access CDS.
- The first time you do this, you will be prompted to create your database. This will create your first database, which includes the common tables and fields such as accounts, contacts, orders, products, etc.
- To add new entities, select “Entities” under CDS
- To add new fields, open the desired entity and add a new field.
- To add a new relationship, go to the child entity (where the lookup field should be), click the relationship tab, then add the relationship.
- If you want to add a picklist field, you must first go to “Picklists” in the menu, define the picklist, then you can add the picklist field to entities.
How does integration with CDS and Dynamics 365 work?
To configure integration with Dynamics 365 and CDS:
- Go to the PowerApps admin center.
- Click “Data Integration” on menu
- Create a connection set if one doesn’t already exist. This defines the CDS instance, CRM instance, and AX instance to use for integration.
- Click Projects, then “New Project”
- Give your project a name. You will need to select one of the pre-created integration templates, then click next. The integration templates are designed around the most common integration scenarios between Customer Engagement and Operations, such as synchronizing companies, contacts, products, and orders.
- Select connections, organization, then confirm your selection.
Is CDS just one big database to use for Dynamics integration and PowerApps?
CDS can have one or more databases. In the Environments area of the PowerApps Admin Center you can define multiple PowerApps environments, each of which has its own CDS database. The number of CDS databases you can have differs based on licensing.
So a best practice may be to separate your instances based on usage. If you are synchronizing CRM data to CDS and building Power Apps that don’t use the Dynamics tables (or need those tables for other unrelated purposes), I would recommend creating additional environments and CDS databases so your usage doesn’t conflict. This can also be helpful for dev/prod scenarios.
What about security?
From the Environments area of the PowerApps Admin Center you can define permission sets, which are groups of CRUD permissions by entities.
You can then create roles and associate one or more permission sets to the roles, then grant roles to users.
Some important things to note:
- There is no idea of owner or business unit security
- CDS security does not mirror Dynamics security
- If you have a user accessing Dynamics 365 data from a PowerApp and wish for it to mirror their security in Dynamics 365, you probably will want to use the Dynamics 365 connector for Power Apps rather than data synchronized to the CDS database.
Why would I use CDS for an integration between CRM and AX instead of a direct ETL integration?
One of the reasons why you may use CDS instead of a direct integration is because while AX and CRM have similar data and related processes, they do things in different ways. One example is currencies–both provide multiple currency support, but the way that currencies on transactions are stored is different in both applications. The CDS is designed to provide a common shared integration database that stores this data in a common way, simplifying process integration between the two (such as in quote to cash scenarios).
In some cases, however, a custom ETL integration (using tools like KingswaySoft) will be a better fit. Especially in highly customized deployments or where significant changes to standard field mapping is required.
And the answer may be both. If the standard templates work for you, but you need some additional integration support, it may be valid to use the CDS integration and supplement with some additional ETL based integrations.
Any other questions or comments? Put them in the comments