---
id: change/bcapps/11260
type: change
title: "#11260 Ruleset hardening: promote four legacy warning rules to Error"
summary: The repository ruleset now treats AS0103, PTE0004, AS0011 and AA0136 as errors instead of warnings. Legacy tables and identifiers are scoped as exceptions, 34 production tables are added to their owning permission sets, and unreachable code is removed without deleting any public API.
tier: official
language: en
tags:
  - refactor
  - main
  - bc30
  - page elec. vat decl. overview
  - page electronic vat decl. setup
  - page sales vat adv. notif. card
  - page sales vat adv. notif. list
  - permissionsetextension d365 basic - elster vat localization for germany
  - permissionsetextension d365 basic isv - elster vat localization for germany
system: development
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:04:59.187Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: e60610752f56276cd399b8bc797daa37bd7a75f4
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/pull/11260
    title: "microsoft/BCApps#11260: Ruleset hardening: promote four legacy warning rules to Error"
    date: "2026-09-16"
    commit: e60610752f56276cd399b8bc797daa37bd7a75f4
    t: null
    quote: Promotes AS0103, PTE0004, AS0011, and AA0136 from Warning to the repository default Error posture.
links:
  learn: []
  objects:
    - object/page/11028-de
    - object/page/11019-de
    - object/page/11016-de
    - object/page/11017-de
    - object/permissionsetextension/46539-de
    - object/permissionsetextension/45801-de
    - object/permissionsetextension/8697-de
    - object/permissionsetextension/16295-de
    - object/permissionsetextension/14181-de
    - object/permissionsetextension/9615-de
    - object/permissionsetextension/32689-de
    - object/permissionsetextension/21993-de
    - object/report/11016-de
    - object/table/11027-de
    - object/table/11023-de
    - object/table/11021-de
    - object/permissionsetextension/42800
    - object/permissionsetextension/42801
    - object/permissionset/42801
    - object/permissionsetextension/47002
    - object/permissionsetextension/47001
    - object/permissionsetextension/47003
    - object/permissionsetextension/47000
    - object/permissionset/47004
    - object/permissionset/47005
    - object/permissionset/47006
    - object/permissionsetextension/1632
    - object/permissionsetextension/46049
    - object/permissionsetextension/3998
    - object/permissionsetextension/44603
    - object/permissionsetextension/26134
    - object/permissionsetextension/20875
    - object/permissionsetextension/16491
    - object/permissionsetextension/27224
    - object/permissionset/27225
    - object/permissionset/27226
    - object/permissionset/27227
    - object/page/1830
    - object/codeunit/1830
    - object/codeunit/1921
    - object/page/28090-au
    - object/page/28092-au
    - object/table/10501-gb
    - object/table/10555-gb
    - object/report/14030-ca
    - object/report/15000062-no
    - object/report/14962-ru
    - object/permissionset/1001
    - object/permissionset/1002
    - object/permissionset/5117
    - object/permissionset/208
    - object/permissionset/732
    - object/permissionset/209
    - object/permissionset/959
    - object/permissionset/1044
    - object/permissionset/7931
    - object/permissionset/6121
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 11260
repo: microsoft/BCApps
source_id: bcapps-prs
url: https://github.com/microsoft/BCApps/pull/11260
kind: pr
base_branch: main
major: "30"
merged_at: "2026-09-16T09:46:31Z"
author: JesperSchulz
author_type: User
community_contribution: false
labels:
  - "AL: Apps (W1)"
  - "Ownership: Needs Review"
  - "Team: Other"
change_class: code
change_kind: refactor
behavior_change: true
breaking: false
files:
  count: 241
  additions: 482
  deletions: 1512
  al: 59
apps:
  - Base Application
  - DynamicsSLHistoricalData
  - Elster
  - HybridSL
  - QBMigration
objects_touched:
  - key: page/11028
    page: page/11028-de
    type: page
    id: 11028
    name: Elec. VAT Decl. Overview
    app: Elster
    status: modified
  - key: page/11019
    page: page/11019-de
    type: page
    id: 11019
    name: Electronic VAT Decl. Setup
    app: Elster
    status: modified
  - key: page/11016
    page: page/11016-de
    type: page
    id: 11016
    name: Sales VAT Adv. Notif. Card
    app: Elster
    status: modified
  - key: page/11017
    page: page/11017-de
    type: page
    id: 11017
    name: Sales VAT Adv. Notif. List
    app: Elster
    status: modified
  - key: permissionsetextension/46539
    page: permissionsetextension/46539-de
    type: permissionsetextension
    id: 46539
    name: D365 BASIC - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/45801
    page: permissionsetextension/45801-de
    type: permissionsetextension
    id: 45801
    name: D365 BASIC ISV - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/8697
    page: permissionsetextension/8697-de
    type: permissionsetextension
    id: 8697
    name: D365 BUS FULL ACCESS - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/16295
    page: permissionsetextension/16295-de
    type: permissionsetextension
    id: 16295
    name: D365 BUS PREMIUM - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/14181
    page: permissionsetextension/14181-de
    type: permissionsetextension
    id: 14181
    name: D365 FULL ACCESS - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/9615
    page: permissionsetextension/9615-de
    type: permissionsetextension
    id: 9615
    name: D365 READ - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/32689
    page: permissionsetextension/32689-de
    type: permissionsetextension
    id: 32689
    name: D365 TEAM MEMBER - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: permissionsetextension/21993
    page: permissionsetextension/21993-de
    type: permissionsetextension
    id: 21993
    name: INTELLIGENT CLOUD - ELSTER VAT Localization for Germany
    app: Elster
    status: modified
  - key: report/11016
    page: report/11016-de
    type: report
    id: 11016
    name: Create XML-File VAT Adv.Notif.
    app: Elster
    status: modified
  - key: table/11027
    page: table/11027-de
    type: table
    id: 11027
    name: Elec. VAT Decl. Buffer
    app: Elster
    status: modified
  - key: table/11023
    page: table/11023-de
    type: table
    id: 11023
    name: Elec. VAT Decl. Setup
    app: Elster
    status: modified
  - key: table/11021
    page: table/11021-de
    type: table
    id: 11021
    name: Sales VAT Advance Notif.
    app: Elster
    status: modified
  - key: permissionsetextension/42800
    page: permissionsetextension/42800
    type: permissionsetextension
    id: 42800
    name: SL D365 Basic Ext.
    app: DynamicsSLHistoricalData
    status: modified
  - key: permissionsetextension/42801
    page: permissionsetextension/42801
    type: permissionsetextension
    id: 42801
    name: SL D365 Full Access Ext.
    app: DynamicsSLHistoricalData
    status: modified
  - key: permissionset/42801
    page: permissionset/42801
    type: permissionset
    id: 42801
    name: SL Historical Querys
    app: DynamicsSLHistoricalData
    status: modified
  - key: permissionsetextension/47002
    page: permissionsetextension/47002
    type: permissionsetextension
    id: 47002
    name: SLD365 BASIC ISV - MSL
    app: HybridSL
    status: modified
  - key: permissionsetextension/47001
    page: permissionsetextension/47001
    type: permissionsetextension
    id: 47001
    name: SLD365 BASIC - MSL
    app: HybridSL
    status: modified
  - key: permissionsetextension/47003
    page: permissionsetextension/47003
    type: permissionsetextension
    id: 47003
    name: SLD365 TEAM MEMBER - MSL
    app: HybridSL
    status: modified
  - key: permissionsetextension/47000
    page: permissionsetextension/47000
    type: permissionsetextension
    id: 47000
    name: SLINTELLIGENT CLOUD - MSL
    app: HybridSL
    status: modified
  - key: permissionset/47004
    page: permissionset/47004
    type: permissionset
    id: 47004
    name: SL Migration - Edit
    app: HybridSL
    status: modified
  - key: permissionset/47005
    page: permissionset/47005
    type: permissionset
    id: 47005
    name: SL Migration-Objects
    app: HybridSL
    status: modified
  - key: permissionset/47006
    page: permissionset/47006
    type: permissionset
    id: 47006
    name: SL Migration - Read
    app: HybridSL
    status: modified
  - key: permissionsetextension/1632
    page: permissionsetextension/1632
    type: permissionsetextension
    id: 1632
    name: D365 BASIC ISVQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/46049
    page: permissionsetextension/46049
    type: permissionsetextension
    id: 46049
    name: D365 BASICQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/3998
    page: permissionsetextension/3998
    type: permissionsetextension
    id: 3998
    name: D365 BUS FULL ACCESSQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/44603
    page: permissionsetextension/44603
    type: permissionsetextension
    id: 44603
    name: D365 BUS PREMIUMQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/26134
    page: permissionsetextension/26134
    type: permissionsetextension
    id: 26134
    name: D365 FULL ACCESSQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/20875
    page: permissionsetextension/20875
    type: permissionsetextension
    id: 20875
    name: D365 READQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/16491
    page: permissionsetextension/16491
    type: permissionsetextension
    id: 16491
    name: D365 TEAM MEMBERQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionsetextension/27224
    page: permissionsetextension/27224
    type: permissionsetextension
    id: 27224
    name: INTELLIGENT CLOUDQuickBooks Data Migration
    app: QBMigration
    status: modified
  - key: permissionset/27225
    page: permissionset/27225
    type: permissionset
    id: 27225
    name: QBMigration - Edit
    app: QBMigration
    status: modified
  - key: permissionset/27226
    page: permissionset/27226
    type: permissionset
    id: 27226
    name: QBMigration - Objects
    app: QBMigration
    status: modified
  - key: permissionset/27227
    page: permissionset/27227
    type: permissionset
    id: 27227
    name: QBMigration - Read
    app: QBMigration
    status: modified
  - key: page/1830
    page: page/1830
    type: page
    id: 1830
    name: MS - QBO Data Migration
    app: QBMigration
    status: modified
  - key: codeunit/1830
    page: codeunit/1830
    type: codeunit
    id: 1830
    name: MigrateQBO Wizard Integration
    app: QBMigration
    status: modified
  - key: codeunit/1921
    page: codeunit/1921
    type: codeunit
    id: 1921
    name: QB Migration Install
    app: QBMigration
    status: modified
  - key: page/28090
    page: page/28090-au
    type: page
    id: 28090
    name: Post Dated Checks
    app: Base Application
    status: modified
  - key: page/28092
    page: page/28092-au
    type: page
    id: 28092
    name: Post Dated Checks-Purchases
    app: Base Application
    status: modified
  - key: table/10501
    page: table/10501-gb
    type: table
    id: 10501
    name: Postcode Notification Memory
    app: Base Application
    status: modified
  - key: table/10555
    page: table/10555-gb
    type: table
    id: 10555
    name: Fin. Charge Interest Rate
    app: Base Application
    status: modified
  - key: report/14030
    page: report/14030-ca
    type: report
    id: 14030
    name: Official journal ledger Summ.
    app: Base Application
    status: modified
  - key: report/15000062
    page: report/15000062-no
    type: report
    id: 15000062
    name: Remittance - Import (Bank)
    app: Base Application
    status: modified
  - key: report/14962
    page: report/14962-ru
    type: report
    id: 14962
    name: Create VAT Purch. Led. Ad. Sh.
    app: Base Application
    status: modified
  - key: permissionset/1001
    page: permissionset/1001
    type: permissionset
    id: 1001
    name: LOCAL
    app: Base Application
    status: modified
  - key: permissionset/1002
    page: permissionset/1002
    type: permissionset
    id: 1002
    name: LOCAL READ
    app: Base Application
    status: modified
  - key: permissionset/5117
    page: permissionset/5117
    type: permissionset
    id: 5117
    name: D365 AUTOMATION
    app: Base Application
    status: modified
  - key: permissionset/208
    page: permissionset/208
    type: permissionset
    id: 208
    name: D365 Basic - Edit
    app: Base Application
    status: modified
  - key: permissionset/732
    page: permissionset/732
    type: permissionset
    id: 732
    name: D365 BASIC ISV
    app: Base Application
    status: modified
  - key: permissionset/209
    page: permissionset/209
    type: permissionset
    id: 209
    name: D365 Basic - Read
    app: Base Application
    status: modified
  - key: permissionset/959
    page: permissionset/959
    type: permissionset
    id: 959
    name: D365 BUS FULL ACCESS
    app: Base Application
    status: modified
  - key: permissionset/1044
    page: permissionset/1044
    type: permissionset
    id: 1044
    name: D365 READ
    app: Base Application
    status: modified
  - key: permissionset/7931
    page: permissionset/7931
    type: permissionset
    id: 7931
    name: D365 TEAM MEMBER
    app: Base Application
    status: modified
  - key: permissionset/6121
    page: permissionset/6121
    type: permissionset
    id: 6121
    name: INTELLIGENT CLOUD
    app: Base Application
    status: modified
objects_unjoined:
  - path: src/Layers/GB/BaseApp/Permissions/d365busfullaccess.permissionset.al
    status: modified
    reason: not-in-snapshot
  - path: src/Layers/RU/BaseApp/Permissions/d365busfullaccess.permissionset.al
    status: modified
    reason: not-in-snapshot
obsoletions: []
backports: []
fixes_issues: []
work_items:
  - 640773
  - 649216
systems:
  - development
  - administration
  - finance
  - platform
  - purchasing
  - sales
quote: Promotes AS0103, PTE0004, AS0011, and AA0136 from Warning to the repository default Error posture.
joined_against:
  major: "30"
  commit: f18567dc08e2bd162bf192e1da4d714b57eb099f
---

# #11260 Ruleset hardening: promote four legacy warning rules to Error

> The repository ruleset now treats AS0103, PTE0004, AS0011 and AA0136 as errors instead of warnings. Legacy tables and identifiers are scoped as exceptions, 34 production tables are added to their owning permission sets, and unreachable code is removed without deleting any public API.

[Pull request](https://github.com/microsoft/BCApps/pull/11260) · merged into `main` (BC30) on 2026-09-16 by JesperSchulz · 241 files (+482 -1512), 59 AL · refactor · tier official · reviewed (checked by Opus)

## What changed

- AS0103 and PTE0004 are now errors: 142 tables use shared ID-qualified scopes and 34 production tables were added to permission sets
- AS0011 exceptions cover 47 established identifiers (17 legacy test objects, 30 published app objects)
- AA0136 fixes remove unreachable code at 37 line sites in 29 files without adding suppressions
- Permission additions cover Russian statutory tables, Dynamics SL historical tables, W1 Exchange Sync and HybridSL purchase order tables
- Public CH DemoTool procedure GetPeriodNoOneDate was restored after its accidental deletion, so no external API is removed
- Behaviour changes for users or extensions.

## AL objects touched

- [Page 11028 "Elec. VAT Decl. Overview"](../../objects/page/11028-de.md), Elster (DE layer): modified
- [Page 11019 "Electronic VAT Decl. Setup"](../../objects/page/11019-de.md), Elster (DE layer): modified
- [Page 11016 "Sales VAT Adv. Notif. Card"](../../objects/page/11016-de.md), Elster (DE layer): modified
- [Page 11017 "Sales VAT Adv. Notif. List"](../../objects/page/11017-de.md), Elster (DE layer): modified
- [Permission set extension 46539 "D365 BASIC - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/46539-de.md), Elster (DE layer): modified
- [Permission set extension 45801 "D365 BASIC ISV - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/45801-de.md), Elster (DE layer): modified
- [Permission set extension 8697 "D365 BUS FULL ACCESS - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/8697-de.md), Elster (DE layer): modified
- [Permission set extension 16295 "D365 BUS PREMIUM - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/16295-de.md), Elster (DE layer): modified
- [Permission set extension 14181 "D365 FULL ACCESS - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/14181-de.md), Elster (DE layer): modified
- [Permission set extension 9615 "D365 READ - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/9615-de.md), Elster (DE layer): modified
- [Permission set extension 32689 "D365 TEAM MEMBER - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/32689-de.md), Elster (DE layer): modified
- [Permission set extension 21993 "INTELLIGENT CLOUD - ELSTER VAT Localization for Germany"](../../objects/permissionsetextension/21993-de.md), Elster (DE layer): modified
- [Report 11016 "Create XML-File VAT Adv.Notif."](../../objects/report/11016-de.md), Elster (DE layer): modified
- [Table 11027 "Elec. VAT Decl. Buffer"](../../objects/table/11027-de.md), Elster (DE layer): modified
- [Table 11023 "Elec. VAT Decl. Setup"](../../objects/table/11023-de.md), Elster (DE layer): modified
- [Table 11021 "Sales VAT Advance Notif."](../../objects/table/11021-de.md), Elster (DE layer): modified
- [Permission set extension 42800 "SL D365 Basic Ext."](../../objects/permissionsetextension/42800.md), DynamicsSLHistoricalData: modified
- [Permission set extension 42801 "SL D365 Full Access Ext."](../../objects/permissionsetextension/42801.md), DynamicsSLHistoricalData: modified
- [Permission set 42801 "SL Historical Querys"](../../objects/permissionset/42801.md), DynamicsSLHistoricalData: modified
- [Permission set extension 47002 "SLD365 BASIC ISV - MSL"](../../objects/permissionsetextension/47002.md), HybridSL: modified
- [Permission set extension 47001 "SLD365 BASIC - MSL"](../../objects/permissionsetextension/47001.md), HybridSL: modified
- [Permission set extension 47003 "SLD365 TEAM MEMBER - MSL"](../../objects/permissionsetextension/47003.md), HybridSL: modified
- [Permission set extension 47000 "SLINTELLIGENT CLOUD - MSL"](../../objects/permissionsetextension/47000.md), HybridSL: modified
- [Permission set 47004 "SL Migration - Edit"](../../objects/permissionset/47004.md), HybridSL: modified
- [Permission set 47005 "SL Migration-Objects"](../../objects/permissionset/47005.md), HybridSL: modified
- [Permission set 47006 "SL Migration - Read"](../../objects/permissionset/47006.md), HybridSL: modified
- [Permission set extension 1632 "D365 BASIC ISVQuickBooks Data Migration"](../../objects/permissionsetextension/1632.md), QBMigration: modified
- [Permission set extension 46049 "D365 BASICQuickBooks Data Migration"](../../objects/permissionsetextension/46049.md), QBMigration: modified
- [Permission set extension 3998 "D365 BUS FULL ACCESSQuickBooks Data Migration"](../../objects/permissionsetextension/3998.md), QBMigration: modified
- [Permission set extension 44603 "D365 BUS PREMIUMQuickBooks Data Migration"](../../objects/permissionsetextension/44603.md), QBMigration: modified
- [Permission set extension 26134 "D365 FULL ACCESSQuickBooks Data Migration"](../../objects/permissionsetextension/26134.md), QBMigration: modified
- [Permission set extension 20875 "D365 READQuickBooks Data Migration"](../../objects/permissionsetextension/20875.md), QBMigration: modified
- [Permission set extension 16491 "D365 TEAM MEMBERQuickBooks Data Migration"](../../objects/permissionsetextension/16491.md), QBMigration: modified
- [Permission set extension 27224 "INTELLIGENT CLOUDQuickBooks Data Migration"](../../objects/permissionsetextension/27224.md), QBMigration: modified
- [Permission set 27225 "QBMigration - Edit"](../../objects/permissionset/27225.md), QBMigration: modified
- [Permission set 27226 "QBMigration - Objects"](../../objects/permissionset/27226.md), QBMigration: modified
- [Permission set 27227 "QBMigration - Read"](../../objects/permissionset/27227.md), QBMigration: modified
- [Page 1830 "MS - QBO Data Migration"](../../objects/page/1830.md), QBMigration: modified
- [Codeunit 1830 "MigrateQBO Wizard Integration"](../../objects/codeunit/1830.md), QBMigration: modified
- [Codeunit 1921 "QB Migration Install"](../../objects/codeunit/1921.md), QBMigration: modified
- [Page 28090 "Post Dated Checks"](../../objects/page/28090-au.md), Base Application (AU layer): modified
- [Page 28092 "Post Dated Checks-Purchases"](../../objects/page/28092-au.md), Base Application (AU layer): modified
- [Table 10501 "Postcode Notification Memory"](../../objects/table/10501-gb.md), Base Application (GB layer): modified
- [Table 10555 "Fin. Charge Interest Rate"](../../objects/table/10555-gb.md), Base Application (GB layer): modified
- [Report 14030 "Official journal ledger Summ."](../../objects/report/14030-ca.md), Base Application (CA layer): modified
- [Report 15000062 "Remittance - Import (Bank)"](../../objects/report/15000062-no.md), Base Application (NO layer): modified
- [Report 14962 "Create VAT Purch. Led. Ad. Sh."](../../objects/report/14962-ru.md), Base Application (RU layer): modified
- [Permission set 1001 "LOCAL"](../../objects/permissionset/1001.md), Base Application (RU layer): modified
- [Permission set 1002 "LOCAL READ"](../../objects/permissionset/1002.md), Base Application (RU layer): modified
- [Permission set 5117 "D365 AUTOMATION"](../../objects/permissionset/5117.md), Base Application: modified
- [Permission set 208 "D365 Basic - Edit"](../../objects/permissionset/208.md), Base Application: modified
- [Permission set 732 "D365 BASIC ISV"](../../objects/permissionset/732.md), Base Application: modified
- [Permission set 209 "D365 Basic - Read"](../../objects/permissionset/209.md), Base Application: modified
- [Permission set 959 "D365 BUS FULL ACCESS"](../../objects/permissionset/959.md), Base Application: modified
- [Permission set 1044 "D365 READ"](../../objects/permissionset/1044.md), Base Application: modified
- [Permission set 7931 "D365 TEAM MEMBER"](../../objects/permissionset/7931.md), Base Application: modified
- [Permission set 6121 "INTELLIGENT CLOUD"](../../objects/permissionset/6121.md), Base Application: modified
- `src/Layers/GB/BaseApp/Permissions/d365busfullaccess.permissionset.al`: modified, not in the BC30 snapshot
- `src/Layers/RU/BaseApp/Permissions/d365busfullaccess.permissionset.al`: modified, not in the BC30 snapshot

## Context

- Work items: AB#640773, AB#649216
- Labels: AL: Apps (W1), Ownership: Needs Review, Team: Other
- Systems: development, administration, finance, platform, purchasing, sales
- From the description: "Promotes AS0103, PTE0004, AS0011, and AA0136 from Warning to the repository default Error posture."

Source: metadata of a merged pull request in microsoft/BCApps (bcapps): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).
