Introduction to Dataverse
This post is part of the Dataverse series.
One of my favorite topics to talk about on conferences is Microsoft Dataverse.
Working with Microsoft Dynamics 365 CRM / CE since 2011 it is great to see how the Backend of Dynamics has evolved over time and is now the backend of the Power Platform.
Especially, when talking to Power Apps developers that may not been working with Dataverse already, or that are only using parts of the Platform, it is great to show the full potential.
This is also the trigger for the Dataverse series on my blog that will start today with this post.
Besides some background information and an overview of Dataverse and the Common Data Model, I will try to cover different parts that are related with this topic. One part will be around Data modelling in Dataverse as well as working with tables, columns and relationshipa. Besides or better combined with Data Modelling is Security. And at the end we will have a look at all the out of the box integrations that Dataverse is offering.
High level overview of Dataverse:
When starting with Data Modelling in Dataverse, you should know the basics about tables, columns and relationships. IN this article I will provide a short high level overview about these topics. Then there will be some more detailed ones focussing on each of the topics in more detail.
Different Types of tables:
- Standard
- Standard tables are the ones that are normally used most in Dataverse. Each standard table will have a primary column (by default “name” - but can be renamed during creation), a set of default columns which is helping to manage Security and Auditing. In terms of security you have to decide during the creation if the ownership is set to “User, Team” or “Organizational”. Nevertheless, the permissions will be granted for each standard table indiviually.
- Activity
- Tables of type Activity are focussing on interactions like Emails, Phone Calls, Appointments, etc. Therefore, the columns taht are available by default for each existing and also new created custom activity table are focussing on these interactions and you will find columns like Starting and End Date and the primary column is for all acivity tables “Regarding”. Another difference to standtad tables - you can only define the security behavior for all acitivity tables at once. This is not referring directly to the setting “Organizational” or “User, Team” - you cannot specify if seciroty should be different for emails then for Phone Calls or for a new custom Activity. All activities will be granted the same permissions.
- Virtual
- Just a few years ago, virtual tables had a lot of restrictions and a very high effort to create a new virtual table, as you had to develop a custom Virtual table integration. Now, there is a complete different picture and you should definetly know about Virtual tables. There are some build in wizards e.g., to create a Virtual table from a SharePoint list and you can Create, Update or Read data in virtual tables. Data in Virtual tables is not stored within dataverse, but remains in the source system, so you are not creating duplicates. Nevertheless, there are still some limitations and you should definetly evaluate if the functionality matches your requirements.
- Elastic
- Elastic tables are quite new and just have been released as preview (2023). I will update this part accordingly, once these are general available. In the backend of Elastic tables, records are not stored in a relational Azure SQL database as it is the case for standard tables. Elsatic tables are based on Azure Cosmos DB and optimized for high performance and huge data sets. So, if these are requirements you have to deal with, have a closer look at Elastic tables.
Different Column types:
When working with Dataverse you should also get to know the different columns types which will help you to build better and more effective data models and also bring some additional value out of the box.
-
Different Column Types like:
- Single Line Text, Multi Line Text, Email, URL, Phone, …
- Whole number, Decimal, Duration, Curency
- Date only, Date and Time, User Independent Time Zone
- Choice(s), Boolean
- File and Image
-
Special Column types:
- Power Fx
- Rollup
- Calculated (If possible use Power Fx instead)
Relationships:
Another important topic, when working in dataverse are relationships between tables. When building your data model you should identify which tables are related, where you can reuse existing data, without duplicating the information.
-
Supported Relationship Types in Dataverse:
- One-to-Many (1:N)
- Many-to-One (N:1)
- Many-to-Many (N:N)
-
Relationship specific Behavior
- Mapping of columns between tables
- Cascading rules
Security
In my opinion one of the most important but also complex topics when working with dataverse is building the Security model. Starting with Access to a specific environment and setting up Business Units to distinguish between e.g., different regions Dataverse also allows enables Row and Columns Level security on a user specific level by working with Security Roles and permissions.
- Environment Access
- Business Units
- Security Roles and Permissions
- Record Ownership defines on table level
- User or Team
- Organization
- Column level security
Dataverse is the Only “Datasource” supporting
- Model Driven Apps
- Power Pages
- Business Process flows
- Copilot (Power Virtual Agents)
Data Visualization for Model Driven Apps and Power Pages
-
Views:
- Main Views
- table specific columns
- related information
- Sort by and filter criterias
- User Individual filtering: “My” based on User or Team Ownership
- Quick find View
- Lookup View used in Subgrids
- Different visualizations of Views by Custom Controls (PCFs)
- Editable Grid
- Calendar View
- Kanban
- Views can be used in Canvas Apps to load filtered Datasets instead of complete tables
- Main Views
-
Forms:
- Main forms
- Quick Create Forms
- Quick View Forms
Build in Business Logic
- Business Rules:
- Based on if / else logic
- Show or Hide columns
- Set as Required or Optional
- Set or Clear values
- ONLY for columns, not complete sections on a form
- Defined for specific forms or on table level
- Server-Side
- Either use Business Rules OR JS
- Based on if / else logic
- Power Automate flows
- Asynchronous
- Dataverse Trigger with Conditions
- Add, Modify, Delete
- Specific columns
- Multiple Dataverse Actions
- Add row
- List row
- Get a specific row
- relate / unrelate rows
- Dataverse Accelerator / Low-Code Plugins (Still in Preview)
- Synchronous
- Instant
- Unbound
- Input and Output variables
- Automated
- Table bound
- Triggered on Create, Update or Delete
- Pre- or Post Operation
- Direct support for Connectors
- Power FX formulas
All parts of this series (21)
- 1. Copilot for Dataverse - New experience
- 3. Copy an existing Model Driven App
- 4. Editing Command Bar in Model Driven Appswith Power FX 2
- 5. Custom Pages in Model Driven Apps
- 6. Editing Command Bar in Model Driven Appswith Power FX
- 7. Dataverse Teams Integration - External Content
- 8. Dataverse Email Integration
- 9. Manage Polymorphic Lookups in Dataverse with XRM Toolbox
- 11. Mapping columns in related Many-to-Many tables
- 12. Mapping Lookup Columns
- 14. Best Practices when working with Dataverse
- 15. Create your own M365 Dev Tenant
- 17. Activate additional languages in Dataverse
- 18. Publishers and Solutions
- 19. Tables and Columns
- 20. Datamodelling in Dataverse
- 21. Introduction to Dataverse
About CRM and Beyond
Jörgen Schladot
Solution Architect
Dynamics 365 CE & Power Platform
@ Avanade Deutschland GmbH
Recent Posts
Tags
Archives