From a6ff71e755389560714c6fe569d9e1aa6261d27c Mon Sep 17 00:00:00 2001 From: Onat Buyukakkus <55088871+onbuyuka@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:26:05 +0100 Subject: [PATCH 1/2] Add MCP ADMIN to System Application Admin permission set --- .../App/Permissions/SystemApplicationAdmin.PermissionSet.al | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/System Application/App/Permissions/SystemApplicationAdmin.PermissionSet.al b/src/System Application/App/Permissions/SystemApplicationAdmin.PermissionSet.al index ad66c4bcad..32e8a6c7dc 100644 --- a/src/System Application/App/Permissions/SystemApplicationAdmin.PermissionSet.al +++ b/src/System Application/App/Permissions/SystemApplicationAdmin.PermissionSet.al @@ -12,6 +12,7 @@ using System.Environment.Configuration; using System.ExternalFileStorage; using System.Integration; using System.Integration.Excel; +using System.MCP; using System.Privacy; using System.SFTPClient; @@ -31,6 +32,7 @@ permissionset 154 "System Application - Admin" "Edit in Excel-Admin", "Feature Key - Admin", "File Storage - Admin", + "MCP - Admin", "Permissions & Licenses - Edit", "Priv. Notice - Admin", "Retention Policy - Admin", From 8d485e1b44fadbdc1bc3d68ae4ae03da6cbff384 Mon Sep 17 00:00:00 2001 From: Onat Buyukakkus <55088871+onbuyuka@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:04:34 +0100 Subject: [PATCH 2/2] Update --- .../Codeunits/MCPConfig.Codeunit.al | 20 ++++++++++ .../MCPConfigImplementation.Codeunit.al | 40 ++++++++++++++----- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfig.Codeunit.al b/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfig.Codeunit.al index f615c9bbcd..a2a4440147 100644 --- a/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfig.Codeunit.al +++ b/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfig.Codeunit.al @@ -190,4 +190,24 @@ codeunit 8350 "MCP Config" begin MCPConfigImplementation.AllowBoundActions(ToolSystemId, Allow); end; + + /// + /// Creates a new MCP Entra Application with the specified name, description, and client ID. + /// + /// The friendly name for the Entra application registration. + /// The description for the Entra application registration. + /// The Entra application (client) ID. + procedure CreateEntraApplication(Name: Text[100]; Description: Text[250]; ClientId: Guid) + begin + MCPConfigImplementation.CreateEntraApplication(Name, Description, ClientId); + end; + + /// + /// Deletes the specified MCP Entra Application. + /// + /// The SystemId (GUID) of the Entra application to delete. + procedure DeleteEntraApplication(EntraApplicationId: Guid) + begin + MCPConfigImplementation.DeleteEntraApplication(EntraApplicationId); + end; } \ No newline at end of file diff --git a/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigImplementation.Codeunit.al b/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigImplementation.Codeunit.al index c132d50bae..d696bbdd88 100644 --- a/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigImplementation.Codeunit.al +++ b/src/System Application/App/MCP/src/Configuration/Codeunits/MCPConfigImplementation.Codeunit.al @@ -583,20 +583,38 @@ codeunit 8351 "MCP Config Implementation" var JsonBuilder: TextBuilder; begin - JsonBuilder.AppendLine('{'); - JsonBuilder.AppendLine(' "' + MCPPrefix + '": {'); - JsonBuilder.AppendLine(' "url": "' + MCPUrl + '",'); - JsonBuilder.AppendLine(' "type": "http",'); - JsonBuilder.AppendLine(' "headers": {'); - JsonBuilder.AppendLine(' "TenantId": "' + TenantId + '",'); - JsonBuilder.AppendLine(' "EnvironmentName": "' + EnvironmentName + '",'); - JsonBuilder.AppendLine(' "Company": "' + Company + '",'); - JsonBuilder.AppendLine(' "ConfigurationName": "' + ConfigurationName + '"'); - JsonBuilder.AppendLine(' }'); + JsonBuilder.AppendLine('"' + MCPPrefix + '": {'); + JsonBuilder.AppendLine(' "url": "' + MCPUrl + '",'); + JsonBuilder.AppendLine(' "type": "http",'); + JsonBuilder.AppendLine(' "headers": {'); + JsonBuilder.AppendLine(' "TenantId": "' + TenantId + '",'); + JsonBuilder.AppendLine(' "EnvironmentName": "' + EnvironmentName + '",'); + JsonBuilder.AppendLine(' "Company": "' + Company + '",'); + JsonBuilder.AppendLine(' "ConfigurationName": "' + ConfigurationName + '"'); JsonBuilder.AppendLine(' }'); JsonBuilder.AppendLine('}'); exit(JsonBuilder.ToText()); end; + + internal procedure CreateEntraApplication(Name: Text[100]; Description: Text[250]; ClientId: Guid) + var + MCPEntraApplication: Record "MCP Entra Application"; + begin + MCPEntraApplication.Name := Name; + MCPEntraApplication.Description := Description; + MCPEntraApplication."Client ID" := ClientId; + MCPEntraApplication.Insert(); + end; + + internal procedure DeleteEntraApplication(EntraApplicationId: Guid) + var + MCPEntraApplication: Record "MCP Entra Application"; + begin + if not MCPEntraApplication.GetBySystemId(EntraApplicationId) then + exit; + + MCPEntraApplication.Delete(); + end; #endregion #if not CLEAN28 @@ -611,6 +629,7 @@ codeunit 8351 "MCP Config Implementation" local procedure GetDimensions(MCPConfiguration: Record "MCP Configuration") Dimensions: Dictionary of [Text, Text] begin + Dimensions.Add('Category', GetTelemetryCategory()); Dimensions.Add('MCPConfigurationName', MCPConfiguration.Name); Dimensions.Add('Active', Format(MCPConfiguration.Active)); Dimensions.Add('UnblockEditTools', Format(MCPConfiguration.AllowProdChanges)); @@ -633,6 +652,7 @@ codeunit 8351 "MCP Config Implementation" var Dimensions: Dictionary of [Text, Text]; begin + Dimensions.Add('Category', GetTelemetryCategory()); Dimensions.Add('MCPConfigurationName', MCPConfiguration.Name); if MCPConfiguration.Active <> xMCPConfiguration.Active then begin Dimensions.Add('OldActive', Format(xMCPConfiguration.Active));