---
id: release/al-10.0
type: release
title: AL Language extension 10.0
summary: "AL Language extension 10.0 for Business Central 2022 release wave 2: released 2022-10-03; 16 changelog entries, 7 GitHub issues linked."
tier: official
language: en
system: development
tags:
  - github issues
  - data transfer
  - use of option access syntax in formulas
  - new uicop rule
  - the snapshot debugger shows all the lines hit by a snapshot session
  - debugger enhancements
  - permissionset - new excludedpermissionsets property
  - inherent permissions
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-09T15:15:21.061Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 1dc80a8b82325aadb4eaf73820797829c616782741f518547d7d9949aec2c226
evidence:
  - kind: marketplace
    url: https://marketplace.visualstudio.com/items/ms-dynamics-smb.al/changelog
    title: AL Language extension changelog, version 10.0
    date: "2022-10-03"
    commit: null
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
source_id: al-language-extension
extension: ms-dynamics-smb.al
version: "10.0"
wave: 2022 release wave 2
major: null
preview_at: null
released_at: "2022-10-03"
published_at: "2022-10-03"
prerelease: false
entry_count: 16
issues:
  - 7057
  - 7072
  - 7073
  - 7083
  - 7107
  - 7127
  - 7141
changes: []
---

# AL Language extension 10.0

> AL Language extension 10.0 for Business Central 2022 release wave 2: released 2022-10-03; 16 changelog entries, 7 GitHub issues linked.

[Changelog on the Visual Studio Marketplace](https://marketplace.visualstudio.com/items/ms-dynamics-smb.al/changelog) · Business Central 2022 release wave 2

## GitHub Issues

- [#7083](https://github.com/microsoft/AL/issues/7083) The AL:Go! project template now has "implicit with" switched off by default. This is visible in the app.json file where the project feature "NoImplicitWith" is present.
- [#7057](https://github.com/microsoft/AL/issues/7057) AS0098 should allow any character instead of space when validating report extensions columns affixes
- [#7072](https://github.com/microsoft/AL/issues/7072) AL0432 is shown in triggers of obsolete fields
- [#7073](https://github.com/microsoft/AL/issues/7073) The outline window now handles RDLCLayout, WordLayout and ExcelLayout properties.
- [#7107](https://github.com/microsoft/AL/issues/7107) ControlAddIn/UserControl in page loses its actual type when referenced in a pageextension, breaking passing to procedures
- [#7127](https://github.com/microsoft/AL/issues/7127) Compiling app using NextMajor version is failing with AL compiler error
- [#7141](https://github.com/microsoft/AL/issues/7141) Rule AS0098 is now enforced for report labels.

## Data Transfer

The new AL object `DataTransfer` has been introduced, which enables bulk data transfer operations in upgrade code via set-based SQL operations instead of using row-by-row operations.

## Use of Option Access syntax in formulas

The AL language now supports using option access syntax in formula properties. This removes the need for hard coded integer values and improves the readability and the maintainability of the code.

```al
page 50100 MyCustomerReportSelectionPage
{
    SourceTable = "Custom Report Selection";
    SourceTableView = where("Source Type" = const(Database::Customer));
}
```

## New UICop rule

- [AW0014](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/analyzers/uicop-aw0014) - A warning is reported when an action group with its visibility set to false contains the target actions of one or many actionrefs. This rule is similar to [AW0013](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/analyzers/uicop-aw0013), but for pages using the new action bar syntax.

## The snapshot debugger shows all the lines hit by a snapshot session

All the lines that were collected by a snapshot debugging session are marked with a vertical line in the left gutter of the editor.
The appearance of the gutter is controlled by the al.snapshotDebuggerLinesHitDecoration configuration setting.

## Debugger Enhancements

We have added new options to control when the debugger should break on errors or record writes.

**BreakOnError**: This takes now one of the following values: [true, false, "All", "None", "ExcludeTry"].
- false/None: Does not break on any errors.
- true/All: Breaks on all errors.
- ExcludeTry: Breaks on errors **only** if they occur outside of the context of a Try function.

**BreakOnRecordWrite**: This takes one of the following values: [true, false, "None", "All", "ExcludeTemporary"]
- false/None: Does not break on any record writes.
- true/All: Breaks on all record writes.
- ExcludeTemporary: Breaks on record writes **only** if they are not on a temporary table.

## PermissionSet - New ExcludedPermissionSets Property

The new property `ExcludedPermissionSets` was added to permission set objects, allowing the definition of excluded permission sets in extensions.
See more here: [ExcludedPermissionSets](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/properties/devenv-excludedPermissionSets-property)

## Inherent Permissions

The Inherent Permissions attribute allows now for elevating entitlements and/or permissions in the given method scope. This is achieved by specifying an optional argument called `InherentPermissionsScope`.

## Apply a code action to document, project, or solution scope

We have added the ability to fix all occurrences of an issue in document, project or solution scope. If a code action supports 'fix all occurrences', then there will be more suggestions on the list, for each extra supported scopes, where user can choose to apply the fix to the current instace of an issue or to apply the fix to all the occurances in a chosen scope.

## ResourceExposurePolicy - New ApplyToDevExtension Property

A new property `ApplyToDevExtension` has been added to the `ResourceExposurePolicy` in the `app.json` file. If this flag is set to `true`, all resource exposure policies specified for the extension will also apply to developer extensions.

## Run Power Automate flows from page actions

We have added the ability to define page actions triggering a Power Automate flow using custom actions. The syntax is as follows:
```al
customaction(MyFlowAction)
{
    CustomActionType = Flow;
    FlowId = '<the-GUID-identifying-the-Power-Automate-Flow>';
    FlowEnvironmentId = '<the-GUID-identifying-the-Power-Automate-environment>';
}
```

## Render a group as a split button

We have introduced the ability to render some groups as split buttons. This type of control gives you a fast one-click access to the first action visible and enabled in a menu by using the left button part and also provides access to other related actions by using the right dropdown part.

Split buttons can be defined using the new property [ShowAs](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/properties/devenv-showas-property).

## New Promoted Action Syntax

We have introduced a new area named `Promoted` and a new concept of action references, in replacement of the [Promoted](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/properties/devenv-promoted-property) properties. This allows you to explicitly define the order of the actions in the promoted side of the action bar.

The syntax looks as follows:
```al
    area(Promoted)
    {
        group(MyPromotedGroup)
        {
            actionref(MyActionRef; MyAction)
            {
            }
        }
    }
```

For more information about the new AL Syntax for the action bar, see:
- [Promoted Actions](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/devenv-promoted-actions)
- [Actions Overview](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/devenv-actions-overview)
- [Adding Actions to a Page](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/devenv-adding-actions-to-a-page)

In order to help you convert your extensions, we have added an AL code action to convert pages using the legacy action syntax to use the new `actionref` syntax. This code action allows you to convert, a single page, all pages in a document, all pages in your project, or even all pages in your workspace.

## New UICop rule

Similarly to [AW0013](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/analyzers/uicop-aw0013), we have introduced a new UICop rule [AW0014](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/analyzers/uicop-aw0014) that reports a diagnostic when an action group with its visible set to false contains or one or many actions with action references.

## Inherent Object Entitlements

The new property `InherentObjectEntitlements` was added to objects that can have assigned permissions. AL developers can mark an object with this property, to take it out of the permissions system.

## Miscellaneous

- The SystemRowVersion (timestamp) field is now available for tables. Added `LastUsedRowVersion()` and `MinimumActiveRowVersion()` to use in combination with the SystemRowVersion field.
- Added a new parameter to the launch.json file that allows opening a specific company when deploying from Visual Studio Code.- The `treport` snippet now includes the `DefaultRenderingLayout` property.
- The 'al.enableCodeActions' setting is now enabled by default.
- Option types are now always considered equal since they are a wrapper of the Integer type.
- Fixed a bug that prevented loading dotnet types, which were subject of [type forwarding](https://learn.microsoft.com/dotnet/standard/assembly/type-forwarding).
- Fixed hover display for properties defined in action groups and action separators.
- Intellisense now suggests keys for the SourceTableView property on XmlPort table elements and the DataItemTableView for Report DataItems.
- Controls and Actions now inherit the [ApplicationArea](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/properties/devenv-applicationarea-property) defined on the page/report level. The analyzer rules [AS0062](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/analyzers/appsourcecop-as0062) and [PTE0008](https://learn.microsoft.com/dynamics365/business-central/dev-itpro/developer/analyzers/pertenantextensioncop-pte0008) have been updated accordingly.
- Added command to generate permission set as an AL object, al.generatePermissionSetForExtensionObjects. The previous functionallity of creating a permissionset xml file, is moved into the command al.generatePermissionSetForExtensionObjectsAsXml.
- The AL:Go! project template now has allowDebugging, allowDownloadingSource, and includeSourceInSymbolFile switched on by default. This is visible in the app.json file where the project resourceExposurePolicy is set.
- AppSourceCop Error AS0093 has been discontinued. AppSource submissions can now contain entitlement objects.
- Improved performance when background code analysis and code actions were both enabled.
- New warning [AL0732](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/diagnostics/diagnostic-al732) regarding the use of non-public procedures in interfaces. This will become an error [AL0733](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/diagnostics/diagnostic-al733) in a later release.
- Fixed issue that case conditions could generate invalid code for the server.
- Fixed a bug that prevented running CodeCop rule [AA0241](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/analyzers/codecop-aa0241).
- Added more validation for key vault urls; Validation of key vault URLs at compilation time are now aligned with runtime validation.
- New feature 'AllTranslationItems' in the app.json manifest. It creates all possible translation units. This should also be used when another app want to translation this app, in order to give them all translation labels.
- Fixed IntelliSense crashing for enums UnknownValueImplementation property.
- 'Go To Definition' now works for Rec, xRec, CurrReport, CurrPage, CurrQuery and CurrXMLport.
- Deprecated the usage of 'Extension' and 'Internal' targets in the app.json manifest in favor of Cloud' and 'OnPrem' from runtime version 11.0.

Source: Visual Studio Marketplace, ms-dynamics-smb.al changelog, Microsoft's text unchanged. Dates from the gallery's upload records.
