diff --git a/src/System Application/App/AI/src/Copilot/CopilotAICapabilities.Page.al b/src/System Application/App/AI/src/Copilot/CopilotAICapabilities.Page.al index 6362b24562..bec49e0e61 100644 --- a/src/System Application/App/AI/src/Copilot/CopilotAICapabilities.Page.al +++ b/src/System Application/App/AI/src/Copilot/CopilotAICapabilities.Page.al @@ -30,95 +30,172 @@ page 7775 "Copilot AI Capabilities" { area(Content) { - group(AllowedDataMovementOffInfo) + group(AOAIServicesInRegionArea) { ShowCaption = false; - Visible = ((not WithinGeo) or WithinEuropeGeo) and (not AllowDataMovement); - InstructionalText = 'Copilot uses the Azure OpenAI Service, which isn’t available in your region. To activate Copilot capabilities, you must allow data movement.'; - } - - group(AllowedDataMovementOnInfo) - { - ShowCaption = false; - Visible = ((not WithinGeo) or WithinEuropeGeo) and AllowDataMovement; - InstructionalText = 'Copilot uses the Azure OpenAI Service, which isn’t available in your region. To keep using Copilot capabilities, you must allow data movement.'; - } - - group(AlwaysConnected) - { - ShowCaption = false; - InstructionalText = 'Copilot and other generative AI capabilities use Azure OpenAI Service. Your environment connects to Azure OpenAI Service in your region.'; - Visible = WithinGeo and (not WithinEuropeGeo); + Visible = WithinAOAIServicesInRegionArea; + InstructionalText = 'Copilot and agents use the Azure OpenAI Service. Your environment connects to this service in your own region.'; - field(GovernData; CopilotGovernDataLbl) + field(DataSecurityAndPrivacy; FAQForDataSecurityAndPrivacyLbl) { ShowCaption = false; trigger OnDrillDown() begin - Hyperlink('https://go.microsoft.com/fwlink/?linkid=2249575'); + Hyperlink(FAQForDataSecurityAndPrivacyDocLinkLbl); end; } - } - - group(NotAlwaysConnected) - { - ShowCaption = false; - InstructionalText = 'By allowing data movement, you agree to data being stored and processed by the Azure OpenAI Service outside of your environment''s geographic region or compliance boundary.'; - Visible = ((not WithinGeo) or WithinEuropeGeo) and AllowDataMovement; - - field(DataMovement; AllowDataMovement) + field(GovernData; CopilotGovernDataLbl) { - ApplicationArea = All; - Caption = 'Allow data movement'; - ToolTip = 'Specifies whether data movement across regions is allowed. This is required to enable Copilot in your environment.'; - Editable = AllowDataMovementEditable; + ShowCaption = false; - trigger OnValidate() + trigger OnDrillDown() begin - UpdateAllowDataMovement(); + Hyperlink(CopilotGovernDataDocLinkLbl); end; } - - field(AOAIServiceLocated; AOAIServiceLocatedLbl) + field(DataProcessByAOAI; DataProcessByAOAILbl) { ShowCaption = false; trigger OnDrillDown() begin - Hyperlink('https://go.microsoft.com/fwlink/?linkid=2250267'); + Hyperlink(DataProcessByAOAIDocLinkLbl); end; } } - group(NotAlwaysConnected2) + group(EUDBArea) { ShowCaption = false; - InstructionalText = 'Generative AI capabilities are deactivated because Azure OpenAI Service is not available in your region. By allowing data movement, you agree to data being stored and processed by the Azure OpenAI Service outside of your environment''s geographic region or compliance boundary.'; - Visible = ((not WithinGeo) or WithinEuropeGeo) and (not AllowDataMovement); + Visible = WithinEUDBArea; - field(DataMovement2; AllowDataMovement) + group(AllowedDataMovementOffInfo) + { + ShowCaption = false; + Visible = WithinEUDBArea and (not AllowDataMovement); + InstructionalText = 'Copilot and agents use the Azure OpenAI Service available within the EU Data Boundary. To activate these capabilities, you must allow data movement within this boundary.'; + } + group(AllowedDataMovementOnInfo) + { + ShowCaption = false; + Visible = WithinEUDBArea and AllowDataMovement; + InstructionalText = 'Copilot and agents use the Azure OpenAI Service available within the EU Data Boundary. To keep using these capabilities, you must allow data movement within this boundary.'; + } + field(EUDBAreaDataSecurityAndPrivacy; FAQForDataSecurityAndPrivacyLbl) { - ApplicationArea = All; - Caption = 'Allow data movement'; - ToolTip = 'Specifies whether data movement across regions is allowed. This is required to enable Copilot in your environment.'; - Editable = AllowDataMovementEditable; + ShowCaption = false; - trigger OnValidate() + trigger OnDrillDown() begin - UpdateAllowDataMovement(); + Hyperlink(FAQForDataSecurityAndPrivacyDocLinkLbl); end; } + group(EUDBAreaDataMovementGroup) + { + ShowCaption = false; + label(EUDBAreaCaption) + { + ApplicationArea = All; + Caption = 'By allowing data movement, you agree to data being processed by the Azure OpenAI Service within the EU Data Boundary.'; + } + field(EUDBAreaDataMovement; AllowDataMovement) + { + ApplicationArea = All; + Caption = 'Allow data movement'; + ToolTip = 'Specifies whether data movement across regions is allowed. This is required to enable Copilot in your environment.'; + Editable = WithinEUDBArea and AllowDataMovementEditable; + + trigger OnValidate() + begin + UpdateAllowDataMovement(); + end; + } + field(EUDBAreaAOAIServiceLocated; AOAIServiceLocatedLbl) + { + ShowCaption = false; + + trigger OnDrillDown() + begin + Hyperlink(AOAIServiceLocatedDocLinkLbl); + end; + } + field(EUDBAreaDataProcess; DataProcessByAOAILbl) + { + ShowCaption = false; + + trigger OnDrillDown() + begin + Hyperlink(DataProcessByAOAIDocLinkLbl); + end; + } + } + } - field(AOAIServiceLocated2; AOAIServiceLocatedLbl) + group(AOAIOutOfRegionArea) + { + ShowCaption = false; + Visible = WithinAOAIOutOfRegionArea; + group(AllowedDataMovementOffInfo2) + { + ShowCaption = false; + Visible = WithinAOAIOutOfRegionArea and (not AllowDataMovement); + InstructionalText = 'Copilot and agents use the Azure OpenAI Service, which isn''t available in your region. To activate these capabilities, you must allow data movement.'; + } + group(AllowedDataMovementOnInfo2) + { + ShowCaption = false; + Visible = WithinAOAIOutOfRegionArea and AllowDataMovement; + InstructionalText = 'Copilot and agents use the Azure OpenAI Service, which isn''t available in your region. To keep using these capabilities, you must allow data movement.'; + } + field(AOAIOutOfRegionAreaDataSecurityAndPrivacy; FAQForDataSecurityAndPrivacyLbl) { ShowCaption = false; trigger OnDrillDown() begin - Hyperlink('https://go.microsoft.com/fwlink/?linkid=2250267'); + Hyperlink(FAQForDataSecurityAndPrivacyDocLinkLbl); end; } + group(AOAIOutOfRegionAreaDataMovementGroup) + { + ShowCaption = false; + label(AOAIOutOfRegionAreaCaption) + { + ApplicationArea = All; + Caption = 'By allowing data movement, you agree to data being processed by the Azure OpenAI Service outside of your environment''s geographic region or compliance boundary.'; + } + field(AOAIOutOfRegionAreaDataMovement; AllowDataMovement) + { + ApplicationArea = All; + Caption = 'Allow data movement'; + ToolTip = 'Specifies whether data movement across regions is allowed. This is required to enable Copilot in your environment.'; + Editable = WithinAOAIOutOfRegionArea and AllowDataMovementEditable; + + trigger OnValidate() + begin + UpdateAllowDataMovement(); + end; + } + field(AOAIOutOfRegionAreaAOAIServiceLocated; AOAIServiceLocatedLbl) + { + ShowCaption = false; + + trigger OnDrillDown() + begin + Hyperlink(AOAIServiceLocatedDocLinkLbl); + end; + } + field(AOAIOutOfRegionAreaDataProcess; DataProcessByAOAILbl) + { + ShowCaption = false; + + trigger OnDrillDown() + begin + Hyperlink(DataProcessByAOAIDocLinkLbl); + end; + } + } } part(PreviewCapabilities; "Copilot Capabilities Preview") @@ -149,7 +226,7 @@ page 7775 "Copilot AI Capabilities" trigger OnAction() begin - Hyperlink('https://aka.ms/azurestatus'); + Hyperlink(CheckServiceHealthDocLinkLbl); end; } } @@ -165,6 +242,8 @@ page 7775 "Copilot AI Capabilities" trigger OnOpenPage() var EnvironmentInformation: Codeunit "Environment Information"; + WithinGeo: Boolean; + WithinEuropeGeo: Boolean; begin OnRegisterCopilotCapability(); @@ -191,6 +270,11 @@ page 7775 "Copilot AI Capabilities" CopilotCapabilityImpl.ShowPrivacyNoticeDisagreedNotification(); CopilotCapabilityImpl.UpdateGuidedExperience(AllowDataMovement); + + //Todo: replace WithinEuropeGeo with WithinEUBD + WithinEUDBArea := WithinEuropeGeo; + WithinAOAIServicesInRegionArea := WithinGeo and (not WithinEuropeGeo); + WithinAOAIOutOfRegionArea := (not WithinGeo) and (not WithinEuropeGeo); end; local procedure UpdateAllowDataMovement() @@ -214,10 +298,18 @@ page 7775 "Copilot AI Capabilities" var CopilotCapabilityImpl: Codeunit "Copilot Capability Impl"; PrivacyNotice: Codeunit "Privacy Notice"; - WithinGeo: Boolean; - WithinEuropeGeo: Boolean; + WithinEUDBArea: Boolean; + WithinAOAIServicesInRegionArea: Boolean; + WithinAOAIOutOfRegionArea: Boolean; AllowDataMovement: Boolean; AllowDataMovementEditable: Boolean; CopilotGovernDataLbl: Label 'How do I govern my Copilot data?'; - AOAIServiceLocatedLbl: Label 'In which region will my data be stored and processed?'; + FAQForDataSecurityAndPrivacyLbl: Label 'FAQ for data security and privacy'; + DataProcessByAOAILbl: Label 'What data is processed by Azure OpenAI Service?'; + AOAIServiceLocatedLbl: Label 'In which region will my data be processed?'; + CopilotGovernDataDocLinkLbl: Label 'https://go.microsoft.com/fwlink/?linkid=2249575', Locked = true; + FAQForDataSecurityAndPrivacyDocLinkLbl: Label 'https://go.microsoft.com/fwlink/?linkid=2298505', Locked = true; + DataProcessByAOAIDocLinkLbl: Label 'https://go.microsoft.com/fwlink/?linkid=2298232', Locked = true; + AOAIServiceLocatedDocLinkLbl: Label 'https://go.microsoft.com/fwlink/?linkid=2250267', Locked = true; + CheckServiceHealthDocLinkLbl: Label 'https://aka.ms/azurestatus', Locked = true; } \ No newline at end of file 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 71125feacc..c0fbbc521a 100644 --- a/src/System Application/App/AI/src/Copilot/CopilotCapabilitiesGA.Page.al +++ b/src/System Application/App/AI/src/Copilot/CopilotCapabilitiesGA.Page.al @@ -119,18 +119,19 @@ page 7774 "Copilot Capabilities GA" end; end; } - +#if not CLEAN26 action(SupplementalTerms) { Caption = 'Supplemental Terms of Use'; ToolTip = 'Opens the supplemental terms of use for generally available capabilities.'; Image = Info; - + Visible = false; trigger OnAction() begin Hyperlink(SupplementalTermsLinkTxt); end; } +#endif } } @@ -163,7 +164,9 @@ page 7774 "Copilot Capabilities GA" ActionsEnabled: Boolean; CapabilityEnabled: Boolean; DataMovementEnabled: Boolean; +#if not CLEAN26 SupplementalTermsLinkTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2236010', Locked = true; +#endif CopilotFeatureDeactivatedLbl: Label 'The copilot/AI capability %1, App Id %2 has been deactivated by UserSecurityId %3.', Locked = true; CopilotFeatureActivatedLbl: Label 'The copilot/AI capability %1, App Id %2 has been activated by UserSecurityId %3.', Locked = true;