private void VerifyLegacyPublicFolderDatabaseLocked() { PublicFolderEndpoint publicFolderEndpoint = (PublicFolderEndpoint)this.DataObject.SourceEndpoint; using (DisposeGuard disposeGuard = default(DisposeGuard)) { IMailbox mailbox; if (publicFolderEndpoint != null) { mailbox = disposeGuard.Add <IMailbox>(publicFolderEndpoint.ConnectToSourceDatabase()); } else { DatabaseIdParameter id = DatabaseIdParameter.Parse(this.DataObject.SourcePublicFolderDatabase); PublicFolderDatabase publicFolderDatabase = (PublicFolderDatabase)base.GetDataObject <PublicFolderDatabase>(id, this.ConfigurationSession, null, new LocalizedString?(Strings.ErrorDatabaseNotFound(this.DataObject.SourcePublicFolderDatabase)), new LocalizedString?(Strings.ErrorDatabaseNotUnique(this.DataObject.SourcePublicFolderDatabase))); mailbox = disposeGuard.Add <IMailbox>(PublicFolderEndpoint.ConnectToLocalSourceDatabase(publicFolderDatabase.ExchangeObjectId)); } try { bool flag; mailbox.SetInTransitStatus(InTransitStatus.MoveSource, out flag); mailbox.SetInTransitStatus(InTransitStatus.NotInTransit, out flag); } catch (SourceMailboxAlreadyBeingMovedTransientException) { base.WriteError(new MigrationBatchCannotBeCompletedException(Strings.CompletePublicFolderMigrationBatchRequiresSourceLockDown)); } } }
private void ValidateSourcePublicFolderDatabase(MigrationJob job) { if (job.MigrationType != MigrationType.PublicFolder || job.JobDirection != MigrationBatchDirection.Local) { base.WriteError(new MigrationPermanentException(Strings.ErrorInvalidBatchParameter("SourcePublicFolderDatabase", job.MigrationType.ToString(), job.JobDirection.ToString()))); } PublicFolderDatabase publicFolderDatabase = (PublicFolderDatabase)base.GetDataObject <PublicFolderDatabase>(this.SourcePublicFolderDatabase, this.ConfigurationSession, null, new LocalizedString?(Strings.ErrorDatabaseNotFound(this.SourcePublicFolderDatabase.ToString())), new LocalizedString?(Strings.ErrorDatabaseNotUnique(this.SourcePublicFolderDatabase.ToString()))); using (IMailbox mailbox = PublicFolderEndpoint.ConnectToLocalSourceDatabase(publicFolderDatabase.ExchangeObjectId)) { mailbox.Disconnect(); } }
internal static void VerifyPublicFolderConnection(IMigrationDataProvider dataProvider, PublicFolderEndpoint publicFolderEndpoint, string sourceMailboxLegacyDn, string publicFolderDatabaseServerLegacyDn, MailboxData mailboxData) { MrsPublicFolderAccessor mrsPublicFolderAccessor = new MrsPublicFolderAccessor(dataProvider, "TestMigrationServerAvailability"); using (Stream stream = new MemoryStream()) { using (StreamWriter streamWriter = new StreamWriter(stream)) { streamWriter.WriteLine("\"{0}\",\"{1}\"", "FolderPath", "TargetMailbox"); streamWriter.WriteLine("\"\\\",\"{0}\"", mailboxData.Name); streamWriter.Flush(); stream.Seek(0L, SeekOrigin.Begin); mrsPublicFolderAccessor.TestCreateSubscription(publicFolderEndpoint, mailboxData, stream); } } }