Address List browsing fails when list contains more than 51 objects — Exchange Server 2019
Summary
Browsing any address list in the directory fails when the list contains more than 51 recipients. Lists with 51 or fewer objects render correctly. ANR-based search always works regardless of list size. The issue has existed since the organization was installed and affects all three servers.
Symptoms
- OWA (People → Directory → any list): "Your request cannot be completed right now. Please try again later."
- Outlook in online mode (Address Book → Global Address List): "The operation failed."
- Search by name works correctly in both clients and returns expected recipients.
- Cached mode works correctly — OAB-based address book renders the full GAL.
Reproduction and exact threshold
Test address lists were created with filters selecting a controlled number of user mailboxes:
| Objects | Result |
|---|---|
| 5 | Renders correctly |
| 15 | Renders correctly |
| 28 | Renders correctly |
| 50 | Renders correctly |
| 51 | Renders correctly |
| 52 | Fails |
| 53 | Fails |
| 57 | Fails |
| 72 (All Distribution Lists) | Fails |
| 404 (All Users) | Fails |
Threshold is consistent and reproducible. A newly created address list with a Latin-character name behaves identically, so the issue is not tied to the built-in localized list objects.
Environment
- Exchange Server 2019, build 15.2.1748.10, Enterprise, three servers in one DAG
- Organization created 29 Nov 2023, clean installation, no migration from earlier versions
- AD schema version 17003, organization objectVersion 16763, MESO objectVersion 13243
- Domain controllers: Windows Server 2019, two DCs across two AD sites
- Approximately 409 mail-enabled recipients total
Verified as healthy — ruled out
Directory side:
- Direct LDAP VLV queries against the global catalog (port 3268) with server-side sort on displayName succeed for page sizes of 11, 50, 100, 200 and 500 entries, using
System.DirectoryServices.Protocols.LdapConnection with SortRequestControl and VlvRequestControl.
- Single LDAP query policy (Default Query Policy), no per-site or per-DC policy assigned. Limits are default: MaxPageSize 1000, MaxTempTableSize 10000, MaxQueryDuration 120, MaxValRange 1500, MaxResultSetSize 262144.
-
MSExchange ADAccess event 2080 reports both DCs as fully capable: CDG 1 7 7 1 0 1 1 7 1.
- Get-ADObject queries with the same LDAP filters used by the address lists return correct results in 80–230 ms.
Permissions:
-
Open-Address-Book extended right granted to NT AUTHORITY\Authenticated Users on all address list objects, on the All System Address Lists container, and on the VLV objects. Permissions on failing lists are identical to permissions on working lists.
Configuration:
- No Address Book Policies exist in the organization; no mailbox has one assigned.
-
msExchQueryBaseDN is empty on all users.
- Address list
RecipientFilter values are valid; Get-Recipient -RecipientPreviewFilter returns the full expected recipient set for every list, including the failing ones.
- All VLV system address list objects present with valid
purportedSearch filters.
- Default throttling policy, no custom limits.
- No custom registry values under MSExchangeAB or MSExchangeADAccess.
- No overrides in OWA or Sync web.config.
-
/mapi/nspi and /mapi/emsmdb applications present under Exchange Back End with correct physical paths; MSExchangeMapiAddressBookAppPool running.
- MAPI virtual directory authentication identical on all three servers: Ntlm, OAuth, Negotiate.
- No recipients with empty DisplayName, missing legacyExchangeDN, or malformed alias.
- Address lists rebuilt with
Update-AddressList and Update-GlobalAddressList — no change.
- Application pools restarted (MapiAddressBook, OWA, MapiFrontEnd, Rest) — no change.
Server scope:
- Reproduces for mailboxes homed on two different mailbox servers.
- Reproduces when connecting directly to a mailbox server, bypassing the proxying server (verified via hosts file override).
Logging
No errors are written to the Application log by any Exchange source at the moment the failure occurs. MSExchange ADAccess diagnostics raised to Expert produced only routine 2150/2132 connection pool entries. The only OWA errors logged are event 139 regarding an unconfigured WacUrlHostName, which is unrelated.
Request
The failure threshold of 51 objects suggests the paged-results continuation between the Exchange NSPI/directory layer and Active Directory is not functioning, given that equivalent VLV requests issued directly against the same global catalog succeed at far larger page sizes. Request assistance with ExTRA tracing of the NspiServer and ADProvider components to identify the failure point.