Page 1978 MS 365 License Setup Wizard

App
Base Application
Namespace
System.Environment.Configuration
Versions
22-28

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/MS365LicenseSetupWizard.Page.al724 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;

using Microsoft.Inventory.Item;
using System.Apps;
using System.Azure.Identity;
using System.Environment;
using System.Reflection;
using System.Utilities;

page 1978 "MS 365 License Setup Wizard"
{
    Caption = 'Set up access with Microsoft 365 licenses';
    Extensible = false;
    DeleteAllowed = false;
    InsertAllowed = false;
    LinksAllowed = false;
    PageType = NavigatePage;
    ShowFilter = false;
    Permissions = tabledata Company = r,
                  tabledata "Media Resources" = r,
                  tabledata "Media Repository" = r,
                  tabledata "Permission Set In Plan Buffer" = r,
                  tabledata Item = r;
    ApplicationArea = Basic, Suite;
    UsageCategory = Administration;
    AdditionalSearchTerms = 'Teams, tabs, M365, Microsoft, collaboration, Office, channel, free, access, free access, freemium, Teams setup, teams access';
    AccessByPermission = tabledata "All Profile" = IMD;

    layout
    {
        area(Content)
        {
            group(BannerNotCompleted)
            {
                Editable = false;
                ShowCaption = false;
                Visible = (WizardStep <> WizardStep::Success) and (WizardStep <> WizardStep::TryItOut);

                field(MediaResourcesStandard; MediaResourcesStandard."Media Reference")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;
                }
            }
            group(BannerCompleted)
            {
                Editable = false;
                ShowCaption = false;
                Visible = (WizardStep = WizardStep::Success) or (WizardStep = WizardStep::TryItOut);

                field(MediaResourcesDone; MediaResourcesDone."Media Reference")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;
                }
            }
            group(LandingSaas)
            {
                Visible = (WizardStep = WizardStep::Landing) and (WizardLanding = WizardLanding::Saas);
                ShowCaption = false;
                group(LandingSaasPara1)
                {
                    Caption = 'Set up access to Business Central with Microsoft 365 licenses';
                    InstructionalText = 'To help Business Central users easily share and collaborate on business data with their coworkers, you can enable access with Microsoft 365 licenses.';
                }
                group(LandingSaasPara2)
                {
                    ShowCaption = false;
                    InstructionalText = 'When enabled, users within the same organization that have an applicable Microsoft 365 license will be able to read (but not write) Business Central data that is shared with them in Microsoft Teams, without needing a Business Central license.';
                }
                field(LandingSaasLink; LandingSaasLinkLinkTxt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;

                    trigger OnDrillDown()
                    begin
                        Hyperlink(AdminAccessM365LicenseFwdLinkTxt);
                    end;
                }
                group(LandingOnPremPara3)
                {
                    Caption = 'Let’s go!';
                    InstructionalText = 'Choose Next to get started.';
                }
            }
            group(LandingOnPrem)
            {
                Visible = (WizardStep = WizardStep::Landing) and (WizardLanding = WizardLanding::OnPrem);
                ShowCaption = false;
                group(LandingOnPremPara1)
                {
                    Caption = 'This feature is not available';
                    InstructionalText = 'Accessing Business Central data in Microsoft Teams is only available with Business Central online.';
                }
                group(LandingOnPremPara2)
                {
                    ShowCaption = false;
                    InstructionalText = 'When enabled, users within the same organization that have an applicable Microsoft 365 license will be able to read (but not write) Business Central data that is shared with them in Microsoft Teams, without needing a Business Central license.';
                }
                field(LandingOnPremLink; LandingOnPremLinkTxt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;

                    trigger OnDrillDown()
                    begin
                        Hyperlink(AdminAccessM365LicenseFwdLinkTxt);
                    end;
                }
            }
            group(Permissions)
            {
                Visible = (WizardStep = WizardStep::Permissions);
                ShowCaption = false;
                group(PermissionsPara1)
                {
                    Caption = 'Configure what can be accessed';
                    InstructionalText = 'When people access Business Central with their Microsoft 365 license for the first time, their user record will be created, and object permissions will be automatically assigned.';
                    Visible = WizardPermissions <> WizardPermissions::PermissionsEmptyInConfig;
                }
                group(PermissionsEmptyInConfigPara0)
                {
                    Caption = 'Configure what can be accessed';
                    InstructionalText = 'Admins determine which data is accessible by applying object permissions.';
                    Visible = WizardPermissions = WizardPermissions::PermissionsEmptyInConfig;
                }
                group(PermissionsEmptyInConfigPara01)
                {
                    ShowCaption = false;
                    InstructionalText = 'When people access Business Central with their Microsoft 365 license for the first time, their user record will be created, and permissions will be automatically assigned.';
                    Visible = WizardPermissions = WizardPermissions::PermissionsEmptyInConfig;
                }
                group(PermissionsEmptyInConfigPara1)
                {
                    ShowCaption = false;
                    InstructionalText = 'You choose which permissions are assigned in the License Configuration page for the Microsoft 365 license. Business Central will not allow these users to edit data, no matter which permissions you configure.';
                    Visible = WizardPermissions <> WizardPermissions::PermissionsEmptyInConfigAndEvalCompany;
                }
                group(PermissionsEvalCompanyPara1)
                {
                    Caption = '';
                    InstructionalText = 'Since this is an evaluation company, you can make it easier to try out this feature by not restricting access using permissions. You can always change this afterwards from the license configuration page.';
                    Visible = WizardPermissions = WizardPermissions::PermissionsEmptyInConfigAndEvalCompany;
                }
                field(PermissionsLink; PermissionsLinkTxt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;

                    trigger OnDrillDown()
                    begin
                        Hyperlink(AssignPermissionsToUsersFwdLinkTxt);
                    end;
                }
                group(PermissionsExistInConfigPara1)
                {
                    Caption = '';
                    InstructionalText = 'You appear to have some permissions configured already. Choose Next to proceed with these permissions.';
                    Visible = WizardPermissions = WizardPermissions::PermissionsExistsInConfig;
                }
            }
            group(TAC)
            {
                Visible = (WizardStep = WizardStep::TAC);
                ShowCaption = false;
                group(TACEnablePara1)
                {
                    Caption = 'Enable access';
                    InstructionalText = 'Now that you have configured object permissions, you are ready to enable access on this environment from the Business Central admin center.';
                    Visible = WizardTAC = WizardTAC::DisabledInTAC;
                }
                group(TACEnablePara2)
                {
                    ShowCaption = false;
                    InstructionalText = 'Choose ‘Enable’ to continue. You can also turn this off or on at any time from the Business Central admin center.';
                    Visible = WizardTAC = WizardTAC::DisabledInTAC;
                }
                group(TACConfigurePara1)
                {
                    Caption = 'Enable access';
                    InstructionalText = 'Access is already enabled for this environment in the Business Central admin center.';
                    Visible = WizardTAC = WizardTAC::EnabledInTAC;
                }
            }
            group(AccessControl)
            {
                Visible = (WizardStep = WizardStep::AccessControl);
                ShowCaption = false;
                group(AccessControlDynPara1)
                {
                    Caption = 'Choose who gets access';
                    InstructionalText = 'This environment does not have a security group assigned: anyone with a Microsoft 365 license within your organization can access records shared with them.';
                }
                group(AccessControlPara2)
                {
                    ShowCaption = false;
                    InstructionalText = 'To restrict who gets access, you can assign a security group in the Business Central admin center that determines which licensed Business Central users and which Microsoft 365 license-holders can access this environment.';
                }
                field(AccessControlLink; AccessControlLinkTxt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;

                    trigger OnDrillDown()
                    begin
                        Hyperlink(ManageAccessToEnvsFwdLinkTxt);
                    end;
                }
            }
            group(AppDeployment)
            {
                Visible = (WizardStep = WizardStep::AppDeployment);
                ShowCaption = false;
                group(AppDeploymentPara1)
                {
                    Caption = 'Deploy the Business Central app for Teams';
                    InstructionalText = 'Data can only be shared and read in Microsoft Teams if people have the Business Central app for Teams installed.';
                }
                group(AppDeploymentPara2)
                {
                    ShowCaption = false;
                    InstructionalText = 'If you have deployed the app before, or have done this only for licensed Business Central users, consider deploying more broadly to make it available to everyone in your organization.';
                }
                field(AppDeploymentLink; AppDeploymentLinkTxt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;

                    trigger OnDrillDown()
                    begin
                        Hyperlink(AppDeploymentFwdLinkTxt);
                    end;
                }
            }
            group(Success)
            {
                Visible = (WizardStep = WizardStep::Success);
                ShowCaption = false;
                group(SuccessPara1)
                {
                    Caption = 'Success!';
                    InstructionalText = 'You’re all set up so that people in your organization that only have a Microsoft 365 license can access data from this environment.';
                }
                group(SuccessPara2)
                {
                    Visible = ShowSwitcherText;
                    ShowCaption = false;
                    InstructionalText = 'To configure other environments, close this setup window, use the switcher (Ctrl+O) to go to another environment, then run this guided setup again.';
                }
                group(SuccessPara3)
                {
                    ShowCaption = false;
                    InstructionalText = 'Choose ‘Try it out’ to experience how people will share and read data in Microsoft Teams.';
                }
            }
            group(TryItOut)
            {
                Visible = (WizardStep = WizardStep::TryItOut);
                ShowCaption = false;
                group(TryItOutPara1)
                {
                    Caption = 'Find your buddy';
                    InstructionalText = 'To get started, identify a coworker that has a Microsoft 365 license but does not have a Business Central license';
                }
                field(TryItOutLink2; TryItOutLink2Txt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;

                    trigger OnDrillDown()
                    begin
                        Microsoft365License.OpenM365AdminCenter();
                    end;
                }

                group(TryItOutPara2)
                {
                    Caption = 'Share something with them';
                    InstructionalText = 'Go to any list or card page and use the Share action to Share to Teams.';
                }
                field(TryItOutLink3; TryItOutLink3Txt)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    ShowCaption = false;
                    Visible = ShowItemCardLink;

                    trigger OnDrillDown()
                    var
                        SpotlightTour: Codeunit "Spotlight Tour";
                        SpotlightTourType: Enum "Spotlight Tour Type";
                    begin
                        CurrPage.Close();
                        SpotlightTour.Start(Page::"Item Card", SpotlightTourType::"Share to Teams", ShareToTeamsStep1TitleTxt, ShareToTeamsStep1TextTxt, ShareToTeamsStep2TileTxt, ShareToTeamsStep2TextTxt);
                    end;
                }
                group(TryItOutPara3)
                {
                    ShowCaption = false;
                    InstructionalText = '💡 Tip: when sharing to Teams, make sure to include the link preview as a card. Your coworker can only access the page or record from the Card details, or from any tabs you add to Teams.';
                }
            }
        }
    }

    actions
    {
        area(Processing)
        {
            action(ConfigPermissionsDefault)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Configure permissions';
                Visible = ConfigPermissionsDefaultActionVisible;
                InFooterBar = true;

                trigger OnAction()
                begin
                    RunPermissionAction();
                end;
            }

            action(ConfigPermissionsSecondary)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Configure permissions';
                Visible = ConfigPermissionsSecondaryActionVisible;
                InFooterBar = true;

                trigger OnAction()
                begin
                    RunPermissionAction();
                end;
            }
            action(GoToAdminCenter)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Go to admin center';
                Visible = GoToAdminCenterActionVisible;
                InFooterBar = true;

                trigger OnAction()
                begin
                    Microsoft365License.OpenBCAdminCenter();
                end;
            }
            action(AccessControlAdminCenter)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Go to admin center';
                Visible = AccessControlAdminCenterActionVisible;
                InFooterBar = true;

                trigger OnAction()
                begin
                    Microsoft365License.OpenBCAdminCenter();
                    WizardNextSkip := WizardNextSkip::Next;
                    UpdateActionVisibility();
                end;
            }
            action(GoToGuidedDevelopment)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Go to guided deployment';
                Visible = GoToGuidedDevelopmentActionVisble;
                InFooterBar = true;

                trigger OnAction()
                var
                    TeamCentralizedDeployment: Page "Teams Centralized Deployment";
                begin
                    TeamCentralizedDeployment.LaunchFromM365Guide();
                    TeamCentralizedDeployment.RunModal();
                    WizardNextSkip := WizardNextSkip::Next;
                    UpdateActionVisibility();
                end;
            }
            action(TryItOutAction)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Try It Out';
                Visible = TryItOutActionVisible;
                Image = PreviousRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    NextStep();
                end;
            }
            action(Back)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Back';
                Visible = BackActionVisible;
                Image = PreviousRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    PrevStep();
                end;
            }
            action(Next)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Next';
                Visible = NextActionVisible;
                Enabled = NextActionEnabled;
                Image = NextRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    NextStep();
                end;
            }
            action(EnableInAdminCenter)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Enable';
                Visible = EnableInAdminCenterActionVisible;
                Image = NextRecord;
                InFooterBar = true;

                trigger OnAction()
                var
                    EnvironmentInformation: Codeunit "Environment Information";
                begin
                    EnvironmentInformation.EnableM365Collaboration();
                    NextStep();
                end;
            }
            action(Close)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Close';
                Visible = CloseActionVisible;
                Image = PreviousRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    GuidedExperience.CompleteAssistedSetup(ObjectType::Page, PAGE::"MS 365 License Setup Wizard");
                    CurrPage.Close();
                end;
            }
            action(Skip)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Skip';
                Visible = SkipActionVisible;
                Image = NextRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    NextStep();
                end;
            }
            action(Done)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Done';
                Visible = DoneActionVisible;
                Image = NextRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    GuidedExperience.CompleteAssistedSetup(ObjectType::Page, PAGE::"MS 365 License Setup Wizard");
                    CurrPage.Close();
                end;
            }
            action(DontRestrict)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Don’t restrict access';
                Visible = DontRestrictActionVisible;
                Image = NextRecord;
                InFooterBar = true;

                trigger OnAction()
                begin
                    Microsoft365License.AssignMicrosoft365ReadPermission(false);
                    NextStep();
                end;
            }
        }
    }

    trigger OnOpenPage()
    var
        Item: Record Item;
    begin
        M365PlanId := PlanIds.GetMicrosoft365PlanId();
        ShowSwitcherText := (CurrentClientType <> ClientType::Tablet) and
                            (CurrentClientType <> ClientType::Phone) and
                            (CurrentClientType <> ClientType::Teams);
        ShowItemCardLink := not Item.IsEmpty();

        LoadTopBanners();
        ShowLandingStep();
        UpdateActionVisibility();
    end;

    local procedure LoadTopBanners()
    begin
        if MediaRepositoryStandard.Get('AssistedSetup-NoText-400px.png', Format(ClientTypeManagement.GetCurrentClientType())) and
           MediaRepositoryDone.Get('AssistedSetupDone-NoText-400px.png', Format(ClientTypeManagement.GetCurrentClientType()))
        then
            if MediaResourcesStandard.Get(MediaRepositoryStandard."Media Resources Ref") and
               MediaResourcesDone.Get(MediaRepositoryDone."Media Resources Ref")
            then
                TopBannerVisible := MediaResourcesDone."Media Reference".HasValue();
    end;

    local procedure NextStep()
    begin
        case WizardStep of
            WizardStep::Landing:
                ShowPermissionsStep();
            WizardStep::Permissions:
                ShowTAC();
            WizardStep::TAC:
                ShowAccessControl();
            WizardStep::AccessControl:
                ShowAppDeployment();
            WizardStep::AppDeployment:
                ShowSuccess();
            WizardStep::Success:
                ShowTryItOut();
        end;
        UpdateActionVisibility();
    end;

    local procedure PrevStep()
    begin
        case WizardStep of
            WizardStep::Permissions:
                ShowLandingStep();
            WizardStep::TAC:
                ShowPermissionsStep();
            WizardStep::AccessControl:
                ShowTAC();
        end;
        UpdateActionVisibility();
    end;

    local procedure ShowLandingStep()
    var
        EnvironmentInformation: Codeunit "Environment Information";
    begin
        WizardStep := WizardStep::Landing;
        if EnvironmentInformation.IsSaaS() then
            WizardLanding := WizardLanding::Saas
        else
            WizardLanding := WizardLanding::OnPrem;
    end;

    local procedure ShowPermissionsStep()
    var
        Company: Record Company;
    begin
        Company.Get(CompanyName());
        WizardStep := WizardStep::Permissions;
        if HasLicenseConfiguration() then
            WizardPermissions := WizardPermissions::PermissionsExistsInConfig
        else
            if Company."Evaluation Company" then
                WizardPermissions := WizardPermissions::PermissionsEmptyInConfigAndEvalCompany
            else
                WizardPermissions := WizardPermissions::PermissionsEmptyInConfig;
    end;

    local procedure ShowTAC()
    begin
        WizardStep := WizardStep::TAC;
        if AzureADGraph.IsM365CollaborationEnabled() then
            WizardTAC := WizardTAC::EnabledInTAC
        else
            WizardTAC := WizardTAC::DisabledInTAC;
    end;

    local procedure ShowAccessControl()
    begin
        WizardStep := WizardStep::AccessControl;
        WizardNextSkip := WizardNextSkip::Skip;

        if AzureADGraph.IsEnvironmentSecurityGroupDefined() then
            ShowAppDeployment();
    end;

    local procedure ShowAppDeployment()
    begin
        WizardStep := WizardStep::AppDeployment;
        WizardNextSkip := WizardNextSkip::Skip;
    end;

    local procedure ShowSuccess()
    begin
        WizardStep := WizardStep::Success;
    end;

    local procedure ShowTryItOut()
    begin
        WizardStep := WizardStep::TryItOut;
    end;

    local procedure UpdateActionVisibility()
    begin
        DontRestrictActionVisible := (WizardStep = WizardStep::Permissions) and (WizardPermissions = WizardPermissions::PermissionsEmptyInConfigAndEvalCompany);
        DoneActionVisible := WizardStep = WizardStep::Success;
        TryItOutActionVisible := WizardStep = WizardStep::Success;
        GoToGuidedDevelopmentActionVisble := WizardStep = WizardStep::AppDeployment;
        AccessControlAdminCenterActionVisible := WizardStep = WizardStep::AccessControl;
        EnableInAdminCenterActionVisible := ((WizardStep = WizardStep::TAC) and (WizardTAC = WizardTAC::DisabledInTAC));
        GoToAdminCenterActionVisible := (WizardStep = WizardStep::TAC);
        ConfigPermissionsDefaultActionVisible := (WizardStep = WizardStep::Permissions) and (WizardPermissions = WizardPermissions::PermissionsEmptyInConfig);
        ConfigPermissionsSecondaryActionVisible := (WizardStep = WizardStep::Permissions) and (WizardPermissions <> WizardPermissions::PermissionsEmptyInConfig);

        NextActionVisible :=
            ((WizardStep = WizardStep::Landing) and (WizardLanding = WizardLanding::Saas)) or
            ((WizardStep = WizardStep::Permissions) and (WizardPermissions <> WizardPermissions::PermissionsEmptyInConfigAndEvalCompany)) or
            ((WizardStep = WizardStep::TAC) and (WizardTAC = WizardTAC::EnabledInTAC)) or
            ((WizardStep = WizardStep::AccessControl) and (WizardNextSkip = WizardNextSkip::Next)) or
            ((WizardStep = WizardStep::AppDeployment) and (WizardNextSkip = WizardNextSkip::Next));

        NextActionEnabled :=
            not ((WizardStep = WizardStep::Permissions) and (WizardPermissions = WizardPermissions::PermissionsEmptyInConfig));

        BackActionVisible :=
            (WizardStep = WizardStep::Permissions) or
            (WizardStep = WizardStep::TAC) or
            (WizardStep = WizardStep::AccessControl);

        CloseActionVisible :=
            ((WizardStep = WizardStep::Landing) and (WizardLanding = WizardLanding::OnPrem)) or
            (WizardStep = WizardStep::TryItOut);

        SkipActionVisible :=
            (((WizardStep = WizardStep::AccessControl) and (WizardNextSkip = WizardNextSkip::Skip)) or
            ((WizardStep = WizardStep::AppDeployment) and (WizardNextSkip = WizardNextSkip::Skip)));

        CurrPage.Update(true);
    end;

    local procedure RunPermissionAction()
    begin
        OpenPlanConfigurationForM365();
        ShowPermissionsStep();
        UpdateActionVisibility();
    end;

    local procedure OpenPlanConfigurationForM365()
    var
        PlanConfigurationCard: Page "Plan Configuration Card";
    begin
        PlanConfigurationCard.SetPlan(M365PlanId);
        PlanConfigurationCard.RunModal();
    end;

    local procedure HasLicenseConfiguration(): Boolean
    var
        PermissionSetInPlanBuffer: Record "Permission Set In Plan Buffer";
        PlanConfiguration: Codeunit "Plan Configuration";
    begin
        PlanConfiguration.GetCustomPermissions(PermissionSetInPlanBuffer);
        PermissionSetInPlanBuffer.SetRange("Plan ID", M365PlanId);
        PermissionSetInPlanBuffer.SetFilter("Role ID", '<>%1', LoginTok);
        exit(PermissionSetInPlanBuffer.Count() > 0);
    end;

    var
        MediaRepositoryStandard: Record "Media Repository";
        MediaRepositoryDone: Record "Media Repository";
        MediaResourcesStandard: Record "Media Resources";
        MediaResourcesDone: Record "Media Resources";
        AzureADGraph: Codeunit "Azure AD Graph";
        ClientTypeManagement: Codeunit "Client Type Management";
        Microsoft365License: Codeunit "Microsoft 365 License";
        PlanIds: Codeunit "Plan Ids";
        GuidedExperience: Codeunit "Guided Experience";
        M365PlanId: Guid;
        TopBannerVisible, NextActionVisible, NextActionEnabled, BackActionVisible, CloseActionVisible, SkipActionVisible, ShowSwitcherText, ShowItemCardLink : Boolean;
        DontRestrictActionVisible, DoneActionVisible, TryItOutActionVisible, GoToGuidedDevelopmentActionVisble : Boolean;
        AccessControlAdminCenterActionVisible, GoToAdminCenterActionVisible, EnableInAdminCenterActionVisible, ConfigPermissionsDefaultActionVisible, ConfigPermissionsSecondaryActionVisible : Boolean;
        WizardStep: Option Landing,Permissions,TAC,AccessControl,AppDeployment,Success,TryItOut;
        WizardLanding: Option Saas,OnPrem;
        WizardPermissions: Option PermissionsExistsInConfig,PermissionsEmptyInConfig,PermissionsEmptyInConfigAndEvalCompany;
        WizardTAC: Option EnabledInTAC,DisabledInTAC;
        WizardNextSkip: Option Skip,Next;
        LandingOnPremLinkTxt: Label 'Learn about minimum requirements for Teams integration';
        LandingSaasLinkLinkTxt: Label 'Learn more';
        PermissionsLinkTxt: Label 'Learn about permissions';
        AccessControlLinkTxt: Label 'Learn more about securing environments';
        AppDeploymentLinkTxt: Label 'Learn more about the Business Central app for Teams';
        TryItOutLink2Txt: Label 'Find more people from the Microsoft 365 admin center users list';
        TryItOutLink3Txt: Label 'Help me share the item card';
        ShareToTeamsStep1TitleTxt: Label 'Try it out with Teams';
        ShareToTeamsStep1TextTxt: Label 'Experience just one of many ways in which Business Central users across your organization can share and collaborate with others, regardless of whether recipients have a Business Central license.';
        ShareToTeamsStep2TileTxt: Label 'Share to Teams';
        ShareToTeamsStep2TextTxt: Label 'When you use the share icon to share a link to this item record, the compose window will automatically display the link preview as a card. Make sure you include the card with your message: recipients can only access the record from the card details.';
        AdminAccessM365LicenseFwdLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2209653', Locked = true;
        AssignPermissionsToUsersFwdLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2185295', Locked = true;
        ManageAccessToEnvsFwdLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2171715', Locked = true;
        AppDeploymentFwdLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2170851', Locked = true;
        LoginTok: Label 'LOGIN', Locked = true;

}