GetUserEmail (OP-12)¶
Request and response¶
| Part | Type | Description |
|---|---|---|
inUserId |
String |
The SamAccountName to look up. |
inExternalDomain |
Boolean |
Selects external.saif.com when True, corp.saif.com when False (BR-07). |
| Part | Type | Description |
|---|---|---|
<return> |
ADServiceResponse |
Response (EResponse code) and Message (the mail attribute value on success). |
WebMethod attributes¶
<WebMethod()> — bare, no arguments supplied.
Steps¶
- No access check is performed (BR-06).
- Initialize
myStruc.Response = Success,myStruc.Message = String.Empty. - In a
Tryblock, call H2GetUserPrincipalwith the caller-suppliedinExternalDomain(BR-07). - If the principal is
Nothing, setResponse = UserDoesNotExist. - Otherwise, get the underlying
DirectoryEntry(userPrin.GetUnderlyingObject) and assignMessage = de.Properties.Item("mail").Value, a late-bound COM property read (BR-27). Catch: setResponse = Failure,Message = ex.Message.Finally: releaseuserPrinandde.- Return the
ADServiceResponsesentinel.
An unset mail attribute is not distinguished from any other directory exception: both surface as Failure with a .NET null-reference or cast exception message rather than a dedicated response code*.
Process flow¶
flowchart TD
A["Call GetUserEmail"] --> B["GetUserPrincipal<br>caller-selected domain"]
B -->|"Nothing"| C["Response = UserDoesNotExist"]
B -->|"Found"| D["Read mail attribute<br>via GetUnderlyingObject"]
D -->|"Success"| E["Message = mail value<br>Response = Success"]
D -->|"Exception"| F["Response = Failure<br>Message = ex.Message"]
C --> G["Return ADServiceResponse"]
E --> G
F --> G
Shared state effects¶
None — this operation touches no process-wide state; all locals are per-request.
Error handling¶
This operation never faults: every failure path, including an unset mail attribute or a directory exception, is caught and mapped to Response = Failure with ex.Message in Message. See Faults for the service-wide fault model.
Authorization¶
None in code. This is one of the eleven ungated operations that disclose directory data to any caller who can reach the endpoint (see Authentication and authorization and Tech debt).
Related documentation¶
- Service index
- Overview
- Architecture
- Activation and hosting
- Operations
- Operations and processes
- Business rules
- Authentication and authorization
- Configuration
- Dependencies
- Faults
- Operational runbook
- Tech debt
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Sources¶
src\ADUserServices\clsADUserServices.asmx.vb(lines 526-554)