From 09411c55e2541c29185e66badd1e33546c627250 Mon Sep 17 00:00:00 2001 From: attilatoury Date: Thu, 19 Sep 2024 16:10:07 +0200 Subject: [PATCH] Added Purview telemetry using the DotNet wrappers for 24.x --- .../src/Copilot/CopilotCapabilitiesGA.Page.al | 13 ++++++-- .../PlanConfiguration.Table.al | 20 ++++++++++-- .../PlanConfigurationCard.Page.al | 7 +++- .../User sync/AzureADUserUpdateWizard.Page.al | 6 +++- .../src/DataClassificationMgtImpl.Codeunit.al | 15 ++++++--- .../src/FeatureManagementImpl.Codeunit.al | 6 +++- .../src/PermissionImpl.Codeunit.al | 32 +++++++++++-------- .../Permission Sets/src/PermissionSet.Page.al | 6 +++- .../src/PermissionSetCopyImpl.Codeunit.al | 19 +++++++---- .../src/PrivacyNoticeApproval.Codeunit.al | 12 +++++-- .../ApplyRetentionPolicyImpl.Codeunit.al | 6 +++- .../RetentionPolicySetup.Table.al | 6 +++- .../src/SecurityGroupPermissionSets.Page.al | 8 ++++- .../src/UserSettingsImpl.Codeunit.al | 7 ++-- .../src/WebServiceManagementImpl.Codeunit.al | 5 ++- 15 files changed, 127 insertions(+), 41 deletions(-) diff --git a/src/System Application/App/AI/src/Copilot/CopilotCapabilitiesGA.Page.al b/src/System Application/App/AI/src/Copilot/CopilotCapabilitiesGA.Page.al index 9fba0968a2..81fd4a7019 100644 --- a/src/System Application/App/AI/src/Copilot/CopilotCapabilitiesGA.Page.al +++ b/src/System Application/App/AI/src/Copilot/CopilotCapabilitiesGA.Page.al @@ -4,6 +4,8 @@ // ------------------------------------------------------------------------------------------------ namespace System.AI; +using System; + /// /// Page for listing the Copilot Capabilities which are Generally Available. /// @@ -88,12 +90,16 @@ page 7774 "Copilot Capabilities GA" Scope = Repeater; trigger OnAction() + var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin Rec.Status := Rec.Status::Active; Rec.Modify(true); CopilotCapabilityImpl.SendActivateTelemetry(Rec.Capability, Rec."App Id"); - Session.LogAuditMessage(StrSubstNo(CopilotFeatureActivatedLbl, Rec.Capability, Rec."App Id", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 4, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(CopilotFeatureActivatedLbl, Rec.Capability, Rec."App Id", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 4, 0); end; } action(Deactivate) @@ -108,6 +114,9 @@ page 7774 "Copilot Capabilities GA" trigger OnAction() var CopilotDeactivate: Page "Copilot Deactivate Capability"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin CopilotDeactivate.SetCaption(Format(Rec.Capability)); if CopilotDeactivate.RunModal() = Action::OK then begin @@ -115,7 +124,7 @@ page 7774 "Copilot Capabilities GA" Rec.Modify(true); CopilotCapabilityImpl.SendDeactivateTelemetry(Rec.Capability, Rec."App Id", CopilotDeactivate.GetReason()); - Session.LogAuditMessage(StrSubstNo(CopilotFeatureDeactivatedLbl, Rec.Capability, Rec."App Id", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 4, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(CopilotFeatureDeactivatedLbl, Rec.Capability, Rec."App Id", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 4, 0); end; end; } diff --git a/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfiguration.Table.al b/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfiguration.Table.al index 0a438eb47f..cca48f7933 100644 --- a/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfiguration.Table.al +++ b/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfiguration.Table.al @@ -5,6 +5,8 @@ namespace System.Azure.Identity; +using System; + table 9017 "Plan Configuration" { Access = Internal; @@ -55,18 +57,30 @@ table 9017 "Plan Configuration" } } trigger OnDelete() + var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin - Session.LogAuditMessage(StrSubstNo(PlanConfigurationDeletedLbl, Rec.Id, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::EntitlementManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PlanConfigurationDeletedLbl, Rec.Id, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::EntitlementManagement, 2, 0); end; trigger OnInsert() + var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin - Session.LogAuditMessage(StrSubstNo(PlanConfigurationCreatedLbl, Rec.Id, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::EntitlementManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PlanConfigurationCreatedLbl, Rec.Id, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::EntitlementManagement, 2, 0); end; trigger OnModify() + var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin - Session.LogAuditMessage(StrSubstNo(PlanConfigurationModifiedLbl, Rec.Id, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::EntitlementManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PlanConfigurationModifiedLbl, Rec.Id, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::EntitlementManagement, 2, 0); end; var diff --git a/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfigurationCard.Page.al b/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfigurationCard.Page.al index c968c916df..9892393ad3 100644 --- a/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfigurationCard.Page.al +++ b/src/System Application/App/Azure AD Plan/src/Plan Configuration/PlanConfigurationCard.Page.al @@ -5,6 +5,7 @@ namespace System.Azure.Identity; +using System; using System.Environment; /// @@ -49,9 +50,13 @@ page 9069 "Plan Configuration Card" ToolTip = 'Specifies whether the default permissions are customized.'; trigger OnValidate() + var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin if Rec.Customized then - Session.LogAuditMessage(StrSubstNo(PlanConfigurationCustomizedLbl, Rec.Id, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PlanConfigurationCustomizedLbl, Rec.Id, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); end; } diff --git a/src/System Application/App/Azure AD User Management/src/User sync/AzureADUserUpdateWizard.Page.al b/src/System Application/App/Azure AD User Management/src/User sync/AzureADUserUpdateWizard.Page.al index e12adcedb9..5c19c5bd03 100644 --- a/src/System Application/App/Azure AD User Management/src/User sync/AzureADUserUpdateWizard.Page.al +++ b/src/System Application/App/Azure AD User Management/src/User sync/AzureADUserUpdateWizard.Page.al @@ -5,6 +5,7 @@ namespace System.Azure.Identity; +using System; using System.Utilities; using System.Environment.Configuration; using System.Security.User; @@ -288,6 +289,9 @@ page 9515 "Azure AD User Update Wizard" var AzureADUserSyncImpl: Codeunit "Azure AD User Sync Impl."; GuidedExperience: Codeunit "Guided Experience"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; SuccessCount: Integer; UpdateUsersfromMicrosoft365RunLbl: Label 'Update users from Microsoft 365 wizard has been run by the UserSecurityId %1.', Locked = true; begin @@ -297,7 +301,7 @@ page 9515 "Azure AD User Update Wizard" Rec.DeleteAll(); GuidedExperience.CompleteAssistedSetup(ObjectType::Page, Page::"Azure AD User Update Wizard"); - Session.LogAuditMessage(StrSubstNo(UpdateUsersfromMicrosoft365RunLbl, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(UpdateUsersfromMicrosoft365RunLbl, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); MakeAllGroupsInvisible(); FinishedVisible := true; diff --git a/src/System Application/App/Data Classification/src/DataClassificationMgtImpl.Codeunit.al b/src/System Application/App/Data Classification/src/DataClassificationMgtImpl.Codeunit.al index d3d7fa66d4..143e843aa9 100644 --- a/src/System Application/App/Data Classification/src/DataClassificationMgtImpl.Codeunit.al +++ b/src/System Application/App/Data Classification/src/DataClassificationMgtImpl.Codeunit.al @@ -5,6 +5,7 @@ namespace System.Privacy; +using System; using System.Reflection; codeunit 1753 "Data Classification Mgt. Impl." @@ -40,6 +41,9 @@ codeunit 1753 "Data Classification Mgt. Impl." procedure InsertDataSensitivityForField(TableNo: Integer; FieldNo: Integer; DataSensitivityOption: Option) var DataSensitivity: Record "Data Sensitivity"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin if IsSupportedTable(TableNo) then begin DataSensitivity.Init(); @@ -48,13 +52,16 @@ codeunit 1753 "Data Classification Mgt. Impl." DataSensitivity."Field No" := FieldNo; DataSensitivity."Data Sensitivity" := DataSensitivityOption; DataSensitivity.Insert(); - Session.LogAuditMessage(StrSubstNo(DataSensitivitySetLbl, DataSensitivity."Data Sensitivity", DataSensitivity."Company Name", - DataSensitivity."Table No", DataSensitivity."Field No", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 3, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(DataSensitivitySetLbl, DataSensitivity."Data Sensitivity", DataSensitivity."Company Name", + DataSensitivity."Table No", DataSensitivity."Field No", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 3, 0); end; end; procedure SetSensitivities(var DataSensitivity: Record "Data Sensitivity"; Sensitivity: Option) var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; Now: DateTime; begin // MODIFYALL does not result in a bulk query for this table,looping through the records performs faster @@ -66,8 +73,8 @@ codeunit 1753 "Data Classification Mgt. Impl." DataSensitivity."Last Modified By" := UserSecurityId(); DataSensitivity."Last Modified" := Now; DataSensitivity.Modify(); - Session.LogAuditMessage(StrSubstNo(DataSensitivitySetLbl, DataSensitivity."Data Sensitivity", DataSensitivity."Company Name", - DataSensitivity."Table No", DataSensitivity."Field No", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 3, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(DataSensitivitySetLbl, DataSensitivity."Data Sensitivity", DataSensitivity."Company Name", + DataSensitivity."Table No", DataSensitivity."Field No", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 3, 0); until DataSensitivity.Next() = 0; end; diff --git a/src/System Application/App/Feature Key/src/FeatureManagementImpl.Codeunit.al b/src/System Application/App/Feature Key/src/FeatureManagementImpl.Codeunit.al index 6467288aa8..cd91fcaf0c 100644 --- a/src/System Application/App/Feature Key/src/FeatureManagementImpl.Codeunit.al +++ b/src/System Application/App/Feature Key/src/FeatureManagementImpl.Codeunit.al @@ -5,6 +5,7 @@ namespace System.Environment.Configuration; +using System; using System.DateTime; using System.Utilities; using System.Environment; @@ -84,6 +85,9 @@ codeunit 2610 "Feature Management Impl." local procedure InitializeFeatureDataUpdateStatus(FeatureKey: Record "Feature Key"; var FeatureDataUpdateStatus: Record "Feature Data Update Status"; AllowInsert: Boolean) var FeatureManagementFacade: Codeunit "Feature Management Facade"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; InitializeHandled: Boolean; FeatureKeyStatusChangedLbl: Label 'The status of the feature key %1 has been set to %2 by UserSecurityId %3.', Locked = true; begin @@ -109,7 +113,7 @@ codeunit 2610 "Feature Management Impl." // so the following insert will fail if the record does exist. if AllowInsert then if FeatureDataUpdateStatus.Insert() then - Session.LogAuditMessage(StrSubstNo(FeatureKeyStatusChangedLbl, FeatureDataUpdateStatus."Feature Key", FeatureDataUpdateStatus."Feature Status", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 4, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(FeatureKeyStatusChangedLbl, FeatureDataUpdateStatus."Feature Key", FeatureDataUpdateStatus."Feature Status", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 4, 0); end; /// diff --git a/src/System Application/App/Permission Sets/src/PermissionImpl.Codeunit.al b/src/System Application/App/Permission Sets/src/PermissionImpl.Codeunit.al index fe0974a13e..10b9fb41a4 100644 --- a/src/System Application/App/Permission Sets/src/PermissionImpl.Codeunit.al +++ b/src/System Application/App/Permission Sets/src/PermissionImpl.Codeunit.al @@ -5,6 +5,7 @@ namespace System.Security.AccessControl; +using System; using System.Reflection; codeunit 9864 "Permission Impl." @@ -88,6 +89,9 @@ codeunit 9864 "Permission Impl." procedure UpdateSelectedPermissionLines(var TenantPermission: Record "Tenant Permission"; RIMDX: Text[1]; PermissionOption: Option) var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; ModifyPermissionLine: Boolean; begin if TenantPermission.FindSet() then @@ -99,40 +103,40 @@ codeunit 9864 "Permission Impl." if TenantPermission."Read Permission" <> PermissionOption then begin TenantPermission."Read Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Read Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Read Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; 'I': if TenantPermission."Object Type" = TenantPermission."Object Type"::"Table Data" then if TenantPermission."Insert Permission" <> PermissionOption then begin TenantPermission."Insert Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Insert Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Insert Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; 'M': if TenantPermission."Object Type" = TenantPermission."Object Type"::"Table Data" then if TenantPermission."Modify Permission" <> PermissionOption then begin TenantPermission."Modify Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Modify Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Modify Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; 'D': if TenantPermission."Object Type" = TenantPermission."Object Type"::"Table Data" then if TenantPermission."Delete Permission" <> PermissionOption then begin TenantPermission."Delete Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Delete Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Delete Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; 'X': if TenantPermission."Object Type" <> TenantPermission."Object Type"::"Table Data" then if TenantPermission."Execute Permission" <> PermissionOption then begin TenantPermission."Execute Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Execute Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Execute Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; '*': if TenantPermission."Object Type" = TenantPermission."Object Type"::"Table Data" then begin @@ -146,15 +150,15 @@ codeunit 9864 "Permission Impl." TenantPermission."Modify Permission" := PermissionOption; TenantPermission."Delete Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(MultiplePermissionsUpdatedLbl, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Read Permission", TenantPermission."Insert Permission", TenantPermission."Modify Permission", TenantPermission."Delete Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(MultiplePermissionsUpdatedLbl, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Read Permission", TenantPermission."Insert Permission", TenantPermission."Modify Permission", TenantPermission."Delete Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; end else if TenantPermission."Execute Permission" <> PermissionOption then begin TenantPermission."Execute Permission" := PermissionOption; ModifyPermissionLine := true; - Session.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", - TenantPermission."Execute Permission", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionUpdatedLbl, RIMDX, TenantPermission."App ID", TenantPermission."Role ID", TenantPermission."Object Type", TenantPermission."Object ID", + TenantPermission."Execute Permission", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); end; end; if ModifyPermissionLine then diff --git a/src/System Application/App/Permission Sets/src/PermissionSet.Page.al b/src/System Application/App/Permission Sets/src/PermissionSet.Page.al index adae34a75f..9fdbed36ab 100644 --- a/src/System Application/App/Permission Sets/src/PermissionSet.Page.al +++ b/src/System Application/App/Permission Sets/src/PermissionSet.Page.al @@ -5,6 +5,7 @@ namespace System.Security.AccessControl; +using System; using System.Telemetry; using System.Security.User; @@ -170,6 +171,9 @@ page 9855 "Permission Set" trigger OnAction() var TempTablePermissionBuffer: Record "Tenant Permission" temporary; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin LogTablePermissions.Stop(TempTablePermissionBuffer); PermissionLoggingRunning := false; @@ -177,7 +181,7 @@ page 9855 "Permission Set" exit; AddLoggedPermissions(TempTablePermissionBuffer); - Session.LogAuditMessage(StrSubstNo(PermissionSetModifiedLbl, Rec."Role ID", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::RoleManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionSetModifiedLbl, Rec."Role ID", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::RoleManagement, 2, 0); CurrPage.MetadataPermissions.Page.Update(false); end; } diff --git a/src/System Application/App/Permission Sets/src/PermissionSetCopyImpl.Codeunit.al b/src/System Application/App/Permission Sets/src/PermissionSetCopyImpl.Codeunit.al index 93e7d8075a..6881537299 100644 --- a/src/System Application/App/Permission Sets/src/PermissionSetCopyImpl.Codeunit.al +++ b/src/System Application/App/Permission Sets/src/PermissionSetCopyImpl.Codeunit.al @@ -5,6 +5,7 @@ namespace System.Security.AccessControl; +using System; using System.Telemetry; using System.Reflection; @@ -247,6 +248,9 @@ codeunit 9863 "Permission Set Copy Impl." var TenantPermission: Record "Tenant Permission"; LogActivityPermissions: Codeunit "Log Activity Permissions"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin TenantPermission.LockTable(); if not TenantPermission.Get(AppID, RoleID, ObjectType, ObjectID) then begin @@ -260,8 +264,8 @@ codeunit 9863 "Permission Set Copy Impl." TenantPermission."Delete Permission" := AddDelete; TenantPermission."Execute Permission" := AddExecute; TenantPermission.Insert(); - Session.LogAuditMessage(StrSubstNo(PermissionsInsertedLbl, AppID, CopyStr(RoleID, 1, MaxStrLen(TenantPermission."Role ID")), ObjectType, ObjectID, - AddRead, AddInsert, AddModify, AddDelete, AddExecute, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionsInsertedLbl, AppID, CopyStr(RoleID, 1, MaxStrLen(TenantPermission."Role ID")), ObjectType, ObjectID, + AddRead, AddInsert, AddModify, AddDelete, AddExecute, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); end else begin TenantPermission."Read Permission" := LogActivityPermissions.GetMaxPermission(TenantPermission."Read Permission", AddRead); TenantPermission."Insert Permission" := LogActivityPermissions.GetMaxPermission(TenantPermission."Insert Permission", AddInsert); @@ -269,14 +273,17 @@ codeunit 9863 "Permission Set Copy Impl." TenantPermission."Delete Permission" := LogActivityPermissions.GetMaxPermission(TenantPermission."Delete Permission", AddDelete); TenantPermission."Execute Permission" := LogActivityPermissions.GetMaxPermission(TenantPermission."Execute Permission", AddExecute); TenantPermission.Modify(); - Session.LogAuditMessage(StrSubstNo(PermissionsUpdatedLbl, AppID, CopyStr(RoleID, 1, MaxStrLen(TenantPermission."Role ID")), ObjectType, ObjectID, - AddRead, AddInsert, AddModify, AddDelete, AddExecute, UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionsUpdatedLbl, AppID, CopyStr(RoleID, 1, MaxStrLen(TenantPermission."Role ID")), ObjectType, ObjectID, + AddRead, AddInsert, AddModify, AddDelete, AddExecute, UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); end; end; internal procedure AddReadAccessToRelatedTables(var TempTenantPermission: Record "Tenant Permission" temporary; AppID: Guid; RoleID: Code[30]) var TableRelationsMetadata: Record "Table Relations Metadata"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin if TempTenantPermission."Object Type" <> TempTenantPermission."Object Type"::"Table Data" then exit; @@ -290,8 +297,8 @@ codeunit 9863 "Permission Set Copy Impl." AddToTenantPermission( AppID, RoleID, TempTenantPermission."Object Type"::"Table Data", TableRelationsMetadata."Related Table ID", TempTenantPermission."Read Permission"::Yes, TempTenantPermission."Insert Permission"::" ", TempTenantPermission."Modify Permission"::" ", TempTenantPermission."Delete Permission"::" ", TempTenantPermission."Execute Permission"::" "); - Session.LogAuditMessage(StrSubstNo(ReadAccessAddedToRelatedTablesLbl, AppID, RoleID, TempTenantPermission."Object Type"::"Table Data", TempTenantPermission."Object ID", UserSecurityId()), - SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(ReadAccessAddedToRelatedTablesLbl, AppID, RoleID, TempTenantPermission."Object Type"::"Table Data", TempTenantPermission."Object ID", UserSecurityId()), + MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); until TableRelationsMetadata.Next() = 0; end; diff --git a/src/System Application/App/Privacy Notice/src/PrivacyNoticeApproval.Codeunit.al b/src/System Application/App/Privacy Notice/src/PrivacyNoticeApproval.Codeunit.al index b0a611e8e5..a859217412 100644 --- a/src/System Application/App/Privacy Notice/src/PrivacyNoticeApproval.Codeunit.al +++ b/src/System Application/App/Privacy Notice/src/PrivacyNoticeApproval.Codeunit.al @@ -5,6 +5,8 @@ namespace System.Privacy; +using System; + codeunit 1564 "Privacy Notice Approval" { Access = Internal; @@ -15,6 +17,9 @@ codeunit 1564 "Privacy Notice Approval" procedure SetApprovalState(PrivacyNoticeId: Code[50]; UserSID: Guid; PrivacyNoticeApprovalState: Enum "Privacy Notice Approval State") var PrivacyNoticeApproval: Record "Privacy Notice Approval"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; PrivacyNoticeApprovedLbl: Label 'Privacy Notice Approval ID %1 provided by User SID %2.', Locked = true; begin if PrivacyNoticeApprovalState = "Privacy Notice Approval State"::"Not set" then begin @@ -29,17 +34,20 @@ codeunit 1564 "Privacy Notice Approval" PrivacyNoticeApproval."Approver User SID" := UserSecurityId(); PrivacyNoticeApproval.Approved := PrivacyNoticeApprovalState = "Privacy Notice Approval State"::Agreed; PrivacyNoticeApproval.Modify(); - Session.LogAuditMessage(StrSubstNo(PrivacyNoticeApprovedLbl, PrivacyNoticeId, UserSID), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 4, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PrivacyNoticeApprovedLbl, PrivacyNoticeId, UserSID), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 4, 0); end; procedure ResetApproval(PrivacyNoticeId: Code[50]; UserSID: Guid) var PrivacyNoticeApproval: Record "Privacy Notice Approval"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; PrivacyNoticeResetLbl: Label 'Privacy Notice Approval ID %1 has been reset by User SID %2.', Locked = true; begin PrivacyNoticeApproval.SetRange(ID, PrivacyNoticeId); PrivacyNoticeApproval.SetRange("User SID", UserSID); PrivacyNoticeApproval.DeleteAll(); - Session.LogAuditMessage(StrSubstNo(PrivacyNoticeResetLbl, PrivacyNoticeId, UserSID), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 4, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PrivacyNoticeResetLbl, PrivacyNoticeId, UserSID), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 4, 0); end; } diff --git a/src/System Application/App/Retention Policy/src/Apply Retention Policy/ApplyRetentionPolicyImpl.Codeunit.al b/src/System Application/App/Retention Policy/src/Apply Retention Policy/ApplyRetentionPolicyImpl.Codeunit.al index 4cb4e73b51..0e7c389938 100644 --- a/src/System Application/App/Retention Policy/src/Apply Retention Policy/ApplyRetentionPolicyImpl.Codeunit.al +++ b/src/System Application/App/Retention Policy/src/Apply Retention Policy/ApplyRetentionPolicyImpl.Codeunit.al @@ -5,6 +5,7 @@ namespace System.DataAdministration; +using System; using System.Telemetry; using System.Reflection; using System.Security.User; @@ -116,6 +117,9 @@ codeunit 3904 "Apply Retention Policy Impl." RetenPolicyTelemetryImpl: Codeunit "Reten. Policy Telemetry Impl."; FeatureTelemetry: Codeunit "Feature Telemetry"; RecordRef: RecordRef; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; Dialog: Dialog; ExpiredRecordExpirationDate: Date; begin @@ -133,7 +137,7 @@ codeunit 3904 "Apply Retention Policy Impl." RetentionPolicySetup.CalcFields("Table Name", "Table Caption"); RetentionPolicyLog.LogInfo(LogCategory(), AppendStartedByUserMessage(StrSubstNo(StartApplyRetentionPolicyInfoLbl, RetentionPolicySetup."Table Id", RetentionPolicySetup."Table Caption"), UserInvokedRun)); - Session.LogAuditMessage(StrSubstNo(RetentionPolicyAppliedLbl, RetentionPolicySetup."Table Id", RetentionPolicySetup."Table Caption", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 3, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(RetentionPolicyAppliedLbl, RetentionPolicySetup."Table Id", RetentionPolicySetup."Table Caption", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 3, 0); if GetExpiredRecords(RetentionPolicySetup, RecordRef, ExpiredRecordExpirationDate) then DeleteExpiredRecords(RecordRef) diff --git a/src/System Application/App/Retention Policy/src/Retention Policy Setup/RetentionPolicySetup.Table.al b/src/System Application/App/Retention Policy/src/Retention Policy Setup/RetentionPolicySetup.Table.al index 72d69821ec..c84c4b7f4c 100644 --- a/src/System Application/App/Retention Policy/src/Retention Policy Setup/RetentionPolicySetup.Table.al +++ b/src/System Application/App/Retention Policy/src/Retention Policy Setup/RetentionPolicySetup.Table.al @@ -5,6 +5,7 @@ namespace System.DataAdministration; +using System; using System.Reflection; /// @@ -178,9 +179,12 @@ table 3901 "Retention Policy Setup" trigger OnInsert() var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; NewRetentionPolicyCreatedLbl: Label 'The new Retention Policy record with Table ID %1 is created by the UserSecurityId %2.', Locked = true; begin - Session.LogAuditMessage(StrSubstNo(NewRetentionPolicyCreatedLbl, Rec."Table ID", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 3, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(NewRetentionPolicyCreatedLbl, Rec."Table ID", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 3, 0); end; local procedure LogCategory() RetentionPolicyLogCategory: Enum "Retention Policy Log Category" diff --git a/src/System Application/App/Security Groups/src/SecurityGroupPermissionSets.Page.al b/src/System Application/App/Security Groups/src/SecurityGroupPermissionSets.Page.al index ffbb182476..f457c6d7c3 100644 --- a/src/System Application/App/Security Groups/src/SecurityGroupPermissionSets.Page.al +++ b/src/System Application/App/Security Groups/src/SecurityGroupPermissionSets.Page.al @@ -5,6 +5,8 @@ namespace System.Security.AccessControl; +using System; + /// /// View and edit the permission sets associated with a security group. /// @@ -115,9 +117,13 @@ page 9868 "Security Group Permission Sets" } trigger OnInsertRecord(BelowxRec: Boolean): Boolean + var + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin if Rec."Role ID" <> '' then - Session.LogAuditMessage(StrSubstNo(PermissionSetAddedToSecurityGroupLbl, Rec."Role ID", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(PermissionSetAddedToSecurityGroupLbl, Rec."Role ID", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); exit(Rec."Role ID" <> ''); end; diff --git a/src/System Application/App/User Settings/src/UserSettingsImpl.Codeunit.al b/src/System Application/App/User Settings/src/UserSettingsImpl.Codeunit.al index 09acbae056..0562f68156 100644 --- a/src/System Application/App/User Settings/src/UserSettingsImpl.Codeunit.al +++ b/src/System Application/App/User Settings/src/UserSettingsImpl.Codeunit.al @@ -164,6 +164,9 @@ codeunit 9175 "User Settings Impl." var UserPersonalization: Record "User Personalization"; ApplicationUserSettings: Record "Application User Settings"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; begin UserPersonalization.Get(NewUserSettings."User Security ID"); @@ -180,8 +183,8 @@ codeunit 9175 "User Settings Impl." ApplicationUserSettings."Teaching Tips" := NewUserSettings."Teaching Tips"; ApplicationUserSettings."Legacy Action Bar" := NewUserSettings."Legacy Action Bar"; ApplicationUserSettings.Modify(); - Session.LogAuditMessage(StrSubstNo(UserSettingsUpdatedLbl, UserPersonalization."User SID", UserPersonalization."Language ID", UserPersonalization."Locale ID", - UserPersonalization.Company, UserPersonalization."Time Zone", UserPersonalization."Profile ID", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 2, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(UserSettingsUpdatedLbl, UserPersonalization."User SID", UserPersonalization."Language ID", UserPersonalization."Locale ID", + UserPersonalization.Company, UserPersonalization."Time Zone", UserPersonalization."Profile ID", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 2, 0); end; local procedure UpdateCurrentUsersSettings(OldUserSettings: Record "User Settings"; NewUserSettings: Record "User Settings") diff --git a/src/System Application/App/Web Service Management/src/WebServiceManagementImpl.Codeunit.al b/src/System Application/App/Web Service Management/src/WebServiceManagementImpl.Codeunit.al index 14ce17b531..ca1046699c 100644 --- a/src/System Application/App/Web Service Management/src/WebServiceManagementImpl.Codeunit.al +++ b/src/System Application/App/Web Service Management/src/WebServiceManagementImpl.Codeunit.al @@ -700,6 +700,9 @@ codeunit 9751 "Web Service Management Impl." var WebService: Record "Web Service"; TenantWebService: Record "Tenant Web Service"; + MyCustomerAuditLoggerALHelper: DotNet CustomerAuditLoggerALHelper; + MyALSecurityOperationResult: DotNet ALSecurityOperationResult; + MyALAuditCategory: DotNet ALAuditCategory; WebServiceCreatedLbl: Label 'The Web Service record with Object Type %1, Service Name %2 has been created by UserSecurityId %3.', Locked = true; begin if WebServiceAggregate."All Tenants" then begin @@ -711,7 +714,7 @@ codeunit 9751 "Web Service Management Impl." TenantWebService.TransferFields(WebServiceAggregate); TenantWebService.Insert(); end; - Session.LogAuditMessage(StrSubstNo(WebServiceCreatedLbl, WebServiceAggregate."Object Type", WebServiceAggregate."Service Name", UserSecurityId()), SecurityOperationResult::Success, AuditCategory::ApplicationManagement, 4, 0); + MyCustomerAuditLoggerALHelper.LogAuditMessage(StrSubstNo(WebServiceCreatedLbl, WebServiceAggregate."Object Type", WebServiceAggregate."Service Name", UserSecurityId()), MyALSecurityOperationResult::Success, MyALAuditCategory::ApplicationManagement, 4, 0); end; procedure RemoveUnselectedColumnsFromFilter(var TenantWebService: Record "Tenant Web Service"; DataItemNumber: Integer; DataItemView: Text): Text