Recently I got an e-mail from someone who had problems creating mailboxes in a new environment. When trying to create a mailbox, he received a following message stating, “Load balancing failed to find a valid mailbox database.” Apparently, the Mailbox Resources Management Agent (a Cmdlet Extension Agent) could not find an eligible mailbox database candidate.
The MRMA uses the following selection process when picking a candidate for mailbox creation or moving:
- Create a list of all mailbox databases;
- Remove databases marked for exclusion;
- Remove databases out of the management scope;
- Remove databases from remote (AD) sites;
- Pick a random online, healthy database from the list.
This person had a DAG, two mailbox databases (MDB1, MDB2) and two sites (AMS and LON).
We first checked the more or less obvious, which is to see if databases are not excluded from the provisioning process, so we entered Get-MailboxDatabase | fl *FromProvisioning:
Databases seemed enabled for provisioning. We then checked the status of the active database copies:
The copies looked healthy, but we noticed all databases were mounted in a remote site (derived from the server name starting with LON; we’re working from AMS). Looking back at the database selection process, it explained why it probably didn’t work and since the active copies should be moved back to the preferred site AMS anyway we moved the active copies back:
After moving the active database copies back to the location where we were performing our cmdlets from solved things.
Note that we could have discovered the issue using the Verbose parameter with the cmdlet. For example, New-Mailbox in conjunction with Verbose will show the selection process. The following screenshot shows an unsuccessful selection process considering available databases:
This screenshot shows a successful selection process.
More information on automatic mailbox distribution and controlling its behavior here.
A question about this post, is this by design or can it be changed?
I have the same problem in my organization (2 geographically different sites) an indeed changing the active database copy to the local site fixes the problem but is there an option to have this working while keeping the active copy on the remote site?
I dug around in the ADSI logs for the servers in question but not so much luck there.
You could manually specify the (target) database or disable the MRMA agent (requiring you to specify the target database as well). Note that the MRMA does more that select a local database, it will also respect ‘excludedfromprovisioning’ settings etc.