Codeunit 9018 "Azure AD Plan Impl."
System Application · System.Azure.Identity
Across versions
- BC23present
- BC246 procedures added, 3 procedures removed
- BC25-27unchanged
- BC282 procedures changed, 1 procedures added
- BC291 procedures added
- BC30unchanged
Neighbourhood 9 connected objects and pages
System Application · System.Azure.Identity · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Access | Internal |
| Permissions | tabledata Company = r, tabledata Plan = rimd, tabledata User = r, tabledata “User Personalization” = rm, tabledata “User Plan” = rimd |
Events published
OnBeforeIsBcServicePlan(var Skip: Boolean)(internal)OnInitializeRoleCenter(var RoleCenterId: Integer; var Handled: Boolean)(internal)
Event subscriptions
- OnAfterDeleteUser subscribes to Table “User” OnAfterDeleteEvent
Procedures
IsPlanAssigned(PlanGUID: Guid): BooleanIsPlanAssignedToUser(PlanGUID: Guid): BooleanΔ BC28IsPlanAssignedToUser(PlanGUID: Guid; UserGUID: Guid): BooleanΔ BC28IsGraphUserEntitledFromServicePlan(var GraphUserInfo: DotNet UserInfo): BooleanUpdateUserPlans(UserSecurityId: Guid; var GraphUserInfo: DotNet UserInfo; AppendPermissionsOnNewPlan: Boolean; RemovePermissionsOnDeletePlan: Boolean)UpdateUserPlans(UserSecurityId: Guid; AppendPermissionsOnNewPlan: Boolean; RemovePermissionsOnDeletePlan: Boolean; RemovePlansOnDeleteUser: Boolean)UpdateUserPlans()RefreshUserPlanAssignments(UserSecurityID: Guid)TryGetAzureUserPlanRoleCenterId(var RoleCenterID: Integer; UserSecurityID: Guid)DoPlansExist(): BooleanDoUserPlansExist(): BooleanDoesPlanExist(PlanGUID: Guid): BooleanDoesUserHavePlans(UserSecurityId: Guid): BooleanΔ BC28GetAvailablePlansCount(): IntegerGetAllPlanIds(): List of [Guid]GetUserPlanExperience(): Enum "User Plan Experience"+ BC24CheckMixedPlansExist(): Boolean+ BC24 + BC24CheckMixedPlansExist(PlanNamesPerUserFromGraph: Dictionary of [Text, List of [Text]]): Boolean+ BC24 + BC24MixedPlansExist(): BooleanΔ BC24 + BC24 − BC24MixedPlansExist(PlanNamesPerUserFromGraph: Dictionary of [Text, List of [Text]]): BooleanΔ BC24 + BC24 − BC24IsBCServicePlan(ServicePlanId: Guid): BooleanAssignPlanToUserWithDelegatedRole(UserSID: Guid; SkipUpdateUserAccess: Boolean)+ BC28 − BC28GetPlanIDs(GraphUserInfo: DotNet UserInfo; var PlanIDs: List of [Guid])GetPlanNames(GraphUserInfo: DotNet UserInfo; var PlanNames: List of [Text])GetPlanNames(UserSecID: Guid; var PlanNames: List of [Text])CheckIfPlansDifferent(GraphUserInfo: DotNet UserInfo; UserSecID: Guid): Boolean
Plus 17 local procedures.
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 9027 “Plan Ids” (23 calls:
AssignPlanToUserWithDelegatedRole → GetDelegatedAdminPlanId,AssignPlanToUserWithDelegatedRole → GetHelpDeskPlanId,GetDevicesPlanInfo → GetDevicePlanId, …) - Codeunit 9024 “Azure AD Graph User” (8 calls:
AssignPlanToUserWithDelegatedRole → IsUserDelegatedAdmin,AssignPlanToUserWithDelegatedRole → IsUserDelegatedHelpdesk,GetAuthenticationEmailFromAuthenticationObjectID → GetAuthenticationEmail, …) - Codeunit 9012 “Azure AD Graph” (6 calls:
GetAuthenticationEmailFromAuthenticationObjectID → GetUserByObjectId,GetGraphUserPlans → GetEnvironmentSecurityGroupId,GetGraphUserPlans → IsEnvironmentSecurityGroupDefined, …) - Codeunit 9822 “Plan Configuration Impl.” (4 calls:
AddNewlyAssignedUserPlans → ConfigurationContainsSuper,AddNewlyAssignedUserPlans → IsCustomized,AssignPlanToUserWithDelegatedRole → ConfigurationContainsSuper, …) - Codeunit 9825 “Plan Configuration” (3 calls:
RemoveUnassignedUserPlans → IsCustomized,RemoveUnassignedUserPlans → RemoveCustomPermissionsFromUser,RemoveUnassignedUserPlans → RemoveDefaultPermissionsFromUser) - Codeunit 152 “User Permissions” (2 calls:
AddNewlyAssignedUserPlans → RemoveSuperPermissions,AssignPlanToUserWithDelegatedRole → RemoveSuperPermissions) - Codeunit 9016 “Azure AD Plan” (2 calls:
AddNewlyAssignedUserPlans → OnUpdateUserAccessForSaaS,AssignPlanToUserWithDelegatedRole → OnUpdateUserAccessForSaaS) - Codeunit 457 “Environment Information” (1 call:
ShouldCheckMixedPlans → IsSaaS) - Codeunit 9026 “User Login Time Tracker” (1 call:
UpdateUserPlans → UserLoggedInEnvironment)
Called by
- Codeunit 9016 “Azure AD Plan” (20 calls:
AssignPlanToUserWithDelegatedRole → AssignPlanToUserWithDelegatedRole,CheckIfPlansDifferent → CheckIfPlansDifferent,CheckMixedPlansExist → CheckMixedPlansExist, …)
Recent changes
- 2026-07-29 #9717 Fix internal admin losing SUPER during customized plan provisioning (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: "Azure AD Plan Impl."), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.