Remove CLEAN27 tags for Wave2 2026 - #10525
Remove CLEAN27 tags for Wave2 2026#10525Alexander Yakunin (Alexander-Ya) wants to merge 8 commits into
Conversation
…Remove-CLEAN27-tags-for-Wave2-2026
…Remove-CLEAN27-tags-for-Wave2-2026
This comment was marked as resolved.
This comment was marked as resolved.
| } | ||
| #if not CLEAN27 |
There was a problem hiding this comment.
The CLEAN27 cleanup deletes field 12182 "WIP Qty at Subc.Loc. (Base)" outright from table "Purchase Line" instead of keeping the field definition in source with ObsoleteState = Removed until the announced removal version. That is a schema-level breaking change that can jeopardize upgrade compatibility and persisted data; restore the field as an obsolete-removed stub rather than deleting it now.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| #if not CLEAN27 | ||
| #pragma warning disable AA0232 | ||
| /// <summary> | ||
| /// Contains the total number of errors encountered during this automation run. |
There was a problem hiding this comment.
The CLEAN27 cleanup removes field 15 "Number of Errors" outright from table "Reminder Action Group Log" even though the field was previously kept as an obsolete member. Deleting the field definition is a breaking schema change with possible upgrade/data-loss consequences; keep the field in source and mark it obsolete-removed instead of deleting it.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| @@ -6171,18 +6114,6 @@ codeunit 22 "Item Jnl.-Post Line" | |||
| begin | |||
| end; | |||
|
|
|||
| #if not CLEAN27 | |||
There was a problem hiding this comment.
This cleanup removes shipped [IntegrationEvent] publishers from Codeunit 22 "Item Jnl.-Post Line" instead of keeping a compatibility shim (verified: dozens of [IntegrationEvent(...)] attribute lines removed in the diff). The same pattern repeats in the APAC/CH/ES/IT/RU layer copies. Even though these hooks were obsolete and moved to "Mfg. Item Jnl.-Post Line", subscribers bind to the original publisher object and will stop firing after this PR unless every dependent extension migrates in lockstep.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
|
|
||
| #if not CLEAN27 | ||
| [Obsolete('Replaced by procedure in codeunit MfgCarryOutAction', '27.0')] | ||
| procedure TransferRouting(RequisitionLine: Record "Requisition Line"; ProductionOrder: Record Microsoft.Manufacturing.Document."Production Order"; RoutingNo: Code[20]; RoutingRefNo: Integer): Boolean |
There was a problem hiding this comment.
This cleanup removes shipped [IntegrationEvent] publishers from "Carry Out Action" rather than preserving the old publisher contract while manufacturing/assembly hooks move elsewhere (42 removed publishers counted in the W1 file, with the same contract change also present in the NA copy). External subscribers that still target the old events will break immediately.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| ReportInbox.Init(); | ||
| ReportInbox."User ID" := JobQueueEntry."User ID"; | ||
| ReportInbox."Job Queue Log Entry ID" := JobQueueEntry.ID; | ||
| ReportInbox."Report ID" := ReportID; |
There was a problem hiding this comment.
"Job Queue Start Report" drops the obsolete publisher OnBeforeRunReport entirely in this cleanup (verified: the bridging [EventSubscriber] procedures that forwarded the old publisher's events were deleted). That is still a shipped [IntegrationEvent] contract: extensions subscribing to Codeunit 487's old event will lose the hook, even though the behavior has been split across "Job Queue Start Report Base"/"Runner".
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| @@ -1172,22 +1159,6 @@ codeunit 90 "Purch.-Post" | |||
| if not IsHandled then begin | |||
| PurchInvLine.InitFromPurchLine(PurchInvHeader, xPurchLine); | |||
| ItemJnlPostLine.CollectValueEntryRelation(TempValueEntryRelation, CopyStr(PurchInvLine.RowID1(), 1, 100)); | |||
| #if not CLEAN27 | |||
There was a problem hiding this comment.
This cleanup deletes the shipped Reverse Charge GB purchase usage event ID '0000OJN' from Purch.-Post, but the feature remains active in ReverseChargeVATSubscribers and now emits the same scenario under '0000PBB'. Any dashboards or alerts still keyed to '0000OJN' will silently lose coverage after this PR. Preserve the original ID for the migrated emitter, or emit a compatibility bridge event until telemetry consumers are updated.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| #if not CLEAN27 | ||
| end; | ||
| #endif | ||
| if SalesLine.Quantity <> 0 then |
There was a problem hiding this comment.
This cleanup deletes the shipped Reverse Charge GB sales usage event ID '0000OJO' from Sales-Post, while the still-active Reverse Charge VAT app emits the same scenario under new ID '0000PBC'. That breaks continuity for telemetry queries and alerts that filter on '0000OJO'. Keep the original event ID on the surviving emitter, or add a compatibility emission during the migration window.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
|
src/Layers/ES/Tests/SCM-Service/ServiceStatistics.Codeunit.al now contains a second, duplicate copy of ChangeDiscountAmountCreditMemoNM and the following ...NM test/helper procedures (verified: 'procedure ChangeDiscountAmountCreditMemoNM' appears at both line 481 and line 2167). AL does not allow duplicate procedure names in one codeunit, so this test codeunit will fail to compile as of this PR unless the duplicated block is removed. Agent judgement — not directly backed by a BCQuality knowledge article. Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4 |
| using Microsoft.Sales.Setup; | ||
| using System.Upgrade; | ||
|
|
||
| codeunit 10554 "Upgrade Reverse Charge VAT" |
There was a problem hiding this comment.
The PR deletes codeunit "Upgrade Reverse Charge VAT" and its upgrade-tag helper; src/Apps/GB/ReverseChargeVAT/app/src no longer contains any Subtype = Upgrade/Install or upgrade-tag plumbing. That removes the only version-upgrade path that was still copying legacy Reverse Charge VAT data in OnUpgradePerCompany() for AppVersion().Major() >= 30, so tenants upgrading straight to this build can miss the migration entirely.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| @@ -14,17 +14,7 @@ using Microsoft.Inventory.Tracking; | |||
|
|
|||
| codeunit 99000809 "Planning Line Management" | |||
| { | |||
| #if not CLEAN28 | |||
There was a problem hiding this comment.
This BC28 cleanup also removes live #if not CLEAN28 branches from base inventory/manufacturing objects such as "Planning Line Management" (verified: the #if not CLEAN28 ... #else ... #endif Permissions block was collapsed to just the #else branch), "Requisition Line", "Item Jnl.-Post Line" (APAC/CH/ES/IT/W1), and "Post Inventory Cost to G/L". Those guards are outside this PR's CLEAN27 scope. The app version is 29.0.0.0, so a CLEAN28 flag is only one major version past its introduction — physically removing it now is one release earlier than BC's staged obsoletion policy typically allows, and can break 28.x tenants/extensions still relying on the pre-CLEAN28 surface.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| { | ||
| } | ||
| #if not CLEAN27 | ||
| field(withoutContractDeferrals; Rec."Without Contract Deferrals") |
There was a problem hiding this comment.
This change removes the published "withoutContractDeferrals" field from the existing Customer Contracts API page while it still serves APIVersion = 'v1.0'. That mutates the live v1.0 contract in place and breaks clients that still read or bind that field. Keep the v1.0 page shape unchanged and introduce a new API page/version for the contract without this field.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
| { | ||
| } | ||
| #if not CLEAN27 | ||
| field(withoutContractDeferrals; Rec."Without Contract Deferrals") |
There was a problem hiding this comment.
This change removes the published "withoutContractDeferrals" field from the existing Vendor Contracts API page while it still serves APIVersion = 'v1.0'. That mutates the live v1.0 contract in place and breaks clients that still read or bind that field. Keep the v1.0 page shape unchanged and introduce a new API page/version for the contract without this field.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
|
|
||
| using Microsoft.Inventory.Ledger; | ||
|
|
||
| query 37000 "Value Entries - Purch." |
There was a problem hiding this comment.
Deleting query 37000 "Value Entries - Purch." removes the published /api/microsoft/analytics/v0.5/purchaseValueEntries route entirely. Even though a v1.0 replacement exists, existing integrations pinned to v0.5 will break; keep the deprecated route available until consumers can migrate through an explicit compatibility/versioning plan.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
|
|
||
| using Microsoft.Sales.Document; | ||
|
|
||
| query 37019 "Sales Line - PBI API" |
There was a problem hiding this comment.
Deleting query 37019 "Sales Line - PBI API" removes the published /api/microsoft/analytics/v0.5/salesLines route entirely. Even though a v1.0 replacement exists, existing integrations pinned to v0.5 will break; keep the deprecated route available until consumers can migrate through an explicit compatibility/versioning plan.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
|
|
||
| using Microsoft.Inventory.Ledger; | ||
|
|
||
| query 37005 "Value Entries - Sales" |
There was a problem hiding this comment.
Deleting query 37005 "Value Entries - Sales" removes the published /api/microsoft/analytics/v0.5/salesValueEntries route entirely. Even though a v1.0 replacement exists, existing integrations pinned to v0.5 will break; keep the deprecated route available until consumers can migrate through an explicit compatibility/versioning plan.
Agent judgement — not directly backed by a BCQuality knowledge article.
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
…Remove-CLEAN27-tags-for-Wave2-2026
| @@ -1,26 +1,2 @@ | |||
| #pragma warning disable AS0029 | |||
| #if not CLEAN27 | |||
There was a problem hiding this comment.
This CLEAN27 sweep deletes pageextension 10580 "Report Layouts GB" outright, even though on origin/main it was still marked ObsoleteState = Pending with ObsoleteTag = '28.0' (verified: the entire object body, including the ObsoleteTag = '28.0' property, sat inside a now-removed #if not CLEAN27 ... #endif block, with no #if CLEAN27 replacement left in the file). Removing an object whose ObsoleteTag targets a later wave (28.0) during the 27.0 graduation shortens its deprecation window and can break extensions still compiled against the pending symbol.
Knowledge:
👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4
|
The CLEAN27 removal in ManufacturingSetup.Page.al deletes the whole Knowledge: Line mapping was unavailable, so this was posted as an issue comment. 👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.35.4 |
What & why
Linked work
Fixes AB#647784
How I validated this
What I tested and the outcome (required — be specific: scenarios, commands, screenshots for UI changes)
Risk & compatibility