---
title: Client reference
summary: Complete reference for every contract operation this repository calls.
status: draft
owner: SAIF.Core documentation
last_reviewed: 2026-09-24
---

# Client reference

This page documents every one of the 20 operations declared by `clsADServices`, indicating for each whether repository source actually calls it through `SAIF.Services.Web.Proxies.ActiveDirectory.clsADServicesSoapClient`.

---

## GetDefaultPrinter

Returns the configured default printer for a mail ID.

| Field | Value |
| --- | --- |
| **Operation** | `GetDefaultPrinter` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetDefaultPrinter` |
| **Proxy member** | `string GetDefaultPrinter(string userId)` (on `ActiveDirectoryServiceProxy`) |
| **Input message** | `mailid: string` |
| **Output message** | `GetDefaultPrinterResult: string` |
| **Declared faults** | None declared |
| **Called by** | `SAIF.Services.Web.Proxies.ActiveDirectoryServiceProxy.GetDefaultPrinter(string userId)` (`Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:28`) |
| **Source** | `Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:28` |

### Input message — GetDefaultPrinter

| Part | Type | Required | Bound from | Purpose |
| --- | --- | --- | --- | --- |
| `mailid` | `string` | Not stated in the WSDL | `userId`, guarded with `Enforce.ArgumentNotNullOrEmpty` (`ActiveDirectoryServiceProxy.cs:26`) | The Active Directory mail ID to look up |

### Output message — GetDefaultPrinter

The returned string is returned unchanged to the caller.

| Part | Type | Consumed by the caller | Notes |
| --- | --- | --- | --- |
| `GetDefaultPrinterResult` | `string` | Yes | Returned as-is |

### Faults — GetDefaultPrinter

| Fault | Surfaces as | Handled at the call site |
| --- | --- | --- |
| Generic SOAP fault or transport failure | `FaultException` / `CommunicationException` / `TimeoutException` | Not handled — the exception propagates |

### Call site — GetDefaultPrinter

```csharp
webService.GetDefaultPrinter(userId)
```

| Aspect | Finding |
| --- | --- |
| Invocation frequency | Per call* |
| Result cached | No |
| Timeout at this call site | None — `BasicHttpBinding` defaults apply* |
| Retry at this call site | None |

### Notes — GetDefaultPrinter
- No repository source in this repository constructs `ActiveDirectoryServiceProxy`, so this call site is reachable only by external package consumers*.

---

## HasAccessCacheExternal

Returns whether a user has cached access to a named resource, checked against the external-domain cache.

| Field | Value |
| --- | --- |
| **Operation** | `HasAccessCacheExternal` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/HasAccessCacheExternal` |
| **Proxy member** | `bool HasAccess(string userId, string role, bool useExternalDomain)` (on `ActiveDirectoryServiceProxy`, when `useExternalDomain == true`) |
| **Input message** | `mailid: string`, `resourcename: string` |
| **Output message** | `boolean` |
| **Declared faults** | None declared |
| **Called by** | `ActiveDirectoryServiceProxy.HasAccess(string userId, string role, bool useExternalDomain)` (`Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:34`) |
| **Source** | `Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:34` |

### Input message — HasAccessCacheExternal

| Part | Type | Required | Bound from | Purpose |
| --- | --- | --- | --- | --- |
| `mailid` | `string` | Not stated in the WSDL | `userId`. No argument guard | The user to check |
| `resourcename` | `string` | Not stated in the WSDL | `role`. No argument guard | The resource being checked |

### Output message — HasAccessCacheExternal

The returned boolean is returned unchanged to the caller.

| Part | Type | Consumed by the caller | Notes |
| --- | --- | --- | --- |
| `boolean` (unnamed return) | `boolean` | Yes | Returned as-is |

### Faults — HasAccessCacheExternal

| Fault | Surfaces as | Handled at the call site |
| --- | --- | --- |
| Generic SOAP fault or transport failure | `FaultException` / `CommunicationException` / `TimeoutException` | Not handled — the exception propagates. No fail-closed default: an authorization decision depends entirely on the consumer handling the exception |

### Call site — HasAccessCacheExternal

```csharp
return useExternalDomain
    ? webService.HasAccessCacheExternal(userId, role)
    : webService.HasAccessCache(userId, role);
```

| Aspect | Finding |
| --- | --- |
| Invocation frequency | Per call* |
| Result cached | No |
| Timeout at this call site | None — `BasicHttpBinding` defaults apply* |
| Retry at this call site | None |

### Notes — HasAccessCacheExternal
- The wrapper method name `HasAccess` does not match either wire operation it calls (`HasAccessCache` / `HasAccessCacheExternal`), and it is distinct from the wire operation literally named `HasAccess`, which this repository never calls.

---

## HasAccessCache

Returns whether a user has cached access to a named resource, checked against the internal cache.

| Field | Value |
| --- | --- |
| **Operation** | `HasAccessCache` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/HasAccessCache` |
| **Proxy member** | `bool HasAccess(string userId, string role, bool useExternalDomain)` (on `ActiveDirectoryServiceProxy`, when `useExternalDomain == false`) |
| **Input message** | `mailid: string`, `resourcename: string` |
| **Output message** | `boolean` |
| **Declared faults** | None declared |
| **Called by** | `ActiveDirectoryServiceProxy.HasAccess(string userId, string role, bool useExternalDomain)` (`Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:35`) |
| **Source** | `Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:35` |

### Input message — HasAccessCache

| Part | Type | Required | Bound from | Purpose |
| --- | --- | --- | --- | --- |
| `mailid` | `string` | Not stated in the WSDL | `userId`. No argument guard | The user to check |
| `resourcename` | `string` | Not stated in the WSDL | `role`. No argument guard | The resource being checked |

### Output message — HasAccessCache

The returned boolean is returned unchanged to the caller.

| Part | Type | Consumed by the caller | Notes |
| --- | --- | --- | --- |
| `boolean` (unnamed return) | `boolean` | Yes | Returned as-is |

### Faults — HasAccessCache

| Fault | Surfaces as | Handled at the call site |
| --- | --- | --- |
| Generic SOAP fault or transport failure | `FaultException` / `CommunicationException` / `TimeoutException` | Not handled — the exception propagates. No fail-closed default |

### Call site — HasAccessCache

```csharp
return useExternalDomain
    ? webService.HasAccessCacheExternal(userId, role)
    : webService.HasAccessCache(userId, role);
```

| Aspect | Finding |
| --- | --- |
| Invocation frequency | Per call* |
| Result cached | No |
| Timeout at this call site | None — `BasicHttpBinding` defaults apply* |
| Retry at this call site | None |

### Notes — HasAccessCache
- Shares the same call-site branch as [`HasAccessCacheExternal`](#hasaccesscacheexternal); the `useExternalDomain` flag selects which operation is invoked.

---

## GetUserInfo

Retrieves Active Directory contact fields for a mail ID and maps a subset of them into a `Contact`.

| Field | Value |
| --- | --- |
| **Operation** | `GetUserInfo` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetUserInfo` |
| **Proxy member** | `SAIF.Core.Contracts.Contact GetContact(string userId)` (on `ActiveDirectoryServiceProxy`) |
| **Input message** | `inMailid: string` |
| **Output message** | `USERINFOSTRUCT` |
| **Declared faults** | None declared |
| **Called by** | `ActiveDirectoryServiceProxy.GetContact(string userId)` (`Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:40`) |
| **Source** | `Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs:40` |

### Input message — GetUserInfo

| Part | Type | Required | Bound from | Purpose |
| --- | --- | --- | --- | --- |
| `inMailid` | `string` | Not stated in the WSDL | `userId`. No argument guard | The Active Directory mail ID to look up |

### Output message — GetUserInfo

`GetContact` maps `USERINFOSTRUCT` into a new `Contact` (`ActiveDirectoryServiceProxy.cs:42-61`): `PrimaryAddress { Line1 = Address, City, State, ZipCode = Zip }`, `PrimaryFax = new PhoneNumber(FaxNumber)`, `Name { First, Last, Middle }`, `PrimaryPhone = new PhoneNumber(Telephone)`, `Email`, `Gender`. Every field is null-coalesced to `""`. `Department`, `Division`, `FullName`, `Location`, `Section`, `Title`, `EmployeeID`, and `ManagerMailID` are declared on `USERINFOSTRUCT` but dropped by the mapping.

| Part | Type | Consumed by the caller | Notes |
| --- | --- | --- | --- |
| `Address`, `City`, `State`, `Zip` | `string` | Yes | Mapped to `Contact.PrimaryAddress` |
| `FaxNumber` | `string` | Yes | Mapped to `Contact.PrimaryFax` |
| `Telephone` | `string` | Yes | Mapped to `Contact.PrimaryPhone` |
| `Email`, `Gender` | `string` | Yes | Mapped directly |
| `FirstName`, `MiddleName`, `LastName` | `string` | Yes | Mapped to `Contact.Name` |
| `Department`, `Division`, `FullName`, `Location`, `Section`, `Title`, `EmployeeID`, `ManagerMailID` | `string` / `int` | No | Present on `USERINFOSTRUCT` but not read by `GetContact` |

### Faults — GetUserInfo

| Fault | Surfaces as | Handled at the call site |
| --- | --- | --- |
| Generic SOAP fault or transport failure | `FaultException` / `CommunicationException` / `TimeoutException` | Not handled — the exception propagates. `USERINFOSTRUCT` is generated as a class, so a `null` result would throw `NullReferenceException` at `userInfo.Address`* |

### Call site — GetUserInfo

```csharp
var userInfo = webService.GetUserInfo(userId);
return new Contact
{
    PrimaryAddress = new Address { Line1 = userInfo.Address ?? string.Empty, City = userInfo.City ?? string.Empty, State = userInfo.State ?? string.Empty, ZipCode = userInfo.Zip ?? string.Empty },
    PrimaryFax = new PhoneNumber(userInfo.FaxNumber ?? string.Empty),
    Name = new PersonName { First = userInfo.FirstName ?? string.Empty, Middle = userInfo.MiddleName ?? string.Empty, Last = userInfo.LastName ?? string.Empty },
    PrimaryPhone = new PhoneNumber(userInfo.Telephone ?? string.Empty),
    Email = userInfo.Email ?? string.Empty,
    Gender = userInfo.Gender ?? string.Empty
};
```

| Aspect | Finding |
| --- | --- |
| Invocation frequency | Per call* |
| Result cached | No |
| Timeout at this call site | None — `BasicHttpBinding` defaults apply* |
| Retry at this call site | None |

### Notes — GetUserInfo
- Eight `USERINFOSTRUCT` fields are silently dropped by the mapping and never reach the caller*.

---

## GetLastLogon

Returns the last logon timestamp for a mail ID in the given domain.

| Field | Value |
| --- | --- |
| **Operation** | `GetLastLogon` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetLastLogon` |
| **Input message** | `mailid: string`, `domain: string` |
| **Output message** | `GetLastLogonResult: dateTime` |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetLastLogon
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## GetIDNumber

Returns the ID number associated with a mail ID in the given domain.

| Field | Value |
| --- | --- |
| **Operation** | `GetIDNumber` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetIDNumber` |
| **Input message** | `mailid: string`, `domain: string` |
| **Output message** | `string` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetIDNumber
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## GetPaymentPassword

Returns a payment password associated with a mail ID in the given domain.

| Field | Value |
| --- | --- |
| **Operation** | `GetPaymentPassword` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetPaymentPassword` |
| **Input message** | `mailid: string`, `domain: string` |
| **Output message** | `string` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetPaymentPassword
- Not called or reachable from this repository; documented from the WSDL contract only.
- This operation returns a password value in the SOAP response body — see [Contract](contract.md) for the associated security-relevant observation.

---

## GetAccountsByIDNumber

Returns the accounts associated with an ID number.

| Field | Value |
| --- | --- |
| **Operation** | `GetAccountsByIDNumber` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetAccountsByIDNumber` |
| **Input message** | `IDNumber: string` |
| **Output message** | `ArrayOfAnyType` |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetAccountsByIDNumber
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## GetEMailAddress

Returns the email address for a mail ID in the given domain.

| Field | Value |
| --- | --- |
| **Operation** | `GetEMailAddress` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetEMailAddress` |
| **Input message** | `mailid: string`, `domain: string` |
| **Output message** | `string` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetEMailAddress
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## GetFaxNumber

Returns the fax number for a mail ID in the given domain.

| Field | Value |
| --- | --- |
| **Operation** | `GetFaxNumber` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetFaxNumber` |
| **Input message** | `mailid: string`, `domain: string` |
| **Output message** | `string` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetFaxNumber
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## HasAccess

Returns whether a user has access to a named resource, checked directly against the directory rather than a cache.

| Field | Value |
| --- | --- |
| **Operation** | `HasAccess` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/HasAccess` |
| **Input message** | `mailid: string`, `resourcename: string` |
| **Output message** | `boolean` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — HasAccess
- Not called or reachable from this repository; documented from the WSDL contract only.
- Distinct from the wrapper method `ActiveDirectoryServiceProxy.HasAccess`, which never invokes this wire operation — see the [`HasAccessCache`](#hasaccesscache) notes.

---

## HasAccessExternal

Returns whether a user has access to a named resource, checked directly against the external-domain directory rather than a cache.

| Field | Value |
| --- | --- |
| **Operation** | `HasAccessExternal` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/HasAccessExternal` |
| **Input message** | `mailid: string`, `resourcename: string` |
| **Output message** | `boolean` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — HasAccessExternal
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## WhoHasAccessCache

Returns the list of accounts holding cached access to a named resource.

| Field | Value |
| --- | --- |
| **Operation** | `WhoHasAccessCache` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/WhoHasAccessCache` |
| **Input message** | `resourcename: string` |
| **Output message** | `ArrayOfAnyType` |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — WhoHasAccessCache
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## ResourceCached

Returns whether a named resource currently has a cache entry.

| Field | Value |
| --- | --- |
| **Operation** | `ResourceCached` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/ResourceCached` |
| **Input message** | `resourcename: string` |
| **Output message** | `boolean` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — ResourceCached
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## GetUserInfoExternal

Retrieves Active Directory contact fields for a mail ID from the external-domain directory.

| Field | Value |
| --- | --- |
| **Operation** | `GetUserInfoExternal` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetUserInfoExternal` |
| **Input message** | `inMailid: string` |
| **Output message** | `USERINFOSTRUCT` |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetUserInfoExternal
- Not called or reachable from this repository; documented from the WSDL contract only.
- Returns the same `USERINFOSTRUCT` shape as [`GetUserInfo`](#getuserinfo), but this repository never maps its output.

---

## IsUserMenuCached

Returns whether a cached navigation menu exists for a mail ID.

| Field | Value |
| --- | --- |
| **Operation** | `IsUserMenuCached` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/IsUserMenuCached` |
| **Input message** | `inMailID: string` |
| **Output message** | `boolean` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — IsUserMenuCached
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## RemoveUserMenuCache

Removes the cached navigation menu entry for a mail ID.

| Field | Value |
| --- | --- |
| **Operation** | `RemoveUserMenuCache` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/RemoveUserMenuCache` |
| **Input message** | `inMailID: string` |
| **Output message** | `boolean` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — RemoveUserMenuCache
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## GetUserMenuCached

Returns the cached navigation menu content for a mail ID.

| Field | Value |
| --- | --- |
| **Operation** | `GetUserMenuCached` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/GetUserMenuCached` |
| **Input message** | `inMailID: string` |
| **Output message** | `string` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — GetUserMenuCached
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## SetPaymentPassword

Sets a payment password for a mail ID in the given domain.

| Field | Value |
| --- | --- |
| **Operation** | `SetPaymentPassword` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/SetPaymentPassword` |
| **Input message** | `mailid: string`, `domain: string`, `passwd: string` |
| **Output message** | `boolean` (unnamed return) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — SetPaymentPassword
- Not called or reachable from this repository; documented from the WSDL contract only.
- This operation carries a password value in the SOAP request body — see [Contract](contract.md) for the associated security-relevant observation.

---

## SetUserMenuCached

Sets the cached navigation menu content for a mail ID.

| Field | Value |
| --- | --- |
| **Operation** | `SetUserMenuCached` |
| **SOAP action** | `http://tempuri.org/ADWebService/Service1/SetUserMenuCached` |
| **Input message** | `inMailID: string`, `inNavContext: string` |
| **Output message** | (empty response) |
| **Declared faults** | None declared |
| **Called in this repository** | No — no call site found in repository source (see [Operation map](operation-map.md#operations-present-but-not-called)) |
| **Source** | `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl` |

### Notes — SetUserMenuCached
- Not called or reachable from this repository; documented from the WSDL contract only.

---

## Coverage checklist

| Operation | Documented section | Called by |
| --- | --- | --- |
| `GetDefaultPrinter` | [`GetDefaultPrinter`](#getdefaultprinter) | `ActiveDirectoryServiceProxy.GetDefaultPrinter` |
| `GetLastLogon` | [`GetLastLogon`](#getlastlogon) | Not called |
| `GetIDNumber` | [`GetIDNumber`](#getidnumber) | Not called |
| `GetPaymentPassword` | [`GetPaymentPassword`](#getpaymentpassword) | Not called |
| `GetAccountsByIDNumber` | [`GetAccountsByIDNumber`](#getaccountsbyidnumber) | Not called |
| `GetEMailAddress` | [`GetEMailAddress`](#getemailaddress) | Not called |
| `GetFaxNumber` | [`GetFaxNumber`](#getfaxnumber) | Not called |
| `HasAccess` | [`HasAccess`](#hasaccess) | Not called |
| `HasAccessExternal` | [`HasAccessExternal`](#hasaccessexternal) | Not called |
| `HasAccessCache` | [`HasAccessCache`](#hasaccesscache) | `ActiveDirectoryServiceProxy.HasAccess` |
| `WhoHasAccessCache` | [`WhoHasAccessCache`](#whohasaccesscache) | Not called |
| `HasAccessCacheExternal` | [`HasAccessCacheExternal`](#hasaccesscacheexternal) | `ActiveDirectoryServiceProxy.HasAccess` |
| `ResourceCached` | [`ResourceCached`](#resourcecached) | Not called |
| `GetUserInfo` | [`GetUserInfo`](#getuserinfo) | `ActiveDirectoryServiceProxy.GetContact` |
| `GetUserInfoExternal` | [`GetUserInfoExternal`](#getuserinfoexternal) | Not called |
| `IsUserMenuCached` | [`IsUserMenuCached`](#isusermenucached) | Not called |
| `RemoveUserMenuCache` | [`RemoveUserMenuCache`](#removeusermenucache) | Not called |
| `GetUserMenuCached` | [`GetUserMenuCached`](#getusermenucached) | Not called |
| `SetPaymentPassword` | [`SetPaymentPassword`](#setpaymentpassword) | Not called |
| `SetUserMenuCached` | [`SetUserMenuCached`](#setusermenucached) | Not called |

## Related documentation
- [Client index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Contract](contract.md)
- [Operation map](operation-map.md)
- [Consumption](consumption.md)
- [Dependencies](dependencies.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- `Services/SAIF.Services.Web.Proxies/ActiveDirectoryServiceProxy.cs`
- `Services/SAIF.Services.Web.Proxies/Service References/ActiveDirectory/clsADServices.wsdl`
