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.