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 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); } }
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); } }
protected override void SetRequestProperties(TransactionalRequestJob dataObject) { base.SetRequestProperties(dataObject); if (this.Eas) { dataObject.JobType = MRSJobType.RequestJobE15_SubType; } dataObject.RequestType = MRSRequestType.Sync; if (dataObject.WorkloadType == RequestWorkloadType.None) { dataObject.WorkloadType = RequestWorkloadType.SyncAggregation; } dataObject.RemoteHostName = this.RemoteServerName; dataObject.RemoteHostPort = this.RemoteServerPort; dataObject.SmtpServerName = this.SmtpServerName; dataObject.SmtpServerPort = this.SmtpServerPort; dataObject.EmailAddress = this.RemoteEmailAddress; dataObject.AuthenticationMethod = new AuthenticationMethod?(this.Authentication); dataObject.SecurityMechanism = this.Security; dataObject.SyncProtocol = this.syncProtocol; dataObject.IncrementalSyncInterval = this.IncrementalSyncInterval; if (this.Olc) { dataObject.AllowLargeItems = true; dataObject.UserPuid = this.Puid; dataObject.OlcDGroup = this.DGroup; } if (base.IsFieldSet("StartAfter")) { RequestTaskHelper.SetStartAfter(new DateTime?(this.StartAfter), dataObject, null); } else { RequestTaskHelper.SetStartAfter(new DateTime?(DateTime.MinValue), dataObject, null); } if (base.IsFieldSet("CompleteAfter")) { RequestTaskHelper.SetCompleteAfter(new DateTime?(this.CompleteAfter), dataObject, null); } else { dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.CompleteAfter, new DateTime?(DateTime.MaxValue)); } if (string.IsNullOrEmpty(this.UserName)) { this.UserName = this.RemoteEmailAddress.ToString(); } if (!string.IsNullOrEmpty(this.TargetRootFolder)) { dataObject.TargetRootFolder = this.TargetRootFolder; } dataObject.RemoteCredential = new NetworkCredential(this.UserName, this.Password); if (this.AggregatedMailboxGuid != Guid.Empty) { dataObject.Flags |= RequestFlags.TargetIsAggregatedMailbox; } if (this.targetUser != null) { dataObject.TargetUserId = this.targetUser.Id; dataObject.TargetUser = this.targetUser; dataObject.TargetExchangeGuid = ((this.AggregatedMailboxGuid != Guid.Empty) ? this.AggregatedMailboxGuid : this.targetUser.ExchangeGuid); dataObject.TargetDatabase = ADObjectIdResolutionHelper.ResolveDN(this.targetUser.Database); dataObject.TargetAlias = this.targetUser.Alias; } }
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); }