protected override void ValidateRequest(TransactionalRequestJob requestJob) { base.ValidateRequest(requestJob); base.ValidateRequestIsActive(requestJob); base.ValidateRequestProtectionStatus(requestJob); base.ValidateRequestIsRunnable(requestJob); base.ValidateRequestIsNotCancelled(requestJob); if (!requestJob.Suspend) { base.WriteVerbose(Strings.RequestNotSuspended(requestJob.Name)); } if (RequestJobStateNode.RequestStateIs(requestJob.StatusDetail, RequestState.Completion) && !RequestJobStateNode.RequestStateIs(requestJob.StatusDetail, RequestState.IncrementalSync)) { base.WriteError(new SuspendWhenReadyToCompleteCannotBeUsedDuringCompletionException(requestJob.Name), ErrorCategory.InvalidArgument, requestJob.Identity); } using (MailboxReplicationServiceClient mailboxReplicationServiceClient = requestJob.CreateMRSClient(base.ConfigSession, requestJob.WorkItemQueueMdb.ObjectGuid, base.UnreachableMrsServers)) { LocalizedString message = requestJob.Message; requestJob.Message = LocalizedString.Empty; try { List <ReportEntry> entries = null; using (mailboxReplicationServiceClient.ValidateAndPopulateRequestJob(requestJob, out entries)) { RequestTaskHelper.WriteReportEntries(requestJob.Name, entries, requestJob.Identity, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskErrorLoggingDelegate(base.WriteError)); } } finally { requestJob.Message = message; } } }
protected override void InternalValidate() { TaskLogger.LogEnter(); try { this.RJProvider.AttachToMDB(this.MdbId.ObjectGuid); this.InitializeMRSClient(); TransactionalRequestJob dataObject = this.DataObject; dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.Creation, new DateTime?(DateTime.UtcNow)); dataObject.TimeTracker.CurrentState = RequestState.Queued; dataObject.JobType = MRSJobType.RequestJobE15_TenantHint; dataObject.RequestGuid = Guid.NewGuid(); dataObject.AllowedToFinishMove = true; dataObject.BatchName = this.BatchName; dataObject.BadItemLimit = this.BadItemLimit; dataObject.LargeItemLimit = this.LargeItemLimit; dataObject.Status = RequestStatus.Queued; dataObject.RequestJobState = JobProcessingState.Ready; dataObject.Identity = new RequestJobObjectId(dataObject.RequestGuid, this.MdbId.ObjectGuid, null); dataObject.RequestQueue = ADObjectIdResolutionHelper.ResolveDN(this.MdbId); dataObject.RequestCreator = this.ExecutingUserIdentity; this.SetRequestProperties(dataObject); this.CreateIndexEntries(dataObject); dataObject.Suspend = this.Suspend; if (!string.IsNullOrEmpty(this.SuspendComment)) { dataObject.Message = MrsStrings.MoveRequestMessageInformational(new LocalizedString(this.SuspendComment)); } base.InternalValidate(); if (this.MRSClient != null) { List <ReportEntry> entries = null; using (TransactionalRequestJob transactionalRequestJob = this.MRSClient.ValidateAndPopulateRequestJob(this.DataObject, out entries)) { this.CopyDataToDataObject(transactionalRequestJob); RequestTaskHelper.WriteReportEntries(dataObject.Name, entries, dataObject.Identity, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskErrorLoggingDelegate(base.WriteError)); } } } finally { TaskLogger.LogExit(); } }