Microsoft continues to succeed in unlocking parts of what used to be a developer-only world for less-advanced consultants. PowerApps would be a great example of how to simplify developer work. With the virtual entity released since version 9.0, it is now possible to further reduce efforts in projects.

 

Why "Virtual"?

 

Virtual entities enable us to connect to external data sources, with much less effort than a complete implementation of data integration. So, with a simple configuration, a system customizer, such as an Azure SQL database, can now reflect your data in your Microsoft Dynamics 365 organization. The developers can also implement plugins that read this data and react accordingly. The end user can access this external data by searching on it. In addition, you can associate this data with existing data in CRM. As an example, here is a standard entity "TV" which is linked to the virtual entity "Ad" by a lookup:

 

 

As the term "virtual" already shows, we can not use this entity to the same extent as is the case with standard entities. In the system this is clearly visible in the lower right corner:

 

 

The data can only be read and not edited. This is because the data does not physically "exist" in your Microsoft Dynamics 365 database. The data model is built only on each of your queries.

 

 

A quick look inside a virtual entity

 

 

As you can see, there are now the new "External Name" and "External Collection Name". These must match the corresponding names in the data source to find them on the right under "Data Source".

 

 

You will find an overview of the currently used data sources for virtual entities under Settings -> Administration -> Virtual Entity Data Sources.

 

In our case, we have already connected 3 different data sources to our Dynamics Customer Engagement System (We also tried to connect to another CRM with OData, but this is unfortunately not possible for authentication reasons)

 

 

We'll take a closer look at the record. Here you can see the URL with which the system is connected to the OData source.

 

 

Due to the temporary structure, these entities are restricted in many ways compared to standard entities. Among others, it lacks duplicate recognition, queues, mobile offline, and N:N relationships between the virtual entities.

We were also unable to query virtual entites through the CRM oData endpoint, even though the endpoint exists:

But when trying to go to that endpoint you will receive an exception:

More information about virtual entities can be found on the official Microsoft Docs page:

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/customize/create-edit-virtual-entities