Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
APPLIES TO: Business Central 2025 release wave 1 (v26) and later.
Client control add-in exception telemetry gathers data about exceptions thrown in control add-ins. Each event tells you the type of exception, in which add-in it was triggered, information about the user's environment, and more.
Use the data to gather statistics about exceptions in control add-ins for troubleshooting and error mitigation.
Note
In Azure Application Insights, telemetry about client add-in exceptions is logged to the exceptions table and not the traces table like other Business Central traces. This also means that you can use the built-in pages in the Failures page of the Azure Application Insights for troubleshooting. For more information, see Failures and Performance views.
Exception raised inside a control add-in
Occurs when an exception was raised inside a control add-in.
General dimensions
The exceptions table is a built-in table in Azure Application Insights. Here are some of the fields most used in analysis of the signal:
| Field | Description or value |
|---|---|
| user_Id | The user telemetry ID for the user. From the user card, you can use user_Id to identify the user who triggered this telemetry event. Learn more in Assign a telemetry ID to users. |
Custom dimensions
| Dimension | Description or value |
|---|---|
| aadTenantId | Specifies the Microsoft Entra tenant ID used for Microsoft Entra authentication. For on-premises, if you aren't using Microsoft Entra authentication, this value is common. |
| alObjectId | Specifies the ID of the page object that was opened. |
| alObjectName | Specifies the name of the page object that was opened. |
| appId | Specifies the Id of the app/extension that was opened. |
| appName | Specifies the name of the app/extension that the page belongs to. |
| appPublisher | Specifies the publisher of the app/extension that the page belongs to. |
| appVersion | Specifies the version of the app/extension that the page belongs to. |
| clientType | Specifies the type of client that opened the session, such as Background or Web. For a list of the client types, see ClientType Option Type. |
| companyName | The current company name. |
| controlAddInName | The name of the control add-in from which the exception was thrown. |
| deviceScreenResolution | Specifies the display resolution of the device that opened the page. The value is given as {width}×{height}, with the units in pixels. For example, 1024×768 means the width is 1024 pixels and the height is 768 pixels. |
| environmentName | Specifies the name of the tenant environment. Learn more in Managing Environments. |
| environmentType | Specifies the environment type for the tenant, such as Production or Sandbox. Learn more in Environment Types. |
| eventId | CL0005 |
| hostType | Specifies the host that loads the page.
|
All error information is stored in the following properties:
| Property | Description or value |
|---|---|
| problemId | The problem ID identifies where the exception was thrown in code. It's used for exceptions grouping. Typically, it's a combination of an exception type and a function from the call stack. |
| type | The type of the error that occurred. |
| assembly | The web assembly where the error occurred. |
| method | The JavaScript method where error occurred. |
| outerType | The top level error type on the stack trace. |
| outerMessage | The top level error message on the stack trace. |
| outerAssembly | The top level assembly on the stack trace. |
| outerMethod | The top level method on the stack trace. |
| innermostType | The inner most error type on the stack trace. |
| innermostMessage | The inner most error message on the stack trace. |
| innermostAssembly | The inner most assembly on the stack trace. |
| innermostMethod | The inner most method on the stack trace. |
| details | JSON structure with more information, such as stack traces. |
Sample KQL code (control add-in exceptions)
This KQL code can help you get started analyzing client add-in exceptions:
exceptions
| where timestamp > ago(60d) // adjust as needed
| where customDimensions.eventId == 'CL0005'
| order by timestamp desc
| take 5
| project timestamp
// in which environment/company did it happen
, aadTenantId = customDimensions.aadTenantId
, environmentName = customDimensions.environmentName
, environmentType = customDimensions.environmentType
, companyName = customDimensions.companyName
// in which extension/app
, appId = customDimensions.appId
, appName = customDimensions.appName
, appPublisher = customDimensions.appPublisher
, appVersion = customDimensions.appVersion
// in which object
, alObjectId = customDimensions.alObjectId
, alObjectName = customDimensions.alObjectName
, alObjectType = customDimensions.alObjectType
// which add-in
, controlAddInName = customDimensions.controlAddInName
// which client (browser, tablet, phone, ...)
, clientType = customDimensions.clientType
, hostType = customDimensions.hostType
// device info
, deviceScreenResolution = customDimensions.screenRes
, hostType = customDimensions.hostType
// error information
, problemId
, type
, assembly
, method
, outerType
, outerMessage
, outerAssembly
, outerMethod
, innermostType
, innermostMessage
, innermostAssembly
, innermostMethod
, details // json structure with more information, such as stack traces
// which user got the error
, usertelemetryId = user_Id
Related information
Control add-in object
Monitoring and Analyzing Telemetry
Enable Sending Telemetry to Application Insights