---
id: object/codeunit/9024
type: object
title: Codeunit 9024 "Azure AD Graph User"
summary: Codeunit 9024 "Azure AD Graph User" in System Application (System.Azure.Identity). 16 public procedures. Present since at least BC23, still in BC30, changed in BC27.
tier: official
language: en
tags:
  - codeunit
  - system application
versions:
  introduced: null
  last_changed: "27"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: e57f3ba13e746294c91c1354937bffef5b0aa6bc13b02042fdb0a185ceb931d4
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/System%20Application/App/Azure%20AD%20User/src/AzureADGraphUser.Codeunit.al
    title: src/System Application/App/Azure AD User/src/AzureADGraphUser.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 9024
name: Azure AD Graph User
namespace: System.Azure.Identity
app: System Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "27"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 16
  events: 0
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 1
  called_by: 14
  implements: 0
---

# Codeunit 9024 "Azure AD Graph User"

> Codeunit 9024 "Azure AD Graph User" in System Application (System.Azure.Identity). 16 public procedures. Present since at least BC23, still in BC30, changed in BC27.

System Application · System.Azure.Identity · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/System%20Application/App/Azure%20AD%20User/src/AzureADGraphUser.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Access | Public |

## Procedures

- `GetGraphUser(UserSecurityId: Guid; var User: DotNet UserInfo)`: Gets the Microsoft Entra user with the given security ID.
- `GetGraphUser(UserSecurityId: Guid; ForceFetchFromGraph: Boolean; var User: DotNet UserInfo)`: Gets the Microsoft Entra user with the given security ID.
- `GetObjectId(UserSecurityId: Guid): Text`: Retrieves the user’s unique identifier, which is its object ID, from Microsoft Entra.
- `GetUserAuthenticationObjectId(UserSecurityId: Guid): Text`: Gets the user's authentication object ID.
- `TryGetUserAuthenticationObjectId(UserSecurityId: Guid; var AuthenticationObjectId: Text): Boolean`: Tries to get the user's authentication object ID.
- `GetUser(AuthenticationObjectID: Text; var User: Record User): Boolean`: Gets the user from a given Authentication object ID.
- `IsUserDelegatedAdmin(): Boolean`: Returns whether the current user is Delegated Admin.
- `IsUserDelegatedHelpdesk(): Boolean`: Returns whether the current user is Delegated Helpdesk.
- `IsUserDelegated(): Boolean`: Returns whether the current user is delegated.
- `UpdateUserFromAzureGraph(var User: Record User; var AzureADUser: DotNet UserInfo): Boolean`: Updates the user record with information from Microsoft Entra.
- `GetAuthenticationEmail(GraphUserInfo: DotNet UserInfo): Text[250]`: Gets the authentication email of the provided Graph user.
- `GetDisplayName(GraphUserInfo: DotNet UserInfo): Text[50]`: Gets the display name of the provided Graph user.
- `GetContactEmail(GraphUserInfo: DotNet UserInfo): Text[250]`: Gets the contact email of the provided Graph user.
- `GetFullName(GraphUserInfo: DotNet UserInfo): Text[80]`: Gets the full name of the provided Graph user.
- `GetPreferredLanguageID(GraphUserInfo: DotNet UserInfo): Integer`: Gets the preferred language ID of the provided Graph user.
- `EnsureAuthenticationEmailIsNotInUse(AuthenticationEmail: Text)`: Ensures that an email address specified for authorization is not already in use by another database user. If it is, all the database users with this authentication email address are updated and their email addresses are updated the ones that are specified in Microsoft Entra.

## 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 9011 "Azure AD Graph User Impl."](../codeunit/9011.md) (15 calls: `EnsureAuthenticationEmailIsNotInUse → EnsureAuthenticationEmailIsNotInUse`, `GetAuthenticationEmail → GetAuthenticationEmail`, `GetContactEmail → GetContactEmail`, …)

## Called by

- [Codeunit 9029 "Azure AD User Sync Impl."](../codeunit/9029.md) (11 calls: `AddChangesForExistingUser → GetDisplayName`, `AddChangesForNewUser → GetDisplayName`, `AddChangesForRemovedUser → GetUserAuthenticationObjectId`, …)
- [Codeunit 9017 "Azure AD User Mgmt. Impl."](../codeunit/9017.md) (8 calls: `CreateNewUserInternal → EnsureAuthenticationEmailIsNotInUse`, `CreateNewUsersFromAzureAD → GetUser`, `IsUserTenantAdmin → GetGraphUser`, …)
- [Codeunit 9018 "Azure AD Plan Impl."](../codeunit/9018.md) (8 calls: `AssignPlanToUserWithDelegatedRole → IsUserDelegatedAdmin`, `AssignPlanToUserWithDelegatedRole → IsUserDelegatedHelpdesk`, `GetAuthenticationEmailFromAuthenticationObjectID → GetAuthenticationEmail`, …)
- [Codeunit 3307 "Payables Agent Setup"](../codeunit/3307.md) (2 calls: `ApplyPayablesAgentSetup → IsUserDelegatedAdmin`, `ApplyPayablesAgentSetup → IsUserDelegatedHelpdesk`)
- [Codeunit 4001 "Hybrid Cloud Management"](../codeunit/4001.md) (2 calls: `CheckNeedsApprovalToRunCloudMigration → IsUserDelegatedAdmin`, `CheckNeedsApprovalToRunCloudMigration → IsUserDelegatedHelpdesk`)
- [Codeunit 4400 "SOA Setup"](../codeunit/4400.md) (2 calls: `UpdateAgent → IsUserDelegatedAdmin`, `UpdateAgent → IsUserDelegatedHelpdesk`)
- [Codeunit 7774 "Copilot Capability Impl"](../codeunit/7774.md) (2 calls: `IsAdmin → IsUserDelegatedAdmin`, `IsAdmin → IsUserDelegatedHelpdesk`)
- [Codeunit 9175 "User Settings Impl."](../codeunit/9175.md) (2 calls: `CheckPermissionsInternal → IsUserDelegatedAdmin`, `CheckPermissionsInternal → IsUserDelegatedHelpdesk`)
- [Table 1513 "Notification Schedule"](../table/1513.md) (2 calls: `ScheduleForLater → IsUserDelegated`, `ScheduleNow → IsUserDelegated`)
- [Codeunit 8360 "Financial Report Export"](../codeunit/8360.md) (1 call: `ScheduleJob → IsUserDelegatedAdmin`)
- [Codeunit 9034 "Azure AD User Subscribers"](../codeunit/9034.md) (1 call: `GetInformation → IsUserDelegatedAdmin`)
- [Codeunit 9874 "User Security Groups PBT"](../codeunit/9874.md) (1 call: `FetchEntraGroups → GetGraphUser`)
- [Page extension 9805 "Approval Job Queue Entries"](../pageextension/9805.md) (1 call: `OnOpenPage → IsUserDelegated`)
- [Page extension 9806 "Approval Job Queue Entry Card"](../pageextension/9806.md) (1 call: `OnOpenPage → IsUserDelegated`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC27

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 Graph User")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
