D365 Forms – VE vs​ Embedded Canvas App

A lot of people asked me an opinion on using embedded canvas apps instead of virtual entities to show additional information on the form, so I decided to put those things into the blog post.

Both approaches have a bright future and I’m like 100% sure in that because they fit different design scenarios. Let’s discuss the diferences between those two and when to use them.

Comparison

Virtual EntitiesEmbedded Canvas Apps
OOB Data Sources2200+
Custom Data SourcesAny Data SourceOnly OData v4
Form ContextAll FieldsAll Fields
Related Entities ContextAll FieldsLimited Fields
AppearanceDynamics ViewCanvas App
Elements Per PageUnlimited1

Virtual Entities

Virtual Entities look like forgotten feature by Microsoft, but some people from the Microsoft confirmed that they are doing some serious work regarding Virtual Entities in the background. On the other hand, some people have reverse engineered the Plugin Registration Tool and found out that everything is set for full CRUD support in the tool right now, but it’s not accessible via UI. I’m a big fan of VEs, so I was really happy when I heard that information.

Data sources are really a thing that can make you go both ways. Virtual entities can handle 2 OOB connectors: OData v4 & Cosmos DB (buggy at the moment). OData v4 connector is the most stable connector at the moment in the VE world and it’s definitely the way to go if you have web services that meet the standard. On the other hand, you can literally connect to any data source writing the C# code for the custom connector, but you must be aware that this type of integration will take a lot of your time because you need to implement every little thing (fetching, filtering, sorting, paging,…) by yourself or your friend developer.

You should use virtual entities if you want to use that data on places other than your entity from (related records subgrid), for example, charts, dashboards, reports, advanced find.

Ribbon buttons are also a great way to interact (select few records and fire action) with records shown on the subgrid and at the moment it’s not possible to configure those buttons to interact with elements inside the embedded canvas app.

Limit to the number of subgrids is also a plus for VEs. When you are using UCI you can put as many subgrids as you want to the form, but when you use Classic view that number is set to 10 maximum.

Editing the actual UI representation is easier because it can be done by anyone that used Dynamics views before.

Embedded Canvas App

This feature is still marked as a preview, but lately, I can see that it became more stable, so you should definitely consider using this one. Microsoft is pointing us in the direction to use Canvas Apps as much as we can and I think we should definitely give them a try even in embedded scenarios.

When we come to data sources it’s pretty clear that more than 200 OOB connectors are a big plus for the Canvas Apps approach, but the situation changes when we need to use data outside those OOB connectors. Data that you want to fetch must be available as REST web service and we can expect SOAP support in the near future.

You should consider using a canvas approach if you need to enrich your records list with additional graphical elements (eg. images) or adding some buttons that will do some action to each record.

Getting some callback actions from Canvas App to the form is not available at the moment, but I think that it’s a must feature in future and that we will not wait too much for that one.

Limit to only one canvas app per page is the con here, but you can make your app as complex as you want to show more than one list. If you go with a complex app you should consider performance issues when fetching the data from the data sources.

Canvas Apps give us more flexibility when building the actual UI of the app, but it also requires people that are familiar with designing the Canvas Apps which can take some time before you can achieve your idea inside the app.

Conclusion

You should really consider every single limitation of the VEs and Embedded Canvas Apps before you do the final decision which way is the right one. Sometimes both ways are good and will do the job, but when you think in future changes maybe the one will be just a better choice. I’m sure that there are scenarios that will make you stick to the one option because the other one will not fit the requirements in the start.

If you ever find yourself in the position where you really need to choose either VEs or Canvas Apps approach and you are sure that both will do the job just fine I will suggest you go Canvas Apps route because of the compatibility issues in future and the popularity of Canvas Apps in general that makes Microsoft rapidly develop the new features that will help you even more.