Page 1833 Teams Centralized Deployment, source in 29
Source29
src/Layers/W1/BaseApp/TeamsCentralizedDeployment.Page.al393 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.Apps;
using System.Environment;
using System.Environment.Configuration;
using System.Utilities;
page 1833 "Teams Centralized Deployment"
{
Caption = 'Teams App Centralized Deployment';
DeleteAllowed = false;
InsertAllowed = false;
LinksAllowed = false;
PageType = NavigatePage;
ShowFilter = false;
ApplicationArea = Basic, Suite;
UsageCategory = Administration;
AdditionalSearchTerms = 'Add-in, AddIn, M365, Microsoft 365, Addon, Install Teams, Set up Teams';
layout
{
area(content)
{
group(TopBannerStandardGrp)
{
Editable = false;
ShowCaption = false;
Visible = TopBannerVisible and not InstructionsStepVisible;
field(MediaResourcesStandard; MediaResourcesStandard."Media Reference")
{
ApplicationArea = Basic, Suite;
Editable = false;
ShowCaption = false;
}
}
group(TopBannerDoneGrp)
{
Editable = false;
ShowCaption = false;
Visible = TopBannerVisible and InstructionsStepVisible;
field(MediaResourcesDone; MediaResourcesDone."Media Reference")
{
ApplicationArea = Basic, Suite;
Editable = false;
ShowCaption = false;
}
}
// Introduction step
group(Step1)
{
Caption = '';
Visible = IntroStepVisible;
group("Para1.1")
{
Caption = 'Set up the Business Central app for Teams';
Visible = IsSaaS;
group("Para1.1.1")
{
Caption = '';
InstructionalText = 'Administrators can deploy Business Central app for Teams for specific users, groups, or the entire organization. By centralizing deployment, users receive the app in all of their Teams clients without having to add it themselves.';
}
field(LearnMoreOptionsToDeploy; LearnMoreOptionsToDeployLbl)
{
ApplicationArea = Basic, Suite;
Caption = '';
ShowCaption = false;
Editable = false;
Visible = IsSaas;
trigger OnDrillDown()
begin
Hyperlink(LearnMoreOptionsToDeployFwdLinkTxt);
end;
}
group("Para1.1.3")
{
Caption = '';
InstructionalText = 'This doesn’t affect permissions assigned to users in Business Central.';
}
}
group("Para1.2")
{
Caption = 'Let''s go!';
Visible = IsSaas;
InstructionalText = 'Choose Next to get started.';
}
group("Para1.3")
{
Caption = 'This won’t work';
Visible = not IsSaaS;
group("Para1.2.1")
{
Caption = '';
InstructionalText = 'The Business Central app for Teams requires a Business Central online user account that is not compatible with how your Business Central is deployed.';
}
}
}
// Instructions Step for M365
group("Step2")
{
Caption = '';
Visible = InstructionsStepVisible;
group("Para2.1")
{
Caption = 'Configure Microsoft 365';
group("Para2.1.1")
{
Caption = '';
InstructionalText = 'The Microsoft Teams admin center is where you configure Teams app setup policies for the organization. It requires the Teams Service admin role or the Global admin role.';
}
group("Para2.1.2")
{
Caption = '';
field(TeamAdminCenterSetup; TeamsAdminCenterLbl)
{
ApplicationArea = Basic, Suite;
ShowCaption = false;
Editable = false;
trigger OnDrillDown()
begin
Hyperlink(TeamsAdminCenterFwdLinkTxt);
end;
}
group("Para2.1.2.2")
{
Caption = '';
InstructionalText = '2. Choose the policy to include the setting to preinstall the Business Central app.';
}
group("Para2.1.2.3")
{
Caption = '';
InstructionalText = '3. Choose ‘Add apps’ and find the app named Business Central.';
}
group("Para2.1.2.4")
{
Caption = '';
InstructionalText = '4. Configure any additional settings and save.';
}
}
}
}
group("Step3")
{
Caption = '';
Visible = FinalStepVisible;
group("Para3.1")
{
Caption = 'Success!';
group("Para3.1.1")
{
Caption = '';
InstructionalText = 'If you completed the previous steps, you’re done.';
}
group("Para3.1.2")
{
Caption = '';
InstructionalText = 'It can take up to 24 hours for the app to roll out to the users you selected.';
}
group("Para3.1.3")
{
Visible = not LaunchedFromM365Guide;
Caption = '';
InstructionalText = 'You can also choose to grant read access to more people by configuring Microsoft 365 licenses to work with Business Central. Employees within your organization will be able to access data in Microsoft Teams using only their Microsoft 365 license.';
}
}
}
}
}
actions
{
area(processing)
{
action(ActionM365Licenses)
{
ApplicationArea = Basic, Suite;
Caption = 'Set up Microsoft 365 licenses';
Visible = SetupM365LicensesActionVisible and not LaunchedFromM365Guide;
Image = PreviousRecord;
InFooterBar = true;
trigger OnAction()
begin
Page.RunModal(Page::"MS 365 License Setup Wizard");
CurrPage.Close();
end;
}
action(ActionBack)
{
ApplicationArea = Basic, Suite;
Caption = 'Back';
Enabled = BackActionEnabled;
Visible = BackActionVisible;
Image = PreviousRecord;
InFooterBar = true;
trigger OnAction()
begin
NextStep(true);
end;
}
action(ActionNext)
{
ApplicationArea = Basic, Suite;
Caption = 'Next';
Visible = NextActionVisible;
Image = NextRecord;
InFooterBar = true;
trigger OnAction()
begin
NextStep(false);
end;
}
action(ActionDone)
{
ApplicationArea = Basic, Suite;
Caption = 'Done';
Visible = DoneActionVisible and not LaunchedFromM365Guide;
Image = NextRecord;
InFooterBar = true;
trigger OnAction()
begin
CloseGuide();
end;
}
action(ActionContinueSetup)
{
ApplicationArea = Basic, Suite;
Caption = 'Continue with setup';
Visible = DoneActionVisible and LaunchedFromM365Guide;
Image = NextRecord;
InFooterBar = true;
trigger OnAction()
begin
CloseGuide();
end;
}
action(ActionOkay)
{
ApplicationArea = Basic, Suite;
Caption = 'Okay';
Visible = OkayActionVisible;
Image = NextRecord;
InFooterBar = true;
trigger OnAction()
begin
Session.LogMessage('0000FLR', SetupTelemetryTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', TeamsAppTelemetryCategoryTxt);
CurrPage.Close();
end;
}
}
}
trigger OnInit()
var
EnvironmentInformation: Codeunit "Environment Information";
begin
LoadTopBanners();
IsSaaS := EnvironmentInformation.IsSaaS();
end;
trigger OnOpenPage()
begin
ShowIntroStep();
end;
internal procedure LaunchFromM365Guide()
begin
LaunchedFromM365Guide := true;
end;
local procedure CloseGuide()
var
GuidedExperience: Codeunit "Guided Experience";
begin
Session.LogMessage('0000FLQ', SetupTelemetryTxt, Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', TeamsAppTelemetryCategoryTxt);
GuidedExperience.CompleteAssistedSetup(ObjectType::Page, PAGE::"Teams Centralized Deployment");
CurrPage.Close();
end;
local procedure NextStep(Backwards: Boolean)
begin
if Backwards then
Step := Step - 1
else
Step := Step + 1;
case Step of
Step::Intro:
ShowIntroStep();
Step::Instructions:
ShowInstructionsStep();
Step::Success:
ShowSuccessStep();
end;
CurrPage.Update(true);
end;
local procedure ShowIntroStep()
begin
ResetWizardControls();
IntroStepVisible := true;
if not IsSaaS then begin
BackActionVisible := false;
OkayActionVisible := true;
exit;
end;
NextActionVisible := true;
end;
local procedure ShowInstructionsStep()
begin
ResetWizardControls();
InstructionsStepVisible := true;
BackActionEnabled := true;
NextActionVisible := true;
DoneActionVisible := false;
end;
local procedure ShowSuccessStep()
begin
ResetWizardControls();
NextActionVisible := false;
FinalStepVisible := true;
BackActionEnabled := true;
DoneActionVisible := true;
SetupM365LicensesActionVisible := true;
end;
local procedure ResetWizardControls()
begin
// Buttons
BackActionEnabled := false;
BackActionVisible := true;
NextActionVisible := false;
DoneActionVisible := false;
OkayActionVisible := false;
SetupM365LicensesActionVisible := false;
// Tabs
IntroStepVisible := false;
InstructionsStepVisible := false;
FinalStepVisible := false;
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;
var
MediaRepositoryStandard: Record "Media Repository";
MediaRepositoryDone: Record "Media Repository";
MediaResourcesStandard: Record "Media Resources";
MediaResourcesDone: Record "Media Resources";
ClientTypeManagement: Codeunit "Client Type Management";
Step: Option Intro,Instructions,Success;
BackActionEnabled: Boolean;
BackActionVisible: Boolean;
NextActionVisible: Boolean;
DoneActionVisible: Boolean;
OkayActionVisible: Boolean;
SetupM365LicensesActionVisible: Boolean;
TopBannerVisible: Boolean;
IntroStepVisible: Boolean;
InstructionsStepVisible: Boolean;
FinalStepVisible: Boolean;
IsSaaS: Boolean;
LaunchedFromM365Guide: Boolean;
LearnMoreOptionsToDeployFwdLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2164137', Locked = true;
LearnMoreOptionsToDeployLbl: Label 'Learn about options to deploy Teams apps';
TeamsAdminCenterFwdLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2163970', Locked = true;
TeamsAdminCenterLbl: Label '1. In the Teams admin center, go to ‘Teams apps > Setup policies’.';
SetupTelemetryTxt: Label 'Centralized deployment for Teams setup finished', Locked = true;
TeamsAppTelemetryCategoryTxt: Label 'AL Teams App', Locked = true;
}