From 1486ab5aaefd74721585f73ab96f10e4fcd22d54 Mon Sep 17 00:00:00 2001 From: Pooya Kharamesh Date: Fri, 7 Aug 2026 12:53:57 +0200 Subject: [PATCH 1/5] Deprecate in-product extension management pages Add the SaaS migration notice for the Business Central admin center and mark the Extension Management, PTE upload, and AppSource installation pages as pending obsolete. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ExtensionManagementExt.PageExt.al | 2 + .../ConnectAppsVisibilityTests.Codeunit.al | 4 ++ .../pages/AddMigrationTableMappings.Page.al | 2 + .../src/tables/MigrationTableMapping.Table.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../Local/TestThirdPartyMigrators.Codeunit.al | 3 +- .../AdministratorMainRoleCenter.Page.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../BaseApp/ExtensionSubscribers.PageExt.al | 2 + .../AdministratorMainRoleCenter.Page.al | 2 + .../AadApplication/AADApplication.Table.al | 3 +- .../DataMigration/DataMigrationWizard.Page.al | 3 +- .../Permissions/PermissionsOverview.Page.al | 3 +- .../CompanyCreationDemoData.Codeunit.al | 2 + .../O365TestBlockFinSharedDb.Codeunit.al | 7 ++- .../src/AdvancedSettings.Page.al | 2 + .../AppSourceExtensionManagement.PageExt.al | 2 + .../src/Account/EmailAccountWizard.Page.al | 2 + ...xtensionManagementObjects.PermissionSet.al | 4 ++ .../src/ExtensionDeploymentStatus.Page.al | 5 +- .../src/ExtensionInstallation.Page.al | 4 +- .../src/ExtensionManagement.Page.al | 21 ++++++++ .../src/ExtensionMarketplace.Codeunit.al | 6 +++ .../src/ExtensionOperationImpl.Codeunit.al | 13 +++++ .../src/MarketplaceExtnDeployment.Page.al | 3 ++ .../src/UploadAndDeployExtension.Page.al | 4 +- .../src/Account/FileAccountWizard.Page.al | 2 + .../src/ExtensionMgtTestLibrary.Codeunit.al | 2 + .../src/DataOutOfGeoAppTest.Codeunit.al | 8 +++ .../src/ExtensionManagementTest.Codeunit.al | 53 ++++++++++++++++++- 35 files changed, 173 insertions(+), 9 deletions(-) diff --git a/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al b/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al index 629b38ce5d1..32acba49c8d 100644 --- a/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al +++ b/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al @@ -4,7 +4,9 @@ // ------------------------------------------------------------------------------------------------ #pragma warning disable AA0247 +#pragma warning disable AL0432 pageextension 20357 "Extension Management Ext." extends "Extension Management" +#pragma warning restore AL0432 { actions { diff --git a/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al b/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al index e825ba91bcc..46d27c79066 100644 --- a/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al +++ b/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al @@ -285,7 +285,9 @@ codeunit 139534 "Connect. Apps Visibility Tests" var CompanyInformation: Record "Company Information"; ConnectivityAppsLocationMock: Codeunit "Connectivity Apps Loc. Mock"; +#pragma warning disable AL0432 ExtensionManagement: TestPage "Extension Management"; +#pragma warning restore AL0432 begin // [GIVEN] Banking Apps exist Initialize(); @@ -309,7 +311,9 @@ codeunit 139534 "Connect. Apps Visibility Tests" var CompanyInformation: Record "Company Information"; ConnectivityAppsLocationMock: Codeunit "Connectivity Apps Loc. Mock"; +#pragma warning disable AL0432 ExtensionManagement: TestPage "Extension Management"; +#pragma warning restore AL0432 begin // [GIVEN] Banking Apps does not exist Initialize(); diff --git a/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al b/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al index 241543c0399..0a4e2f928e9 100644 --- a/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al +++ b/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al @@ -111,7 +111,9 @@ page 40010 "Add Migration Table Mappings" var PublishedApplication: Record "Published Application"; MigrationTableMapping: Record "Migration Table Mapping"; +#pragma warning disable AL0432 ExtensionManagement: Page "Extension Management"; +#pragma warning restore AL0432 begin MigrationTableMapping.FilterOutBlacklistedPublishers(PublishedApplication); PublishedApplication.SetRange(Installed, true); diff --git a/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al b/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al index 300daf75956..3df778236c9 100644 --- a/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al +++ b/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al @@ -245,7 +245,9 @@ table 4009 "Migration Table Mapping" internal procedure LookupApp(var PublishedApplication: Record "Published Application"): Boolean var +#pragma warning disable AL0432 ExtensionManagement: Page "Extension Management"; +#pragma warning restore AL0432 begin FilterOutBlacklistedPublishers(PublishedApplication); diff --git a/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 25c53270f9c..a9339d118ce 100644 --- a/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -88,7 +88,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 684fa6dd821..5e28d25d52f 100644 --- a/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,7 +89,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 647d7257c07..02b223e4af6 100644 --- a/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,7 +89,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 7c237f9cab4..3136b59e092 100644 --- a/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,7 +89,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al b/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al index 4effca7058f..18ee3cdd178 100644 --- a/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al +++ b/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al @@ -83,8 +83,9 @@ codeunit 144503 "Test Third Party Migrators" [PageHandler] [Scope('OnPrem')] +#pragma warning disable AL0432 procedure ExtensionManagementPageHandler(var ExtensionManagement: TestPage "Extension Management") +#pragma warning restore AL0432 begin end; } - diff --git a/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 7ed95851f6b..ef069aabaee 100644 --- a/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,7 +89,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 266fc775da5..0c7a108ac50 100644 --- a/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -88,7 +88,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index fb769039a3c..5bc833e50fc 100644 --- a/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,7 +89,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index eef598e9f9b..6205ebc8400 100644 --- a/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -91,7 +91,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 Tooltip = 'Open the Extension Management page.'; } action("Profiles") diff --git a/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al b/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al index b6d4e8bd999..bab5b00544b 100644 --- a/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al +++ b/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al @@ -7,7 +7,9 @@ namespace System.Environment.Configuration; using System.Apps; using System.Reflection; +#pragma warning disable AL0432 pageextension 2510 "Extension Subscribers" extends "Extension Management" +#pragma warning restore AL0432 { actions { diff --git a/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index d3fb75fd9db..64ab6918c29 100644 --- a/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,7 +89,9 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; +#pragma warning disable AL0432 RunObject = page "Extension Management"; +#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al b/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al index 3500685f722..54166ee0e98 100644 --- a/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al +++ b/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al @@ -69,7 +69,9 @@ table 9012 "AAD Application" var PublishedApplication: Record "Published Application"; begin +#pragma warning disable AL0432 if PAGE.RunModal(PAGE::"Extension Management", PublishedApplication) = ACTION::LookupOK then begin +#pragma warning restore AL0432 "App ID" := PublishedApplication."Package ID"; "App Name" := PublishedApplication.Name; exit @@ -207,4 +209,3 @@ table 9012 "AAD Application" SuperPermissionSetTxt: Label 'SUPER', Locked = true; UserNameCannotbeChangedQst: Label 'A user named %1 will be created. Do you want to continue?', Comment = '%1 a user name eq. xxx yyyyyy'; } - diff --git a/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al b/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al index fd1a6269295..9c7c26fc83c 100644 --- a/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al +++ b/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al @@ -386,7 +386,9 @@ page 1808 "Data Migration Wizard" Caption = 'Open Extension Management'; Image = Setup; InFooterBar = true; +#pragma warning disable AL0432 RunObject = Page "Extension Management"; +#pragma warning restore AL0432 Visible = Step = Step::Intro; } action(ActionDownloadTemplate) @@ -882,4 +884,3 @@ page 1808 "Data Migration Wizard" end; end; } - diff --git a/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al b/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al index 2d5b745fcd5..9e3f90c51fb 100644 --- a/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al +++ b/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al @@ -114,7 +114,9 @@ page 9883 "Permissions Overview" trigger OnAssistEdit() var PublishedApplication: Record "Published Application"; +#pragma warning disable AL0432 ExtensionManagement: Page "Extension Management"; +#pragma warning restore AL0432 begin PublishedApplication.SetRange(Installed, true); ExtensionManagement.LookupMode := true; @@ -634,4 +636,3 @@ page 9883 "Permissions Overview" InitialObjIDFilter := NewObjIDFilter; end; } - diff --git a/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al b/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al index b6ed7b0b58e..a26d6d5d3ff 100644 --- a/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al +++ b/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al @@ -16,7 +16,9 @@ codeunit 9192 "Company Creation Demo Data" if not CheckAndPromptUserToInstallContosoRequiredApps() then begin MissingDemoAppsErr.Message := DemoDataAppsNotAvailableErr; +#pragma warning disable AL0432 MissingDemoAppsErr.PageNo := Page::"Extension Management"; +#pragma warning restore AL0432 MissingDemoAppsErr.AddNavigationAction(GoToExtensionManagementMsg); Error(MissingDemoAppsErr); end diff --git a/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al b/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al index 59d3cf32786..0be42b4189a 100644 --- a/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al +++ b/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al @@ -20,7 +20,9 @@ codeunit 138999 "O365 Test Block Fin SharedDb" [Scope('OnPrem')] procedure TestExtensionManagementPageBlocked() var +#pragma warning disable AL0432 ExtensionManagement: TestPage "Extension Management"; +#pragma warning restore AL0432 begin // [GIVEN] An tenant has been provisioned under a O365 license, therefore is in sharedDB with burntin extensions Initialize(); @@ -28,7 +30,9 @@ codeunit 138999 "O365 Test Block Fin SharedDb" // [WHEN] The user tries to access PAG2500 Extension Management ExtensionManagement.Trap(); +#pragma warning disable AL0432 asserterror PAGE.Run(PAGE::"Extension Management"); +#pragma warning restore AL0432 // [THEN] An error is thrown Assert.AreEqual(GetLastErrorText, ExtensionManagementBlockedErr, 'Unexpected error'); @@ -39,11 +43,12 @@ codeunit 138999 "O365 Test Block Fin SharedDb" BindSubscription(O365TestBlockFinSharedDb); end; +#pragma warning disable AL0432 [EventSubscriber(ObjectType::Page, Page::"Extension Management", 'OnOpenPageEvent', '', true, true)] +#pragma warning restore AL0432 [Scope('OnPrem')] procedure BlockUserOnOpenExtensionManagement(var Rec: Record "Published Application") begin Error(ExtensionManagementBlockedErr); end; } - diff --git a/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al b/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al index 472525c37ed..f6e295bce54 100644 --- a/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al +++ b/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al @@ -42,7 +42,9 @@ page 9202 "Advanced Settings" trigger OnDrillDown() begin +#pragma warning disable AL0432 Page.Run(Page::"Extension Management"); +#pragma warning restore AL0432 CurrPage.Close(); end; } diff --git a/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al b/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al index b2ca73ad91d..e1195318523 100644 --- a/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al +++ b/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al @@ -5,7 +5,9 @@ namespace System.Apps.AppSource; using System.Apps; +#pragma warning disable AL0432 pageextension 2515 AppSourceExtensionManagement extends "Extension Management" +#pragma warning restore AL0432 { actions { diff --git a/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al b/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al index ae32f3d9342..bc792912755 100644 --- a/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al +++ b/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al @@ -186,7 +186,9 @@ page 8886 "Email Account Wizard" trigger OnDrillDown() begin +#pragma warning disable AL0432 Page.Run(Page::"Extension Management"); +#pragma warning restore AL0432 end; } diff --git a/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al b/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al index caec6bf8dde..11ab5ec5d87 100644 --- a/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al +++ b/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al @@ -22,14 +22,18 @@ permissionset 2504 "Extension Management - Objects" page "Extension Deployment Status" = X, page "Extension Details" = X, page "Extension Details Part" = X, +#pragma warning disable AL0432 page "Extension Installation" = X, page "Extension Logo Part" = X, page "Extension Management" = X, +#pragma warning restore AL0432 page "Extension Settings" = X, page "Extension Setup Launcher" = X, page "Extn. Installation Progress" = X, page "Extn. Orphaned App Details" = X, page "Extn Deployment Status Detail" = X, +#pragma warning disable AL0432 page "Marketplace Extn Deployment" = X, page "Upload And Deploy Extension" = X; +#pragma warning restore AL0432 } \ No newline at end of file diff --git a/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al b/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al index 2e98217f577..eb35345ed7d 100644 --- a/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al @@ -124,7 +124,9 @@ page 2508 "Extension Deployment Status" ApplicationArea = All; Caption = 'Upload Extension'; Image = Import; +#pragma warning disable AL0432 RunObject = page "Upload And Deploy Extension"; +#pragma warning restore AL0432 ToolTip = 'Upload an extension to your application.'; Ellipsis = true; Visible = IsSaaS; @@ -138,7 +140,9 @@ page 2508 "Extension Deployment Status" ApplicationArea = All; ToolTip = 'Open the Extension Management page.'; Image = Setup; +#pragma warning disable AL0432 RunObject = Page "Extension Management"; +#pragma warning restore AL0432 } } area(Promoted) @@ -187,4 +191,3 @@ page 2508 "Extension Deployment Status" IsSaaS: Boolean; } - diff --git a/src/System Application/App/Extension Management/src/ExtensionInstallation.Page.al b/src/System Application/App/Extension Management/src/ExtensionInstallation.Page.al index 3586fb0641f..94f223f8cbc 100644 --- a/src/System Application/App/Extension Management/src/ExtensionInstallation.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionInstallation.Page.al @@ -13,6 +13,9 @@ using System; page 2503 "Extension Installation" { Extensible = false; + ObsoleteReason = 'Use the Business Central admin center to install and manage extensions.'; + ObsoleteState = Pending; + ObsoleteTag = '29.0'; PageType = Card; SourceTable = "Extension Installation"; SourceTableTemporary = true; @@ -80,4 +83,3 @@ page 2503 "Extension Installation" end; } - diff --git a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al index a4f906fc23e..9b686803105 100644 --- a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al @@ -16,6 +16,9 @@ using System.Integration; page 2500 "Extension Management" { Caption = 'Extension Management'; + ObsoleteReason = 'Use the Business Central admin center to upload and manage per-tenant extensions.'; + ObsoleteState = Pending; + ObsoleteTag = '29.0'; AdditionalSearchTerms = 'app,add-in,customize,plug-in,appsource'; ApplicationArea = All; DeleteAllowed = false; @@ -382,9 +385,24 @@ page 2500 "Extension Management" ActionsEnabled := false; HelpActionVisible := false; + ShowExtensionManagementDeprecationNotification(); ShowUninstalledExtensionsNotification(); end; + local procedure ShowExtensionManagementDeprecationNotification() + var + DeprecationNotification: Notification; + begin + if not IsSaaS then + exit; + + DeprecationNotification.Id := ExtensionManagementDeprecationNotificationIdTok; + DeprecationNotification.Scope := NotificationScope::LocalScope; + DeprecationNotification.Message(ExtensionManagementDeprecationMsg); + DeprecationNotification.AddAction(OpenAdminCenterLbl, Codeunit::"Extension Operation Impl", 'OpenAdminCenter'); + DeprecationNotification.Send(); + end; + local procedure ShowUninstalledExtensionsNotification() var ExtensionDatabaseSnapshot: Record "Extension Database Snapshot"; @@ -429,6 +447,9 @@ page 2500 "Extension Management" ShowOrphanedDataLbl: Label 'Show Data'; MarkAllAsReviewedLbl: Label 'Mark All as Reviewed'; OrphanedDataNotificationIdTok: Label 'b1c5a678-2e3f-4d91-a6b0-9f8e7d6c5b4a', Locked = true; + ExtensionManagementDeprecationMsg: Label 'Extension management is moving to the Business Central admin center. Use the admin center to upload and manage per-tenant extensions. This page will become unavailable in a future release.'; + OpenAdminCenterLbl: Label 'Open admin center'; + ExtensionManagementDeprecationNotificationIdTok: Label '3be91c11-8195-4c65-be23-20fddbea9bb7', Locked = true; protected procedure IsSaasEnvironment(): boolean begin diff --git a/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al b/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al index 6b3cac1b2fd..f4d98151c72 100644 --- a/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al +++ b/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al @@ -220,7 +220,9 @@ codeunit 2501 "Extension Marketplace" procedure InstallAppsourceExtension(MarketplaceApplicationId: Text; TelemetryURL: Text); var TempExtensionInstallationRecord: Record "Extension Installation"; +#pragma warning disable AL0432 ExtensionInstallationPage: Page "Extension Installation"; +#pragma warning restore AL0432 AppId: Guid; begin AppId := MapMarketplaceIdToAppId(MarketplaceApplicationId); @@ -240,7 +242,9 @@ codeunit 2501 "Extension Marketplace" procedure InstallAppsourceExtension(AppId: Guid; TelemetryURL: Text) var TempExtensionInstallationRecord: Record "Extension Installation"; +#pragma warning disable AL0432 ExtensionInstallationPage: Page "Extension Installation"; +#pragma warning restore AL0432 begin if IsNullGuid(AppId) then begin Session.LogMessage('0000I4S', StrSubstNo(MissingAppIdErr, AppId), Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', TelemetryTok); @@ -298,7 +302,9 @@ codeunit 2501 "Extension Marketplace" [TryFunction] procedure InstallExtension(MarketplaceApplicationID: Text; ResponseURL: Text) var +#pragma warning disable AL0432 MarketplaceExtnDeployment: Page "Marketplace Extn Deployment"; +#pragma warning restore AL0432 ID: Guid; begin ID := MapMarketplaceIdToAppId(MarketplaceApplicationID); diff --git a/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al b/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al index 544226269a6..3da2a958ea8 100644 --- a/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al +++ b/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al @@ -37,6 +37,7 @@ codeunit 2503 "Extension Operation Impl" InstallationFailedOpenDetailsTxt: Label 'App installation failed. User has chosen to see the details.'; InstallationFailedDoNotOpenDetailsTxt: Label 'App installation failed. User has chosen not to check out the details.'; PageCaptionTok: Label '%1 %2', Comment = '%1 = Page default caption %2 = App name'; + BCAdminCenterSaaSLinkTxt: Label '%1/admin', Comment = '%1 = Business Central URL without the environment segment', Locked = true; local procedure AssertIsInitialized() begin @@ -149,6 +150,18 @@ codeunit 2503 "Extension Operation Impl" exit(true); end; + procedure OpenAdminCenter(Notification: Notification) + var + EnvironmentInformation: Codeunit "Environment Information"; + Url: Text; + begin + if not EnvironmentInformation.IsSaaS() then + exit; + + Url := GetUrl(ClientType::Web); + Hyperlink(StrSubstNo(BCAdminCenterSaaSLinkTxt, CopyStr(Url, 1, Url.LastIndexOf('/') - 1))); + end; + procedure UnpublishUninstalledPerTenantExtension(PackageID: Guid) begin CheckPermissions(); diff --git a/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al b/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al index 9042f0ef4d3..98a54c07277 100644 --- a/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al +++ b/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al @@ -13,6 +13,9 @@ using System.Globalization; page 2510 "Marketplace Extn Deployment" { Extensible = false; + ObsoleteReason = 'Use the Business Central admin center to install and manage extensions.'; + ObsoleteState = Pending; + ObsoleteTag = '29.0'; Caption = 'Install extension'; PageType = NavigatePage; ContextSensitiveHelpPage = 'ui-extensions'; diff --git a/src/System Application/App/Extension Management/src/UploadAndDeployExtension.Page.al b/src/System Application/App/Extension Management/src/UploadAndDeployExtension.Page.al index 032a9087293..2720cfa9cca 100644 --- a/src/System Application/App/Extension Management/src/UploadAndDeployExtension.Page.al +++ b/src/System Application/App/Extension Management/src/UploadAndDeployExtension.Page.al @@ -13,6 +13,9 @@ using System.Globalization; page 2507 "Upload And Deploy Extension" { Extensible = false; + ObsoleteReason = 'Use the Business Central admin center to upload and manage per-tenant extensions.'; + ObsoleteState = Pending; + ObsoleteTag = '29.0'; PageType = NavigatePage; SourceTable = "Published Application"; SourceTableTemporary = true; @@ -183,4 +186,3 @@ page 2507 "Upload And Deploy Extension" DisclaimerLbl: Label 'Per-Tenant Extension (PTE) Disclaimer'; IsAccepted: Boolean; } - diff --git a/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al b/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al index 29048f87b70..0d75cd4ac51 100644 --- a/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al +++ b/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al @@ -163,7 +163,9 @@ page 9451 "File Account Wizard" trigger OnDrillDown() begin +#pragma warning disable AL0432 Page.Run(Page::"Extension Management"); +#pragma warning restore AL0432 end; } field(AppSource; AppSourceTok) diff --git a/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al b/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al index 9aa361f4c37..333eb152125 100644 --- a/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al +++ b/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al @@ -17,7 +17,9 @@ codeunit 135109 "Extension Mgt. Test Library" ExtensionInstallationImpl.RunExtensionSetup(AppId); end; +#pragma warning disable AL0432 procedure SetAppId(Id: Guid; var MarketplaceExtnDeployment: Page "Marketplace Extn Deployment") +#pragma warning restore AL0432 begin MarketplaceExtnDeployment.SetAppID(Id); end; diff --git a/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al b/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al index ad2f870a516..0519b9834ec 100644 --- a/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al +++ b/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al @@ -31,7 +31,9 @@ codeunit 133101 "Data Out Of Geo. App Test" [HandlerFunctions('InstallationPageHandler')] procedure NoOnPremNotificationsWithOutOfGeoAppTest() var +#pragma warning disable AL0432 MarketPlaceExtnDeployment: Page "Marketplace Extn Deployment"; +#pragma warning restore AL0432 begin PermissionsMock.Set('Exten. Mgt. - Admin'); @@ -58,7 +60,9 @@ codeunit 133101 "Data Out Of Geo. App Test" [HandlerFunctions('InstallationPageHandler')] procedure NoOnPremNotificationsWithoutOutOfGeoAppTest() var +#pragma warning disable AL0432 MarketPlaceExtnDeployment: Page "Marketplace Extn Deployment"; +#pragma warning restore AL0432 begin PermissionsMock.Set('Exten. Mgt. - Admin'); @@ -82,7 +86,9 @@ codeunit 133101 "Data Out Of Geo. App Test" [HandlerFunctions('InstallationPageHandler,NotificationHandler')] procedure SaaSNotificationsTest() var +#pragma warning disable AL0432 MarketPlaceExtnDeployment: Page "Marketplace Extn Deployment"; +#pragma warning restore AL0432 begin PermissionsMock.Set('Exten. Mgt. - Admin'); @@ -162,7 +168,9 @@ codeunit 133101 "Data Out Of Geo. App Test" [ModalPageHandler] [Scope('OnPrem')] +#pragma warning disable AL0432 procedure InstallationPageHandler(var MarketPlaceExtnDeployment: TestPage "Marketplace Extn Deployment") +#pragma warning restore AL0432 begin MarketPlaceExtnDeployment.OK().Invoke(); end; diff --git a/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al b/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al index e9d4210caa1..aa770b4509a 100644 --- a/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al +++ b/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al @@ -9,6 +9,7 @@ using System.Apps; using System.Environment.Configuration; using System.Media; using System.TestLibraries.Apps; +using System.TestLibraries.Environment; using System.TestLibraries.Security.AccessControl; using System.TestLibraries.Utilities; @@ -29,9 +30,11 @@ codeunit 133100 "Extension Management Test" var ExtensionManagement: Codeunit "Extension Management"; + EnvironmentInfoTestLibrary: Codeunit "Environment Info Test Library"; ExtensionMgtTestLibrary: Codeunit "Extension Mgt. Test Library"; Assert: Codeunit "Library Assert"; PermissionsMock: Codeunit "Permissions Mock"; + DeprecationNotificationSent: Boolean; MainAppId: Guid; DependingAppId: Guid; NotInstalledSuccErr: Label 'Extension was not installed succesfully'; @@ -43,6 +46,46 @@ codeunit 133100 "Extension Management Test" PackageIdExistsErr: Label 'The returned extension pakage does not exist'; NullPackageIdErr: Label 'There should not be an extension corresponding to the returned package ID'; PackageIdExtensionVersionErr: Label 'The package Id does not poin to the correct extension version'; + ExtensionManagementDeprecationMsg: Label 'Extension management is moving to the Business Central admin center. Use the admin center to upload and manage per-tenant extensions. This page will become unavailable in a future release.'; + + [Test] + [Scope('OnPrem')] + [HandlerFunctions('ExtensionManagementNotificationHandler')] + procedure ExtensionManagementDeprecationNotificationShownInSaaS() + var +#pragma warning disable AL0432 + ExtensionManagementPage: TestPage "Extension Management"; +#pragma warning restore AL0432 + begin + PermissionsMock.Set('Exten. Mgt. - Admin'); + EnvironmentInfoTestLibrary.SetTestabilitySoftwareAsAService(true); + DeprecationNotificationSent := false; + + ExtensionManagementPage.OpenView(); + ExtensionManagementPage.Close(); + + Assert.IsTrue(DeprecationNotificationSent, 'The Extension Management deprecation notification was not shown.'); + EnvironmentInfoTestLibrary.SetTestabilitySoftwareAsAService(false); + end; + + [Test] + [Scope('OnPrem')] + [HandlerFunctions('ExtensionManagementNotificationHandler')] + procedure ExtensionManagementDeprecationNotificationNotShownOnPrem() + var +#pragma warning disable AL0432 + ExtensionManagementPage: TestPage "Extension Management"; +#pragma warning restore AL0432 + begin + PermissionsMock.Set('Exten. Mgt. - Admin'); + EnvironmentInfoTestLibrary.SetTestabilitySoftwareAsAService(false); + DeprecationNotificationSent := false; + + ExtensionManagementPage.OpenView(); + ExtensionManagementPage.Close(); + + Assert.IsFalse(DeprecationNotificationSent, 'The Extension Management deprecation notification was shown on-premises.'); + end; local procedure SetNavAppIds() begin @@ -552,6 +595,15 @@ codeunit 133100 "Extension Management Test" begin end; + [SendNotificationHandler] + procedure ExtensionManagementNotificationHandler(var Notification: Notification): Boolean + begin + if Notification.Message = ExtensionManagementDeprecationMsg then + DeprecationNotificationSent := true; + + exit(true); + end; + [ModalPageHandler] procedure ExtensionSettingsModalHandler(var ExtensionSettings: TestPage "Extension Settings") begin @@ -563,4 +615,3 @@ codeunit 133100 "Extension Management Test" Reply := true; end; } - From 989e660ed779c9d4f24b62454eb73aa7ebcaa434 Mon Sep 17 00:00:00 2001 From: Pooya Kharamesh Date: Fri, 7 Aug 2026 13:02:31 +0200 Subject: [PATCH 2/5] Limit extension deprecation changes to main pages Keep the deprecation notice and pending obsoletion scoped to Extension Management, PTE upload, and the AppSource installation launcher. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ExtensionManagementExt.PageExt.al | 2 - .../ConnectAppsVisibilityTests.Codeunit.al | 4 -- .../pages/AddMigrationTableMappings.Page.al | 2 - .../src/tables/MigrationTableMapping.Table.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../Local/TestThirdPartyMigrators.Codeunit.al | 3 +- .../AdministratorMainRoleCenter.Page.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../BaseApp/ExtensionSubscribers.PageExt.al | 2 - .../AdministratorMainRoleCenter.Page.al | 2 - .../AadApplication/AADApplication.Table.al | 3 +- .../DataMigration/DataMigrationWizard.Page.al | 3 +- .../Permissions/PermissionsOverview.Page.al | 3 +- .../CompanyCreationDemoData.Codeunit.al | 2 - .../O365TestBlockFinSharedDb.Codeunit.al | 7 +-- .../src/AdvancedSettings.Page.al | 2 - .../AppSourceExtensionManagement.PageExt.al | 2 - .../src/Account/EmailAccountWizard.Page.al | 2 - ...xtensionManagementObjects.PermissionSet.al | 4 -- .../src/ExtensionDeploymentStatus.Page.al | 5 +- .../src/ExtensionManagement.Page.al | 2 - .../src/ExtensionMarketplace.Codeunit.al | 6 --- .../src/ExtensionOperationImpl.Codeunit.al | 13 ----- .../src/MarketplaceExtnDeployment.Page.al | 3 -- .../src/Account/FileAccountWizard.Page.al | 2 - .../src/ExtensionMgtTestLibrary.Codeunit.al | 2 - .../src/DataOutOfGeoAppTest.Codeunit.al | 8 --- .../src/ExtensionManagementTest.Codeunit.al | 53 +------------------ 33 files changed, 7 insertions(+), 148 deletions(-) diff --git a/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al b/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al index 32acba49c8d..629b38ce5d1 100644 --- a/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al +++ b/src/Apps/W1/ConnectivityApps/app/src/Page Extensions/ExtensionManagementExt.PageExt.al @@ -4,9 +4,7 @@ // ------------------------------------------------------------------------------------------------ #pragma warning disable AA0247 -#pragma warning disable AL0432 pageextension 20357 "Extension Management Ext." extends "Extension Management" -#pragma warning restore AL0432 { actions { diff --git a/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al b/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al index 46d27c79066..e825ba91bcc 100644 --- a/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al +++ b/src/Apps/W1/ConnectivityApps/test/src/ConnectAppsVisibilityTests.Codeunit.al @@ -285,9 +285,7 @@ codeunit 139534 "Connect. Apps Visibility Tests" var CompanyInformation: Record "Company Information"; ConnectivityAppsLocationMock: Codeunit "Connectivity Apps Loc. Mock"; -#pragma warning disable AL0432 ExtensionManagement: TestPage "Extension Management"; -#pragma warning restore AL0432 begin // [GIVEN] Banking Apps exist Initialize(); @@ -311,9 +309,7 @@ codeunit 139534 "Connect. Apps Visibility Tests" var CompanyInformation: Record "Company Information"; ConnectivityAppsLocationMock: Codeunit "Connectivity Apps Loc. Mock"; -#pragma warning disable AL0432 ExtensionManagement: TestPage "Extension Management"; -#pragma warning restore AL0432 begin // [GIVEN] Banking Apps does not exist Initialize(); diff --git a/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al b/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al index 0a4e2f928e9..241543c0399 100644 --- a/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al +++ b/src/Apps/W1/HybridBaseDeployment/app/src/pages/AddMigrationTableMappings.Page.al @@ -111,9 +111,7 @@ page 40010 "Add Migration Table Mappings" var PublishedApplication: Record "Published Application"; MigrationTableMapping: Record "Migration Table Mapping"; -#pragma warning disable AL0432 ExtensionManagement: Page "Extension Management"; -#pragma warning restore AL0432 begin MigrationTableMapping.FilterOutBlacklistedPublishers(PublishedApplication); PublishedApplication.SetRange(Installed, true); diff --git a/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al b/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al index 3df778236c9..300daf75956 100644 --- a/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al +++ b/src/Apps/W1/HybridBaseDeployment/app/src/tables/MigrationTableMapping.Table.al @@ -245,9 +245,7 @@ table 4009 "Migration Table Mapping" internal procedure LookupApp(var PublishedApplication: Record "Published Application"): Boolean var -#pragma warning disable AL0432 ExtensionManagement: Page "Extension Management"; -#pragma warning restore AL0432 begin FilterOutBlacklistedPublishers(PublishedApplication); diff --git a/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index a9339d118ce..25c53270f9c 100644 --- a/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/APAC/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -88,9 +88,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 5e28d25d52f..684fa6dd821 100644 --- a/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/CH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,9 +89,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 02b223e4af6..647d7257c07 100644 --- a/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/DACH/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,9 +89,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 3136b59e092..7c237f9cab4 100644 --- a/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/GB/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,9 +89,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al b/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al index 18ee3cdd178..4effca7058f 100644 --- a/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al +++ b/src/Layers/GB/Tests/Local/TestThirdPartyMigrators.Codeunit.al @@ -83,9 +83,8 @@ codeunit 144503 "Test Third Party Migrators" [PageHandler] [Scope('OnPrem')] -#pragma warning disable AL0432 procedure ExtensionManagementPageHandler(var ExtensionManagement: TestPage "Extension Management") -#pragma warning restore AL0432 begin end; } + diff --git a/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index ef069aabaee..7ed95851f6b 100644 --- a/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/IT/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,9 +89,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 0c7a108ac50..266fc775da5 100644 --- a/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/NA/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -88,9 +88,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 5bc833e50fc..fb769039a3c 100644 --- a/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/NL/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,9 +89,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 6205ebc8400..eef598e9f9b 100644 --- a/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/NO/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -91,9 +91,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 Tooltip = 'Open the Extension Management page.'; } action("Profiles") diff --git a/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al b/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al index bab5b00544b..b6d4e8bd999 100644 --- a/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al +++ b/src/Layers/W1/BaseApp/ExtensionSubscribers.PageExt.al @@ -7,9 +7,7 @@ namespace System.Environment.Configuration; using System.Apps; using System.Reflection; -#pragma warning disable AL0432 pageextension 2510 "Extension Subscribers" extends "Extension Management" -#pragma warning restore AL0432 { actions { diff --git a/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al b/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al index 64ab6918c29..d3fb75fd9db 100644 --- a/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al +++ b/src/Layers/W1/BaseApp/RoleCenters/AdministratorMainRoleCenter.Page.al @@ -89,9 +89,7 @@ page 8900 "Administrator Main Role Center" { ApplicationArea = Basic, Suite; Caption = 'Extension Management'; -#pragma warning disable AL0432 RunObject = page "Extension Management"; -#pragma warning restore AL0432 } action("Profiles") { diff --git a/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al b/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al index 54166ee0e98..3500685f722 100644 --- a/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al +++ b/src/Layers/W1/BaseApp/System/AadApplication/AADApplication.Table.al @@ -69,9 +69,7 @@ table 9012 "AAD Application" var PublishedApplication: Record "Published Application"; begin -#pragma warning disable AL0432 if PAGE.RunModal(PAGE::"Extension Management", PublishedApplication) = ACTION::LookupOK then begin -#pragma warning restore AL0432 "App ID" := PublishedApplication."Package ID"; "App Name" := PublishedApplication.Name; exit @@ -209,3 +207,4 @@ table 9012 "AAD Application" SuperPermissionSetTxt: Label 'SUPER', Locked = true; UserNameCannotbeChangedQst: Label 'A user named %1 will be created. Do you want to continue?', Comment = '%1 a user name eq. xxx yyyyyy'; } + diff --git a/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al b/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al index 9c7c26fc83c..fd1a6269295 100644 --- a/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al +++ b/src/Layers/W1/BaseApp/System/DataMigration/DataMigrationWizard.Page.al @@ -386,9 +386,7 @@ page 1808 "Data Migration Wizard" Caption = 'Open Extension Management'; Image = Setup; InFooterBar = true; -#pragma warning disable AL0432 RunObject = Page "Extension Management"; -#pragma warning restore AL0432 Visible = Step = Step::Intro; } action(ActionDownloadTemplate) @@ -884,3 +882,4 @@ page 1808 "Data Migration Wizard" end; end; } + diff --git a/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al b/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al index 9e3f90c51fb..2d5b745fcd5 100644 --- a/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al +++ b/src/Layers/W1/BaseApp/System/Permissions/PermissionsOverview.Page.al @@ -114,9 +114,7 @@ page 9883 "Permissions Overview" trigger OnAssistEdit() var PublishedApplication: Record "Published Application"; -#pragma warning disable AL0432 ExtensionManagement: Page "Extension Management"; -#pragma warning restore AL0432 begin PublishedApplication.SetRange(Installed, true); ExtensionManagement.LookupMode := true; @@ -636,3 +634,4 @@ page 9883 "Permissions Overview" InitialObjIDFilter := NewObjIDFilter; end; } + diff --git a/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al b/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al index a26d6d5d3ff..b6ed7b0b58e 100644 --- a/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al +++ b/src/Layers/W1/BaseApp/Utilities/CompanyCreationDemoData.Codeunit.al @@ -16,9 +16,7 @@ codeunit 9192 "Company Creation Demo Data" if not CheckAndPromptUserToInstallContosoRequiredApps() then begin MissingDemoAppsErr.Message := DemoDataAppsNotAvailableErr; -#pragma warning disable AL0432 MissingDemoAppsErr.PageNo := Page::"Extension Management"; -#pragma warning restore AL0432 MissingDemoAppsErr.AddNavigationAction(GoToExtensionManagementMsg); Error(MissingDemoAppsErr); end diff --git a/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al b/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al index 0be42b4189a..59d3cf32786 100644 --- a/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al +++ b/src/Layers/W1/Tests/Permissions/O365TestBlockFinSharedDb.Codeunit.al @@ -20,9 +20,7 @@ codeunit 138999 "O365 Test Block Fin SharedDb" [Scope('OnPrem')] procedure TestExtensionManagementPageBlocked() var -#pragma warning disable AL0432 ExtensionManagement: TestPage "Extension Management"; -#pragma warning restore AL0432 begin // [GIVEN] An tenant has been provisioned under a O365 license, therefore is in sharedDB with burntin extensions Initialize(); @@ -30,9 +28,7 @@ codeunit 138999 "O365 Test Block Fin SharedDb" // [WHEN] The user tries to access PAG2500 Extension Management ExtensionManagement.Trap(); -#pragma warning disable AL0432 asserterror PAGE.Run(PAGE::"Extension Management"); -#pragma warning restore AL0432 // [THEN] An error is thrown Assert.AreEqual(GetLastErrorText, ExtensionManagementBlockedErr, 'Unexpected error'); @@ -43,12 +39,11 @@ codeunit 138999 "O365 Test Block Fin SharedDb" BindSubscription(O365TestBlockFinSharedDb); end; -#pragma warning disable AL0432 [EventSubscriber(ObjectType::Page, Page::"Extension Management", 'OnOpenPageEvent', '', true, true)] -#pragma warning restore AL0432 [Scope('OnPrem')] procedure BlockUserOnOpenExtensionManagement(var Rec: Record "Published Application") begin Error(ExtensionManagementBlockedErr); end; } + diff --git a/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al b/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al index f6e295bce54..472525c37ed 100644 --- a/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al +++ b/src/System Application/App/Advanced Settings/src/AdvancedSettings.Page.al @@ -42,9 +42,7 @@ page 9202 "Advanced Settings" trigger OnDrillDown() begin -#pragma warning disable AL0432 Page.Run(Page::"Extension Management"); -#pragma warning restore AL0432 CurrPage.Close(); end; } diff --git a/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al b/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al index e1195318523..b2ca73ad91d 100644 --- a/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al +++ b/src/System Application/App/AppSource Gallery/src/AppSourceExtensionManagement.PageExt.al @@ -5,9 +5,7 @@ namespace System.Apps.AppSource; using System.Apps; -#pragma warning disable AL0432 pageextension 2515 AppSourceExtensionManagement extends "Extension Management" -#pragma warning restore AL0432 { actions { diff --git a/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al b/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al index bc792912755..ae32f3d9342 100644 --- a/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al +++ b/src/System Application/App/Email/src/Account/EmailAccountWizard.Page.al @@ -186,9 +186,7 @@ page 8886 "Email Account Wizard" trigger OnDrillDown() begin -#pragma warning disable AL0432 Page.Run(Page::"Extension Management"); -#pragma warning restore AL0432 end; } diff --git a/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al b/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al index 11ab5ec5d87..caec6bf8dde 100644 --- a/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al +++ b/src/System Application/App/Extension Management/permissions/ExtensionManagementObjects.PermissionSet.al @@ -22,18 +22,14 @@ permissionset 2504 "Extension Management - Objects" page "Extension Deployment Status" = X, page "Extension Details" = X, page "Extension Details Part" = X, -#pragma warning disable AL0432 page "Extension Installation" = X, page "Extension Logo Part" = X, page "Extension Management" = X, -#pragma warning restore AL0432 page "Extension Settings" = X, page "Extension Setup Launcher" = X, page "Extn. Installation Progress" = X, page "Extn. Orphaned App Details" = X, page "Extn Deployment Status Detail" = X, -#pragma warning disable AL0432 page "Marketplace Extn Deployment" = X, page "Upload And Deploy Extension" = X; -#pragma warning restore AL0432 } \ No newline at end of file diff --git a/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al b/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al index eb35345ed7d..2e98217f577 100644 --- a/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionDeploymentStatus.Page.al @@ -124,9 +124,7 @@ page 2508 "Extension Deployment Status" ApplicationArea = All; Caption = 'Upload Extension'; Image = Import; -#pragma warning disable AL0432 RunObject = page "Upload And Deploy Extension"; -#pragma warning restore AL0432 ToolTip = 'Upload an extension to your application.'; Ellipsis = true; Visible = IsSaaS; @@ -140,9 +138,7 @@ page 2508 "Extension Deployment Status" ApplicationArea = All; ToolTip = 'Open the Extension Management page.'; Image = Setup; -#pragma warning disable AL0432 RunObject = Page "Extension Management"; -#pragma warning restore AL0432 } } area(Promoted) @@ -191,3 +187,4 @@ page 2508 "Extension Deployment Status" IsSaaS: Boolean; } + diff --git a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al index 9b686803105..2eacce6319f 100644 --- a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al @@ -399,7 +399,6 @@ page 2500 "Extension Management" DeprecationNotification.Id := ExtensionManagementDeprecationNotificationIdTok; DeprecationNotification.Scope := NotificationScope::LocalScope; DeprecationNotification.Message(ExtensionManagementDeprecationMsg); - DeprecationNotification.AddAction(OpenAdminCenterLbl, Codeunit::"Extension Operation Impl", 'OpenAdminCenter'); DeprecationNotification.Send(); end; @@ -448,7 +447,6 @@ page 2500 "Extension Management" MarkAllAsReviewedLbl: Label 'Mark All as Reviewed'; OrphanedDataNotificationIdTok: Label 'b1c5a678-2e3f-4d91-a6b0-9f8e7d6c5b4a', Locked = true; ExtensionManagementDeprecationMsg: Label 'Extension management is moving to the Business Central admin center. Use the admin center to upload and manage per-tenant extensions. This page will become unavailable in a future release.'; - OpenAdminCenterLbl: Label 'Open admin center'; ExtensionManagementDeprecationNotificationIdTok: Label '3be91c11-8195-4c65-be23-20fddbea9bb7', Locked = true; protected procedure IsSaasEnvironment(): boolean diff --git a/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al b/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al index f4d98151c72..6b3cac1b2fd 100644 --- a/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al +++ b/src/System Application/App/Extension Management/src/ExtensionMarketplace.Codeunit.al @@ -220,9 +220,7 @@ codeunit 2501 "Extension Marketplace" procedure InstallAppsourceExtension(MarketplaceApplicationId: Text; TelemetryURL: Text); var TempExtensionInstallationRecord: Record "Extension Installation"; -#pragma warning disable AL0432 ExtensionInstallationPage: Page "Extension Installation"; -#pragma warning restore AL0432 AppId: Guid; begin AppId := MapMarketplaceIdToAppId(MarketplaceApplicationId); @@ -242,9 +240,7 @@ codeunit 2501 "Extension Marketplace" procedure InstallAppsourceExtension(AppId: Guid; TelemetryURL: Text) var TempExtensionInstallationRecord: Record "Extension Installation"; -#pragma warning disable AL0432 ExtensionInstallationPage: Page "Extension Installation"; -#pragma warning restore AL0432 begin if IsNullGuid(AppId) then begin Session.LogMessage('0000I4S', StrSubstNo(MissingAppIdErr, AppId), Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', TelemetryTok); @@ -302,9 +298,7 @@ codeunit 2501 "Extension Marketplace" [TryFunction] procedure InstallExtension(MarketplaceApplicationID: Text; ResponseURL: Text) var -#pragma warning disable AL0432 MarketplaceExtnDeployment: Page "Marketplace Extn Deployment"; -#pragma warning restore AL0432 ID: Guid; begin ID := MapMarketplaceIdToAppId(MarketplaceApplicationID); diff --git a/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al b/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al index 3da2a958ea8..544226269a6 100644 --- a/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al +++ b/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al @@ -37,7 +37,6 @@ codeunit 2503 "Extension Operation Impl" InstallationFailedOpenDetailsTxt: Label 'App installation failed. User has chosen to see the details.'; InstallationFailedDoNotOpenDetailsTxt: Label 'App installation failed. User has chosen not to check out the details.'; PageCaptionTok: Label '%1 %2', Comment = '%1 = Page default caption %2 = App name'; - BCAdminCenterSaaSLinkTxt: Label '%1/admin', Comment = '%1 = Business Central URL without the environment segment', Locked = true; local procedure AssertIsInitialized() begin @@ -150,18 +149,6 @@ codeunit 2503 "Extension Operation Impl" exit(true); end; - procedure OpenAdminCenter(Notification: Notification) - var - EnvironmentInformation: Codeunit "Environment Information"; - Url: Text; - begin - if not EnvironmentInformation.IsSaaS() then - exit; - - Url := GetUrl(ClientType::Web); - Hyperlink(StrSubstNo(BCAdminCenterSaaSLinkTxt, CopyStr(Url, 1, Url.LastIndexOf('/') - 1))); - end; - procedure UnpublishUninstalledPerTenantExtension(PackageID: Guid) begin CheckPermissions(); diff --git a/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al b/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al index 98a54c07277..9042f0ef4d3 100644 --- a/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al +++ b/src/System Application/App/Extension Management/src/MarketplaceExtnDeployment.Page.al @@ -13,9 +13,6 @@ using System.Globalization; page 2510 "Marketplace Extn Deployment" { Extensible = false; - ObsoleteReason = 'Use the Business Central admin center to install and manage extensions.'; - ObsoleteState = Pending; - ObsoleteTag = '29.0'; Caption = 'Install extension'; PageType = NavigatePage; ContextSensitiveHelpPage = 'ui-extensions'; diff --git a/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al b/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al index 0d75cd4ac51..29048f87b70 100644 --- a/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al +++ b/src/System Application/App/External File Storage/src/Account/FileAccountWizard.Page.al @@ -163,9 +163,7 @@ page 9451 "File Account Wizard" trigger OnDrillDown() begin -#pragma warning disable AL0432 Page.Run(Page::"Extension Management"); -#pragma warning restore AL0432 end; } field(AppSource; AppSourceTok) diff --git a/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al b/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al index 333eb152125..9aa361f4c37 100644 --- a/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al +++ b/src/System Application/Test Library/Extension Management/src/ExtensionMgtTestLibrary.Codeunit.al @@ -17,9 +17,7 @@ codeunit 135109 "Extension Mgt. Test Library" ExtensionInstallationImpl.RunExtensionSetup(AppId); end; -#pragma warning disable AL0432 procedure SetAppId(Id: Guid; var MarketplaceExtnDeployment: Page "Marketplace Extn Deployment") -#pragma warning restore AL0432 begin MarketplaceExtnDeployment.SetAppID(Id); end; diff --git a/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al b/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al index 0519b9834ec..ad2f870a516 100644 --- a/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al +++ b/src/System Application/Test/Extension Management/src/DataOutOfGeoAppTest.Codeunit.al @@ -31,9 +31,7 @@ codeunit 133101 "Data Out Of Geo. App Test" [HandlerFunctions('InstallationPageHandler')] procedure NoOnPremNotificationsWithOutOfGeoAppTest() var -#pragma warning disable AL0432 MarketPlaceExtnDeployment: Page "Marketplace Extn Deployment"; -#pragma warning restore AL0432 begin PermissionsMock.Set('Exten. Mgt. - Admin'); @@ -60,9 +58,7 @@ codeunit 133101 "Data Out Of Geo. App Test" [HandlerFunctions('InstallationPageHandler')] procedure NoOnPremNotificationsWithoutOutOfGeoAppTest() var -#pragma warning disable AL0432 MarketPlaceExtnDeployment: Page "Marketplace Extn Deployment"; -#pragma warning restore AL0432 begin PermissionsMock.Set('Exten. Mgt. - Admin'); @@ -86,9 +82,7 @@ codeunit 133101 "Data Out Of Geo. App Test" [HandlerFunctions('InstallationPageHandler,NotificationHandler')] procedure SaaSNotificationsTest() var -#pragma warning disable AL0432 MarketPlaceExtnDeployment: Page "Marketplace Extn Deployment"; -#pragma warning restore AL0432 begin PermissionsMock.Set('Exten. Mgt. - Admin'); @@ -168,9 +162,7 @@ codeunit 133101 "Data Out Of Geo. App Test" [ModalPageHandler] [Scope('OnPrem')] -#pragma warning disable AL0432 procedure InstallationPageHandler(var MarketPlaceExtnDeployment: TestPage "Marketplace Extn Deployment") -#pragma warning restore AL0432 begin MarketPlaceExtnDeployment.OK().Invoke(); end; diff --git a/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al b/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al index aa770b4509a..e9d4210caa1 100644 --- a/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al +++ b/src/System Application/Test/Extension Management/src/ExtensionManagementTest.Codeunit.al @@ -9,7 +9,6 @@ using System.Apps; using System.Environment.Configuration; using System.Media; using System.TestLibraries.Apps; -using System.TestLibraries.Environment; using System.TestLibraries.Security.AccessControl; using System.TestLibraries.Utilities; @@ -30,11 +29,9 @@ codeunit 133100 "Extension Management Test" var ExtensionManagement: Codeunit "Extension Management"; - EnvironmentInfoTestLibrary: Codeunit "Environment Info Test Library"; ExtensionMgtTestLibrary: Codeunit "Extension Mgt. Test Library"; Assert: Codeunit "Library Assert"; PermissionsMock: Codeunit "Permissions Mock"; - DeprecationNotificationSent: Boolean; MainAppId: Guid; DependingAppId: Guid; NotInstalledSuccErr: Label 'Extension was not installed succesfully'; @@ -46,46 +43,6 @@ codeunit 133100 "Extension Management Test" PackageIdExistsErr: Label 'The returned extension pakage does not exist'; NullPackageIdErr: Label 'There should not be an extension corresponding to the returned package ID'; PackageIdExtensionVersionErr: Label 'The package Id does not poin to the correct extension version'; - ExtensionManagementDeprecationMsg: Label 'Extension management is moving to the Business Central admin center. Use the admin center to upload and manage per-tenant extensions. This page will become unavailable in a future release.'; - - [Test] - [Scope('OnPrem')] - [HandlerFunctions('ExtensionManagementNotificationHandler')] - procedure ExtensionManagementDeprecationNotificationShownInSaaS() - var -#pragma warning disable AL0432 - ExtensionManagementPage: TestPage "Extension Management"; -#pragma warning restore AL0432 - begin - PermissionsMock.Set('Exten. Mgt. - Admin'); - EnvironmentInfoTestLibrary.SetTestabilitySoftwareAsAService(true); - DeprecationNotificationSent := false; - - ExtensionManagementPage.OpenView(); - ExtensionManagementPage.Close(); - - Assert.IsTrue(DeprecationNotificationSent, 'The Extension Management deprecation notification was not shown.'); - EnvironmentInfoTestLibrary.SetTestabilitySoftwareAsAService(false); - end; - - [Test] - [Scope('OnPrem')] - [HandlerFunctions('ExtensionManagementNotificationHandler')] - procedure ExtensionManagementDeprecationNotificationNotShownOnPrem() - var -#pragma warning disable AL0432 - ExtensionManagementPage: TestPage "Extension Management"; -#pragma warning restore AL0432 - begin - PermissionsMock.Set('Exten. Mgt. - Admin'); - EnvironmentInfoTestLibrary.SetTestabilitySoftwareAsAService(false); - DeprecationNotificationSent := false; - - ExtensionManagementPage.OpenView(); - ExtensionManagementPage.Close(); - - Assert.IsFalse(DeprecationNotificationSent, 'The Extension Management deprecation notification was shown on-premises.'); - end; local procedure SetNavAppIds() begin @@ -595,15 +552,6 @@ codeunit 133100 "Extension Management Test" begin end; - [SendNotificationHandler] - procedure ExtensionManagementNotificationHandler(var Notification: Notification): Boolean - begin - if Notification.Message = ExtensionManagementDeprecationMsg then - DeprecationNotificationSent := true; - - exit(true); - end; - [ModalPageHandler] procedure ExtensionSettingsModalHandler(var ExtensionSettings: TestPage "Extension Settings") begin @@ -615,3 +563,4 @@ codeunit 133100 "Extension Management Test" Reply := true; end; } + From 75737517af98cfbe4daac7e1e91dc02cb16d5798 Mon Sep 17 00:00:00 2001 From: Pooya Kharamesh Date: Fri, 7 Aug 2026 15:16:42 +0200 Subject: [PATCH 3/5] Add extension management documentation link Add a descriptive notification action that opens the admin center extension management documentation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Extension Management/src/ExtensionManagement.Page.al | 2 ++ .../src/ExtensionOperationImpl.Codeunit.al | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al index 2eacce6319f..1e46b1061fe 100644 --- a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al @@ -399,6 +399,7 @@ page 2500 "Extension Management" DeprecationNotification.Id := ExtensionManagementDeprecationNotificationIdTok; DeprecationNotification.Scope := NotificationScope::LocalScope; DeprecationNotification.Message(ExtensionManagementDeprecationMsg); + DeprecationNotification.AddAction(LearnAboutAdminCenterExtensionManagementLbl, Codeunit::"Extension Operation Impl", 'OpenAdminCenterExtensionManagementDocumentation'); DeprecationNotification.Send(); end; @@ -447,6 +448,7 @@ page 2500 "Extension Management" MarkAllAsReviewedLbl: Label 'Mark All as Reviewed'; OrphanedDataNotificationIdTok: Label 'b1c5a678-2e3f-4d91-a6b0-9f8e7d6c5b4a', Locked = true; ExtensionManagementDeprecationMsg: Label 'Extension management is moving to the Business Central admin center. Use the admin center to upload and manage per-tenant extensions. This page will become unavailable in a future release.'; + LearnAboutAdminCenterExtensionManagementLbl: Label 'Learn about managing extensions in the admin center'; ExtensionManagementDeprecationNotificationIdTok: Label '3be91c11-8195-4c65-be23-20fddbea9bb7', Locked = true; protected procedure IsSaasEnvironment(): boolean diff --git a/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al b/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al index 544226269a6..a76c7db91de 100644 --- a/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al +++ b/src/System Application/App/Extension Management/src/ExtensionOperationImpl.Codeunit.al @@ -37,6 +37,7 @@ codeunit 2503 "Extension Operation Impl" InstallationFailedOpenDetailsTxt: Label 'App installation failed. User has chosen to see the details.'; InstallationFailedDoNotOpenDetailsTxt: Label 'App installation failed. User has chosen not to check out the details.'; PageCaptionTok: Label '%1 %2', Comment = '%1 = Page default caption %2 = App name'; + AdminCenterExtensionManagementUrlLbl: Label 'https://go.microsoft.com/fwlink/?LinkId=2374621', Locked = true; local procedure AssertIsInitialized() begin @@ -149,6 +150,11 @@ codeunit 2503 "Extension Operation Impl" exit(true); end; + procedure OpenAdminCenterExtensionManagementDocumentation(Notification: Notification) + begin + Hyperlink(AdminCenterExtensionManagementUrlLbl); + end; + procedure UnpublishUninstalledPerTenantExtension(PackageID: Guid) begin CheckPermissions(); From 79177cb170f3afca5875090d0e4a8d42488acf4a Mon Sep 17 00:00:00 2001 From: Pooya Kharamesh Date: Fri, 7 Aug 2026 15:18:28 +0200 Subject: [PATCH 4/5] Refine deprecation notification link text Use Read more here for the deprecation and admin center documentation action. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../App/Extension Management/src/ExtensionManagement.Page.al | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al index 1e46b1061fe..717f0ef0760 100644 --- a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al @@ -399,7 +399,7 @@ page 2500 "Extension Management" DeprecationNotification.Id := ExtensionManagementDeprecationNotificationIdTok; DeprecationNotification.Scope := NotificationScope::LocalScope; DeprecationNotification.Message(ExtensionManagementDeprecationMsg); - DeprecationNotification.AddAction(LearnAboutAdminCenterExtensionManagementLbl, Codeunit::"Extension Operation Impl", 'OpenAdminCenterExtensionManagementDocumentation'); + DeprecationNotification.AddAction(ReadMoreHereLbl, Codeunit::"Extension Operation Impl", 'OpenAdminCenterExtensionManagementDocumentation'); DeprecationNotification.Send(); end; @@ -448,7 +448,7 @@ page 2500 "Extension Management" MarkAllAsReviewedLbl: Label 'Mark All as Reviewed'; OrphanedDataNotificationIdTok: Label 'b1c5a678-2e3f-4d91-a6b0-9f8e7d6c5b4a', Locked = true; ExtensionManagementDeprecationMsg: Label 'Extension management is moving to the Business Central admin center. Use the admin center to upload and manage per-tenant extensions. This page will become unavailable in a future release.'; - LearnAboutAdminCenterExtensionManagementLbl: Label 'Learn about managing extensions in the admin center'; + ReadMoreHereLbl: Label 'Read more here'; ExtensionManagementDeprecationNotificationIdTok: Label '3be91c11-8195-4c65-be23-20fddbea9bb7', Locked = true; protected procedure IsSaasEnvironment(): boolean From 2d7c664d48fb012e6fca68841270011197576d51 Mon Sep 17 00:00:00 2001 From: Pooya Kharamesh Date: Fri, 7 Aug 2026 15:27:13 +0200 Subject: [PATCH 5/5] Show extension deprecation notice on-premises Display the same notice in all deployments because the linked deprecation document includes environment-specific guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../App/Extension Management/src/ExtensionManagement.Page.al | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al index 717f0ef0760..a7fdbc63da1 100644 --- a/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al +++ b/src/System Application/App/Extension Management/src/ExtensionManagement.Page.al @@ -393,9 +393,6 @@ page 2500 "Extension Management" var DeprecationNotification: Notification; begin - if not IsSaaS then - exit; - DeprecationNotification.Id := ExtensionManagementDeprecationNotificationIdTok; DeprecationNotification.Scope := NotificationScope::LocalScope; DeprecationNotification.Message(ExtensionManagementDeprecationMsg);