Exchange ServerDeep dive

Exchange Server event IDs by source: a quick reference for Transport, ESE, DAG and AD

Look up an Exchange Server event by ID and source: what 15004, 2142, 474, 1135, 4999 and 38 more events mean on Exchange SE and 2019, the usual cause and the first check.

Exchange Server records most of its problems in the Windows event logs before users notice: back pressure, a domain controller it refuses to use, a database page that fails its checksum, a DAG member dropping out of the cluster. This quick reference lists 43 event IDs grouped by source, with what each means on Exchange Server SE and Exchange Server 2019, the usual cause and the first thing to check. Press Ctrl+F, type the event ID, and follow the guide link where there is one.

Codes in this quick reference

  • Event ID 15004 (MSExchangeTransport): Resource pressure increased (back pressure)Application log
  • Event ID 15005 (MSExchangeTransport): Resource pressure decreasedApplication log
  • Event ID 15006 (MSExchangeTransport): rejecting messages, available disk space below the thresholdApplication log
  • Event ID 15007 (MSExchangeTransport): rejecting message submissions, memory use above the thresholdApplication log
  • Event ID 12014 (MSExchangeFrontEndTransport / MSExchangeTransport): no certificate for the connector FQDN, no STARTTLSApplication log
  • Event ID 1035 (MSExchangeFrontEndTransport): Inbound authentication failed with error LogonDenied for Receive connectorApplication log
  • Event ID 474 (ESE): page checksum mismatch, the read fails with -1018Application log
  • Event ID 476 (ESE): page contains no page data (-1019)Application log

+ 35 more codes in the tables below.

How this guide is organised: How to read these codes → Transport → Databases and the store → Replication and the DAG → Active Directory access → Client access → Crashes, performance counters and mitigations → Windows events that explain Exchange problems → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. Transport. 3. Databases and the store. 4. Replication and the DAG. 5. Active Directory access. 6. Client access. 7. Crashes, performance counters and mitigations. 8. Windows events that explain Exchange problems. 9. How to verify a fix. Toolbox: Event ID 130, Get-Queue, Test-ReplicationHealth, Get-TransportAgent, Microsoft › Exchange.1How to readthese codes2Transport3Databases andthe store4Replication andthe DAG5ActiveDirectory acc…6Client access7Crashes,performance…8Windowsevents that ex…9How to verify afixTOOLBOXEvent ID 130Get-QueueTest-ReplicationHealthGet-TransportAgentMicrosoft › ExchangeHow this guide is organised: How to read these codes → Transport → Databases and the store → Replication and the DAG → Active Directory access → Client access → Crashes, performance counters and mitigations → Windows events that explain Exchange problems → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. Transport. 3. Databases and the store. 4. Replication and the DAG. 5. Active Directory access. 6. Client access. 7. Crashes, performance counters and mitigations. 8. Windows events that explain Exchange problems. 9. How to verify a fix. Toolbox: Event ID 130, Get-Queue, Test-ReplicationHealth, Get-TransportAgent, Microsoft › Exchange.1How to read these codes2Transport3Databases and the store4Replication and the DAG5Active Directory access6Client access7Crashes, performance counters andmitigations8Windows events that explain Exchangeproblems9How to verify a fixTOOLBOXEvent ID 130Get-QueueTest-ReplicationHealthGet-TransportAgentMicrosoft › Exchange
At a glance: how this guide is organised · 9 sections · 5 key settings and tools

How to read these codes#

An event ID only means something together with its source, the provider name in Event Viewer: 1003 from MSExchange Front End HTTPS Proxy has nothing to do with a 1003 from another product.

  • Application log: the MSExchange sources, ESE, ExchangeStoreDB, ASP.NET, .NET Runtime and Application Error.
  • System log: Windows components Exchange relies on: FailoverClustering, HttpEvent, Service Control Manager, Resource-Exhaustion-Detector and Security-Kerberos.
  • Security log on a domain controller: account lockouts.

The description holds the detail that matters: a server, database, connector or process name, an error name such as LogonDenied, or a JET code. Compare servers too: a 2142 on one server points at its site or network, on every server at Active Directory. Informational events (15005, 2080, 2014, 10048) are the partners to look for after a fix. Exchange also writes detailed channels under Applications and Services Logs › Microsoft › Exchange; this list sticks to the classic logs.

PowerShell
# Busiest Exchange sources and IDs in the last 24 hours
Get-WinEvent -FilterHashtable @{LogName='Application'; Level=2,3; StartTime=(Get-Date).AddDays(-1)} -ErrorAction SilentlyContinue |
    Where-Object ProviderName -match 'MSExchange|ESE|ExchangeStoreDB' |
    Group-Object ProviderName, Id | Sort-Object Count -Descending | Select-Object Count, Name -First 20

# Newest events for one source and ID, with the full text
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='MSExchangeTransport'; Id=15004} -MaxEvents 5 |
    Format-List TimeCreated, Message

Related: NDR status codes, ESE/JET error codes and Exchange Management Shell and AD errors.

Transport: MSExchangeTransport and MSExchangeFrontEndTransport#

MSExchangeTransport is the Transport service; MSExchangeFrontEndTransport is the Front End Transport service, which accepts SMTP from the internet and from clients on port 587.

CodeMeaningUsual causeFirst check
15004
MSExchangeTransport
Resource pressure increased: back pressure has startedLow space on the queue volume, EdgeTransport.exe memory, version buckets or a long Submission queueThe resource named in the event; Get-ExchangeDiagnosticInfo -Process EdgeTransport -Component ResourceThrottling. Guide
15005
MSExchangeTransport
Resource pressure decreased (informational)The resource fell back below its thresholdQueues drain in Get-Queue. Guide
15006
MSExchangeTransport
Rejecting messages: available disk space is below the configured thresholdThe queue database volume filled with logs, dumps or a backlogFree space; thresholds are a percentage of the volume, not gigabytes. Guide
15007
MSExchangeTransport
Rejecting message submissions: the service keeps using more memory than the thresholdHuge queues, a misbehaving transport agent or too little RAMGet-Queue, Get-TransportAgent; a restart only buys time. Guide
12014
MSExchangeFrontEndTransport or MSExchangeTransport
No certificate with the connector's FQDN in the personal store, so no STARTTLSA certificate renewed or removed without updating the connectorConnector Fqdn and TlsCertificateName against Get-ExchangeCertificate. Guide
1035
MSExchangeFrontEndTransport
Inbound authentication failed with error LogonDenied for Receive connector …, with the mechanism and source IPAn app with a wrong or expired password, or password guessing on an internet-facing client connectorThe source IP in the receive protocol log. Only your load balancer's IP? It hides the clients

Databases and the store: ESE, ExchangeStoreDB and MSExchangeIS Mailbox Store#

CodeMeaningUsual causeFirst check
474
ESE
Page checksum mismatch; the read fails with -1018Storage: disk, controller, firmware or driverDAG page patching; disk errors in the System log. Guide
476
ESE
Page contains no page data (-1019): a page in use is blankThe same storage problems as 474As for 474. Guide
413
ESE
Unable to create a new logfile because the database cannot write to the log drive.Log volume full (logs not truncating), read-only or failedFree space; LastFullBackup in Get-MailboxDatabase -Status. Guide
623
ESE
The version store has reached its maximum size; updates are rejected until a long-running transaction endsA long-running transaction blocking cleanup, e.g. slow storage or a stuck operationDisk latency and the events just before it; related code -1069
129
ExchangeStoreDB
Page patching was initiated to restore the page. Event 130 follows when the copy is repairedA -1018 page error, fixed from a healthy DAG copyA storage warning even though nothing failed: check that server's disks. Guide
10047
MSExchangeIS Mailbox Store
Mailbox-level repair request started (informational)New-MailboxRepairRequest -MailboxGet-MailboxRepairRequest. Guide
10059
MSExchangeIS Mailbox Store
Database-level repair request started (informational)New-MailboxRepairRequest -DatabaseAs for 10047. Guide
10048
MSExchangeIS Mailbox Store
Repair request completed successfully (informational)End of a repair requestRerun with -DetectOnly: zero corruptions. Guide
10062
MSExchangeIS Mailbox Store
Corruption detected; lists each one and whether it was fixedLogical corruption such as wrong folder counts or broken viewsRead the list; rerun with -DetectOnly. Guide

Replication and the DAG: MSExchangeRepl and FailoverClustering#

A DAG runs on Windows failover clustering, so check the FailoverClustering events in the System log too.

CodeMeaningUsual causeFirst check
4113
MSExchangeRepl
The database redundancy check failed: fewer healthy copies than expected (admins report the text Database redundancy health check failed)A passive copy Failed, FailedAndSuspended or disconnected, or a member downGet-MailboxDatabaseCopyStatus *; Test-ReplicationHealth. Guide
4374
MSExchangeRepl
The database availability check failed: fewer copies available than expected (admins report the text Database availability health check failed)A Replication service unreachable over RPC, or copies suspended or blocked from activationTest-ReplicationHealth on each member. Related: copy and replay queues
1135
FailoverClustering
A node was removed from the active failover cluster membershipMissed heartbeats: a network drop, a paused or overloaded VM or host, a NIC or driver fault, a rebootThat node's System log; Get-ClusterLog. Guide
1177
FailoverClustering
The Cluster service is shutting down because quorum was lostToo many members, or members and the witness, unreachable at onceGet-ClusterQuorum; the witness share from each member. Guide
1069
FailoverClustering
A cluster resource failed; names the resource, type and roleDepends on the resource: the witness, a network or a dependencyGet-ClusterResource; the cluster log. Guide

Active Directory access: MSExchange ADAccess and MSExchangeADTopology#

CodeMeaningUsual causeFirst check
2080
MSExchange ADAccess
Topology discovery result (informational): each DC and GC with role, reachability, sync and SACL columnsLogged routinelyHealthy in-site DCs show CDG 1 7 7 1 0 1 1 7 1. Guide
2142
MSExchangeADTopology
Topology discovery failed, e.g. No Minimal Required Number of Suitable Directory Servers Found in Forest or TimedOutSubnet in the wrong AD site, wrong DNS, LDAP or RPC blocked, or a removed DC still listedThe latest 2080: which DCs failed, on which column. Guide
2112
MSExchange ADAccess
No Audit Security Privilege on a domain controller, so it won't be usedExchange Servers missing from Manage auditing and security log in domain controller Group PolicyThat user right in the GPO for domain controllers. Guide
2937
MSExchange ADAccess
A property such as HomeMTA points to Deleted Objects (warning)A removed Exchange server or deleted OU still referencedThe object and property in the event; bulk fix in the guide. Guide

Client access: HTTP proxy, IIS, ActiveSync, RBAC and OAuth#

CodeMeaningUsual causeFirst check
1003
MSExchange Front End HTTPS Proxy
Unhandled proxy exception; with NullReferenceException at FbaModule.ParseCadataCookies it's the OWA and EAC sign-in loopAn expired, missing or misconfigured Auth certificateThe Get-AuthConfig thumbprint and its expiry on every server. Guide
1309
ASP.NET
An unhandled exception has occurred for /owa or /ecp (warning)An app failure behind an HTTP 500, e.g. a missing assembly after a non-elevated updateThe exception and URL in the event. Guide
15021
HttpEvent
An error occurred while using SSL configuration for endpoint 0.0.0.0:444The Exchange Back End site's certificate was deleted or replacedThe 444 binding: normally the self-signed "Microsoft Exchange" certificate. Guide
1053
MSExchange ActiveSync
No permission to create the device container under the user (INSUFF_ACCESS_RIGHTS)Inheritance off on the user: protected admin accounts (adminCount = 1)Security › Advanced on the user object. Guide
258
MSExchange RBAC
CmdletAccessDeniedException: no management rolesNo role group membership or assignmentGet-ManagementRoleAssignment -RoleAssignee <user>; a new session after adding. Guide
2014
MSExchange AuthAdmin
The signing certificate was updated to a new thumbprint (informational)A staged Auth certificate rotation completedGet-AuthConfig; the certificate on every server. Guide

Crashes, performance counters and mitigations#

CodeMeaningUsual causeFirst check
4999
MSExchange Common
Watson report about to be sent for process id: …: an unhandled exceptionA product bug, a third-party component or a known issue in your buildProcess, component and exception in the parameters; your build's known issues. Guide
106
MSExchange Common
Performance counter updating error. Names the counter and categoryA counter or counter category that isn't registered correctlyCosmetic if nothing else fails; admins report re-registering the counters with New-PerfCounters
1000
Application Error
Faulting application name: EdgeTransport.exe (or w3wp.exe), with the faulting moduleA crash; a third-party DLL points at an agent or filterThe faulting module; Get-TransportAgent; the poison queue. Guide
1026
.NET Runtime
The process was terminated due to an unhandled exception.The crash behind a 4999, with the stackPair it with the 4999. Guide
1325
ASP.NET
An unhandled exception occurred and the process was terminated. Names the app, e.g. /LM/W3SVC/2/ROOT/EWSAn IIS worker crash in an Exchange web appThe matching 4999; the app pool. Guide
1005, 1006
MSExchange Mitigation Service
A successful action, e.g. a mitigation applied (informational)The hourly EEMS checkGet-ExchangeServer | Format-List Name,MitigationsApplied,MitigationsBlocked. Guide
1008
MSExchange Mitigation Service
An error, e.g. the Office Config Service (OCS) unreachableBlocked HTTPS, no WinHTTP proxy, SSL inspection or blocked revocation checksThe proxy path; V15\Logging\MitigationService. Guide

Windows events that explain Exchange problems#

All in the System log, except 4740 (Security log of a domain controller).

CodeMeaningUsual causeFirst check
7000
Service Control Manager
A service failed to start; the text gives the reasonA disabled service, a logon failure or an interrupted updateStart types of the Exchange services. Guide
7001
Service Control Manager
A service depends on a service which failed to startUsually Microsoft Exchange Active Directory Topology failed or is disabledStart MSExchangeADTopology first. Guide
7040
Service Control Manager
A start type changed, e.g. from auto start to disabledSetup disables services during a CU or SU; a failed install leaves them that wayRestore start types to match a healthy server. Guide
2004
Resource-Exhaustion-Detector
Low virtual memory condition; lists the top consumersToo little RAM or page file, or a runaway processThe processes named. Guide
4
Security-Kerberos (client)
KRB_AP_ERR_MODIFIED: the server couldn't decrypt the ticketThe SPN on another account, or a server missing the ASA credentialsetspn -F -Q http/mail.contoso.com; ASA status. Guide
4740
Security (domain controller)
A user account was locked out; names the caller computerAn old password cached on a phone, app or computerThe caller computer; clear the credential there. Guide

How to verify a fix#

  1. The event stops on every server, not just the one you fixed.
  2. The partner event appears: 15005 after 15004, a clean 2080, 10048 after a repair, 2014 after an Auth rotation, EEMS 1005 or 1006 instead of 1008.
  3. Health commands agree: Test-ServiceHealth, Get-HealthReport, Test-ReplicationHealth and Get-Queue are clean.
  4. Monitoring watches it: forward 15004 to 15007, 2142, 474, 413, 1135, 1177 and 4999 to your monitoring system.
PowerShell
$since = (Get-Date).AddHours(-4)
Get-ExchangeServer | Where-Object { -not $_.IsEdgeServer } | ForEach-Object {
    Get-WinEvent -ComputerName $_.Name -FilterHashtable @{LogName='Application'; Id=15004,2142,474,4999; StartTime=$since} -ErrorAction SilentlyContinue |
        Select-Object MachineName, TimeCreated, ProviderName, Id
}
Get-HealthReport -Identity EX01 | Where-Object AlertValue -ne 'Healthy'
Test-ReplicationHealth -Identity EX01

References#

Revision history: Oct 2026 — re-checked against Microsoft Learn: 1 correction; 3 details reworded or labelled as reported by admins.

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

Intune Subject Matter Expert in Cairo, Egypt, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)