Codeunit 1563 "Privacy Notice"
System Application · System.Privacy
Across versions
- BC23-25present
- BC261 procedures added
- BC27-28unchanged
- BC29declaration changed
- BC30unchanged
Neighbourhood 45 connected objects and pages
System Application · System.Privacy · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Access | Public |
Events published
OnBeforeShowPrivacyNotice(PrivacyNotice: Record "Privacy Notice"; var Handled: Boolean)(integration): This event is called when we are confirming approval to the privacy notice but no decision has been made. Just before calling any UI to show a dialog to the user. This allows overriding of individual privacy notices in case of custom wizards.- subscribers: Codeunit 1568 “Power Automate Privacy Notice” ShowPrivacyNoticePowerAutomate, Codeunit 1569 “Microsoft Learn Privacy Notice” ShowPrivacyNoticeMicrosoftLearn
OnRegisterPrivacyNotices(var TempPrivacyNotice: Record "Privacy Notice" temporary)(integration): This event is called when we are adding all Privacy Notices to the list. This will happen during demotool, upgrade and using the action on the Privacy Notices list. If a Privacy Notice with the same Id already exist, the entry is ignored.- subscribers: Codeunit 1357 “Privacy Notice Registrations” CreatePrivacyNoticeRegistrations, Codeunit 1566 “System Privacy Notice Reg.” CreatePrivacyNoticeRegistrations, Codeunit 6951 “Exp. Privacy Notice Reg.” CreatePrivacyNoticeRegistrations, Codeunit 7242 “MDM Privacy Notice” RegisterPrivacyNotice, Codeunit 7772 “Azure OpenAI Impl” CreatePrivacyNoticeRegistrations
Procedures
CreatePrivacyNotice(Id: Code[50]; IntegrationName: Text[250]; Link: Text[2048]): Boolean: Creates a privacy notice.CreatePrivacyNotice(Id: Code[50]; IntegrationName: Text[250]): Boolean: Creates a privacy notice.GetDefaultPrivacyAgreementTxt(): Text: Gets the default text for the privacy notice.ConfirmPrivacyNoticeApproval(Id: Code[50]): Boolean: After this the step-through depends on whether the user is admin or normal user (admin means they have the Priv. Notice - Admin permission set): Admin: If admin has agreed that will be returned Privacy Notice will be shown and the response (Agree/Disagree) will be stored and takes precedence for all…ConfirmPrivacyNoticeApproval(Id: Code[50]; SkipCheckInEval: Boolean): Boolean: After this the step-through depends on whether the user is admin or normal user (admin means they have the Priv. Notice - Admin permission set): Admin: If admin has agreed that will be returned Privacy Notice will be shown and the response (Agree/Disagree) will be stored and takes precedence for all…GetPrivacyNoticeApprovalState(Id: Code[50]): Enum "Privacy Notice Approval State": Returns the state of the privacy notice for the current user without showing any privacy notice to the user. An error is thrown if the privacy notice does not exist.GetPrivacyNoticeApprovalState(Id: Code[50]; SkipCheckInEval: Boolean): Enum "Privacy Notice Approval State": Returns the state of the privacy notice for the current user without showing any privacy notice to the user. An error is thrown if the privacy notice does not exist.ShowOneTimePrivacyNotice(IntegrationName: Text[250]): Enum "Privacy Notice Approval State": Shows a Privacy Notice for the specified integration name. This call does not require any Privacy Notice to exist, nor will it create one or store the content. This function is purely to show a privacy notice and let the caller handle the consent flow.ShowOneTimePrivacyNotice(IntegrationName: Text[250]; Link: Text[2048]): Enum "Privacy Notice Approval State": Shows a Privacy Notice for the specified integration name. This call does not require any Privacy Notice to exist, nor will it create one or store the content. This function is purely to show a privacy notice and let the caller handle the consent flow.IsApprovalStateDisagreed(Id: Code[50]): Boolean+ BC26: Determines whether the admin or user has disagreed with the Privacy Notice.IsApprovalStateDisagreed(State: Enum "Privacy Notice Approval State"): Boolean+ BC26: Determines whether the admin or user has disagreed with the Privacy Notice.SetApprovalState(PrivacyNoticeId: Code[50]; PrivacyNoticeApprovalState: Enum "Privacy Notice Approval State"): Sets the approval state for the specified Privacy Notice. If the user is an admin, the approval will be set for the entire organization otherwise it will only be set for the current user.CanCurrentUserApproveForOrganization(): Boolean: Checks whether the current user can approve for the entire organization. This function basically returns whether the user has the permissions of the Priv. Notice - Admin.CreateDefaultPrivacyNotices(): Adds all Privacy Notices from extensions using the event OnAddPrivacyNotices.
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 1565 “Privacy Notice Impl.” (9 calls:
CanCurrentUserApproveForOrganization → CanCurrentUserApproveForOrganization,ConfirmPrivacyNoticeApproval → ConfirmPrivacyNoticeApproval,CreateDefaultPrivacyNotices → CreateDefaultPrivacyNotices, …)
Called by
- Codeunit 1567 “System Upgrade Privacy Notices” (4 calls:
UpgradeMicrosoftLearnPrivacyNotice → CreateDefaultPrivacyNotices,UpgradeMicrosoftLearnPrivacyNotice → SetApprovalState,UpgradeTeamsPrivacyNotice → CreateDefaultPrivacyNotices, …) - Codeunit 9510 “Document Service Management” (4 calls:
GetMyBusinessCentralFilesLink → ConfirmPrivacyNoticeApproval,OnCanUploadDocument → IsApprovalStateDisagreed,OnCanUploadSystemDocument → IsApprovalStateDisagreed, …) - Page 7775 “Copilot AI Capabilities” (3 calls:
OnOpenPage → GetPrivacyNoticeApprovalState,UpdateAllowDataMovement → SetApprovalState,UpdateBingSearchOptIn → SetApprovalState) - Page 9553 “Document Service Setup” (3 calls:
SaveChanges → SetApprovalState,ShowConfigureStep → GetPrivacyNoticeApprovalState,ShowPrivacyStep → GetPrivacyNoticeApprovalState) - Codeunit 104044 “Upgrade Privacy Notices” (2 calls:
OnUpgradePerDatabase → CreateDefaultPrivacyNotices,OnUpgradePerDatabase → SetApprovalState) - Codeunit 1565 “Privacy Notice Impl.” (2 calls:
ShowPrivacyNotice → OnBeforeShowPrivacyNotice,TryGetAllPrivacyNotices → OnRegisterPrivacyNotices) - Codeunit 6951 “Exp. Privacy Notice Reg.” (2 calls:
ConfirmPrivacyNoticeApproval → ConfirmPrivacyNoticeApproval,IsPrivacyNoticeApproved → GetPrivacyNoticeApprovalState) - Codeunit 7242 “MDM Privacy Notice” (2 calls:
ConfirmApproval → ConfirmPrivacyNoticeApproval,IsApproved → GetPrivacyNoticeApprovalState) - Codeunit 7774 “Copilot Capability Impl” (2 calls:
CheckPrivacyNoticeState → GetPrivacyNoticeApprovalState,GetDataMovementAllowed → GetPrivacyNoticeApprovalState) - Page 1563 “Privacy Notice” (2 calls:
OnOpenPage → CanCurrentUserApproveForOrganization,OnOpenPage → GetDefaultPrivacyAgreementTxt) - Page 1565 “Privacy Notices” (2 calls:
OnInit → CreateDefaultPrivacyNotices,SetRecordApprovalState → SetApprovalState) - Page 1568 “Power Automate Privacy Notice” (2 calls:
OnOpenPage → CanCurrentUserApproveForOrganization,OnOpenPage → GetDefaultPrivacyAgreementTxt) - Codeunit 1652 “Add-in Manifest Management” (1 call:
DownloadManifestToClient → ConfirmPrivacyNoticeApproval) - Page 1569 “Microsoft Learn Privacy Notice” (1 call:
OnOpenPage → CanCurrentUserApproveForOrganization) - Page 21 “Customer Card” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 255 “Cash Receipt Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 256 “Payment Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 26 “Vendor Card” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 291 “Req. Worksheet” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 30 “Item Card” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 39 “General Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 392 “Phys. Inventory Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 40 “Item Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 41 “Sales Quote” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 42 “Sales Order” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 43 “Sales Invoice” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 44 “Sales Credit Memo” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 49 “Purchase Quote” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 50 “Purchase Order” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 51 “Purchase Invoice” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 52 “Purchase Credit Memo” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 672 “Job Queue Entries” (1 call:
OnOpenPage → GetPrivacyNoticeApprovalState) - Page 7078 “Anthropic Privacy Notice” (1 call:
OnOpenPage → CanCurrentUserApproveForOrganization) - Page 7497 “Item From Picture Wizard” (1 call:
OnInit → GetDefaultPrivacyAgreementTxt) - Page 99000823 “Output Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 99000846 “Consumption Journal” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Page 99000852 “Planning Worksheet” (1 call:
OnInit → GetPrivacyNoticeApprovalState) - Table 7775 “Copilot Settings” (1 call:
EnsurePrivacyNoticesApproved → ConfirmPrivacyNoticeApproval)
Recent changes
- 2026-07-23 #9206 Added new privacy policy for BizChat depending on Microsoft Copilot 365 with EEA environments behavior changes (main, BC30, feature)
- 2026-07-21 #9482 Make service-invoked System Application facades callable by any user (Privacy Notice + Page Summary Provider) (main, BC30, fix)
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Privacy Notice"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.