having trouble with migrating Exchange 2013 mailboxes to Exchange 2019. Whenever a mailbox is in the final steps of the migration it causes an outage of the target mailbox (Mailbox Database 2019). The event log on the 2019 server lights up with errors and warnings accompanying every crash. After each crash, the database will re-mount and the migration will finish successfully. I've done several upgrades to 2019 this year but this is my first 2013 -> 2019. The other migrations (2010 -> 2016 -> 2019) went smoothly. Here's everything I tried to fix it.
- Moved mailboxes back to 2013. Did this one at a time and re-mounted the database at each crash
- These are virtual machines, I removed 2019 from the domain and installed on a fresh server. Same issue.
- Installed a different CU of 2019 (was installing CU6, went to CU3). Same issue
- Installed Exchange 2016 on another new virtual. Migrating mailboxes to 2016 works with no errors.
- Migrated from 2016 to 2019, same issue.
- Migrated from 2019 to 2016, same issue.
- Called Microsoft, paid $500 and got no where after a few hours. They helped getting everything back onto 2013 and stable there.
- Made sure MAPI was enabled
- Set internal and external URLs for MAPI to their correct value
- Scoured the event viewer for any obscure reference to the database going down and found nothing outside of the Application log.
Here are the 2 errors that have stuck with me from the beginning. Source: MSExchangeIS Event ID 1002. Searching for this error on the internet gave me close, but not quite exact errors that were supposed to be fixed already in older CUs.
Unhandled exception (System.InvalidOperationException: Nullable object must have a value. at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) at Microsoft.Exchange.Protocols.MAPI.MapiMessage.IsStreamSizeInvalid(MapiContext context, Int64 size) at Microsoft.Exchange.Protocols.MAPI.MapiStream.ValidateStreamSize(MapiContext context, Int64 size) at Microsoft.Exchange.Protocols.MAPI.MapiStream.Write(MapiContext context, Byte[] bytesToWrite, Int32 offset, Int32 length) at Microsoft.Exchange.Server.Storage.MapiDisp.RopHandler.WriteStreamExtended(MapiContext context, MapiStream stream, ArraySegment
1[] dataChunks, UInt32& outputByteCount, WriteStreamExtendedResultFactory resultFactory) at Microsoft.Exchange.Server.Storage.MapiDisp.RopHandlerBase.WriteStreamExtended(IServerObject serverObject, ArraySegment
1[] dataChunks, WriteStreamExtendedResultFactory resultFactory) at Microsoft.Exchange.RpcClientAccess.Parser.RopWriteStreamExtended.InternalExecute(IServerObject serverObject, IRopHandler ropHandler, ArraySegment1 outputBuffer) at Microsoft.Exchange.RpcClientAccess.Parser.InputRop.Execute(IConnectionInformation connection, IRopDriver ropDriver, ServerObjectHandleTable handleTable, ArraySegment
1 outputBuffer) at Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteRops(List1 inputArraySegmentList, ServerObjectHandleTable serverObjectHandleTable, ArraySegment
1 outputBuffer, Int32 outputIndex, Int32 maxOutputSize, Boolean isOutputBufferMaxSize, Int32& outputSize, AuxiliaryData auxiliaryData, Boolean isFake, Byte[]& fakeOut) at Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteOrBackoff(IList1 inputBufferArray, ArraySegment
1 outputBuffer, Int32& outputSize, AuxiliaryData auxiliaryData, Boolean isFake, Byte[]& fakeOut) at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.<>c__DisplayClass29_1.b__0(MapiContext operationContext, MapiSession& session, Boolean& deregisterSession, AuxiliaryData auxiliaryData) at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.Execute(IExecutionDiagnostics executionDiagnostics, MapiContext outerContext, String functionName, Boolean isRpc, IntPtr& contextHandle, Boolean tryLockSession, String userDn, IList1 dataIn, Int32 sizeInMegabytes, ArraySegment
1 auxIn, ArraySegment1 auxOut, Int32& sizeAuxOut, ExecuteDelegate executeDelegate) at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.DoRpc(IExecutionDiagnostics executionDiagnostics, IntPtr& contextHandle, IList
1 ropInArraySegments, ArraySegment1 ropOut, Int32& sizeRopOut, Boolean internalAccessPrivileges, ArraySegment
1 auxIn, ArraySegment1 auxOut, Int32& sizeAuxOut, Boolean fakeRequest, Byte[]& fakeOut) at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcDoRpc(MapiExecutionDiagnostics executionDiagnostics, IntPtr& sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment
1 request, ArraySegment1 auxiliaryIn, IPoolSessionDoRpcCompletion completion) at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcPoolSessionDoRpc_Unwrapped(MapiExecutionDiagnostics executionDiagnostics, IntPtr contextHandle, UInt32 sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment
1 request, ArraySegment`1 auxiliaryIn, IPoolSessionDoRpcCompletion completion)
at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.<>c__DisplayClass48_0.b__0() at Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch[T](Action tryDelegate, GenericFilterDelegate filterDelegate, GenericCatchDelegate catchDelegate, T state)).
Source: MSExchangeIS Event ID 1013
The mailbox with mailbox guid 8f656114-9b45-43ac-8073-8ddd3f7596b8 caused a crash or resource outage on database "Mailbox Database 2" (da3e70b9-c9b1-4937-9fb1-f18324f85926).
Version: 15.02.0464.005 Description: InvalidOperationException: S.ThrowHelper.ThrowInvalidOperationException,MEPMAPI.MapiMessage.IsStreamSizeInvalid,MEPMAPI.MapiStream.ValidateStreamSize,MEPMAPI.MapiStream.Write,MESSMD.RopHandler.WriteStreamExtended,MESSMD.RopHandlerBase.WriteStreamExtended,MERCAP.RopWriteStreamExtende
On the face of it I know what the error means...I don't know where to go to fix it. If you need more info or event logs I will provide. Thank you for your help!