Analyze model-driven apps and Microsoft Dataverse telemetry with Application Insights
You can set up an Application Insights environment to receive telemetry on diagnostics and performance captured by the Dataverse platform.
You can subscribe to receive telemetry about operations that applications perform on your Dataverse database and within model-driven apps. This telemetry provides information that you can use to diagnose and troubleshoot issues related to errors and performance.
You don't need to write any code to enable this telemetry. You can enable or disable the telemetry feed at any time.
Application Insights is part of the Azure Monitor ecosystem. It's widely used by enterprises for monitoring and diagnostics. Many customers have added code to their extensions to capture this data into their Application Insights environments. This additional code has a cost, however—not only the cost to write and maintain, but also a performance cost at runtime. These costs can be avoided by using Application Insights built-in integration.
Note
Enablement of Application Insights is limited to customers with a paid/premium Dataverse licenses available for the tenant.
Why do I need telemetry?
Telemetry provides data about what's going on within a model-driven app or on the server. Without this data, the app or service is a "black box"; the only way to get insight if you have an issue is to contact technical support. Telemetry enables you to detect and measure specific operations to better understand whether things are working normally or something is negatively affecting the system.
If you've extended model-driven apps by using client-side JavaScript or added server-side logic by using plug-ins, you can see the impact these extensions might have on performance and find ways to optimize them, including changing the design if required.
You can also use telemetry to observe overall performance trends so you can proactively manage them rather than react to user incidents. With Application Insights, you can define conditions where you'll be alerted when a metric exceeds a specific threshold.
How does it work?
Microsoft already gathers extensive telemetry on Dataverse and model-driven apps. With Application Insights integration, an environment or tenant admin provides the Application Insights instrumentation key while setting up the data export process in the Power Platform admin center. As soon as setup is complete, telemetry that Microsoft gathers about your environment and any model-driven apps that use Application Insights are sent to your Application Insights environment. More information: Create an Application Insights resource
If you decide to opt out, you can go to the Power Platform admin center and delete the data export connection. This will stop the data export process. You can restart the process any time.
Benefits of this integration approach
When you use Application Insights integration, you'll receive a standardized set of telemetry that follows the Application Insights telemetry data model.
The telemetry is correlated so that you can follow operations that start with a mouse click in a model-driven app all the way through to the server and back. Along the way, you'll be able to see what parts of the application are being used and how much time each step takes.
If you need to contact technical support, you can use the ID values for the operations (the operation_id field). These are the same values that Microsoft engineers use when they query telemetry data.
If you're working with a partner or you're a system integrator, standardized telemetry means that people won't need to learn about the different design choices that were made for custom telemetry in different environments.
Note that Monitor can be used for live detailed debugging for canvas apps and model-driven apps.
Custom telemetry
If the standard telemetry doesn't provide some specific metric that you need, you can write code to supplement what's already being gathered.
When you have enabled this Application Insights capability you can use the Microsoft.Xrm.Sdk.PluginTelemetry.ILogger Interface in your plug-in code to write telemetry data directly to your Application Insights resource. This telemetry is never sent to Microsoft. More information: Write Telemetry to your Application Insights resource using ILogger
For client-side JavaScript in model-driven apps, you can use the same patterns you use today to write to your Application Insights resource.
What is included and not included?
Multiple telemetry types will be available in your Application Insights environment. It's important to note that Application Insights has a defined schema. The tables in Application Insights are populated in accordance with this schema during data export.
For model-driven apps, the telemetry covers common application features such as edit form, grid, and dashboard load events. These are events where performance is typically an issue. Currently, save events and ribbon commands aren't included. This feature is currently available for model-driven apps only. See telemetry events for model-driven apps.
For canvas apps, an existing capability allows the app maker to log custom telemetry with Application Insights when developing the app.
Dataverse includes all the requests made on the server. You'll be able to see how the requests are processed within the web server. You won't get detailed information from the database itself, except for the duration of time spent processing the operation. You also won't have telemetry related to the physical resources of the server, such as memory consumption. More information: Telemetry events for Dataverse