Codeunit 2611 Feature Management Facade in 26

App
System Application
Namespace
System.Environment.Configuration

Procedures, 11Events, 10

Versions171819202122232425262728latest

Source242526272829

Source in 26

src/System Application/App/Feature Key/src/FeatureManagementFacade.Codeunit.al163 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------

namespace System.Environment.Configuration;

/// <summary>
/// This codeunit provides public functions for feature management.
/// </summary>
codeunit 2611 "Feature Management Facade"
{
    Access = Public;

    var
        FeatureManagementImpl: Codeunit "Feature Management Impl.";

    /// <summary>
    /// Returns true if the feature is enabled and data update, if required, is complete.
    /// </summary>
    /// <param name="FeatureId">the feature id in the system table "Feature Key"</param>
    /// <returns>if the feature is fully enabled</returns>
    procedure IsEnabled(FeatureId: Text[50]): Boolean;
    begin
        exit(FeatureManagementImpl.IsEnabled(FeatureId));
    end;

    /// <summary>
    /// Returns true if the feature is enabled and data update, if required, is complete.
    /// </summary>
    /// <param name="FeatureId">the feature id in the system table "Feature Key"</param>
    /// <param name="AllowInsert">specifies if inserts are allowed while checking for feature being enabled</param>
    /// <returns>if the feature is fully enabled</returns>
    procedure IsEnabled(FeatureId: Text[50]; AllowInsert: Boolean): Boolean;
    begin
        exit(FeatureManagementImpl.IsEnabled(FeatureId, AllowInsert));
    end;

    /// <summary>
    /// Updates the status in "Feature Data Update Status" records related to all companies.
    /// Also sends the notification reminding user to sign in again after feature is enabled/disabled.
    /// </summary>
    /// <param name="FeatureKey">the current "Feature Key" record</param>
    procedure AfterValidateEnabled(FeatureKey: Record "Feature Key")
    begin
        FeatureManagementImpl.AfterValidateEnabled(FeatureKey);
    end;

    /// <summary>
    /// Gets the URL to let users try out a feature.
    /// <param name="FeatureKey">The feature key for the feature to try.</param>
    /// </summary>
    procedure GetFeatureKeyUrlForWeb(FeatureKey: Text[50]): Text
    begin
        exit(FeatureManagementImpl.GetFeatureKeyUrlForWeb(FeatureKey))
    end;

    /// <summary>
    /// Returns true if the feature has an interface implementation.
    /// </summary>
    procedure GetImplementation(FeatureDataUpdateStatus: Record "Feature Data Update Status") Implemented: Boolean;
    begin
        exit(FeatureManagementImpl.GetImplementation(FeatureDataUpdateStatus));
    end;

    /// <summary>
    /// Retrurns the result of the interface's GetTaskDescription method.
    /// </summary>
    procedure GetTaskDescription(FeatureDataUpdateStatus: Record "Feature Data Update Status") TaskDescription: Text;
    begin
        exit(FeatureManagementImpl.GetTaskDescription(FeatureDataUpdateStatus));
    end;

    /// <summary>
    /// Runs the interface's review data method.
    /// </summary>
    procedure ReviewData(FeatureDataUpdateStatus: Record "Feature Data Update Status"): Boolean;
    begin
        exit(FeatureManagementImpl.ReviewData(FeatureDataUpdateStatus));
    end;

    /// <summary>
    /// Schedules or starts update depending on the options picked on the wizard page.
    /// </summary>
    /// <param name="FeatureDataUpdateStatus">The current status record</param>
    /// <returns>true if user picked Update or Schedule and the task is scheduled or executed.</returns>
    procedure Update(var FeatureDataUpdateStatus: Record "Feature Data Update Status"): Boolean;
    begin
        exit(FeatureManagementImpl.Update(FeatureDataUpdateStatus));
    end;

    /// <summary>
    /// Cancels the scheduled task before it is started.
    /// </summary>
    procedure CancelTask(var FeatureDataUpdateStatus: Record "Feature Data Update Status"; ClearStartDateTime: Boolean)
    begin
        FeatureManagementImpl.CancelTask(FeatureDataUpdateStatus, ClearStartDateTime);
    end;

    /// <summary>
    /// Runs the interface's data updata method and updates the feature status.
    /// </summary>
    procedure UpdateData(var FeatureDataUpdateStatus: Record "Feature Data Update Status")
    begin
        FeatureManagementImpl.UpdateData(FeatureDataUpdateStatus);
    end;

    internal procedure GetFeatureDataUpdateStatus(FeatureKey: Record "Feature Key"; var FeatureDataUpdateStatus: Record "Feature Data Update Status")
    begin
        FeatureManagementImpl.GetFeatureDataUpdateStatus(FeatureKey, FeatureDataUpdateStatus);
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnAfterUpdateData(var FeatureDataUpdateStatus: Record "Feature Data Update Status")
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnBeforeUpdateData(var FeatureDataUpdateStatus: Record "Feature Data Update Status")
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnBeforeScheduleTask(FeatureDataUpdateStatus: Record "Feature Data Update Status"; var DoNotScheduleTask: Boolean; var TaskId: Guid)
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnGetImplementation(FeatureDataUpdateStatus: Record "Feature Data Update Status"; var FeatureDataUpdate: Interface "Feature Data Update"; var ImplementedId: Text[50])
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnShowTaskLog(FeatureDataUpdateStatus: Record "Feature Data Update Status")
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnInitializeFeatureDataUpdateStatus(var FeatureDataUpdateStatus: Record "Feature Data Update Status"; var InitializeHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnAfterFeatureEnableConfirmed(var FeatureKey: Record "Feature Key")
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnAfterFeatureDisableConfirmed(FeatureKey: Record "Feature Key")
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnBeforeSetFeatureStatusForOtherCompanies(var FeatureDataUpdateStatus: Record "Feature Data Update Status"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    internal procedure OnBeforeOpenFeatureManagement(var FeatureManagementPageID: Integer; var IsHandled: Boolean)
    begin
    end;

}

Procedures, 11

NameParametersReturnsAccessObsolete
IsEnabled(Text[50])Booleanpublic-
AfterValidateEnabled(Record Feature Key)public-
GetFeatureKeyUrlForWeb(Text[50])Textpublic-
GetImplementation(Record Feature Data Update Status)Booleanpublic-
GetTaskDescription(Record Feature Data Update Status)Textpublic-
ReviewData(Record Feature Data Update Status)Booleanpublic-
Update(var Record Feature Data Update Status)Booleanpublic-
CancelTask(var Record Feature Data Update Status, Boolean)public-
UpdateData(var Record Feature Data Update Status)public-
GetFeatureDataUpdateStatus(Record Feature Key, var Record Feature Data Update Status)internal-
IsEnabled(Text[50], Boolean)Booleanpublic-

Events, 10

KindNameParametersObsolete
Integration eventOnAfterUpdateData(var Record Feature Data Update Status)-
Integration eventOnBeforeScheduleTask(Record Feature Data Update Status, var Boolean, var Guid)-
Integration eventOnGetImplementation(Record Feature Data Update Status, var Interface Feature Data Update, var Text[50])-
Integration eventOnShowTaskLog(Record Feature Data Update Status)-
Integration eventOnBeforeUpdateData(var Record Feature Data Update Status)-
Integration eventOnInitializeFeatureDataUpdateStatus(var Record Feature Data Update Status, var Boolean)-
Integration eventOnAfterFeatureEnableConfirmed(var Record Feature Key)-
Integration eventOnAfterFeatureDisableConfirmed(Record Feature Key)-
Integration eventOnBeforeSetFeatureStatusForOtherCompanies(var Record Feature Data Update Status, var Boolean)-
Integration eventOnBeforeOpenFeatureManagement(var Integer, var Boolean)-