public static MailboxDatabase ChooseTargetMDB(IEnumerable <ADObjectId> excludedDatabaseIds, bool checkInitialProvisioningSetting, ADUser adUser, Fqdn domainController, ScopeSet scopeSet, Action <LocalizedString> writeVerbose, Action <LocalizedException, ExchangeErrorCategory, object> writeExchangeError, Action <Exception, ErrorCategory, object> writeError, object identity) { MailboxProvisioningConstraint mailboxProvisioningConstraint = (adUser == null) ? new MailboxProvisioningConstraint() : adUser.MailboxProvisioningConstraint; LoadBalancingReport loadBalancingReport = new LoadBalancingReport(); MailboxDatabaseWithLocationInfo mailboxDatabaseWithLocationInfo = PhysicalResourceLoadBalancing.FindDatabaseAndLocation(domainController, delegate(string msg) { writeVerbose(new LocalizedString(msg)); }, scopeSet, checkInitialProvisioningSetting, false, new int?(Server.E15MinVersion), mailboxProvisioningConstraint, excludedDatabaseIds, ref loadBalancingReport); if (mailboxDatabaseWithLocationInfo == null) { ExManagementApplicationLogger.LogEvent(ManagementEventLogConstants.Tuple_LoadBalancingFailedToFindDatabase, new string[] { domainController, loadBalancingReport.ToString() }); writeExchangeError(new RecipientTaskException(Strings.ErrorAutomaticProvisioningFailedToFindDatabase("TargetDatabase")), ExchangeErrorCategory.ServerOperation, null); } return(mailboxDatabaseWithLocationInfo.MailboxDatabase); }
public IEnumerable <DirectoryDatabase> GetCachedDatabasesForProvisioning() { List <MailboxDatabase> allCachedDatabasesForProvisioning = PhysicalResourceLoadBalancing.GetAllCachedDatabasesForProvisioning(null, new LogMessageDelegate(this.LogVerboseMessage)); return(allCachedDatabasesForProvisioning.Select(new Func <MailboxDatabase, DirectoryDatabase>(this.DirectoryDatabaseFromDatabase))); }