internal void ValidateMoveRequestProtectionStatus(RequestJobBase moveRequest) { if (moveRequest.Protect && SetMoveRequestBase.CheckUserOrgIdIsTenant(base.ExecutingUserOrganizationId)) { base.WriteError(new RecipientTaskException(Strings.ErrorMoveRequestIsProtected(this.DataObject.ToString())), ErrorCategory.InvalidArgument, this.Identity); } }
public PropValue[] GetValuesFromRequestJob(RequestJobBase requestJob) { PropValue[] result = new PropValue[26]; this.MakePropValue(result, MapiPropertiesIndex.RequestStatus, requestJob.Status); this.MakePropValue(result, MapiPropertiesIndex.JobProcessingState, requestJob.RequestJobState); this.MakePropValue(result, MapiPropertiesIndex.MRSServerName, requestJob.MRSServerName); this.MakePropValue(result, MapiPropertiesIndex.AllowedToFinishMove, requestJob.AllowedToFinishMove); this.MakePropValue(result, MapiPropertiesIndex.CancelRequest, requestJob.CancelRequest); this.MakePropValue(result, MapiPropertiesIndex.ExchangeGuid, requestJob.ExchangeGuid); this.MakePropValue(result, MapiPropertiesIndex.ArchiveGuid, requestJob.ArchiveGuid ?? Guid.Empty); this.MakePropValue(result, MapiPropertiesIndex.LastUpdateTimestamp, requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.LastUpdate) ?? DateTime.MinValue); this.MakePropValue(result, MapiPropertiesIndex.CreationTimestamp, requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.Creation) ?? DateTime.MinValue); this.MakePropValue(result, MapiPropertiesIndex.JobType, requestJob.JobType); this.MakePropValue(result, MapiPropertiesIndex.Flags, requestJob.Flags); this.MakePropValue(result, MapiPropertiesIndex.SourceDatabase, (requestJob.SourceDatabase != null) ? requestJob.SourceDatabase.ObjectGuid : Guid.Empty); this.MakePropValue(result, MapiPropertiesIndex.TargetDatabase, (requestJob.TargetDatabase != null) ? requestJob.TargetDatabase.ObjectGuid : Guid.Empty); this.MakePropValue(result, MapiPropertiesIndex.DoNotPickUntilTimestamp, requestJob.NextPickupTime ?? DateTime.MinValue); this.MakePropValue(result, MapiPropertiesIndex.RequestType, requestJob.RequestType); this.MakePropValue(result, MapiPropertiesIndex.SourceArchiveDatabase, (requestJob.SourceArchiveDatabase != null) ? requestJob.SourceArchiveDatabase.ObjectGuid : Guid.Empty); this.MakePropValue(result, MapiPropertiesIndex.TargetArchiveDatabase, (requestJob.TargetArchiveDatabase != null) ? requestJob.TargetArchiveDatabase.ObjectGuid : Guid.Empty); this.MakePropValue(result, MapiPropertiesIndex.Priority, requestJob.Priority); this.MakePropValue(result, MapiPropertiesIndex.SourceExchangeGuid, requestJob.SourceExchangeGuid); this.MakePropValue(result, MapiPropertiesIndex.TargetExchangeGuid, requestJob.TargetExchangeGuid); this.MakePropValue(result, MapiPropertiesIndex.RehomeRequest, requestJob.RehomeRequest); this.MakePropValue(result, MapiPropertiesIndex.InternalFlags, requestJob.RequestJobInternalFlags); this.MakePropValue(result, MapiPropertiesIndex.PartitionHint, (requestJob.PartitionHint != null) ? requestJob.PartitionHint.GetPersistablePartitionHint() : null); this.MakePropValue(result, MapiPropertiesIndex.PoisonCount, requestJob.PoisonCount); this.MakePropValue(result, MapiPropertiesIndex.FailureType, requestJob.FailureType); this.MakePropValue(result, MapiPropertiesIndex.WorkloadType, requestJob.WorkloadType); return(result); }
internal void ValidateRequestProtectionStatus(RequestJobBase requestJob) { if (requestJob.Protect && RequestTaskHelper.CheckUserOrgIdIsTenant(base.ExecutingUserOrganizationId)) { base.WriteError(new RequestIsProtectedPermanentException(requestJob.Name), ErrorCategory.InvalidArgument, this.Identity); } }
internal void ValidateRequestIsNotCancelled(RequestJobBase requestJob) { if (requestJob.CancelRequest) { base.WriteError(new CannotSetCancelledRequestPermanentException(requestJob.Name), ErrorCategory.InvalidArgument, this.Identity); } }
internal static void ValidateRequestJob(RequestJobBase requestJob) { if (requestJob.IsFake || requestJob.WorkItemQueueMdb == null) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMissing); requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestNotDeserialized; return; } if (requestJob.OriginatingMDBGuid != Guid.Empty && requestJob.OriginatingMDBGuid != requestJob.WorkItemQueueMdb.ObjectGuid) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned); requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestInWrongMDB(requestJob.OriginatingMDBGuid, requestJob.WorkItemQueueMdb.ObjectGuid); return; } if (requestJob.CancelRequest) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; return; } if (requestJob.Status == RequestStatus.Completed || requestJob.Status == RequestStatus.CompletedWithWarning) { SyncRequestStatistics.LoadAdditionalPropertiesFromUser(requestJob); requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; return; } SyncRequestStatistics.LoadAdditionalPropertiesFromUser(requestJob); if (!requestJob.ValidateRequestIndexEntries()) { return; } requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; }
internal static void ValidateRequestJob(RequestJobBase requestJob) { if (requestJob.IsFake || requestJob.WorkItemQueueMdb == null) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMissing); requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestNotDeserialized; return; } if (requestJob.OriginatingMDBGuid != Guid.Empty && requestJob.OriginatingMDBGuid != requestJob.WorkItemQueueMdb.ObjectGuid) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned); requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestInWrongMDB(requestJob.OriginatingMDBGuid, requestJob.WorkItemQueueMdb.ObjectGuid); return; } if (requestJob.CancelRequest) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; return; } if (!requestJob.SourceIsLocal && !requestJob.ValidateOutlookAnywhereParams()) { return; } if (!requestJob.TargetIsLocal && !requestJob.ValidateOutlookAnywhereParams()) { return; } if (!requestJob.ValidateRequestIndexEntries()) { return; } requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; }
internal static void ValidateRequestJob(RequestJobBase requestJob) { if (requestJob.IsFake || requestJob.WorkItemQueueMdb == null) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMissing); requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestNotDeserialized; return; } if (requestJob.OriginatingMDBGuid != Guid.Empty && requestJob.OriginatingMDBGuid != requestJob.WorkItemQueueMdb.ObjectGuid) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Orphaned); requestJob.ValidationMessage = MrsStrings.ValidationMoveRequestInWrongMDB(requestJob.OriginatingMDBGuid, requestJob.WorkItemQueueMdb.ObjectGuid); return; } if (requestJob.OriginatingMDBGuid == Guid.Empty) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; return; } MailboxRelocationRequestStatistics.LoadAdditionalPropertiesFromUser(requestJob); if (MailboxRelocationRequestStatistics.IsTerminalState(requestJob)) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; return; } if (!requestJob.ValidateUser(requestJob.User, requestJob.UserId)) { return; } Guid guid; Guid guid2; RequestIndexEntryProvider.GetMoveGuids(requestJob.User, out guid, out guid2); if (guid != requestJob.ExchangeGuid) { MrsTracer.Common.Error("Orphaned RequestJob: mailbox guid does not match between AD {0} and workitem queue {1}.", new object[] { requestJob.User.ExchangeGuid, requestJob.ExchangeGuid }); requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch); requestJob.ValidationMessage = MrsStrings.ValidationMailboxGuidsDontMatch(guid, requestJob.ExchangeGuid); return; } if (!MailboxRelocationRequestStatistics.ValidateNoOtherRequests(requestJob)) { return; } if (CommonUtils.IsImplicitSplit(requestJob.Flags, requestJob.User)) { requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch); requestJob.ValidationMessage = MrsStrings.ErrorImplicitSplit; return; } requestJob.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.Valid); requestJob.ValidationMessage = LocalizedString.Empty; }
public void UpdateData(RequestJobBase requestJob) { base.Principal = AggregatedAccountListConfigurationWrapper.GetExchangePrincipalFromADUser(requestJob.TargetUser); this.TargetUser = requestJob.TargetUser; this.TargetExchangeGuid = requestJob.TargetExchangeGuid; base.SmtpAddress = requestJob.EmailAddress; base.RequestGuid = requestJob.RequestGuid; base.AggregatedMailboxGuid = (requestJob.Flags.HasFlag(RequestFlags.TargetIsAggregatedMailbox) ? requestJob.TargetExchangeGuid : Guid.Empty); }
private static void LoadAdditionalPropertiesFromUser(RequestJobBase requestJob) { if (requestJob.User != null) { requestJob.Alias = requestJob.User.Alias; requestJob.DisplayName = requestJob.User.DisplayName; requestJob.RecipientTypeDetails = requestJob.User.RecipientTypeDetails; requestJob.UserId = requestJob.User.Id; } }
private static void LoadAdditionalPropertiesFromUser(RequestJobBase requestJob) { if (requestJob.TargetUser != null) { requestJob.TargetAlias = requestJob.TargetUser.Alias; requestJob.TargetExchangeGuid = (requestJob.TargetIsArchive ? requestJob.TargetUser.ArchiveGuid : requestJob.TargetUser.ExchangeGuid); requestJob.TargetDatabase = ADObjectIdResolutionHelper.ResolveDN(requestJob.TargetIsArchive ? requestJob.TargetUser.ArchiveDatabase : requestJob.TargetUser.Database); requestJob.TargetUserId = requestJob.TargetUser.Id; } }
internal void ValidateMoveRequestIsSettable(RequestJobBase moveRequest) { if (moveRequest.Status == RequestStatus.Completed || moveRequest.Status == RequestStatus.CompletedWithWarning) { base.WriteError(new CannotModifyCompletedRequestPermanentException(this.LocalADUser.ToString()), ErrorCategory.InvalidArgument, this.Identity); } if (moveRequest.CancelRequest) { base.WriteError(new RecipientTaskException(Strings.ErrorMoveAlreadyCanceled(this.LocalADUser.ToString())), ErrorCategory.InvalidArgument, this.Identity); } }
internal void ValidateMoveRequestIsActive(RequestJobBase moveRequest) { if (moveRequest == null || moveRequest.Status == RequestStatus.None) { base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorUserNotBeingMoved(this.DataObject.ToString())), ErrorCategory.InvalidArgument, this.Identity); } if (moveRequest.ValidationResult != RequestJobBase.ValidationResultEnum.Valid) { base.WriteError(new RecipientTaskException(Strings.ErrorInvalidMoveRequest(this.LocalADUser.ToString(), moveRequest.ValidationMessage.ToString())), ErrorCategory.InvalidArgument, this.Identity); } }
public override T CreateRequestIndexEntryFromRequestJob(RequestJobBase requestJob, RequestIndexId requestIndexId) { ArgumentValidator.ThrowIfNull("requestJob", requestJob); ArgumentValidator.ThrowIfNull("requestJob.TargetUser", requestJob.TargetUser); ArgumentValidator.ThrowIfNull("requestJob.TargetExchangeGuid", requestJob.TargetExchangeGuid); ArgumentValidator.ThrowIfInvalidValue <RequestJobBase>("requestJob.RequestType", requestJob, (RequestJobBase x) => x.RequestType == MRSRequestType.Sync); T result = Activator.CreateInstance <T>(); result.UpdateData(requestJob); return(result); }
internal void ValidateRequestIsRunnable(RequestJobBase requestJob) { if (requestJob.Status == RequestStatus.Completed || requestJob.Status == RequestStatus.CompletedWithWarning) { base.WriteError(new CannotModifyCompletedRequestPermanentException(requestJob.Name), ErrorCategory.InvalidArgument, this.Identity); } if (requestJob.RehomeRequest) { base.WriteError(new CannotModifyRehomingRequestTransientException(requestJob.Name), ErrorCategory.InvalidArgument, this.Identity); } }
private static void LoadAdditionalPropertiesFromUser(RequestJobBase requestJob) { if (requestJob.SourceUser != null) { requestJob.SourceAlias = requestJob.SourceUser.Alias; requestJob.SourceExchangeGuid = (requestJob.SourceIsArchive ? requestJob.SourceUser.ArchiveGuid : requestJob.SourceUser.ExchangeGuid); requestJob.SourceDatabase = ADObjectIdResolutionHelper.ResolveDN(requestJob.SourceIsArchive ? requestJob.SourceUser.ArchiveDatabase : requestJob.SourceUser.Database); requestJob.RecipientTypeDetails = requestJob.SourceUser.RecipientTypeDetails; requestJob.SourceUserId = requestJob.SourceUser.Id; } }
internal void ValidateRequestIsActive(RequestJobBase requestJob) { if (requestJob == null || requestJob.Status == RequestStatus.None) { TIdentity identity = this.Identity; base.WriteError(new ManagementObjectNotFoundException(Strings.ErrorCouldNotFindRequest(identity.ToString())), ErrorCategory.InvalidArgument, this.Identity); } if (requestJob.ValidationResult != RequestJobBase.ValidationResultEnum.Valid) { TIdentity identity2 = this.Identity; base.WriteError(new InvalidRequestPermanentException(identity2.ToString(), requestJob.ValidationMessage), ErrorCategory.InvalidArgument, this.Identity); } }
private RequestJobXML CreateDummyFromSearchKey(byte[] key) { if (key == null) { throw new ArgumentNullException("key"); } RequestJobXML requestJobXML = RequestJobBase.CreateDummyObject <RequestJobXML>(); requestJobXML.Identity = new RequestJobObjectId(new Guid(key), this.MdbGuid, null); requestJobXML.RequestGuid = new Guid(key); requestJobXML.ExchangeGuid = new Guid(key); return(requestJobXML); }
internal MoveHistoryEntryInternal(RequestJobBase requestJob, ReportData report) { this.hasReadCompressedEntries = false; this.Status = (int)requestJob.Status; this.Flags = (int)requestJob.Flags; this.SourceDatabase = ADObjectIdXML.Serialize(requestJob.SourceDatabase); this.SourceVersion = requestJob.SourceVersion; this.SourceServer = requestJob.SourceServer; this.SourceArchiveDatabase = ADObjectIdXML.Serialize(requestJob.SourceArchiveDatabase); this.SourceArchiveVersion = requestJob.SourceArchiveVersion; this.SourceArchiveServer = requestJob.SourceArchiveServer; this.DestinationDatabase = ADObjectIdXML.Serialize(requestJob.TargetDatabase); this.DestinationVersion = requestJob.TargetVersion; this.DestinationServer = requestJob.TargetServer; this.DestinationArchiveDatabase = ADObjectIdXML.Serialize(requestJob.TargetArchiveDatabase); this.DestinationArchiveVersion = requestJob.TargetArchiveVersion; this.DestinationArchiveServer = requestJob.TargetArchiveServer; this.RemoteHostName = requestJob.RemoteHostName; if (requestJob.RemoteCredential == null) { this.RemoteCredentialUserName = null; } else if (requestJob.RemoteCredential.Domain == null) { this.RemoteCredentialUserName = requestJob.RemoteCredential.UserName; } else { this.RemoteCredentialUserName = requestJob.RemoteCredential.Domain + "\\" + requestJob.RemoteCredential.UserName; } this.RemoteDatabaseName = requestJob.RemoteDatabaseName; this.RemoteArchiveDatabaseName = requestJob.RemoteArchiveDatabaseName; this.BadItemLimit = requestJob.BadItemLimit; this.BadItemsEncountered = requestJob.BadItemsEncountered; this.LargeItemLimit = requestJob.LargeItemLimit; this.LargeItemsEncountered = requestJob.LargeItemsEncountered; this.MissingItemsEncountered = requestJob.MissingItemsEncountered; this.TimeTracker = requestJob.TimeTracker; this.MRSServerName = requestJob.MRSServerName; this.TotalMailboxSize = requestJob.TotalMailboxSize; this.TotalMailboxItemCount = requestJob.TotalMailboxItemCount; this.TotalArchiveSize = requestJob.TotalArchiveSize; this.TotalArchiveItemCount = requestJob.TotalArchiveItemCount; this.TargetDeliveryDomain = requestJob.TargetDeliveryDomain; this.ArchiveDomain = requestJob.ArchiveDomain; this.FailureCode = requestJob.FailureCode; this.FailureType = requestJob.FailureType; this.MessageData = CommonUtils.ByteSerialize(requestJob.Message); this.report = report; }
private static void LoadAdditionalPropertiesFromUser(RequestJobBase requestJob) { if (requestJob.TargetUser != null) { requestJob.TargetAlias = requestJob.TargetUser.Alias; if (!requestJob.Flags.HasFlag(RequestFlags.TargetIsAggregatedMailbox)) { requestJob.TargetExchangeGuid = requestJob.TargetUser.ExchangeGuid; } requestJob.TargetDatabase = ADObjectIdResolutionHelper.ResolveDN(requestJob.TargetIsArchive ? requestJob.TargetUser.ArchiveDatabase : requestJob.TargetUser.Database); requestJob.RecipientTypeDetails = requestJob.TargetUser.RecipientTypeDetails; requestJob.TargetUserId = requestJob.TargetUser.Id; } }
public void UpdateData(RequestJobBase requestJob) { base.Principal = AggregatedAccountConfigurationWrapper.GetExchangePrincipal(requestJob.TargetUser, requestJob.TargetExchangeGuid, requestJob.Flags.HasFlag(RequestFlags.TargetIsAggregatedMailbox)); this.TargetUser = requestJob.TargetUser; this.TargetExchangeGuid = requestJob.TargetExchangeGuid; base.EmailAddress = new SmtpAddress?(requestJob.EmailAddress); base.SyncFailureCode = requestJob.FailureCode; base.SyncFailureTimestamp = (ExDateTime?)requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.Failure); base.SyncFailureType = requestJob.FailureType; base.SyncLastUpdateTimestamp = (ExDateTime?)requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.LastUpdate); base.SyncQueuedTimestamp = (ExDateTime?)requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.Creation); base.SyncRequestGuid = new Guid?(requestJob.RequestGuid); base.SyncStartTimestamp = (ExDateTime?)requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.Start); base.SyncStatus = new RequestStatus?(requestJob.Status); base.SyncSuspendedTimestamp = (ExDateTime?)requestJob.TimeTracker.GetTimestamp(RequestJobTimestamp.Suspended); }
private static bool ValidateNoOtherRequests(RequestJobBase requestJobBase) { IEnumerable <RequestIndexId> source = from i in requestJobBase.IndexEntries select i.RequestIndexId into i where i.Location == RequestIndexLocation.Mailbox select i; if (source.Any((RequestIndexId i) => i.Mailbox.Equals(requestJobBase.UserId))) { string otherRequests = MailboxRequestIndexEntryHandler.GetOtherRequests(requestJobBase.User, new Guid?(requestJobBase.RequestGuid)); if (!string.IsNullOrEmpty(otherRequests)) { requestJobBase.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch); requestJobBase.ValidationMessage = MrsStrings.ValidationObjectInvolvedInMultipleRelocations(MrsStrings.Mailbox, otherRequests); return(false); } } if (requestJobBase.User.UnifiedMailbox != null) { ADRecipient tempRecipient; if (ADRecipient.TryGetFromCrossTenantObjectId(requestJobBase.User.UnifiedMailbox, out tempRecipient).Succeeded&& source.Any((RequestIndexId i) => i.Mailbox.Equals(tempRecipient.Id))) { string otherRequests = MailboxRequestIndexEntryHandler.GetOtherRequests((ADUser)tempRecipient, new Guid?(requestJobBase.RequestGuid)); if (!string.IsNullOrEmpty(otherRequests)) { requestJobBase.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch); requestJobBase.ValidationMessage = MrsStrings.ValidationObjectInvolvedInMultipleRelocations(MrsStrings.SourceContainer, otherRequests); return(false); } } } if (requestJobBase.TargetUnifiedMailboxId != null) { ADRecipient tempRecipient; if (ADRecipient.TryGetFromCrossTenantObjectId(requestJobBase.TargetUnifiedMailboxId, out tempRecipient).Succeeded&& source.Any((RequestIndexId i) => i.Mailbox.Equals(tempRecipient.Id))) { string otherRequests = MailboxRequestIndexEntryHandler.GetOtherRequests((ADUser)tempRecipient, new Guid?(requestJobBase.RequestGuid)); if (!string.IsNullOrEmpty(otherRequests)) { requestJobBase.ValidationResult = new RequestJobBase.ValidationResultEnum?(RequestJobBase.ValidationResultEnum.DataMismatch); requestJobBase.ValidationMessage = MrsStrings.ValidationObjectInvolvedInMultipleRelocations(MrsStrings.TargetContainer, otherRequests); return(false); } } } return(true); }
public static void SetStartAfter(DateTime?startAfter, RequestJobBase dataObject, StringBuilder changedValuesTracker = null) { DateTime?value = null; if (startAfter != null) { value = new DateTime?(startAfter.Value.ToUniversalTime()); } string arg = (value == null) ? "(null)" : value.ToString(); RequestTaskHelper.TrackerAppendLine(changedValuesTracker, string.Format("TimeTracker.StartAfter: {0} -> {1}", dataObject.TimeTracker.GetTimestamp(RequestJobTimestamp.StartAfter), arg)); dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.StartAfter, value); DateTime?timestamp = dataObject.TimeTracker.GetTimestamp(RequestJobTimestamp.DoNotPickUntil); RequestTaskHelper.TrackerAppendLine(changedValuesTracker, string.Format("TimeTracker.DoNotPickUntilTimeStamp: {0} -> {1}", timestamp, arg)); dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.DoNotPickUntil, value); }
public override MRSRequestWrapper CreateRequestIndexEntryFromRequestJob(RequestJobBase requestJob, IConfigurationSession session) { return(new MRSRequestWrapper(session, requestJob.RequestType, ADHandler.GenerateCommonName(requestJob.Name, requestJob.SourceAlias, requestJob.TargetAlias)) { Name = requestJob.Name, RequestGuid = requestJob.RequestGuid, Status = requestJob.Status, Flags = requestJob.Flags, RemoteHostName = requestJob.RemoteHostName, BatchName = requestJob.BatchName, SourceMDB = requestJob.SourceDatabase, TargetMDB = requestJob.TargetDatabase, StorageMDB = requestJob.WorkItemQueueMdb, FilePath = requestJob.FilePath, TargetUserId = requestJob.TargetUserId, SourceUserId = requestJob.SourceUserId, OrganizationId = requestJob.OrganizationId }); }
protected override void UpdateCachedRequestJob(RequestJobBase request) { base.UpdateCachedRequestJob(request); if ((request.Flags & RequestFlags.RemoteLegacy) != RequestFlags.None) { if (request.Direction == RequestDirection.Pull) { base.ForeachMailboxContext(delegate(MailboxMover mbxCtx) { mbxCtx.SourceMailbox.ConfigADConnection(request.SourceDCName, request.SourceDCName, request.SourceCredential); }); return; } base.ForeachMailboxContext(delegate(MailboxMover mbxCtx) { mbxCtx.DestMailbox.ConfigADConnection(request.TargetDCName, request.TargetDCName, request.TargetCredential); }); } }
public static void CreateAndPopulateRequestIndexEntries(RequestJobBase requestJobBase, RequestIndexId requestIndexId) { if (requestJobBase == null) { throw new ArgumentNullException("requestJobBase"); } if (requestJobBase.IndexEntries == null) { requestJobBase.IndexEntries = new List <IRequestIndexEntry>(); } if (requestJobBase.IndexIds == null) { requestJobBase.IndexIds = new List <RequestIndexId>(); } RequestIndexEntryProvider.Handle(requestIndexId.RequestIndexEntryType, delegate(IRequestIndexEntryHandler handler) { IRequestIndexEntry item = handler.CreateRequestIndexEntryFromRequestJob(requestJobBase, requestIndexId); requestJobBase.IndexIds.Add(requestIndexId); requestJobBase.IndexEntries.Add(item); }); }
private static void SetCalculatedSkipMovingDefaults(RequestJobBase moveRequest) { bool flag = false; bool flag2 = false; if (moveRequest.PrimaryIsMoving) { ServerVersion serverVersion = new ServerVersion(moveRequest.SourceVersion); ServerVersion serverVersion2 = new ServerVersion(moveRequest.TargetVersion); if (serverVersion.Major != serverVersion2.Major) { flag = true; } if (serverVersion2.Major < Server.Exchange2011MajorVersion) { flag2 = true; } } if (moveRequest.ArchiveIsMoving) { ServerVersion serverVersion = new ServerVersion(moveRequest.SourceArchiveVersion); ServerVersion serverVersion2 = new ServerVersion(moveRequest.TargetArchiveVersion); if (serverVersion.Major != serverVersion2.Major) { flag = true; } if (serverVersion2.Major < Server.Exchange2011MajorVersion) { flag2 = true; } } if (flag) { moveRequest.SkipFolderPromotedProperties = true; } if (flag2) { moveRequest.SkipFolderViews = true; } }
public override MRSRequestMailboxEntry CreateRequestIndexEntryFromRequestJob(RequestJobBase requestJob, RequestIndexId requestIndexId) { ArgumentValidator.ThrowIfNull("requestJob", requestJob); return(new MRSRequestMailboxEntry { Type = requestJob.RequestType, Name = requestJob.Name, RequestGuid = requestJob.RequestGuid, Status = requestJob.Status, Flags = requestJob.Flags, RemoteHostName = requestJob.RemoteHostName, BatchName = requestJob.BatchName, SourceMDB = requestJob.SourceDatabase, TargetMDB = requestJob.TargetDatabase, StorageMDB = requestJob.WorkItemQueueMdb, FilePath = requestJob.FilePath, TargetUserId = requestJob.TargetUserId, SourceUserId = requestJob.SourceUserId, OrganizationId = requestJob.OrganizationId, RequestIndexId = requestIndexId }); }
public static void CreateAndPopulateRequestIndexEntries(RequestJobBase requestJobBase, IConfigurationSession session) { if (requestJobBase == null) { throw new ArgumentNullException("requestJobBase"); } if (requestJobBase.IndexEntries == null) { requestJobBase.IndexEntries = new List <IRequestIndexEntry>(); } if (requestJobBase.IndexIds == null) { requestJobBase.IndexIds = new List <RequestIndexId>(); } RequestIndexId indexId = new RequestIndexId(RequestIndexLocation.AD); RequestIndexEntryProvider.Handle(indexId.RequestIndexEntryType, delegate(IRequestIndexEntryHandler handler) { IRequestIndexEntry item = handler.CreateRequestIndexEntryFromRequestJob(requestJobBase, session); requestJobBase.IndexIds.Add(indexId); requestJobBase.IndexEntries.Add(item); }); }
internal void UpdateADData(ADUser user, TransactionalRequestJob requestJob, bool save) { if (save) { user.MailboxMoveStatus = RequestJobBase.GetVersionAppropriateStatus(requestJob.Status, user.ExchangeVersion); user.MailboxMoveFlags = RequestJobBase.GetVersionAppropriateFlags(requestJob.Flags, user.ExchangeVersion); user.MailboxMoveSourceMDB = requestJob.SourceDatabase; user.MailboxMoveTargetMDB = requestJob.TargetDatabase; user.MailboxMoveSourceArchiveMDB = requestJob.SourceArchiveDatabase; user.MailboxMoveTargetArchiveMDB = requestJob.TargetArchiveDatabase; user.MailboxMoveRemoteHostName = requestJob.RemoteHostName; user.MailboxMoveBatchName = requestJob.BatchName; return; } user.MailboxMoveStatus = RequestStatus.None; user.MailboxMoveFlags = RequestFlags.None; user.MailboxMoveSourceMDB = null; user.MailboxMoveTargetMDB = null; user.MailboxMoveSourceArchiveMDB = null; user.MailboxMoveTargetArchiveMDB = null; user.MailboxMoveRemoteHostName = null; user.MailboxMoveBatchName = null; }
public static void SetCompleteAfter(DateTime?completeAfter, RequestJobBase dataObject, StringBuilder changedValuesTracker = null) { DateTime?value = null; if (completeAfter != null) { value = new DateTime?(completeAfter.Value.ToUniversalTime()); } string arg = (value == null) ? "(null)" : value.ToString(); RequestTaskHelper.TrackerAppendLine(changedValuesTracker, string.Format("TimeTracker.CompleteAfter: {0} -> {1}", dataObject.TimeTracker.GetTimestamp(RequestJobTimestamp.CompleteAfter), arg)); dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.CompleteAfter, value); if (dataObject.Status == RequestStatus.Synced) { DateTime?timestamp = dataObject.TimeTracker.GetTimestamp(RequestJobTimestamp.DoNotPickUntil); TimeSpan incrementalSyncInterval = dataObject.IncrementalSyncInterval; if (incrementalSyncInterval == TimeSpan.Zero || (value != null && value.Value < timestamp)) { RequestTaskHelper.TrackerAppendLine(changedValuesTracker, string.Format("TimeTracker.DoNotPickUntilTimeStamp: {0} -> {1}", timestamp, arg)); dataObject.TimeTracker.SetTimestamp(RequestJobTimestamp.DoNotPickUntil, value); } } }