Codeunit 9016 "Azure AD Plan"
System Application · System.Azure.Identity
Across versions
- BC23present
- BC243 procedures added, 3 procedures changed
- BC25unchanged
- BC262 events removed
- BC273 procedures removed
- BC281 procedures changed, 1 procedures added
- BC29-30unchanged
Neighbourhood 19 connected objects and pages
System Application · System.Azure.Identity · BC23-30 · source at ea08af5e · facts from BC29
Events published
OnUpdateUserAccessForSaaS(UserSecurityID: Guid; var UserGroupsAdded: Boolean)(integration): Integration event, raised from . Subscribe to this event to update the user groups- subscribers: Codeunit 9020 “User Access Update” OnUpdateUserAccessForSaaS
Procedures
IsPlanAssigned(PlanGUID: Guid): Boolean: Checks if the plan is assigned to any user.IsPlanAssignedToUser(PlanGUID: Guid): Boolean: Checks if the plan is assigned to the current user.IsPlanAssignedToUser(PlanGUID: Guid; UserGUID: Guid): Boolean: Checks if the plan is assigned to a specific user.IsGraphUserEntitledFromServicePlan(var GraphUserInfo: DotNet UserInfo): Boolean: Returns true if the given user is entitled from the service plan.AssignPlanToUserWithDelegatedRole(UserSecurityId: Guid)Δ BC28 + BC28 (obsolete 27.0: Use AssignPlanToUserWithDelegatedRole with SkipUpdateUserAccess parameter instead.): Assigns a plan to the user based on their delegated role.AssignPlanToUserWithDelegatedRole(UserSecurityId: Guid; SkipUpdateUserAccess: Boolean)Δ BC28 + BC28: Assigns a plan to the user based on their delegated role.UpdateUserPlans(UserSecurityId: Guid; var GraphUserInfo: DotNet UserInfo): Updates license plans for a user.UpdateUserPlans(UserSecurityId: Guid; var GraphUserInfo: DotNet UserInfo; AppendPermissionsOnNewPlan: Boolean; RemovePermissionsOnDeletePlan: Boolean): Updates license plans for a user.UpdateUserPlans(UserSecurityId: Guid): Updates license plans for a user.UpdateUserPlans(UserSecurityId: Guid; AppendPermissionsOnNewPlan: Boolean; RemovePermissionsOnDeletePlan: Boolean; RemovePlansOnDeleteUser: Boolean): Updates license plans for a user.UpdateUserPlans(): Updates plans for all users.RefreshUserPlanAssignments(UserSecurityId: Guid): Refreshes the user plans assigned to the given user.TryGetAzureUserPlanRoleCenterId(var RoleCenterID: Integer; UserSecurityId: Guid): Returns the plan roleCenterID for the given user.DoPlansExist(): Boolean: Returns true if at least one plan exists.DoUserPlansExist(): Boolean: Returns true if at least one user is assigned to a plan.DoesPlanExist(PlanGUID: Guid): Boolean: Returns true if the given plan exists.DoesUserHavePlans(UserSecurityId: Guid): Boolean: Returns true if the given user has at least one plan.GetAvailablePlansCount(): Integer: Gets the total number of available plans.GetAllPlanIds(): List of [Guid]: Returns the list of all valid Business Central plan IDs.GetUserPlanExperience(): Enum "User Plan Experience"+ BC24: Returns the user plan experience of the user. Either Basic, Essentials, Premium or Other.CheckMixedPlansExist(): Boolean+ BC24: Checks whether the plan configuration mixes different plans. Returns true if there are incompatible plans in the system. Only checks when conditions for plan check is met, otherwise returns false.MixedPlansExist(): BooleanΔ BC24: Returns true if there are incompatible plans in the system.GetPlanNames(GraphUserInfo: DotNet UserInfo; var PlanNames: List of [Text]): Gets plans that are assigned to a user in Office 365.GetPlanNames(UserSecID: Guid; var PlanNames: List of [Text]): Gets plans that are assigned to a Business Central user.GetPlanIDs(GraphUserInfo: DotNet UserInfo; var PlanIDs: List of [Guid]): Gets plans that are assigned to a user in Office 365.CheckIfPlansDifferent(GraphUserInfo: DotNet UserInfo; UserSecID: Guid): Boolean: Checks whether a user is assigned to different plans in Business Central and Graph.IsBCServicePlan(ServicePlanId: Guid): Boolean: Checks whether a given service plan is a Business Central service Plan
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 9018 “Azure AD Plan Impl.” (20 calls:
AssignPlanToUserWithDelegatedRole → AssignPlanToUserWithDelegatedRole,CheckIfPlansDifferent → CheckIfPlansDifferent,CheckMixedPlansExist → CheckMixedPlansExist, …)
Called by
- Codeunit 9029 “Azure AD User Sync Impl.” (9 calls:
AddChangesForExistingUser → CheckIfPlansDifferent,ApplyUpdateFromAzureGraph → UpdateUserPlans,FetchUpdatesForLicensedUsers → GetAllPlanIds, …) - Codeunit 9017 “Azure AD User Mgmt. Impl.” (7 calls:
CreateNewUserFromGraphUser → IsGraphUserEntitledFromServicePlan,InitializeAsNewUser → UpdateUserPlans,IsUserDelegated → IsPlanAssignedToUser, …) - Codeunit 9018 “Azure AD Plan Impl.” (2 calls:
AddNewlyAssignedUserPlans → OnUpdateUserAccessForSaaS,AssignPlanToUserWithDelegatedRole → OnUpdateUserAccessForSaaS) - Page 9062 “User Security Activities” (2 calls:
GetNumberOfPlans → GetAvailablePlansCount,OnAfterGetRecord → DoesUserHavePlans) - Codeunit 257 “Experience Tier” (1 call:
CheckExperienceTier → GetUserPlanExperience) - Codeunit 2916 “Page Action Provider Impl.” (1 call:
GetCurrentRoleCenterId → TryGetAzureUserPlanRoleCenterId) - Codeunit 40 “LogInManagement” (1 call:
CompanyOpen → CheckMixedPlansExist) - Codeunit 4001 “Hybrid Cloud Management” (1 call:
CanGrantPermission → IsPlanAssignedToUser) - Codeunit 460 “Azure AD Licensing Impl.” (1 call:
NextSubscribedSKU → IsBCServicePlan) - Codeunit 776 “Plan User Details” (1 call:
AddPlanUserDetails → IsPlanAssignedToUser) - Codeunit 7774 “Copilot Capability Impl” (1 call:
IsAdmin → IsPlanAssignedToUser) - Codeunit 9003 “Team Member Action Manager” (1 call:
IsCurrentUserAssignedTeamMemberPlan → IsPlanAssignedToUser) - Codeunit 9034 “Azure AD User Subscribers” (1 call:
GetInformation → IsPlanAssignedToUser) - Codeunit 9170 “Conf./Personalization Mgt.” (1 call:
DefaultRoleCenterID → TryGetAzureUserPlanRoleCenterId) - Codeunit 9178 “Application Area Mgmt.” (1 call:
IsPremiumEnabled → IsPlanAssignedToUser) - Page 5555 “Permission Conflicts Overview” (1 call:
CheckPlans → IsPlanAssigned) - Page 9807 “User Card” (1 call:
IsUserDelegated → IsPlanAssignedToUser) - Page 9818 “User Security Status List” (1 call:
OnAfterGetRecord → DoesUserHavePlans)
Deprecations
- procedure AssignPlanToUserWithDelegatedRole: Pending 27.0 (#if not CLEAN27), “Use AssignPlanToUserWithDelegatedRole with SkipUpdateUserAccess parameter instead.”
Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).
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: "Azure AD Plan"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.