Пример #1
0
 protected override void ModifyRequestInternal(TransactionalRequestJob requestJob, StringBuilder changedValuesTracker)
 {
     if (base.IsFieldSet("RemoteSourceMailboxServerLegacyDN"))
     {
         changedValuesTracker.AppendLine(string.Format("RemoteMailboxServerLegacyDN: {0} -> {1}", requestJob.RemoteMailboxServerLegacyDN, this.RemoteSourceMailboxServerLegacyDN));
         requestJob.RemoteMailboxServerLegacyDN = this.RemoteSourceMailboxServerLegacyDN;
     }
     if (base.IsFieldSet("OutlookAnywhereHostName"))
     {
         changedValuesTracker.AppendLine(string.Format("OutlookAnywhereHostName: {0} -> {1}", requestJob.OutlookAnywhereHostName, this.OutlookAnywhereHostName));
         requestJob.OutlookAnywhereHostName = this.OutlookAnywhereHostName;
     }
     if (base.IsFieldSet("RemoteCredential"))
     {
         changedValuesTracker.AppendLine("RemoteCredential: <secure> -> <secure>");
         requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, requestJob.AuthenticationMethod);
     }
     if (base.IsFieldSet("IsAdministrativeCredential"))
     {
         changedValuesTracker.AppendLine(string.Format("IsAdministrativeCredential: {0} -> {1}", requestJob.IsAdministrativeCredential, this.IsAdministrativeCredential));
         requestJob.IsAdministrativeCredential = new bool?(this.IsAdministrativeCredential);
     }
     if (base.IsFieldSet("StartAfter") && !RequestTaskHelper.CompareUtcTimeWithLocalTime(requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.StartAfter), this.StartAfter))
     {
         RequestTaskHelper.SetStartAfter(this.StartAfter, requestJob, changedValuesTracker);
     }
     if (base.IsFieldSet("IncrementalSyncInterval"))
     {
         changedValuesTracker.AppendLine(string.Format("IncrementalSyncInterval: {0} -> {1}", requestJob.IncrementalSyncInterval, this.IncrementalSyncInterval));
         requestJob.IncrementalSyncInterval = this.IncrementalSyncInterval;
     }
 }
 protected override void SetRequestProperties(TransactionalRequestJob dataObject)
 {
     base.SetRequestProperties(dataObject);
     dataObject.JobType      = MRSJobType.RequestJobE15_CreatePublicFoldersUnderParentInSecondary;
     dataObject.RequestType  = MRSRequestType.PublicFolderMailboxMigration;
     dataObject.WorkloadType = base.WorkloadType;
     if (base.ParameterSetName.Equals("MailboxMigrationOutlookAnywherePublicFolder"))
     {
         dataObject.AuthenticationMethod        = new AuthenticationMethod?(this.AuthenticationMethod);
         dataObject.OutlookAnywhereHostName     = this.OutlookAnywhereHostName;
         dataObject.RemoteCredential            = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, new AuthenticationMethod?(this.AuthenticationMethod));
         dataObject.RemoteMailboxLegacyDN       = this.RemoteMailboxLegacyDN;
         dataObject.RemoteMailboxServerLegacyDN = this.RemoteMailboxServerLegacyDN;
     }
     else
     {
         dataObject.SourceDatabase     = this.sourceDatabase;
         dataObject.SourceExchangeGuid = this.sourceDatabase.ObjectGuid;
     }
     dataObject.PreserveMailboxSignature   = false;
     dataObject.PreventCompletion          = true;
     dataObject.SuspendWhenReadyToComplete = true;
     dataObject.AllowedToFinishMove        = false;
     dataObject.SourceDatabase             = this.sourceDatabase;
     dataObject.TargetDatabase             = base.MdbId;
     dataObject.TargetUserId                 = this.TargetMailboxUser.Id;
     dataObject.ExchangeGuid                 = this.TargetMailboxUser.ExchangeGuid;
     dataObject.TargetExchangeGuid           = this.TargetMailboxUser.ExchangeGuid;
     dataObject.FolderToMailboxMap           = this.folderToMailboxMapping;
     dataObject.AllowLargeItems              = false;
     dataObject.SkipFolderPromotedProperties = true;
     dataObject.SkipFolderViews              = true;
     dataObject.SkipFolderRestrictions       = true;
     dataObject.SkipContentVerification      = true;
 }
Пример #3
0
 protected override void ModifyRequest(TransactionalRequestJob requestJob)
 {
     base.ModifyRequest(requestJob);
     if (base.IsFieldSet("SourceDatabase"))
     {
         PublicFolderDatabase publicFolderDatabase = (PublicFolderDatabase)base.GetDataObject <PublicFolderDatabase>(this.SourceDatabase, base.ConfigSession, null, new LocalizedString?(Strings.ErrorDatabaseNotFound(this.SourceDatabase.ToString())), new LocalizedString?(Strings.ErrorDatabaseNotUnique(this.SourceDatabase.ToString())));
         DatabaseInformation  databaseInformation  = MapiUtils.FindServerForMdb(publicFolderDatabase.Id.ObjectGuid, null, null, FindServerFlags.None);
         if (!this.IsSupportedDatabaseVersion(databaseInformation.ServerVersion))
         {
             base.WriteError(new DatabaseVersionUnsupportedPermanentException(publicFolderDatabase.Identity.ToString(), databaseInformation.ServerFqdn, new ServerVersion(databaseInformation.ServerVersion).ToString()), ErrorCategory.InvalidArgument, null);
         }
         requestJob.SourceDatabase = publicFolderDatabase.Id;
     }
     if (base.IsFieldSet("RemoteMailboxLegacyDN"))
     {
         requestJob.RemoteMailboxLegacyDN = this.RemoteMailboxLegacyDN;
     }
     if (base.IsFieldSet("RemoteMailboxServerLegacyDN"))
     {
         requestJob.RemoteMailboxServerLegacyDN = this.RemoteMailboxServerLegacyDN;
     }
     if (base.IsFieldSet("OutlookAnywhereHostName"))
     {
         requestJob.OutlookAnywhereHostName = this.OutlookAnywhereHostName;
     }
     if (base.IsFieldSet("AuthenticationMethod"))
     {
         requestJob.AuthenticationMethod = new AuthenticationMethod?(this.AuthenticationMethod);
     }
     if (base.IsFieldSet("RemoteCredential"))
     {
         requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, requestJob.AuthenticationMethod);
     }
 }
Пример #4
0
 protected override void SetRequestProperties(TransactionalRequestJob dataObject)
 {
     base.SetRequestProperties(dataObject);
     dataObject.RequestType = MRSRequestType.MailboxImport;
     if (dataObject.WorkloadType == RequestWorkloadType.None)
     {
         if (string.IsNullOrEmpty(this.RemoteHostName))
         {
             dataObject.WorkloadType = RequestWorkloadType.Local;
         }
         else
         {
             dataObject.WorkloadType = RequestWorkloadType.RemotePstIngestion;
         }
     }
     dataObject.ContentCodePage = this.ContentCodePage;
     dataObject.FilePath        = this.FilePath.PathName;
     if (this.user != null)
     {
         dataObject.TargetUserId = this.user.Id;
         dataObject.TargetUser   = this.user;
     }
     if (base.ParameterSetName.Equals("MailboxImportRequest"))
     {
         if (!string.IsNullOrEmpty(this.SourceRootFolder))
         {
             dataObject.SourceRootFolder = this.SourceRootFolder;
         }
         if (!string.IsNullOrEmpty(this.TargetRootFolder))
         {
             dataObject.TargetRootFolder = this.TargetRootFolder;
         }
         if (this.IsArchive)
         {
             dataObject.TargetIsArchive    = true;
             dataObject.TargetExchangeGuid = this.user.ArchiveGuid;
             dataObject.TargetDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.user.ArchiveDatabase);
         }
         else
         {
             dataObject.TargetIsArchive    = false;
             dataObject.TargetExchangeGuid = this.user.ExchangeGuid;
             dataObject.TargetDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.user.Database);
         }
         dataObject.TargetAlias = this.user.Alias;
         if (this.RemoteCredential != null)
         {
             dataObject.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, null);
         }
         if (!string.IsNullOrEmpty(this.RemoteHostName))
         {
             dataObject.RemoteHostName = this.RemoteHostName;
         }
     }
 }
Пример #5
0
 protected override void ModifyRequestInternal(TransactionalRequestJob requestJob, StringBuilder changedValuesTracker)
 {
     if (base.IsFieldSet("RemoteServerName"))
     {
         changedValuesTracker.AppendLine(string.Format("RemoteServerName: {0} -> {1}", requestJob.RemoteHostName, this.RemoteServerName));
         requestJob.RemoteHostName = this.RemoteServerName;
     }
     if (base.IsFieldSet("RemoteServerPort"))
     {
         changedValuesTracker.AppendLine(string.Format("RemoteServerPort: {0} -> {1}", requestJob.RemoteHostPort, this.RemoteServerPort));
         requestJob.RemoteHostPort = this.RemoteServerPort;
     }
     if (base.IsFieldSet("SmtpServerName"))
     {
         changedValuesTracker.AppendLine(string.Format("SmtpServerName: {0} -> {1}", requestJob.SmtpServerName, this.SmtpServerName));
         requestJob.SmtpServerName = this.SmtpServerName;
     }
     if (base.IsFieldSet("SmtpServerPort"))
     {
         changedValuesTracker.AppendLine(string.Format("SmtpServerPort: {0} -> {1}", requestJob.SmtpServerPort, this.SmtpServerPort));
         requestJob.SmtpServerPort = this.SmtpServerPort;
     }
     if (base.IsFieldSet("Authentication"))
     {
         changedValuesTracker.AppendLine(string.Format("Authentication: {0} -> {1}", requestJob.AuthenticationMethod, this.Authentication));
         requestJob.AuthenticationMethod = new AuthenticationMethod?(this.Authentication);
     }
     if (base.IsFieldSet("Security"))
     {
         changedValuesTracker.AppendLine(string.Format("Security: {0} -> {1}", requestJob.SecurityMechanism, this.Security));
         requestJob.SecurityMechanism = this.Security;
     }
     if (base.IsFieldSet("Password"))
     {
         changedValuesTracker.AppendLine("Password: <secure> -> <secure>");
         PSCredential psCred = new PSCredential(requestJob.RemoteCredential.UserName, this.Password);
         requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(psCred, requestJob.AuthenticationMethod);
     }
     if (base.IsFieldSet("IncrementalSyncInterval"))
     {
         changedValuesTracker.AppendLine(string.Format("IncrementalSyncInterval: {0} -> {1}", requestJob.IncrementalSyncInterval, this.IncrementalSyncInterval));
         requestJob.IncrementalSyncInterval = this.IncrementalSyncInterval;
     }
     if (base.IsFieldSet("StartAfter") && !RequestTaskHelper.CompareUtcTimeWithLocalTime(requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.StartAfter), this.StartAfter))
     {
         RequestTaskHelper.SetStartAfter(this.StartAfter, requestJob, changedValuesTracker);
     }
     if (base.IsFieldSet("CompleteAfter") && !RequestTaskHelper.CompareUtcTimeWithLocalTime(requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.CompleteAfter), this.CompleteAfter))
     {
         RequestTaskHelper.SetCompleteAfter(this.CompleteAfter, requestJob, changedValuesTracker);
     }
 }
Пример #6
0
 protected override void ModifyRequestInternal(TransactionalRequestJob requestJob, StringBuilder changedValuesTracker)
 {
     if (base.IsFieldSet("RemoteCredential"))
     {
         changedValuesTracker.AppendLine("RemoteCredential: <secure> -> <secure>");
         requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, null);
     }
     if (base.IsFieldSet("RemoteHostName"))
     {
         changedValuesTracker.AppendLine(string.Format("RemoteHostName: {0} -> {1}", requestJob.RemoteHostName, this.RemoteHostName));
         requestJob.RemoteHostName = this.RemoteHostName;
     }
     base.ModifyRequestInternal(requestJob, changedValuesTracker);
 }
Пример #7
0
 protected override void SetRequestProperties(TransactionalRequestJob dataObject)
 {
     base.SetRequestProperties(dataObject);
     dataObject.RequestType = MRSRequestType.MailboxRestore;
     if (dataObject.WorkloadType == RequestWorkloadType.None)
     {
         dataObject.WorkloadType = RequestWorkloadType.Local;
     }
     if (this.targetUser != null)
     {
         dataObject.TargetUserId = this.targetUser.Id;
         dataObject.TargetUser   = this.targetUser;
     }
     if (!string.IsNullOrEmpty(this.SourceRootFolder))
     {
         dataObject.SourceRootFolder = this.SourceRootFolder;
     }
     dataObject.SourceIsArchive     = false;
     dataObject.SourceExchangeGuid  = this.sourceMailboxGuid;
     dataObject.SourceDatabase      = this.sourceDatabase;
     dataObject.MailboxRestoreFlags = new MailboxRestoreType?(this.restoreFlags);
     if (!string.IsNullOrEmpty(this.TargetRootFolder))
     {
         dataObject.TargetRootFolder = this.TargetRootFolder;
     }
     if (this.TargetIsArchive)
     {
         dataObject.TargetIsArchive    = true;
         dataObject.TargetExchangeGuid = this.targetUser.ArchiveGuid;
         dataObject.TargetDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.targetUser.ArchiveDatabase);
     }
     else
     {
         dataObject.TargetIsArchive    = false;
         dataObject.TargetExchangeGuid = this.targetUser.ExchangeGuid;
         dataObject.TargetDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.targetUser.Database);
     }
     dataObject.TargetAlias         = this.targetUser.Alias;
     dataObject.AllowedToFinishMove = true;
     if (this.IsPublicFolderMailboxRestore)
     {
         dataObject.SkipFolderRules = true;
     }
     if (base.ParameterSetName.Equals("RemoteMailboxRestore"))
     {
         dataObject.RemoteDatabaseGuid = new Guid?(this.RemoteDatabaseGuid);
         dataObject.RemoteHostName     = this.RemoteHostName;
         dataObject.RemoteCredential   = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, new AuthenticationMethod?(AuthenticationMethod.WindowsIntegrated));
     }
 }
Пример #8
0
 protected override void ModifyRequestInternal(TransactionalRequestJob requestJob, StringBuilder changedValuesTracker)
 {
     if (base.IsFieldSet("RemoteCredential"))
     {
         string arg  = (requestJob.RemoteCredential == null) ? null : requestJob.RemoteCredential.UserName;
         string arg2 = (this.RemoteCredential == null) ? null : this.RemoteCredential.UserName;
         changedValuesTracker.AppendLine(string.Format("UserName of RemoteCredential: {0} -> {1}", arg, arg2));
         requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, null);
     }
     if (base.IsFieldSet("RemoteHostName"))
     {
         changedValuesTracker.AppendLine(string.Format("RemoteHostName: {0} -> {1}", requestJob.RemoteHostName, this.RemoteHostName));
         requestJob.RemoteHostName = this.RemoteHostName;
     }
     base.ModifyRequestInternal(requestJob, changedValuesTracker);
 }
Пример #9
0
 protected override void ModifyRequest(TransactionalRequestJob requestJob)
 {
     base.ModifyRequest(requestJob);
     if (base.IsFieldSet("RemoteMailboxLegacyDN"))
     {
         requestJob.RemoteMailboxLegacyDN = this.RemoteMailboxLegacyDN;
     }
     if (base.IsFieldSet("RemoteMailboxServerLegacyDN"))
     {
         requestJob.RemoteMailboxServerLegacyDN = this.RemoteMailboxServerLegacyDN;
     }
     if (base.IsFieldSet("OutlookAnywhereHostName"))
     {
         requestJob.OutlookAnywhereHostName = this.OutlookAnywhereHostName;
     }
     if (base.IsFieldSet("AuthenticationMethod"))
     {
         requestJob.AuthenticationMethod = new AuthenticationMethod?(this.AuthenticationMethod);
     }
     if (base.IsFieldSet("RemoteCredential"))
     {
         requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, requestJob.AuthenticationMethod);
     }
     if (base.IsFieldSet("PreventCompletion"))
     {
         if (!this.PreventCompletion)
         {
             if (requestJob.Status != RequestStatus.AutoSuspended)
             {
                 base.WriteError(new PreventCompletionCannotSetException(), ExchangeErrorCategory.Client, this.Identity);
             }
             requestJob.Priority = RequestPriority.High;
         }
         else if (!requestJob.PreventCompletion)
         {
             base.WriteError(new InvalidValueForPreventCompletionException(), ExchangeErrorCategory.Client, this.Identity);
         }
         requestJob.PreventCompletion          = this.PreventCompletion;
         requestJob.SuspendWhenReadyToComplete = this.PreventCompletion;
         requestJob.AllowedToFinishMove        = !this.PreventCompletion;
     }
 }
Пример #10
0
 protected override void SetRequestProperties(TransactionalRequestJob dataObject)
 {
     base.SetRequestProperties(dataObject);
     dataObject.RequestType = MRSRequestType.Merge;
     if (this.sourceUser != null)
     {
         dataObject.SourceUserId    = this.sourceUser.Id;
         dataObject.SourceUser      = this.sourceUser;
         dataObject.SourceIsArchive = this.SourceIsArchive;
         if (this.SourceIsArchive)
         {
             dataObject.SourceExchangeGuid = this.sourceUser.ArchiveGuid;
             dataObject.SourceDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.sourceUser.ArchiveDatabase);
         }
         else
         {
             dataObject.SourceExchangeGuid = this.sourceUser.ExchangeGuid;
             dataObject.SourceDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.sourceUser.Database);
         }
         dataObject.SourceAlias = this.sourceUser.Alias;
     }
     if (this.targetUser != null)
     {
         dataObject.TargetUserId    = this.targetUser.Id;
         dataObject.TargetUser      = this.targetUser;
         dataObject.TargetIsArchive = this.TargetIsArchive;
         if (this.TargetIsArchive)
         {
             dataObject.TargetExchangeGuid = this.targetUser.ArchiveGuid;
             dataObject.TargetDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.targetUser.ArchiveDatabase);
         }
         else
         {
             dataObject.TargetExchangeGuid = this.targetUser.ExchangeGuid;
             dataObject.TargetDatabase     = ADObjectIdResolutionHelper.ResolveDN(this.targetUser.Database);
         }
         dataObject.TargetAlias = this.targetUser.Alias;
     }
     if (base.ParameterSetName.Equals("MigrationLocalMerge"))
     {
         if (!string.IsNullOrEmpty(this.SourceRootFolder))
         {
             dataObject.SourceRootFolder = this.SourceRootFolder;
         }
         if (!string.IsNullOrEmpty(this.TargetRootFolder))
         {
             dataObject.TargetRootFolder = this.TargetRootFolder;
         }
     }
     else
     {
         dataObject.IsAdministrativeCredential  = new bool?(this.IsAdministrativeCredential);
         dataObject.AuthenticationMethod        = new AuthenticationMethod?(this.AuthenticationMethod);
         dataObject.RemoteMailboxLegacyDN       = this.RemoteSourceMailboxLegacyDN;
         dataObject.RemoteUserLegacyDN          = this.RemoteSourceUserLegacyDN;
         dataObject.RemoteMailboxServerLegacyDN = this.RemoteSourceMailboxServerLegacyDN;
         dataObject.OutlookAnywhereHostName     = this.OutlookAnywhereHostName;
         dataObject.RemoteCredential            = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, new AuthenticationMethod?(this.AuthenticationMethod));
         dataObject.IncludeFolders               = this.IncludeListForIncrementalMerge;
         dataObject.ExcludeDumpster              = false;
         dataObject.ExcludeFolders               = null;
         dataObject.ContentFilter                = null;
         dataObject.ConflictResolutionOption     = new ConflictResolutionOption?(ConflictResolutionOption.KeepSourceItem);
         dataObject.AssociatedMessagesCopyOption = new FAICopyOption?(FAICopyOption.Copy);
     }
     dataObject.SuspendWhenReadyToComplete = this.SuspendWhenReadyToComplete;
     if (base.IsFieldSet("IncrementalSyncInterval"))
     {
         dataObject.IncrementalSyncInterval = this.IncrementalSyncInterval;
         dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.CompleteAfter, new DateTime?(DateTime.MaxValue));
         dataObject.JobType = MRSJobType.RequestJobE15_AutoResumeMerges;
     }
     if (this.SuspendWhenReadyToComplete || base.IsFieldSet("IncrementalSyncInterval"))
     {
         dataObject.IncludeFolders               = this.IncludeListForIncrementalMerge;
         dataObject.ExcludeDumpster              = false;
         dataObject.ExcludeFolders               = null;
         dataObject.ContentFilter                = null;
         dataObject.ConflictResolutionOption     = new ConflictResolutionOption?(ConflictResolutionOption.KeepSourceItem);
         dataObject.AssociatedMessagesCopyOption = new FAICopyOption?(FAICopyOption.Copy);
         dataObject.AllowedToFinishMove          = false;
     }
     if (base.IsFieldSet("StartAfter"))
     {
         RequestTaskHelper.SetStartAfter(new DateTime?(this.StartAfter), dataObject, null);
     }
 }
Пример #11
0
        protected override void ModifyMoveRequest(TransactionalRequestJob moveRequest)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("Set-MoveRequest changed values:");
            this.mdbGuid = moveRequest.WorkItemQueueMdb.ObjectGuid;
            if (base.LocalADUser != null)
            {
                moveRequest.DomainControllerToUpdate = base.LocalADUser.OriginatingServer;
            }
            if (base.IsFieldSet("SuspendWhenReadyToComplete"))
            {
                stringBuilder.AppendLine(string.Format("SWRTC: {0} -> {1}", moveRequest.SuspendWhenReadyToComplete, this.SuspendWhenReadyToComplete));
                moveRequest.SuspendWhenReadyToComplete = this.SuspendWhenReadyToComplete;
            }
            if (base.IsFieldSet("RemoteCredential"))
            {
                string remoteCredentialUsername = moveRequest.RemoteCredentialUsername;
                moveRequest.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, null);
                stringBuilder.AppendLine(string.Format("RemoteCredential: {0}:<pwd> -> {1}:<pwd>", remoteCredentialUsername, moveRequest.RemoteCredentialUsername));
                if ((moveRequest.Flags & RequestFlags.RemoteLegacy) != RequestFlags.None)
                {
                    if (moveRequest.Direction == RequestDirection.Pull)
                    {
                        moveRequest.SourceCredential = moveRequest.RemoteCredential;
                    }
                    else
                    {
                        moveRequest.TargetCredential = moveRequest.RemoteCredential;
                    }
                }
            }
            if (base.IsFieldSet("RemoteGlobalCatalog"))
            {
                string arg;
                if ((moveRequest.Flags & RequestFlags.RemoteLegacy) != RequestFlags.None)
                {
                    if (moveRequest.Direction == RequestDirection.Pull)
                    {
                        arg = moveRequest.SourceDCName;
                        moveRequest.SourceDCName = this.RemoteGlobalCatalog;
                    }
                    else
                    {
                        arg = moveRequest.TargetDCName;
                        moveRequest.TargetDCName = this.RemoteGlobalCatalog;
                    }
                }
                else
                {
                    arg = moveRequest.RemoteDomainControllerToUpdate;
                    moveRequest.RemoteDomainControllerToUpdate = this.RemoteGlobalCatalog;
                }
                stringBuilder.AppendLine(string.Format("RemoteGC: {0} -> {1}", arg, this.RemoteGlobalCatalog));
            }
            if (base.IsFieldSet("RemoteHostName"))
            {
                stringBuilder.AppendLine(string.Format("RemoteHostName: {0} -> {1}", moveRequest.RemoteHostName, this.RemoteHostName));
                moveRequest.RemoteHostName = this.RemoteHostName;
            }
            if (base.IsFieldSet("BadItemLimit"))
            {
                stringBuilder.AppendLine(string.Format("BadItemLimit: {0} -> {1}", moveRequest.BadItemLimit, this.BadItemLimit));
                moveRequest.BadItemLimit = this.BadItemLimit;
            }
            if (base.IsFieldSet("LargeItemLimit"))
            {
                stringBuilder.AppendLine(string.Format("LargeItemLimit: {0} -> {1}", moveRequest.LargeItemLimit, this.LargeItemLimit));
                moveRequest.LargeItemLimit = this.LargeItemLimit;
            }
            if (base.IsFieldSet("Protect"))
            {
                stringBuilder.AppendLine(string.Format("Protect: {0} -> {1}", moveRequest.Protect, this.Protect));
                moveRequest.Protect = this.Protect;
            }
            if (base.IsFieldSet("IgnoreRuleLimitErrors"))
            {
                stringBuilder.AppendLine(string.Format("IgnoreRuleLimitErrors: {0} -> {1}", moveRequest.IgnoreRuleLimitErrors, this.IgnoreRuleLimitErrors));
                moveRequest.IgnoreRuleLimitErrors = this.IgnoreRuleLimitErrors;
            }
            if (base.IsFieldSet("BatchName"))
            {
                stringBuilder.AppendLine(string.Format("BatchName: {0} -> {1}", moveRequest.BatchName, this.BatchName));
                moveRequest.BatchName = this.BatchName;
            }
            if (base.IsFieldSet("Priority"))
            {
                stringBuilder.AppendLine(string.Format("Priority: {0} -> {1}", moveRequest.Priority, this.Priority));
                moveRequest.Priority = this.Priority;
            }
            if (base.IsFieldSet("CompletedRequestAgeLimit"))
            {
                stringBuilder.AppendLine(string.Format("CompletedRequestAgeLimit: {0} -> {1}", moveRequest.CompletedRequestAgeLimit, this.CompletedRequestAgeLimit));
                moveRequest.CompletedRequestAgeLimit = this.CompletedRequestAgeLimit;
            }
            if (base.IsFieldSet("PreventCompletion"))
            {
                stringBuilder.AppendLine(string.Format("PreventCompletion: {0} -> {1}", moveRequest.PreventCompletion, this.PreventCompletion));
                moveRequest.PreventCompletion = this.PreventCompletion;
            }
            if (base.IsFieldSet("StartAfter") && !RequestTaskHelper.CompareUtcTimeWithLocalTime(moveRequest.TimeTracker.GetTimestamp(RequestJobTimestamp.StartAfter), this.StartAfter))
            {
                RequestTaskHelper.SetStartAfter(this.StartAfter, moveRequest, stringBuilder);
            }
            if (base.IsFieldSet("CompleteAfter") && !RequestTaskHelper.CompareUtcTimeWithLocalTime(moveRequest.TimeTracker.GetTimestamp(RequestJobTimestamp.CompleteAfter), this.CompleteAfter))
            {
                RequestTaskHelper.SetCompleteAfter(this.CompleteAfter, moveRequest, stringBuilder);
            }
            if (base.IsFieldSet("IncrementalSyncInterval"))
            {
                moveRequest.IncrementalSyncInterval = this.IncrementalSyncInterval;
            }
            RequestTaskHelper.ValidateStartAfterCompleteAfterWithSuspendWhenReadyToComplete(moveRequest.TimeTracker.GetTimestamp(RequestJobTimestamp.StartAfter), moveRequest.TimeTracker.GetTimestamp(RequestJobTimestamp.CompleteAfter), moveRequest.SuspendWhenReadyToComplete, new Task.TaskErrorLoggingDelegate(base.WriteError));
            RequestTaskHelper.ValidateStartAfterComesBeforeCompleteAfter(moveRequest.TimeTracker.GetTimestamp(RequestJobTimestamp.StartAfter), moveRequest.TimeTracker.GetTimestamp(RequestJobTimestamp.CompleteAfter), new Task.TaskErrorLoggingDelegate(base.WriteError));
            if (base.IsFieldSet("SkipMoving"))
            {
                RequestJobInternalFlags requestJobInternalFlags = moveRequest.RequestJobInternalFlags;
                RequestTaskHelper.SetSkipMoving(this.SkipMoving, moveRequest, new Task.TaskErrorLoggingDelegate(base.WriteError), true);
                stringBuilder.AppendLine(string.Format("InternalFlags: {0} -> {1}", requestJobInternalFlags, moveRequest.RequestJobInternalFlags));
            }
            if (base.IsFieldSet("InternalFlags"))
            {
                RequestJobInternalFlags requestJobInternalFlags2 = moveRequest.RequestJobInternalFlags;
                RequestTaskHelper.SetInternalFlags(this.InternalFlags, moveRequest, new Task.TaskErrorLoggingDelegate(base.WriteError));
                stringBuilder.AppendLine(string.Format("InternalFlags: {0} -> {1}", requestJobInternalFlags2, moveRequest.RequestJobInternalFlags));
            }
            ReportData      reportData      = new ReportData(moveRequest.ExchangeGuid, moveRequest.ReportVersion);
            ConnectivityRec connectivityRec = new ConnectivityRec(ServerKind.Cmdlet, VersionInformation.MRS);

            reportData.Append(MrsStrings.ReportMoveRequestSet(base.ExecutingUserIdentity), connectivityRec);
            reportData.AppendDebug(stringBuilder.ToString());
            if (this.AcceptLargeDataLoss)
            {
                reportData.Append(MrsStrings.ReportLargeAmountOfDataLossAccepted2(moveRequest.BadItemLimit.ToString(), moveRequest.LargeItemLimit.ToString(), base.ExecutingUserIdentity));
            }
            if (base.IsFieldSet("TargetDatabase") || base.IsFieldSet("ArchiveTargetDatabase"))
            {
                moveRequest.RehomeRequest = true;
                if (base.IsFieldSet("TargetDatabase"))
                {
                    moveRequest.TargetDatabase = this.specifiedTargetMDB.Id;
                }
                if (base.IsFieldSet("ArchiveTargetDatabase"))
                {
                    moveRequest.TargetArchiveDatabase = this.specifiedArchiveTargetMDB.Id;
                }
            }
            reportData.Flush(base.MRProvider.SystemMailbox);
        }
Пример #12
0
        protected override void ModifyRequest(TransactionalRequestJob requestJob)
        {
            this.MdbGuid = requestJob.WorkItemQueueMdb.ObjectGuid;
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("SetRequest changed values:");
            if (requestJob.TargetUser != null)
            {
                requestJob.DomainControllerToUpdate = requestJob.TargetUser.OriginatingServer;
            }
            else if (requestJob.SourceUser != null)
            {
                requestJob.DomainControllerToUpdate = requestJob.SourceUser.OriginatingServer;
            }
            if (base.IsFieldSet("BadItemLimit"))
            {
                stringBuilder.AppendLine(string.Format("BadItemLimit: {0} -> {1}", requestJob.BadItemLimit, this.BadItemLimit));
                requestJob.BadItemLimit = this.BadItemLimit;
            }
            if (base.IsFieldSet("LargeItemLimit"))
            {
                stringBuilder.AppendLine(string.Format("LargeItemLimit: {0} -> {1}", requestJob.LargeItemLimit, this.LargeItemLimit));
                requestJob.LargeItemLimit = this.LargeItemLimit;
            }
            if (base.IsFieldSet("BatchName"))
            {
                stringBuilder.AppendLine(string.Format("BatchName: {0} -> {1}", requestJob.BatchName, this.BatchName));
                requestJob.BatchName = (this.BatchName ?? string.Empty);
            }
            if (base.IsFieldSet("Priority"))
            {
                stringBuilder.AppendLine(string.Format("Priority: {0} -> {1}", requestJob.Priority, this.Priority));
                requestJob.Priority = this.Priority;
            }
            if (base.IsFieldSet("CompletedRequestAgeLimit"))
            {
                stringBuilder.AppendLine(string.Format("CompletedRequestAgeLimit: {0} -> {1}", requestJob.CompletedRequestAgeLimit, this.CompletedRequestAgeLimit));
                requestJob.CompletedRequestAgeLimit = this.CompletedRequestAgeLimit;
            }
            if (this.RehomeRequest)
            {
                stringBuilder.AppendLine(string.Format("RehomeRequest: {0} -> {1}", requestJob.RehomeRequest, this.RehomeRequest));
                requestJob.RehomeRequest = this.RehomeRequest;
            }
            if (base.IsFieldSet("SkipMerging"))
            {
                RequestJobInternalFlags requestJobInternalFlags = requestJob.RequestJobInternalFlags;
                RequestTaskHelper.SetSkipMerging(this.SkipMerging, requestJob, new Task.TaskErrorLoggingDelegate(base.WriteError));
                stringBuilder.AppendLine(string.Format("InternalFlags: {0} -> {1}", requestJobInternalFlags, requestJob.RequestJobInternalFlags));
            }
            if (base.IsFieldSet("InternalFlags"))
            {
                RequestJobInternalFlags requestJobInternalFlags2 = requestJob.RequestJobInternalFlags;
                RequestTaskHelper.SetInternalFlags(this.InternalFlags, requestJob, new Task.TaskErrorLoggingDelegate(base.WriteError));
                stringBuilder.AppendLine(string.Format("InternalFlags: {0} -> {1}", requestJobInternalFlags2, requestJob.RequestJobInternalFlags));
            }
            if (base.IsFieldSet("RemoteHostName"))
            {
                stringBuilder.AppendLine(string.Format("RemoteHostName: {0} -> {1}", requestJob.RemoteHostName, this.RemoteHostName));
                requestJob.RemoteHostName = this.RemoteHostName;
            }
            if (base.IsFieldSet("RemoteCredential"))
            {
                stringBuilder.AppendLine(string.Format("RemoteCredential: * -> *", new object[0]));
                requestJob.RemoteCredential = RequestTaskHelper.GetNetworkCredential(this.RemoteCredential, new AuthenticationMethod?(AuthenticationMethod.WindowsIntegrated));
            }
            this.ModifyRequestInternal(requestJob, stringBuilder);
            ReportData      reportData      = new ReportData(requestJob.RequestGuid, requestJob.ReportVersion);
            ConnectivityRec connectivityRec = new ConnectivityRec(ServerKind.Cmdlet, VersionInformation.MRS);

            reportData.Append(MrsStrings.ReportRequestSet(base.ExecutingUserIdentity), connectivityRec);
            reportData.AppendDebug(stringBuilder.ToString());
            if (this.AcceptLargeDataLoss)
            {
                reportData.Append(MrsStrings.ReportLargeAmountOfDataLossAccepted2(requestJob.BadItemLimit.ToString(), requestJob.LargeItemLimit.ToString(), base.ExecutingUserIdentity));
            }
            reportData.Flush(base.RJProvider.SystemMailbox);
        }