diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al index 65da52cb2e..3df29a707a 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al @@ -9,6 +9,7 @@ using Microsoft.QualityManagement.Integration.Manufacturing; using Microsoft.QualityManagement.Integration.Receiving; using Microsoft.QualityManagement.Integration.Warehouse; using Microsoft.QualityManagement.Setup; +using Microsoft.QualityManagement.Telemetry; page 20405 "Qlty. Inspection Gen. Rules" { @@ -467,7 +468,10 @@ page 20405 "Qlty. Inspection Gen. Rules" trigger OnOpenPage() var QltyInspecGenRuleMgmt: Codeunit "Qlty. Inspec. Gen. Rule Mgmt."; + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Inspection Gen. Rules"); + Rec.SetFilter("Table ID Filter", QltyInspecGenRuleMgmt.GetFilterForAvailableConfigurations()); AttemptUpdateUnknownIntents(); IdentifyIfPageStartedWithATemplate(); diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/Result/QltyInspectionResultList.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/Result/QltyInspectionResultList.Page.al index 6aea727286..5f9297577c 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/Result/QltyInspectionResultList.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/Result/QltyInspectionResultList.Page.al @@ -4,6 +4,8 @@ // ------------------------------------------------------------------------------------------------ namespace Microsoft.QualityManagement.Configuration.Result; +using Microsoft.QualityManagement.Telemetry; + /// /// Results are effectively the incomplete/pass/fail state of an inspection. It is typical to have three results (incomplete, fail, pass), however you can configure as many results as you want, and in what circumstances. The results with a lower number for the priority test are evaluated first. /// @@ -150,6 +152,13 @@ page 20416 "Qlty. Inspection Result List" var MustChangePriorityErr: Label 'Evaluation Sequence must be unique, you cannot have two results with the same evaluation sequence. Result [%1/%2] already has the same evaluation sequence.', Comment = '%1=The result code, %2=the result condition'; + trigger OnOpenPage() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Inspection Result List"); + end; + trigger OnNewRecord(BelowxRec: Boolean) var ExistingQltyInspectionResult: Record "Qlty. Inspection Result"; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionCopyTemplate.Report.al b/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionCopyTemplate.Report.al index fdbe195f85..792558e191 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionCopyTemplate.Report.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionCopyTemplate.Report.al @@ -6,6 +6,7 @@ namespace Microsoft.QualityManagement.Configuration.Template; using Microsoft.Inventory.Item; using Microsoft.QualityManagement.Configuration.Result; +using Microsoft.QualityManagement.Telemetry; /// /// Copy/Duplicate an Existing Quality Inspection Template. @@ -101,6 +102,13 @@ report 20402 "Qlty. Inspection Copy Template" } } + trigger OnPreReport() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeSetup(ObjectType::Report, Report::"Qlty. Inspection Copy Template"); + end; + var CreateFromItems: Boolean; TargetDestinationName: Code[20]; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplate.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplate.Page.al index 90726aa59f..2b32aa1a39 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplate.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplate.Page.al @@ -7,7 +7,7 @@ namespace Microsoft.QualityManagement.Configuration.Template; using Microsoft.Foundation.Attachment; using Microsoft.QualityManagement.Configuration.GenerationRule; using Microsoft.QualityManagement.Document; -using System.Telemetry; +using Microsoft.QualityManagement.Telemetry; /// /// A Quality Inspection Template is an inspection plan containing a set of questions and data points that you want to collect. @@ -201,7 +201,6 @@ page 20402 "Qlty. Inspection Template" var ShowSampleSizeFixedQuantity: Boolean; ShowSampleSizePercentage: Boolean; - QualityManagementTok: Label 'Quality Management', Locked = true; local procedure GetDataCaptionExpression(): Text begin @@ -209,13 +208,17 @@ page 20402 "Qlty. Inspection Template" end; trigger OnAfterGetRecord() - var - FeatureTelemetry: Codeunit "Feature Telemetry"; begin - FeatureTelemetry.LogUptake('0000QIA', QualityManagementTok, Enum::"Feature Uptake Status"::Used); UpdateControls(); end; + trigger OnInsertRecord(BelowxRec: Boolean): Boolean + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeSetup(ObjectType::Page, Page::"Qlty. Inspection Template"); + end; + local procedure UpdateControls() begin ShowSampleSizeFixedQuantity := Rec."Sample Source" = Rec."Sample Source"::"Fixed Quantity"; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplateList.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplateList.Page.al index 3971a9479e..003d7c3b3a 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplateList.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/Template/QltyInspectionTemplateList.Page.al @@ -7,6 +7,7 @@ namespace Microsoft.QualityManagement.Configuration.Template; using Microsoft.Foundation.Attachment; using Microsoft.QualityManagement.Configuration.GenerationRule; using Microsoft.QualityManagement.Document; +using Microsoft.QualityManagement.Telemetry; /// /// A Quality Inspection Template is an inspection plan containing a set of questions and data points that you want to collect. @@ -140,4 +141,11 @@ page 20404 "Qlty. Inspection Template List" } } } + + trigger OnOpenPage() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Inspection Template List"); + end; } diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/Template/Test/QltyTests.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/Template/Test/QltyTests.Page.al index 0a6328c489..28d17b5128 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/Template/Test/QltyTests.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/Template/Test/QltyTests.Page.al @@ -7,6 +7,7 @@ namespace Microsoft.QualityManagement.Configuration.Template.Test; using Microsoft.QualityManagement.Configuration.Result; using Microsoft.QualityManagement.Configuration.Template; using Microsoft.QualityManagement.Document; +using Microsoft.QualityManagement.Telemetry; using System.Text; /// @@ -270,8 +271,11 @@ page 20401 "Qlty. Tests" trigger OnOpenPage() var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; MatrixVisibleState: array[10] of Boolean; begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Tests"); + QltyResultConditionMgmt.GetDefaultPromotedResults(true, MatrixSourceRecordId, MatrixArrayConditionCellData, MatrixArrayConditionDescriptionCellData, MatrixArrayCaptionSet, MatrixVisibleState); Visible1 := MatrixVisibleState[1]; Visible2 := MatrixVisibleState[2]; diff --git a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionHeader.Table.al b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionHeader.Table.al index 97e2f46d49..154bddd992 100644 --- a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionHeader.Table.al +++ b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionHeader.Table.al @@ -20,6 +20,7 @@ using Microsoft.QualityManagement.Integration.Inventory; using Microsoft.QualityManagement.Integration.Inventory.Transfer; using Microsoft.QualityManagement.Reports; using Microsoft.QualityManagement.Setup; +using Microsoft.QualityManagement.Telemetry; using Microsoft.QualityManagement.Utilities; using Microsoft.QualityManagement.Workflow; using System.Device; @@ -839,7 +840,11 @@ table 20405 "Qlty. Inspection Header" /// Finishes the inspection. /// procedure FinishInspection() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; begin + QltyMgmtFeatureTelemetry.LogFeatureUsage(ObjectType::Table, Database::"Qlty. Inspection Header", 'FinishInspection'); + FinishInspectionAndPrompt(true); end; diff --git a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionList.Page.al b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionList.Page.al index 8aa254c2d8..6addcc59a7 100644 --- a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionList.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionList.Page.al @@ -15,6 +15,7 @@ using Microsoft.QualityManagement.Dispositions.Move; using Microsoft.QualityManagement.Dispositions.Purchase; using Microsoft.QualityManagement.Dispositions.PutAway; using Microsoft.QualityManagement.Dispositions.Transfer; +using Microsoft.QualityManagement.Telemetry; using Microsoft.QualityManagement.Utilities; using Microsoft.Warehouse.Structure; @@ -708,6 +709,13 @@ page 20408 "Qlty. Inspection List" RowActionsAreEnabled: Boolean; StatusStyleExpr: Text; + trigger OnOpenPage() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Inspection List"); + end; + trigger OnAfterGetRecord() begin ResultStyleExpr := Rec.GetResultStyle(); diff --git a/src/Apps/W1/Quality Management/app/src/Permissions/QltyMgmtObjects.PermissionSet.al b/src/Apps/W1/Quality Management/app/src/Permissions/QltyMgmtObjects.PermissionSet.al index 9d335aa14c..0701d9debe 100644 --- a/src/Apps/W1/Quality Management/app/src/Permissions/QltyMgmtObjects.PermissionSet.al +++ b/src/Apps/W1/Quality Management/app/src/Permissions/QltyMgmtObjects.PermissionSet.al @@ -37,6 +37,7 @@ using Microsoft.QualityManagement.Setup; using Microsoft.QualityManagement.Setup.ApplicationAreas; using Microsoft.QualityManagement.Setup.ManualSetup; using Microsoft.QualityManagement.Setup.SetupGuide; +using Microsoft.QualityManagement.Telemetry; using Microsoft.QualityManagement.Utilities; using Microsoft.QualityManagement.Workflow; @@ -97,6 +98,7 @@ permissionset 20406 "QltyMgmt - Objects" codeunit "Qlty. Item Tracking" = X, codeunit "Qlty. Traversal" = X, codeunit "Qlty. Workflow Setup" = X, + codeunit "Qlty. Mgmt. Feature Telemetry" = X, // Pages page "Qlty. Lookup Field Choose" = X, diff --git a/src/Apps/W1/Quality Management/app/src/Reports/QltyCertificateofAnalysis.Report.al b/src/Apps/W1/Quality Management/app/src/Reports/QltyCertificateofAnalysis.Report.al index 9db14c9ea8..2cda643916 100644 --- a/src/Apps/W1/Quality Management/app/src/Reports/QltyCertificateofAnalysis.Report.al +++ b/src/Apps/W1/Quality Management/app/src/Reports/QltyCertificateofAnalysis.Report.al @@ -10,6 +10,7 @@ using Microsoft.Inventory.Item; using Microsoft.QualityManagement.Configuration.Template; #endif using Microsoft.QualityManagement.Document; +using Microsoft.QualityManagement.Telemetry; report 20401 "Qlty. Certificate of Analysis" { @@ -278,6 +279,13 @@ report 20401 "Qlty. Certificate of Analysis" DateLabel = 'Date'; } + trigger OnPreReport() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUsage(ObjectType::Report, Report::"Qlty. Certificate of Analysis", 'Print report Certificate of Analysis'); + end; + var Item: Record Item; CompanyInformation: Record "Company Information"; diff --git a/src/Apps/W1/Quality Management/app/src/Reports/QltyGeneralPurposeInspect.Report.al b/src/Apps/W1/Quality Management/app/src/Reports/QltyGeneralPurposeInspect.Report.al index 00744b2b13..b90016c8d1 100644 --- a/src/Apps/W1/Quality Management/app/src/Reports/QltyGeneralPurposeInspect.Report.al +++ b/src/Apps/W1/Quality Management/app/src/Reports/QltyGeneralPurposeInspect.Report.al @@ -10,6 +10,7 @@ using Microsoft.Inventory.Item; using Microsoft.QualityManagement.Configuration.Template; #endif using Microsoft.QualityManagement.Document; +using Microsoft.QualityManagement.Telemetry; report 20405 "Qlty. General Purpose Inspect." { @@ -315,6 +316,13 @@ report 20405 "Qlty. General Purpose Inspect." LastModifiedByLabel = 'Last modified by'; } + trigger OnPreReport() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUsage(ObjectType::Report, Report::"Qlty. General Purpose Inspect.", 'Print report General Purpose Inspection'); + end; + var Item: Record Item; CompanyInformation: Record "Company Information"; diff --git a/src/Apps/W1/Quality Management/app/src/Reports/QltyNonConformance.Report.al b/src/Apps/W1/Quality Management/app/src/Reports/QltyNonConformance.Report.al index 4698eb0b2d..1be8f7493e 100644 --- a/src/Apps/W1/Quality Management/app/src/Reports/QltyNonConformance.Report.al +++ b/src/Apps/W1/Quality Management/app/src/Reports/QltyNonConformance.Report.al @@ -10,6 +10,7 @@ using Microsoft.Inventory.Item; using Microsoft.QualityManagement.Configuration.Template; #endif using Microsoft.QualityManagement.Document; +using Microsoft.QualityManagement.Telemetry; report 20403 "Qlty. Non-Conformance" { @@ -292,6 +293,13 @@ report 20403 "Qlty. Non-Conformance" LastModifiedByLabel = 'Last modified by'; } + trigger OnPreReport() + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; + begin + QltyMgmtFeatureTelemetry.LogFeatureUsage(ObjectType::Report, Report::"Qlty. Non-Conformance", 'Print report Non-Conformance'); + end; + var Item: Record Item; CompanyInformation: Record "Company Information"; diff --git a/src/Apps/W1/Quality Management/app/src/Setup/QltyManagementSetup.Page.al b/src/Apps/W1/Quality Management/app/src/Setup/QltyManagementSetup.Page.al index 06d2fe269f..d81aa305c8 100644 --- a/src/Apps/W1/Quality Management/app/src/Setup/QltyManagementSetup.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Setup/QltyManagementSetup.Page.al @@ -11,8 +11,8 @@ using Microsoft.QualityManagement.Configuration.SourceConfiguration; using Microsoft.QualityManagement.Configuration.Template; using Microsoft.QualityManagement.Configuration.Template.Test; using Microsoft.QualityManagement.Setup.ApplicationAreas; +using Microsoft.QualityManagement.Telemetry; using System.Environment; -using System.Telemetry; page 20400 "Qlty. Management Setup" { @@ -283,21 +283,21 @@ page 20400 "Qlty. Management Setup" var QltyAutoConfigure: Codeunit "Qlty. Auto Configure"; - FeatureTelemetry: Codeunit "Feature Telemetry"; - QualityManagementTok: Label 'Quality Management', Locked = true; IsSaaS: Boolean; trigger OnOpenPage() var EnvironmentInformation: Codeunit "Environment Information"; + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; begin IsSaaS := EnvironmentInformation.IsSaaS(); - FeatureTelemetry.LogUptake('0000QID', QualityManagementTok, Enum::"Feature Uptake Status"::Discovered); + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Management Setup"); + if not Rec.Get() then begin QltyAutoConfigure.EnsureBasicSetupExists(false); if Rec.Get() then; - FeatureTelemetry.LogUptake('0000QIE', QualityManagementTok, Enum::"Feature Uptake Status"::"Set up"); + QltyMgmtFeatureTelemetry.LogFeatureUptakeSetUp(ObjectType::Page, Page::"Qlty. Management Setup"); end; end; diff --git a/src/Apps/W1/Quality Management/app/src/Setup/SetupGuide/QltyManagementSetupGuide.Page.al b/src/Apps/W1/Quality Management/app/src/Setup/SetupGuide/QltyManagementSetupGuide.Page.al index 0de4c1a041..70ec616802 100644 --- a/src/Apps/W1/Quality Management/app/src/Setup/SetupGuide/QltyManagementSetupGuide.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Setup/SetupGuide/QltyManagementSetupGuide.Page.al @@ -6,10 +6,10 @@ namespace Microsoft.QualityManagement.Setup.SetupGuide; using Microsoft.QualityManagement.Setup; using Microsoft.QualityManagement.Setup.ApplicationAreas; +using Microsoft.QualityManagement.Telemetry; using Microsoft.QualityManagement.Utilities; using System.Environment; using System.Environment.Configuration; -using System.Telemetry; using System.Utilities; page 20438 "Qlty. Management Setup Guide" @@ -97,10 +97,8 @@ page 20438 "Qlty. Management Setup Guide" var MediaRepositoryStandard: Record "Media Repository"; MediaResourcesStandard: Record "Media Resources"; - FeatureTelemetry: Codeunit "Feature Telemetry"; TopBannerVisible: Boolean; MainPageVisible: Boolean; - QualityManagementTok: Label 'Quality Management', Locked = true; SettingsLinkLbl: Label 'Open My Settings'; trigger OnInit(); @@ -110,19 +108,22 @@ page 20438 "Qlty. Management Setup Guide" end; trigger OnOpenPage(); + var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; begin - FeatureTelemetry.LogUptake('0000QIC', QualityManagementTok, Enum::"Feature Uptake Status"::Discovered); + QltyMgmtFeatureTelemetry.LogFeatureUptakeDiscovered(ObjectType::Page, Page::"Qlty. Management Setup Guide"); end; local procedure DoneAction(); var + QltyMgmtFeatureTelemetry: Codeunit "Qlty. Mgmt. Feature Telemetry"; GuidedExperience: Codeunit "Guided Experience"; QltyApplicationAreaMgmt: Codeunit "Qlty. Application Area Mgmt."; QltyNotificationMgmt: Codeunit "Qlty. Notification Mgmt."; begin GuidedExperience.CompleteAssistedSetup(ObjectType::Page, Page::"Qlty. Management Setup Guide"); - FeatureTelemetry.LogUptake('0000QIB', QualityManagementTok, Enum::"Feature Uptake Status"::"Set up"); + QltyMgmtFeatureTelemetry.LogFeatureUptakeSetup(ObjectType::Page, Page::"Qlty. Management Setup Guide"); QltyNotificationMgmt.InitializeAllNotifications(); QltyApplicationAreaMgmt.RefreshExperienceTierCurrentCompany(); diff --git a/src/Apps/W1/Quality Management/app/src/Telemetry/QltyMgmtFeatureTelemetry.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Telemetry/QltyMgmtFeatureTelemetry.Codeunit.al new file mode 100644 index 0000000000..1c7505e322 --- /dev/null +++ b/src/Apps/W1/Quality Management/app/src/Telemetry/QltyMgmtFeatureTelemetry.Codeunit.al @@ -0,0 +1,70 @@ +// ------------------------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// ------------------------------------------------------------------------------------------------ +namespace Microsoft.QualityManagement.Telemetry; + +using System.Telemetry; + +codeunit 20458 "Qlty. Mgmt. Feature Telemetry" +{ + Access = Internal; + InherentEntitlements = X; + InherentPermissions = X; + + var + FeatureTelemetry: Codeunit "Feature Telemetry"; + QualityManagementTok: Label 'Quality Management', Locked = true; + + /// + /// Logs a feature uptake telemetry event with status "Discovered" for the specified AL object. + /// + /// The AL object type (e.g. Page, Codeunit) that discovered the feature. + /// The AL object id that discovered the feature. + internal procedure LogFeatureUptakeDiscovered(ObjectType: ObjectType; ObjectId: Integer) + begin + FeatureTelemetry.LogUptake('0000QID', GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Discovered, GetObjectCustomDimensions(ObjectType, ObjectId)); + end; + + /// + /// Logs a feature uptake telemetry event with status "Set up" for the specified AL object. + /// + /// The AL object type (e.g. Page, Codeunit) that completed setup of the feature. + /// The AL object id that completed setup of the feature. + internal procedure LogFeatureUptakeSetup(ObjectType: ObjectType; ObjectId: Integer) + begin + FeatureTelemetry.LogUptake('0000QIE', GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::"Set up", GetObjectCustomDimensions(ObjectType, ObjectId)); + end; + + /// + /// Logs a feature usage telemetry event for the specified AL object and event name. + /// + /// The AL object type (e.g. Page, Codeunit) where the usage occurred. + /// The AL object id where the usage occurred. + /// The name of the usage event to log. + internal procedure LogFeatureUsage(ObjectType: ObjectType; ObjectId: Integer; EventName: Text) + begin + FeatureTelemetry.LogUsage('0000QIA', GetFeatureTelemetryName(), EventName, GetObjectCustomDimensions(ObjectType, ObjectId)); + end; + + /// + /// Builds the custom dimensions dictionary used by feature telemetry events, populated with the AL object type and id. + /// + /// The AL object type to include in the custom dimensions. + /// The AL object id to include in the custom dimensions. + /// A dictionary containing ObjectType and ObjectId entries. + local procedure GetObjectCustomDimensions(ObjectType: ObjectType; ObjectId: Integer) CustomDimensions: Dictionary of [Text, Text] + begin + CustomDimensions.Add('ObjectType', Format(ObjectType)); + CustomDimensions.Add('ObjectId', Format(ObjectId)); + end; + + /// + /// Returns the telemetry feature name for quality management functionality tracking. + /// + /// Feature name used for telemetry logging + local procedure GetFeatureTelemetryName(): Text + begin + exit(QualityManagementTok); + end; +}