Skip to content

[621963] Deprecate table 9650 "Custom Report Layout" (Pending, tag 29.0) + country forks#9695

Open
V-CWurtzen wants to merge 3 commits into
mainfrom
features/621963-deprecate-custom-report-layout-table
Open

[621963] Deprecate table 9650 "Custom Report Layout" (Pending, tag 29.0) + country forks#9695
V-CWurtzen wants to merge 3 commits into
mainfrom
features/621963-deprecate-custom-report-layout-table

Conversation

@V-CWurtzen

@V-CWurtzen V-CWurtzen commented Jul 23, 2026

Copy link
Copy Markdown

What & why

Deprecates table 9650 "Custom Report Layout" (ObsoleteState = Pending, ObsoleteTag = '29.0'), mirroring the already-Pending page 9650. The legacy custom-layout table is superseded by the system report-layout tables ("Tenant Report Layout" / "Report Layout Selection", surfaced by the system Report Layouts page). Marking it Pending starts the retirement clock and points partners at the modern surface. No schema is removed and no data-migration behavior changes — the table stays defined and present (it remains in the cloud-migration replication set); physical removal is a later Removed / CLEANSCHEMA step.

Scope

W1 (BaseApp): table 9650 header markers; the legacy layout surface guarded for the CLEAN29 cleanup:

  • Description FlowFields obsoleted + #if not CLEAN29-wrapped: Report Selections "Email Body Layout Description"; Custom Report Selection "Custom Report Description" / "Email Body Layout Description"; Interaction Tmpl. Language "Custom Layout Description".
  • Page 9653 "Report Layouts Part" obsoleted + wrapped, incl. its part on the Report Layout Selection page.
  • Consumer controls guarded on the sales/purchase/service/job/reminder and customer/vendor report-selection pages and the interaction template page.
  • Plumbing references to the still-present table (TableRelation, CalcFormula, Database::, tabledata permissions, record vars) keep unconditional #pragma warning disable AL0432.

Country forks (21): parity for every existing fork of each changed W1 file, applied surgically at each fork's own lines — CompanyInitialize (AT/BE/CH/DACH/ES/FI/NA/NL/NO/RU), DemoTool/CreateRapidStartPackage (BE/CZ/IN/RU), d365busfullaccess (GB/RU), ReportSelectionPurchase/ReportSelectionSales pages (ES/RU, NO/RU), and RU ReportSelections.Table.al (full mirror).

Nature of change

Metadata + reference-guarding only (obsoletion markers, #if not CLEAN29 guards, balanced AL0432 pragmas). No functional/behavioral change; the table object stays present and Pending.

Validation

  • Compiles green with and without CLEAN26/27/28/29 (Default + Clean).
  • Fork set derived at 0 missing / 0 extra via three independent methods (disk fork-diff = AL-graph fork_of = references_table enumeration), reproducing the presence-only VerifyMiappSync gate before CI.
  • AL-graph references_table certification: every product reference to the Pending table across W1 and all forks is CLEAN29-excluded or AL0432-guarded (remaining unguarded refs are test apps and the table's own self-references, intentionally left).

Fixes AB#621963

…ding, tag 29.0)

Mark table 9650 "Custom Report Layout" as ObsoleteState = Pending (tag '29.0'),
following the already-Pending page 9650. The table is superseded by the system
report-layout tables ("Tenant Report Layout" / "Report Layout Selection").

The table object stays defined and Pending (present in the Clean build); no schema
is removed here - physical removal is a later Removed/CLEANSCHEMA step. The legacy
layout surface is guarded for the CLEAN29 cleanup:

- Description FlowFields obsoleted + wrapped in #if not CLEAN29: Report Selections
  "Email Body Layout Description"; Custom Report Selection "Custom Report Description"
  and "Email Body Layout Description"; Interaction Tmpl. Language "Custom Layout
  Description".
- Page 9653 "Report Layouts Part" obsoleted + wrapped, incl. its part in the Report
  Layout Selection page.
- Consumer controls guarded on the sales/purchase/service/job/reminder and
  customer/vendor report-selection pages and the interaction template page.
- Plumbing references to the still-present table (TableRelation, CalcFormula,
  Database::, tabledata permissions, record vars) keep unconditional
  #pragma warning disable AL0432, since the table stays valid while Pending.
- Report Layout Selection "Report Layout Description" is left intact (used by the
  modern Tenant Report Layout flow).

W1 only; country-fork propagation and compile-driven fixups follow.
…res/621963-deprecate-custom-report-layout-table
…ntry forks (+ W1 fixup)

Country-fork parity for the table 9650 deprecation. The VerifyMiappSync fork gate is
presence-only and demands every existing fork of each changed W1 file; the fork set was
derived at 0 missing / 0 extra via three independent methods (disk fork-diff = AL-graph
fork_of = reference enumeration).

Forks (21), each mirroring the W1 guarding at its own lines:
- CompanyInitialize.Codeunit.al (AT/BE/CH/DACH/ES/FI/NA/NL/NO/RU): pragma the
  Record "Custom Report Layout" var.
- DemoTool/CreateRapidStartPackage.Codeunit.al (BE/CZ/IN/RU): pragma the
  CreateTable(DATABASE::"Custom Report Layout") call.
- d365busfullaccess.permissionset.al (GB/RU): pragma the tabledata permission.
- ReportSelectionPurchase.Page.al (ES/RU) + ReportSelectionSales.Page.al (NO/RU):
  #if not CLEAN29 wrap of the "Email Body Layout Description" field.
- RU ReportSelections.Table.al: full mirror (field 22 obsoleted + #if not CLEAN29
  wrapped; TableRelation/CalcFormula/record-var pragmas).

W1 fixup: ReportSelections.Table.al DoesAnyCustomLayotExist() had an unguarded
Record "Custom Report Layout" var, missed by the initial sweep and invisible to both
compile modes (base.ruleset treats AL0432 as None). Found via an AL-graph references_table
enumeration; guarded with a construct-scoped pragma.

Fixes AB#621963
@V-CWurtzen
V-CWurtzen requested review from a team July 23, 2026 12:57
@github-actions github-actions Bot added this to the Version 29.0 milestone Jul 23, 2026
@github-actions github-actions Bot added Other GitHub request for other area than SCM, Finance or Integration Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction labels Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Other GitHub request for other area than SCM, Finance or Integration Ownership: Needs Review Ownership is Other, low confidence, or needs manual correction

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant