private ADUser GetLocalOrganizationMailbox() { Server localServer = LocalServerCache.LocalServer; ADUser[] array = OrganizationMailbox.FindByOrganizationId(this.DataObject.OrganizationId, this.OrganizationCapability); foreach (ADUser aduser in array) { if (this.DataObject.Identity.Equals(aduser.Id)) { string activeServerFqdn = OrganizationMailbox.GetActiveServerFqdn(aduser.Id); if (StringComparer.OrdinalIgnoreCase.Equals(localServer.Fqdn, activeServerFqdn)) { return(aduser); } } } base.WriteError(new LocalizedException(Strings.ErrorNoLocalOrganizationMailbox(this.DataObject.Identity.ToString())), ErrorCategory.ObjectNotFound, this.Identity); return(null); }
private void TryCallE15() { ADUser[] array = null; if (OABVariantConfigurationSettings.IsLinkedOABGenMailboxesEnabled) { ADObjectId generatingMailbox = this.DataObject.GeneratingMailbox; if (generatingMailbox != null) { ADUser aduser = (ADUser)base.GetDataObject <ADUser>(new MailboxIdParameter(generatingMailbox), base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(generatingMailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotUnique(generatingMailbox.ToString()))); array = new ADUser[] { aduser }; } } if (array == null) { array = OrganizationMailbox.FindByOrganizationId(this.DataObject.OrganizationId, OrganizationCapability.OABGen); if (array.Length == 0) { if (this.ownerServer != null && this.ownerServer.VersionNumber >= Server.E15MinVersion) { base.WriteError(new LocalizedException(Strings.ErrorOabGenFailedSinceNoOrgMbxFound(this.DataObject.Identity.ToString())), ErrorCategory.ObjectNotFound, this.Identity); } return; } } bool flag = false; foreach (ADUser aduser2 in array) { string activeServerFqdn = OrganizationMailbox.GetActiveServerFqdn(aduser2.Id); string text = null; try { OABGeneratorAssistantRunNowParameters oabgeneratorAssistantRunNowParameters = new OABGeneratorAssistantRunNowParameters { PartitionId = this.DataObject.Id.GetPartitionId(), ObjectGuid = this.DataObject.Id.ObjectGuid, Description = "from Update-OAB on Server:" + Environment.MachineName }; AssistantsRpcClient assistantsRpcClient = new AssistantsRpcClient(activeServerFqdn); assistantsRpcClient.StartWithParams("OABGeneratorAssistant", aduser2.ExchangeGuid, aduser2.Database.ObjectGuid, oabgeneratorAssistantRunNowParameters.ToString()); flag = true; } catch (RpcException ex) { text = RpcUtility.MapRpcErrorCodeToMessage(ex.ErrorCode, activeServerFqdn); } catch (COMException ex2) { text = ex2.Message; } if (text != null) { if (array.Length == 1) { base.WriteError(new LocalizedException(Strings.ErrorOabGenFailed(this.DataObject.Identity.ToString(), activeServerFqdn, text)), ErrorCategory.InvalidResult, this.Identity); } else { this.WriteWarning(Strings.WarningOabGenFailed(this.DataObject.Identity.ToString(), aduser2.Identity.ToString(), activeServerFqdn, text)); } } } if (array.Length > 1 && !flag) { base.WriteError(new LocalizedException(Strings.ErrorOabGenFailedForAllOrgMailboxes(this.DataObject.Identity.ToString())), ErrorCategory.InvalidResult, this.Identity); } }