Dienstag, 21. Juli 2026

Exchange Modern Hybrid - Timeout beim Zugriff auf MigrationEndPoint

Lösung für Fehler: "The call to https://3c074dd4-cc82-47ce-b20a-218203304850.resource.mailboxmigration.his.msappproxy.net/EWS/mrspr… timed out."

 

Die Ursache für das Problem lag in der Verbindung von Hybrid Agent zu Exchange Server. Sie ging folgenden Weg:

EXO --> Hybrid Agent auf <Exchange Server> --> https://<Loadbalancer.domain.suffix>/ews/mrsproxy.svc —> Timeout

 

Auch wenn der Loadbalancer augenscheinlich fehlerfrei arbeitete (Test per Browser), hier wurden die Verbindungen unterbrochen. 

 

Die Hybridverbindung wurde temporär so konfiguriert:

EXO --> Hybrid Agent auf <Exchange Server> --> https://<servername.domain.suffix>/ews/mrsproxy.svc

 

Mittels Commandlet:

Import-Module HybridMangagement.psm1 

Update-HybridApplication -userPrincipalName <AdminAccount> -appId 3c074dd4-cc82-47ce-b20a-218203304850 -targetUri https://<servername.domain.suffix>/  

 

Freitag, 19. Dezember 2025

Exchange Hybrid Free Busy Error: The remote server returned an error: (403) Forbidden - on-premise to cloud

Neue Ursache für Hybrid Free Busy Problem seit ungefähr November/Dezember 2025. Probleme bestehen on-prem --> Cloud mit 403: forbidden. Gegenrichtung (Cloud zu on-prem) funktioniert.

 

Fehlerbild:


Test-OAuthConnectivity -Service EWS -TargetUri https://outlook.office365.com/ews/exchange.asmx -Mailbox testuser@domain.com -verbose | fl

RunspaceId  : 1205301b-xc51-451c-a806-a8340a0ced72
Task        : Checking EWS API Call Under Oauth
Detail      : The configuration was last successfully loaded at 26/11/2025 09:00:24 UTC. This was 7 minutes ago.
              The token cache is being cleared because "use cached token" was set to false.
              Exchange Outbound Oauth Log:
...
System.Net.WebException: The remote server returned an error: (403) Forbidden.
 

Ursache: Das SettingOverride der neuen Dedicated Hybrid App fehlt. Hinzufügen mit:

 New-SettingOverride -Name "EnableExchangeHybrid3PAppFeature" -Component "Global" -Section "ExchangeOnpremAsThirdPartyAppId" -Parameters @("Enabled=true") -Reason "Enable dedicated Exchange hybrid app feature"

 

Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh

 

Löst das Problem innerhalb von 15min.

Mittwoch, 3. September 2025

'ExternalEmailAddress' ist für 'MailUser' verbindlich - 'ExternalEmailAddress' is mandatory on MailUser

 Problem: Bei einer Exchange Infrastruktur funktionieren in der PowerShell keine Abfragen für "Get-Mailbox" mehr. Damit auch keine Befehle oder Aktionen, die auf "get-mailbox" aufsetzen, wie z.B. die Installation eines neuen CU (siehe Log unten).

 

 Ursache: Das bemängelte "ExternalEmailAddress" war nicht die Ursache des Problems. Lösung war, ein fehlendes "HomeServer"-Attribut auf einer Mailbox zu ergänzen. Herausgefunden mittels "SetupAssist.ps1" Skript von hier: https://microsoft.github.io/CSS-Exchange/Setup/SetupAssist/

 

Fehler:
Der folgende Fehler wurde generiert, als "$error.Clear();
          if ($RoleIsDatacenter -ne $true -and $RoleIsDatacenterDedicated -ne $true)
          {
          if (Test-ExchangeServersWriteAccess -DomainController $RoleDomainController -ErrorAction SilentlyContinue)
          {
          $sysMbx = $null;
          $name = "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}";
          $dispName = "Microsoft Exchange";
          Write-ExchangeSetupLog -Info ("Retrieving mailboxes with Name=$name.");
          $mbxs = @(Get-Mailbox -Arbitration -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1 );
          if ($mbxs.Length -eq 0)
          {
          Write-ExchangeSetupLog -Info ("Retrieving mailbox databases on Server=$RoleFqdnOrName.");
          $dbs = @(Get-MailboxDatabase -Server:$RoleFqdnOrName -DomainController $RoleDomainController);
          if ($dbs.Length -ne 0)
          {
          Write-ExchangeSetupLog -Info ("Retrieving users with Name=$name.");
          $arbUsers = @(Get-User -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1);
          if ($arbUsers.Length -ne 0)
          {
          Write-ExchangeSetupLog -Info ("Enabling mailbox $name.");
          $sysMbx = Enable-Mailbox -Arbitration -Identity $arbUsers[0] -DisplayName $dispName -database $dbs[0].Identity;
          }
          }
          }
          else
          {
          if ($mbxs[0].DisplayName -ne $dispName )
          {
          Write-ExchangeSetupLog -Info ("Setting DisplayName=$dispName.");
          Set-Mailbox -Arbitration -Identity $mbxs[0] -DisplayName $dispName -Force;
          }
          $sysMbx = $mbxs[0];
          }

          # Set the Organization Capabilities needed for this mailbox
          if ($sysMbx -ne $null)
          {
          # We need 1 GB for uploading large OAB files to the organization mailbox
          Write-ExchangeSetupLog -Info ("Setting mailbox properties.");
          set-mailbox -Arbitration -identity $sysMbx -UMGrammar:$true -OABGen:$true -GMGen:$true -ClientExtensions:$true -MailRouting:$true -MessageTracking:$true -PstProvider:$true -MaxSendSize 1GB -Force;

          Write-ExchangeSetupLog -Info ("Configuring offline address book(s) for this mailbox");
          Get-OfflineAddressBook | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -ge 0 -and $_.GeneratingMailbox -eq $null} | Set-OfflineAddressBook -GeneratingMailbox $sysMbx.Identity;
          }
          else
          {
          Write-ExchangeSetupLog -Info ("Cannot find arbitration mailbox with name=$name.");
          }
          }
          else
          {
          Write-ExchangeSetupLog -Info "Skipping creating E15 System Mailbox because of insufficient permission."
          }
          }
        " ausgeführt wurde: "Microsoft.Exchange.Data.DataValidationException: 'ExternalEmailAddress' ist für 'MailUser' verbindlich.
   bei Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCacheableItem`1.TryRunADOperation(ADOperation operation, Boolean throwExceptions)
   bei Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCacheableItem`1.Initialize(OrganizationId organizationId, CacheNotificationHandler cacheNotificationHandler, Object state)
   bei Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCache`1.InitializeAndAddPerTenantSettings(OrganizationId orgId, Boolean allowExceptions, TSettings& perTenantSettings, Object state)
   bei Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCache`1.TryGetValue(OrganizationId orgId, Boolean allowExceptions, TSettings& perTenantSettings, Boolean& hasExpired, Object state)
   bei Microsoft.Exchange.Management.RecipientTasks.GetMailbox.ConvertDataObjectToPresentationObject(IConfigurable dataObject)
   bei Microsoft.Exchange.Configuration.Tasks.GetRecipientObjectTask`2.WriteResult(IConfigurable dataObject)
   bei Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.WriteResult[T](IEnumerable`1 dataObjects)
   bei Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.InternalProcessRecord()
   bei Microsoft.Exchange.Configuration.Tasks.GetObjectWithIdentityTaskBase`2.InternalProcessRecord()
   bei Microsoft.Exchange.Configuration.Tasks.GetRecipientObjectTask`2.InternalProcessRecord()
   bei Microsoft.Exchange.Management.RecipientTasks.GetRecipientWithAddressListBase`2.InternalProcessRecord()
   bei Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__91_1()
   bei Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)". 

Mittwoch, 8. Juni 2022

0x800c8219 Fehler in Outlook wenn Outlook Anywhere auf Mailboxebene ausgeschaltet ist

Einige Postfächer konnten sich nicht mehr mit dem Exchangeserver verbinden - allerdings funktionierte OWA problemlos. Die Lösung war eigentlich naheliegend, der Fehlercode "0x800c8219" in Outlook aber nichtssagend.

Mittels...

CASMailbox -MAPIBlockOutlookRpcHttp:$True

....war auf den betroffenen Postfächern OA ausgeschaltet. Ein Einschalten löste das Problem:

 CASMailbox -MAPIBlockOutlookRpcHttp:$False

Donnerstag, 16. Juli 2020

Free/Busy Fehler bei Wechsel in neuen Tenant

Bei einem Kunde mit Exchange Hybrid (Exchange 2010 & 2016 mit Exchange Online) funktionierte die Anzeige der Frei/Gebuchtzeiten in beide Richtungen nicht. Auch die gesammelten Lösungen von Microsoft (https://techcommunity.microsoft.com/legacyfs/online/media/2019/01/FB_Errors.FixesV6.pdf
, eigentlich sehr hilftreich) konnten in diesem Fall nicht helfen.
Durch Test-OAuthConnectivity, Test-MigrationEndpoin & der Entwickler Konsole in IE (F12) mit OWA kamen wir auf folgende Meldung:

Autodiscover failed for email address ONPREMUSER@domain.com with error System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
….
diagnostics: 2000009;reason=”The issuer of the token is unknown. Issuer was ‘00000001-0000-0000-c000-000000000000@xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’.”;error_category=”invalid_issuer”

 
Die Tenant GUID (xxxxxxx) stimmte mit der des produktiven Tenants überein. Ein "Get-AuthServer | fl" zeigte jedoch, dass on-premise noch die GUID des alten Tenants hinterlegt war. Lösung war es, den alten "ACS" AuthServer zu entfernen, und einen neuen anzulegen:

Remove-AuthServer "ACS"
New-AuthServer -Name "WindowsAzureACS" -AuthMetadataUrl https://accounts.accesscontrol.windows.net/theirdomain.com/metadata/json/1

Mittwoch, 13. Mai 2020

Send-As für Verteilergruppe in Hybridumgebung

First, grant SendAs via Exchange Admin Center, then open EXO PowerShell for the following command: Add-RecipientPermission -Identity <EmailAddress> -Trustee <UserEmailaddress> -AccessRights SendAs

Donnerstag, 30. Januar 2020

CSVDE Computer Details Export

 Bei Windows Server 2003 und älter gibt es noch keine PowerShell. Wenn man in solch alten Umgebungen Daten automatisiert exportieren muss, braucht man Tools wie CSVDE. Um z.B. Computerdetails zu exportieren (get-ADComputer), folgenden Befehl in eine CMD eingeben: CSVDE -f allComputer.csv -r (objectclass=Computer)