public override Guid GetExternalDirectoryOrganizationId(LoadBalancingMiniRecipient recipient) { if (recipient.OrganizationId == OrganizationId.ForestWideOrgId) { return(TenantPartitionHint.ExternalDirectoryOrganizationIdForRootOrg); } string text; try { text = recipient.OrganizationId.ToExternalDirectoryOrganizationId(); } catch (InvalidOperationException ex) { string extraData = string.Format("OrgId: {0}, recipientGuid: {1}, database: {2}", recipient.OrganizationId.GetTenantGuid(), recipient.ExchangeObjectId, recipient.Database); ExWatson.SendReport(ex, ReportOptions.None, extraData); throw new InvalidOrganizationException(recipient.OrganizationId.ToString(), ex); } Guid result; if (!Guid.TryParse(text, out result)) { throw new InvalidOrganizationIdentityException(string.Format("{0}", recipient.OrganizationId), text); } return(result); }
public DirectoryDatabase GetDatabaseForMailbox(DirectoryIdentity identity) { LoadBalancingMiniRecipient loadBalancingMiniRecipient = this.RecipientSession.FindRecipient(identity); if (loadBalancingMiniRecipient.Database == null) { return(null); } return(this.GetDatabase(loadBalancingMiniRecipient.Database.ObjectGuid)); }
public IEnumerable <DirectoryMailbox> GetMailboxesForDatabase(DirectoryDatabase database) { this.logger.LogVerbose("Getting mailboxes for database '{0}'", new object[] { database.Name }); DirectoryIdentity databaseIdentity = database.Identity; using (IPhysicalDatabase physicalDatabase = this.clientFactory.GetPhysicalDatabaseConnection(database)) { physicalDatabase.LoadMailboxes(); IOperationRetryManager retryManager = LoadBalanceOperationRetryManager.Create(this.logger); foreach (LoadBalancingMiniRecipient recipient in this.RecipientSession.FindAllUsersLinkedToDatabase(databaseIdentity.ADObjectId)) { DirectoryMailbox mailbox = null; LoadBalancingMiniRecipient miniRecipient = recipient; retryManager.TryRun(delegate { mailbox = this.GetMailboxFromMiniRecipient(miniRecipient, this.RecipientSession.GetExternalDirectoryOrganizationId(miniRecipient), physicalDatabase); mailbox.Parent = database; this.NotifyObjectLoaded(mailbox); }); if (mailbox != null) { yield return(mailbox); } } foreach (IPhysicalMailbox consumerMailbox in physicalDatabase.GetConsumerMailboxes()) { DirectoryIdentity consumerIdentity = DirectoryIdentity.CreateConsumerMailboxIdentity(consumerMailbox.Guid, physicalDatabase.DatabaseGuid, consumerMailbox.OrganizationId); yield return(new DirectoryMailbox(this, consumerIdentity, new IPhysicalMailbox[] { consumerMailbox }, DirectoryMailboxType.Consumer)); } foreach (NonConnectedMailbox disconnectedMailbox in this.GetDisconnectedMailboxesForDatabaseInternal(database, physicalDatabase)) { yield return(disconnectedMailbox); } } yield break; }
private DirectoryMailbox GetMailboxFromMiniRecipient(LoadBalancingMiniRecipient recipient, Guid organizationId, IPhysicalDatabase physicalDatabaseConnection) { List <IPhysicalMailbox> physicalMailboxes = new List <IPhysicalMailbox>(2); Guid exchangeGuid = recipient.ExchangeGuid; if (recipient.Database != null && exchangeGuid != Guid.Empty) { Guid objectGuid = recipient.Database.ObjectGuid; this.AddPhysicalMailboxToList(exchangeGuid, objectGuid, physicalDatabaseConnection, physicalMailboxes, false); } if (recipient.ArchiveGuid != Guid.Empty && recipient.ArchiveDatabase != null) { this.AddPhysicalMailboxToList(recipient.ArchiveGuid, recipient.ArchiveDatabase.ObjectGuid, physicalDatabaseConnection, physicalMailboxes, true); } DirectoryMailbox directoryMailbox; if (recipient.RecipientType == RecipientType.MailUser) { directoryMailbox = new CloudArchive(this, DirectoryIdentity.CreateMailboxIdentity(recipient.Guid, organizationId, DirectoryObjectType.CloudArchive), physicalMailboxes); } else { directoryMailbox = new DirectoryMailbox(this, DirectoryIdentity.CreateMailboxIdentity(recipient.Guid, organizationId, DirectoryObjectType.Mailbox), physicalMailboxes, DirectoryMailboxType.Organization); if (recipient.propertyBag.Contains(MiniRecipientSchema.ConfigurationXML) && recipient.ConfigXML != null) { directoryMailbox.MailboxProvisioningConstraints = recipient.ConfigXML.MailboxProvisioningConstraints; } } if (recipient.MailboxMoveFlags.HasFlag(RequestFlags.IntraOrg) && (recipient.MailboxMoveStatus == RequestStatus.Queued || recipient.MailboxMoveStatus == RequestStatus.InProgress)) { BatchName batchName = BatchName.FromString(recipient.MailboxMoveBatchName); if (batchName.IsLoadBalancingBatch) { directoryMailbox.IsBeingLoadBalanced = true; } } return(directoryMailbox); }
private DirectoryMailbox GetMailboxObject(DirectoryIdentity identity) { LoadBalancingMiniRecipient recipient = this.RecipientSession.FindRecipient(identity); return(this.GetMailboxFromMiniRecipient(recipient, identity.OrganizationId, null)); }
// Token: 0x060003B5 RID: 949 RVA: 0x00015440 File Offset: 0x00013640 internal static ADObject CreateAndInitializeRecipientObject <TRecipientObject>(ADPropertyBag propertyBag, ADRawEntry dummyObject, IRecipientSession recipientSession) where TRecipientObject : IConfigurable, new() { ArgumentValidator.ThrowIfNull("propertyBag", propertyBag); ArgumentValidator.ThrowIfNull("dummyObject", dummyObject); MultiValuedProperty <string> multiValuedProperty = (MultiValuedProperty <string>)propertyBag[ADObjectSchema.ObjectClass]; ADObject adobject; if (dummyObject is OWAMiniRecipient) { adobject = new OWAMiniRecipient(); } else if (dummyObject is ActiveSyncMiniRecipient) { adobject = new ActiveSyncMiniRecipient(); } else if (dummyObject is StorageMiniRecipient) { adobject = new StorageMiniRecipient(); } else if (dummyObject is TransportMiniRecipient) { adobject = new TransportMiniRecipient(); } else if (dummyObject is LoadBalancingMiniRecipient) { adobject = new LoadBalancingMiniRecipient(); } else if (dummyObject is MiniRecipientWithTokenGroups) { adobject = new MiniRecipientWithTokenGroups(); } else if (dummyObject is FrontEndMiniRecipient) { adobject = new FrontEndMiniRecipient(); } else if (dummyObject is MiniRecipient) { adobject = new MiniRecipient(); } else if (dummyObject is RemovedMailbox) { adobject = new RemovedMailbox(); } else if (dummyObject is DeletedRecipient) { adobject = new DeletedRecipient(); } else if (multiValuedProperty.Contains(ADComputerRecipient.MostDerivedClass)) { adobject = new ADComputerRecipient(); } else if (multiValuedProperty.Contains(ADUser.MostDerivedClass)) { adobject = new ADUser(); } else if (multiValuedProperty.Contains(ADContact.MostDerivedClass)) { adobject = new ADContact(); } else if (multiValuedProperty.Contains(ADGroup.MostDerivedClass)) { adobject = new ADGroup(); } else if (multiValuedProperty.Contains(ADDynamicGroup.MostDerivedClass)) { adobject = new ADDynamicGroup(); } else if (multiValuedProperty.Contains(ADPublicFolder.MostDerivedClass)) { adobject = new ADPublicFolder(); } else if (multiValuedProperty.Contains(ADSystemAttendantMailbox.MostDerivedClass)) { adobject = new ADSystemAttendantMailbox(); } else if (multiValuedProperty.Contains(ADSystemMailbox.MostDerivedClass)) { adobject = new ADSystemMailbox(); } else if (multiValuedProperty.Contains(ADPublicDatabase.MostDerivedClass)) { adobject = new ADPublicDatabase(); } else { if (!multiValuedProperty.Contains(ADMicrosoftExchangeRecipient.MostDerivedClass)) { string objectClass = string.Empty; foreach (string text in multiValuedProperty) { objectClass = text; } ObjectValidationError error = new ObjectValidationError(DirectoryStrings.UnsupportedObjectClass(objectClass), (ADObjectId)propertyBag[ADObjectSchema.Id], string.Empty); ADProviderPerf.UpdateProcessCounter(Counter.ProcessRateCriticalValidationFailures, UpdateType.Update, 1U); Globals.LogEvent(DirectoryEventLogConstants.Tuple_DSC_EVENT_VALIDATION_FAILED_FCO_MODE_RECIPIENT, ((ADObjectId)propertyBag[ADObjectSchema.Id]).ToString(), new object[] { ((ADObjectId)propertyBag[ADObjectSchema.Id]).ToDNString() }); throw new DataValidationException(error); } adobject = new ADMicrosoftExchangeRecipient(); } adobject.m_Session = recipientSession; adobject.propertyBag = propertyBag; adobject.Initialize(); adobject.ResetChangeTracking(true); if (recipientSession != null) { adobject.SetIsReadOnly(recipientSession.ReadOnly); } ExTraceGlobals.ADReadDetailsTracer.TraceDebug <string, RecipientType>((long)((recipientSession != null) ? recipientSession.GetHashCode() : 0), "ADRecipientObjectSession::CreateObject - Got {0} as {1}", adobject.DistinguishedName, (RecipientType)adobject[ADRecipientSchema.RecipientType]); return(adobject); }
public abstract Guid GetExternalDirectoryOrganizationId(LoadBalancingMiniRecipient recipient);