Error Solved: "Exchange 2016 database is mandatory on usermailbox"
An upgrade of the Exchange Server is inevitable after some time, this being due to the version not being supported anymore from Microsoft and the extended support has come to an end. Another reason being that with today’s needs, the current Exchange Server is not compatible with the new required features and you have to upgrade.
One time to check when doing an upgrade is the co-existence of the current Exchange Server with the version you would wish to install. For example if you are upgrading from Exchange 2010 to 2016 this is supported depending on the fact that it has been updated to RU9 and having at least 2008 Forest and domain level. If would wish to upgrade to Exchange 2019 this is not supported and you first need to upgrade to 2013 or 2016 and then to 2019. If you don’t follow the requirements and co-existent rules you will surely have problems and Microsoft would not support you if these are breached.
In this case we are taking I consideration an upgrade from Exchange 2010 with all the required updated and Forest/Domain level. So with the new operating system ready, all pre-requisites installed and the Windows Server has been fully updated; the only thing remaining is to run the setup and install all roles including the Mailbox Role. However you got stuck in the Mailbox Role installation stating that an error has been encountered. There isn’t much of details here as you will be provided with Mailbox Role: Transport service: error.
This is not so clear and there is a lot of information to look into, but after investigating into the log file which you can find in your operating system drive and ExchangeSetupLogs folder, you can notice the below message saying:
f ( ($server -eq $null) -and ($RoleIsDatacenter -ne $true) )
{
Update-RmsSharedIdentity -ServerName $RoleNetBIOSName
}
” was run: “Microsoft.Exchange.Data.DataValidationException: Database is mandatory on UserMailbox.
at Microsoft.Exchange.Data.Directory.ADDataSession.Save(ADObject instanceToSave, IEnumerable`1 properties, Boolean bypassValidation)
at Microsoft.Exchange.Data.Directory.Recipient.ADRecipientObjectSession.Save(ADRecipient instanceToSave)
at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.Link(
at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.InternalProcessRecord()
Looking at this, the error saying Database is mandatory on User Mailbox is quite strange and to be honest doesn’t much help.
In the installation of your Exchange Server 2016, the installation is trying to get some information on a system mailbox which would look like SystemMailbox{ab123b23-55-4bc8-9af5-dc1231ab342c}. This error will stop the installation of the Mailbox role due to the fact that the System Mailbox does not have a mailbox database associated to it. So why is this happening and why is it trying to find a non-existing mailbox database? This could be caused by the previous Exchange Server not being properly uninstalled. To verify this one can run the PowerShell command from the Exchange Management Shell (EMS)
Get-Mailbox –Arbitration | ft Name, ServerName, Database –Auto
You will notice here that the listed System Mailbox is shown and there is no database associated with it. If you would open the Active Directory Users and Computes in your Active Directory you will notice that the under the Users OU, a user exist with the name mentioned. Here you can delete the SystemMailbox users in your Active Directory but make sure that you only delete the ones without an assigned Database. After you have removed the users from the Active Directory re-run the PowerShell command to verify that the mailboxes have been removed.
Thou this should fix the problem you might end up with a slightly different message and this time it could complain about the SystemAttendant mailbox. In the ExchangeSetup.log file in your ExchangeSetupLogs folder situated on your system drive you will find the below error.
[ERROR] Data is mandatory on UserMailbox.
[ERROR-REFERENCE] id=SystemAttendantDependent
This is referring to another system mailbox usually found named as SystemAttendantDependent_xxx. Now to fix this one must use the ADSIEdit.msc. It is important to open this very carefully as if you mess something here, the repercussions could be disastrous as we will be editing the Active Directory Schema; and there is no undo button.
So, open ADSIEDIT.msc and connect to the Default naming context. Open the Users container and look for a valid user. Open the properties on the user and find the attribute with the name HomeMDB. Copy the entry in a notepad or any other text editor.
From the ADSIEDIT.msc connect again the Default naming context and find the user which is giving the problem and open the properties. After finding the attribute, delete the contents and replace them from what we copied.
Re-Run the setup and it should continue the installation and install the Mailbox Role. If the setup will stop again it could be that there are other mailboxes which are blocking your Exchange installation. You would need to look in more detail on the Exchange Setup log file and repeat the above on the mailboxes that are show stopping the installation. After the upgrade make sure that you run a consistency and integrity check on the database as this usually points to a corrupted mailbox or database.
Although in many cases this would solve the problem there is a slight chance that the database or mailbox is corrupted and you will not be able to continue the setup. If the problem persists and you are still stuck ending in the need to recover data from a corrupted database it is suggested to use eseutil command.