bcquality/microsoft/knowledge/upgrade/no-changecompany-in-upgrade.bad.al
Jesper Schulz-Wedde 4e33ca87e2 knowledge(upgrade): upgrade code must not use ChangeCompany
Addresses ADO bug 651092. Upgrade and feature data update code must run in the
context of the company being upgraded; ChangeCompany leaves triggers, events and
upgrade tags in the calling company and races the target company's own upgrade.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-02 10:11:49 +02:00

24 lines
955 B
AL

codeunit 50261 "Upgrade All Companies"
{
Subtype = Upgrade;
trigger OnUpgradePerDatabase()
var
Company: Record Company;
SalesOrderExt: Record "Sales Order Ext";
begin
// Reaches into every company from one session. Each company also has its own
// upgrade session, triggers and subscribers run in the calling context, and a
// data error in any company aborts the whole upgrade.
if Company.FindSet() then
repeat
SalesOrderExt.ChangeCompany(Company.Name);
SalesOrderExt.SetRange("Shipping Agent Code", '');
if SalesOrderExt.FindSet(true) then
repeat
SalesOrderExt.Validate("Shipping Agent Code", SalesOrderExt."Legacy Carrier Code");
SalesOrderExt.Modify(true);
until SalesOrderExt.Next() = 0;
until Company.Next() = 0;
end;
}