- Notifications
You must be signed in to change notification settings - Fork 618
Description
Description of the issue
The EXOAcceptedDomain resource reports false configuration drift and executes unnecessary Set operations due to error suppression in Test.
Evidence
LCM execution log:
| TimeStamp | MessageBody |
|---|---|
| 2025-12-16 20:22:55.184 | [LCM-M365DSC]: LCM: [ Start Resource ] [[EXOAcceptedDomain]contoso.com] |
| 2025-12-16 20:22:55.184 | [LCM-M365DSC]: LCM: [ Start Test ] [[EXOAcceptedDomain]contoso.com] |
| 2025-12-16 20:22:55.184 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Testing configuration of Accepted Domain for contoso.com |
| 2025-12-16 20:22:55.184 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Getting configuration of Accepted Domain for contoso.com |
| 2025-12-16 20:22:55.184 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Getting all Accepted Domain |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] AcceptedDomain configuration for {contoso.com} does not exist. |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Current Values: ApplicationId=*** CertificateThumbprint=*** DomainType=InternalRelay Ensure=Absent Identity=contoso.com MatchSubDomains=False OutboundOnly=False TenantId=*** Verbose=True |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Target Values: ApplicationId=*** CertificateThumbprint=*** DomainType=InternalRelay Ensure=Present Identity=contoso.com MatchSubDomains=False OutboundOnly=False TenantId=*** Verbose=True |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned False |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 63.9640 seconds. |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: LCM: [ Start Set ] [[EXOAcceptedDomain]contoso.com] |
| 2025-12-16 20:23:58.790 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Setting configuration of Accepted Domain for contoso.com |
| 2025-12-16 20:23:58.790 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Setting AcceptedDomain for {contoso.com} with values: DomainType=InternalRelay Identity=contoso.com MatchSubDomains=False OutboundOnly=False |
| 2025-12-16 20:25:02.192 | [LCM-M365DSC]: LCM: [ End Set ] [[EXOAcceptedDomain]contoso.com] in 63.2310 seconds. |
Drift event payload:
<M365DSCEvent> <ConfigurationDrift Source="MSFT_EXOAcceptedDomain" TenantId="contoso.onmicrosoft.com" LCMState="ConsistencyCheck"> <ParametersNotInDesiredState> <Param Name="Ensure"> <CurrentValue>Absent</CurrentValue> <DesiredValue>Present</DesiredValue> </Param> </ParametersNotInDesiredState> </ConfigurationDrift> <DesiredValues> <Param Name ="Ensure">Present</Param> <Param Name ="Identity">contoso.com</Param> <!-- Redacted --> </DesiredValues> <CurrentValues> <Param Name ="Ensure">Absent</Param> <Param Name ="Identity">contoso.com</Param> <!-- Redacted --> </CurrentValues> </M365DSCEvent>Analysis
Successful consistency checks complete in <1 second, but failed executions take >60 seconds, indicating a timeout. The error is suppressed, causing the resource to incorrectly proceed to Set. When Test encounters failures, Set must not be executed. The resource should handle errors properly and throw a non-terminating error instead of reporting drift.
We have dozens of EXOAcceptedDomain resource instances that are executed in sequence. This issue typically occurs to a random instance, which can also indicate that throttling is involved. We suggest looking into implementing an exponential backoff mechanism.
| TimeStamp | MessageBody |
|---|---|
| 2025-12-16 12:20:44.246 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned True |
| 2025-12-16 12:20:44.246 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 0.2810 seconds. |
| 2025-12-16 13:15:57.270 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned True |
| 2025-12-16 13:15:57.270 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 0.2660 seconds. |
| 2025-12-16 14:20:57.761 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned True |
| 2025-12-16 14:20:57.761 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 0.2810 seconds. |
| 2025-12-16 16:21:04.201 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned True |
| 2025-12-16 16:21:04.201 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 0.3270 seconds. |
| 2025-12-16 18:20:42.999 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned True |
| 2025-12-16 18:20:42.999 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 0.2970 seconds. |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned False |
| 2025-12-16 20:23:58.789 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 63.9640 seconds. |
| 2025-12-16 22:20:48.929 | [LCM-M365DSC]: [[EXOAcceptedDomain]contoso.com] Test-TargetResource returned True |
| 2025-12-16 22:20:48.929 | [LCM-M365DSC]: LCM: [ End Test ] [[EXOAcceptedDomain]contoso.com] in 0.2980 seconds. |
Root Cause
The culprit seems to be error suppression in this call:
$AcceptedDomain = Get-AcceptedDomain -Identity $Identity -ErrorAction SilentlyContinue if ($null -eq $AcceptedDomain) { Write-Verbose -Message "AcceptedDomain configuration for {$($Identity)} does not exist." return $nullReturn }Microsoft 365 DSC Version
1.25.1203.2
Which workloads are affected
Exchange Online