Analyzing AppSource submission validation telemetry
APPLIES TO: Business Central 2021 release wave 1, version 18.4, and later
When you submit an app to AppSource using Partner Center, it starts an automated validation process. This technical validation process ensures the extensions in the app meet the technical requirements for going live. It goes through many of the same checks described in technical validation.
If an app's set up for it, telemetry traces are emitted to and recorded in Application Insights. The data provides details about the success or failure of different phases of the validation. For more information about setting up telemetry for an app, see Sending Extension Telemetry to Azure Application Insights.
Note
In order to start analyzing your validation results, use this troubleshooting guide Dynamics 365 Business Central Troubleshooting Guide (TSG) - AppSource Submission Results (SaaS).
Validation process overview
The validation process starts when you publish the app. The validation runs against each extension in the app, for each country/region (market) specified for the offer in Partner Center, and for each Business Central version that the submissions targets. For more information versions, see Against which releases of Business Central is your submission validated?.
Extensions are validated using the AL compiler and the AppSourceCop code analyzer. Traces are emitted at different phases during the process. Each submission is assigned a unique identifier (ID). This ID is included in each trace for a submission, allowing you to query all trace related to the submission. The general flow for the validation process is illustrated below:
- AppSource submission validation request started
- Validation diagnostic reported for information, warnings, or errors that occur on the submission
- Version (X), country-region (X) validation started
- Extension (X) validation started
- Validation diagnostic reported for each error that occurs.
- Extension (X) validation completed (successfully or with failures)
- Repeat 3-5 for each extension in the submission
- Version (X), country-region (X) validation completed (successfully or with failures)
- Repeat 2-7 for other country-regions for the Business Central release (X)
- Repeat 2-8 for other Business Central releases targeted by the submission
- AppSource submission validation request completed (successfully or with failures)
To reduce the risk of failing the AppSource validation process, review the technical validation checklist before you submit an app.
AppSource submission validation request started
Occurs when an app is published from Partner Center. For more information about publishing from Partner Center, see Review and publish a Dynamics 365 offer - Validation and publishing steps.
General dimensions
Dimension | Description or value |
---|---|
message | AppSource submission validation request started: {validationRequestId} |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0028 |
countryRegions | Lists the localized versions (markets) of the app that will be validated, like US or DK. |
extensions | Specifies information about the extensions that are part of the submission, which will be validated. |
severity | Information |
versions | Lists the Business Central release versions that the app will be validated against, like 19.0 or 18.4 |
containsHotfix | Specifies whether the submission contains a hotfix of an AppSource extension. |
The following table explains other custom dimensions that are common to all AppSource submission validation traces.
Dimension | Description or value |
---|---|
validationRequestId | Specifies the unique identifier assigned to the app submission validation process. All traces for the submission validation will include this ID. |
telemetrySchemaVersion | Specifies the version of the Business Central telemetry schema. |
Diagnostic reported on AppSource submission validation request
Occurs during the submission validation request to report diagnostics related to the submission itself. For example, it could be that a submission has duplicate apps, or it doesn't target any Business Central release. This signal isn't necessarily an error, but can also be warning or information. This signal differs from other diagnostic signals like LC0034
, which are reported during the compilation of one app for one country/region release.
General dimensions
Dimension | Description or value |
---|---|
message | Diagnostic reported on AppSource submission validation request: {validationRequestId} |
severityLevel | 1 for information, 2 for warning, 3 for error |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0038 |
diagnosticCode | Specifies the diagnostic identifier, like AS0001 or AL0001. |
diagnosticMessage | Specifies the diagnostic message. |
diagnosticSeverity | Info, Warning, or Error. Matches the severityLevel . |
containsHotfix | Specifies whether the submission contains a hotfix of an AppSource extension. |
See common custom dimensions |
Sample KQL code
This KQL code can help you get started analyzing request warnings using the LC0038 event:
traces
| where timestamp > ago(1d) // adjust as needed
| where customDimensions.eventId == 'LC0038'
| project timestamp
, requestId = customDimensions.validationRequestId
, diagnosticCode = customDimensions.diagnosticCode
, diagnosticMessage = customDimensions.diagnosticMessage
, diagnosticSeverity = customDimensions.diagnosticSeverity
, containsHotfix = customDimensions.containsHotfix
, message
To learn more about how to setup alerting on Business Central telemetry, see Alert on Telemetry.
(Version, country-region) validation started
Occurs when the validation has started for a specific version and country/region.
General dimensions
Dimension | Description or value |
---|---|
message | (Version, country-region) validation started: version {version}, country/region {countryRegion} |
severityLevel | 1 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0030 |
allExtensions | Specifies information about the extensions that are part of the submission and extensions that the submission extensions depend on. Select the arrow to expand the dimension to see the details about each extension. |
baselineExtensions | Specifies the previous versions of the extensions in the app and the extensions they're dependent on. These extensions form the baseline for validation if publishing a newer version of an app that's already published. |
extensions | Specifies the extensions that are part of the submission and will be validated. Select the arrow to expand the dimension to see the details about each extension. |
severity | Information |
version | Specifies the Business Central release versions that the app will be validated against, like 19.0 or 18.4. |
containsHotfix | Specifies whether the submission contains a hotfix of an AppSource extension. |
See common custom dimensions |
Extension validation started
Occurs when the validation for a specific extension the submission has started.
General dimensions
Dimension | Description or value |
---|---|
message | Extension validation started: version {version}, country/region {countryRegion} for extension {extensionName} version {extensionVersion} by {extensionPublisher} ({extensionId}) |
severityLevel | 1 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0032 |
countryRegion | Specifies the localized version of the app that will be validated. |
extensionId | Specifies the ID of the extension in the submission that will be validated. |
extensionName | Specifies the name of the extension in the submission that will be validated. |
extensionPublisher | Specifies the publisher of the extension in the submission that will be validated. |
extensionVersion | Specifies the version of the extension in the submission that will be validated. |
severity | Information |
version | Specifies the Business Central release that the extension will be validated against, like 19.0 or 18.4. |
hotfixValidation | Specifies whether the extension validated is a hotfix. |
See common custom dimensions |
Validation diagnostic reported
Occurs when an error occurs during the validation of an extension. The errors are reported by the AL compiler or by the AppSourceCop analyzer.
General dimensions
Dimension | Description or value |
---|---|
message | Validation diagnostic reported: version {version}, country/region {countryRegion} for extension {extensionName} version {extensionVersion} by {extensionPublisher} ({extensionId}) |
severityLevel | 3 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0034 |
countryRegion | Specifies the localized version of the app that was validated. |
diagnosticCode | Specifies the diagnostic identifier, like AS0001 or AL0001. |
diagnosticMessage | Specifies the diagnostic error message. |
diagnosticSeverity | Error |
diagnosticSourceLocation | Specifies the location in the source code where the diagnostic was reported. The format used is (Line, Character). |
diagnosticSourcePath | Specifies the path to the file where the diagnostic was reported. |
extensionId | Specifies the ID of the extension in the submission that will be validated. |
extensionName | Specifies the name of the extension in the submission that was validated. |
extensionPublisher | Specifies the publisher of the extension in the submission that was validated. |
extensionVersion | Specifies the version of the extension in the submission that was validated. |
severity | Error |
version | Specifies the Business Central release that the extension was validated against, like 19.0 or 18.4. |
hotfixValidation | Specifies whether the extension validated is a hotfix. |
See common custom dimensions |
Sample KQL code
This KQL code can help you get started analyzing request failures using the LC0034 event:
traces
| where timestamp > ago(1d) // adjust as needed
| where customDimensions.eventId == 'LC0034'
| project timestamp
, countryRegion = customDimensions.countryRegion
, version = customDimensions.version
, extensionId = customDimensions.extensionId
, extensionName = customDimensions.extensionName
, extensionPublisher = customDimensions.extensionPublisher
, extensionVersion = customDimensions.extensionVersion
, diagnosticCode = customDimensions.diagnosticCode
, diagnosticMessage = customDimensions.diagnosticMessage
, diagnosticSeverity = customDimensions.diagnosticSeverity
, diagnosticSourceLocation = customDimensions.diagnosticSourceLocation
, diagnosticSourcePath = customDimensions.diagnosticSourcePath
To learn more about how to setup alerting on Business Central telemetry, see Alert on Telemetry.
Extension validation completed successfully
Occurs when the validation for a specific extension the submission has completed, and no errors occurred.
General dimensions
Dimension | Description or value |
---|---|
message | Extension validation completed successfully: version {version}, country/region {countryRegion} for extension {extensionName} version {extensionVersion} by {extensionPublisher} ({extensionId}) |
severityLevel | 1 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0033 |
countryRegion | Specifies the localized version of the app that was validated. |
extensionId | Specifies the ID of the extension in the submission that will be validated. |
extensionName | Specifies the name of the extension in the submission that was validated. |
extensionPublisher | Specifies the publisher of the extension in the submission that was validated. |
extensionVersion | Specifies the version of the extension in the submission that was validated. |
severity | Information |
version | Specifies the Business Central release that the extension was validated against, like 19.0 or 18.4. |
hotfixValidation | Specifies whether the extension validated is a hotfix. |
See common custom dimensions |
Extension validation completed with failures
Occurs when the validation for a specific extension the submission has completed, but errors occurred.
General dimensions
Dimension | Description or value |
---|---|
message | Extension validation completed with failures: version {version}, country-region {countryRegion} for extension {extensionName} version {extensionVersion} by {extensionPublisher} ({extensionId}) |
severityLevel | 3 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0037 |
countryRegion | Specifies the localized version of the app that was validated. |
extensionId | Specifies the ID of the extension in the submission that will be validated. |
extensionName | Specifies the name of the extension in the submission that was validated. |
extensionPublisher | Specifies the publisher of the extension in the submission that was validated. |
extensionVersion | Specifies the version of the extension in the submission that was validated. |
failureReason | One or more error diagnostics were reported. For more information about the diagnostics, see traces with eventId LC0034. |
severity | Error |
version | Specifies the Business Central release that the extension was validated against, like 19.0 or 18.4. |
hotfixValidation | Specifies whether the extension validated is a hotfix. |
See common custom dimensions |
Sample KQL code
This KQL code can help you get started analyzing request failures using the LC0037 event:
traces
| where timestamp > ago(1d) // adjust as needed
| where customDimensions.eventId == 'LC0037'
| project timestamp
, requestId = customDimensions.validationRequestId
, countryRegion = customDimensions.countryRegion
, version = customDimensions.version
, extensionName = customDimensions.extensionName
, failureReason = customDimensions.failureReason
To learn more about how to setup alerting on Business Central telemetry, see Alert on Telemetry.
(Version, country-region) validation completed successfully
Occurs when the validation has completed for a specific version and country/region, and no errors occurred.
General dimensions
Dimension | Description or value |
---|---|
message | (Version, country-region) validation completed successfully: version {version}, country/region {countryRegion} |
severityLevel | 1 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0031 |
allExtensions | Specifies information about the extensions that were part of the submission and extensions that the submission extensions depend on. Select the arrow to expand the dimension to see the details about each extension. |
baselineExtensions | Specifies the previous versions of the extensions in the app and the extensions they're dependent on. These extensions form the baseline for validation if publishing a newer version of an app that's already published. |
countryRegion | Specifies the localized version of the app that was validated. |
extensions | Specifies the extensions that were part of the submission and were validated. Select the arrow to expand the dimension to see the details about each extension. |
severity | Information |
version | Specifies the Business Central release that the app was validated against, like 19.0 or 18.4. |
containsHotfix | Specifies whether the (Version, country-region) validation contains a hotfix of an AppSource extension. |
See common custom dimensions |
(Version, country-region) validation completed with failures
Occurs when the validation has completed for a specific version and country/region, and errors occurred.
General dimensions
Dimension | Description or value |
---|---|
message | (Version, country-region) validation completed with failures: version {version}, country-region {countryRegion} |
severityLevel | 3 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0036 |
allExtensions | Specifies information about the extensions that were part of the submission and extensions that the submission extensions depend on. Select the arrow to expand the dimension to see the details about each extension. |
baselineExtensions | Specifies the previous versions of the extensions in the app and the extensions they're dependent on. These extensions form the baseline for validation if publishing a newer version of an app that's already published. |
countryRegion | Specifies the localized version of the app that was validated. |
extensions | Specifies the extensions that were part of the submission and were validated. Select the arrow to expand the dimension to see the details about each extension. |
failureReason | One or more extension validation tasks have failed. |
severity | Error |
version | Specifies the Business Central release that the app was validated against, like 19.0 or 18.4. |
containsHotfix | Specifies whether the (Version, country-region) validation contains a hotfix of an AppSource extension. |
See common custom dimensions |
Sample KQL code
This KQL code can help you get started analyzing request failures using the LC0036 event:
traces
| where timestamp > ago(1d) // adjust as needed
| where customDimensions.eventId == 'LC0036'
| project timestamp
, requestId = customDimensions.validationRequestId
, countryRegion = customDimensions.countryRegion
, version = customDimensions.version
, extensions = customDimensions.extensions
, allExtensions = customDimensions.allExtensions
, baselineExtensions = customDimensions.baselineExtensions
, failureReason = customDimensions.failureReason
To learn more about how to setup alerting on Business Central telemetry, see Alert on Telemetry.
AppSource submission validation request completed successfully
Occurs when the submission validation process has fully completed, and no errors occurred.
General dimensions
Dimension | Description or value |
---|---|
message | AppSource submission validation request completed successfully: {validationRequestId} |
severityLevel | 1 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0029 |
countryRegions | Lists the localized versions (markets) of the app that were validated, like US or DK. |
extensions | Specifies information about the extensions that were part of the submission and validated. |
severity | Information |
versions | Lists the Business Central release that the app was validated against, like 19.0 or 18.4. |
containsHotfix | Specifies whether the submission contains a hotfix of an AppSource extension. |
See common custom dimensions |
AppSource submission validation request completed with failures
Occurs when the submission validation process has fully completed, but errors occurred.
General dimensions
Dimension | Description or value |
---|---|
message | AppSource submission validation request completed with failures: {validationRequestId} |
severityLevel | 3 |
Custom dimensions
Dimension | Description or value |
---|---|
eventId | LC0035 |
countryRegions | Lists the localized versions (markets) of the app that were validated, like US or DK. |
extensions | Specifies the extensions that were part of the submission and validated. |
failureReason | One more extension validation tasks have failed. |
severity | Error |
versions | Lists the Business Central releases that the app was validated against, like 19.0 or 18.4. |
containsHotfix | Specifies whether the submission contains a hotfix of an AppSource extension. |
See common custom dimensions |
Sample KQL code
This KQL code can help you get started analyzing request failures using the LC0035 event:
traces
| where timestamp > ago(1d) // adjust as needed
| where customDimensions.eventId == 'LC0035'
| project timestamp
, requestId = customDimensions.validationRequestId
, countryRegions = customDimensions.countryRegions
, versions = customDimensions.versions
, extensions = customDimensions.extensions
, failureReason = customDimensions.failureReason
To learn more about how to setup alerting on Business Central telemetry, see Alert on Telemetry.
See also
Telemetry overview
Sending App Telemetry to Azure Application Insights
Alert on Telemetry
Technical Validation Checklist
Technical Validation FAQ