protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = "Export-MigrationReport"; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; return(MigrationReportDataProvider.CreateDataProvider("ExportMigrationReport", base.TenantGlobalCatalogSession, this.CsvStream, this.StartingRowIndex, this.RowCount, this.partitionMailbox, object.Equals(base.ExecutingUserOrganizationId, base.CurrentOrganizationId))); }
protected override void InternalProcessRecord() { this.SupportsCutover = false; if (this.Imap || this.ExchangeOutlookAnywhere) { this.SupportsCutover = MigrationSession.SupportsCutover(base.DataProvider); } if (this.ExchangeOutlookAnywhere) { this.InternalProcessExchangeOutlookAnywhere(base.DataProvider); return; } if (this.ExchangeRemoteMove && this.Autodiscover) { this.InternalProcessExchangeRemoteMoveAutoDiscover(); return; } if (this.PSTImport) { this.InternalProcessPSTImport(); return; } if (this.PublicFolder) { this.InternalProcessPublicFolder(); return; } if (this.endpoint != null) { this.InternalProcessEndpoint(false); return; } MigrationLogger.Log(MigrationEventType.Error, "TestMigrationServerAvailability.InternalProcessRecord: Wrong protocol", new object[0]); this.WriteError(new TestMigrationServerAvailabilityProtocolArgumentException()); }
internal static void RegisterMigrationBatch(Task task, MailboxSession mailboxSession, OrganizationId organizationId, bool failIfNotConnected, bool refresh = false) { string serverFqdn = mailboxSession.MailboxOwner.MailboxInfo.Location.ServerFqdn; Guid mdbGuid = mailboxSession.MdbGuid; string mailboxOwnerLegacyDN = mailboxSession.MailboxOwnerLegacyDN; ADObjectId organizationName = organizationId.OrganizationalUnit ?? new ADObjectId(); int num = 2; for (int i = 1; i <= num; i++) { try { MigrationNotificationRpcStub migrationNotificationRpcStub = new MigrationNotificationRpcStub(serverFqdn); migrationNotificationRpcStub.RegisterMigrationBatch(new RegisterMigrationBatchArgs(mdbGuid, mailboxOwnerLegacyDN, organizationName, refresh)); break; } catch (MigrationServiceRpcException ex) { ExManagementApplicationLogger.LogEvent(ManagementEventLogConstants.Tuple_MigrationServiceConnectionError, new string[] { serverFqdn, ex.Message }); if (i == num && failIfNotConnected) { MigrationLogger.Log(MigrationEventType.Warning, MigrationLogger.GetDiagnosticInfo(ex, null), new object[0]); task.WriteError(new LocalizedException(Strings.MigrationOperationFailed, null), ExchangeErrorCategory.Client, null); } } } }
internal static MigrationJob GetMigrationJobByBatchId(Task task, MigrationBatchDataProvider batchProvider, MigrationBatchId migrationBatchId, bool skipCorrupt, bool failIfNotFound = true) { MigrationJob migrationJob = null; Exception ex = null; try { migrationJob = batchProvider.JobCache.GetJob(migrationBatchId); } catch (PropertyErrorException ex2) { ex = ex2; } catch (InvalidDataException ex3) { ex = ex3; } if (ex != null) { MigrationLogger.Log(MigrationEventType.Warning, MigrationLogger.GetDiagnosticInfo(ex, null), new object[0]); task.WriteError(new MigrationPermanentException(Strings.MigrationJobCorrupted, ex), ExchangeErrorCategory.Client, null); } if (migrationJob != null && migrationJob.Status == MigrationJobStatus.Corrupted && skipCorrupt) { migrationJob = null; } if (migrationJob == null && failIfNotFound) { MigrationObjectTaskBase <TIdentityParameter> .WriteJobNotFoundError(task, migrationBatchId.ToString()); } return(migrationJob); }
protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = base.MyInvocation.MyCommand.Name; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; return(MigrationBatchDataProvider.CreateDataProvider(this.Action, base.TenantGlobalCatalogSession, null, this.partitionMailbox)); }
protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = "Get-MigrationUser"; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; return(MigrationUserDataProvider.CreateDataProvider(this.Action, base.TenantGlobalCatalogSession, this.partitionMailbox, null)); }
protected virtual void DisposeSession() { if (base.DataSession is IDisposable) { MigrationLogger.Close(); ((IDisposable)base.DataSession).Dispose(); } }
protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = "Set-MigrationEndpoint"; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; this.DataProvider = MigrationDataProvider.CreateProviderForMigrationMailbox(base.GetType().Name, base.TenantGlobalCatalogSession, this.partitionMailbox); return(MigrationEndpointDataProvider.CreateDataProvider("SetMigrationEndpoint", base.TenantGlobalCatalogSession, this.partitionMailbox)); }
private void DisposeSession() { if (base.DataSession is IDisposable) { MigrationLogger.Close(); ((IDisposable)base.DataSession).Dispose(); } }
private void DisposeSession() { IDisposable disposable = base.DataSession as IDisposable; if (disposable != null) { MigrationLogger.Close(); disposable.Dispose(); } }
protected override IConfigDataProvider CreateSession() { base.CurrentOrganizationId = this.ResolveCurrentOrganization(); this.partitionMailbox = MigrationObjectTaskBase <MigrationConfigIdParameter> .ResolvePartitionMailbox(this.Partition, base.TenantGlobalCatalogSession, base.ServerSettings, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.ErrorLoggerDelegate(base.WriteError), base.CurrentOrganizationId == OrganizationId.ForestWideOrgId && MapiTaskHelper.IsDatacenter); TenantPartitionHint partitionHint = TenantPartitionHint.FromOrganizationId(base.CurrentOrganizationId); MigrationLogger.Initialize(); MigrationLogContext.Current.Source = "Set-MigrationConfig"; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; return(MigrationSessionDataProvider.CreateDataProvider("SetMigrationConfig", MigrationHelperBase.CreateRecipientSession(partitionHint), this.partitionMailbox)); }
/// <summary> /// ������������� /// </summary> public Migrator(ITransformationProvider provider, Assembly asm, ILogger logger = null) { if (asm == null) { throw new ArgumentNullException(nameof(asm)); } Provider = provider ?? throw new ArgumentNullException(nameof(provider)); Logger = new MigrationLogger(logger); migrationAssembly = new MigrationAssembly(asm); Logger.WriteMigrationAssemblyInfo(migrationAssembly); }
protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = "Get-MigrationEndpoint"; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; MigrationEndpointDataProvider migrationEndpointDataProvider = MigrationEndpointDataProvider.CreateDataProvider(this.Action, base.TenantGlobalCatalogSession, this.partitionMailbox); if (base.Diagnostic || !string.IsNullOrEmpty(base.DiagnosticArgument)) { migrationEndpointDataProvider.EnableDiagnostics(base.DiagnosticArgument); } return(migrationEndpointDataProvider); }
protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = base.GetType().Name; if (base.CurrentOrganizationId != null) { MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; } this.initialized = true; this.DataProvider = MigrationDataProvider.CreateProviderForMigrationMailbox(base.GetType().Name, base.TenantGlobalCatalogSession, this.partitionMailbox); this.batchDataProvider = new Lazy <MigrationBatchDataProvider>(() => new MigrationBatchDataProvider(this.DataProvider, null)); MigrationADProvider migrationADProvider = (MigrationADProvider)this.DataProvider.ADProvider; return(migrationADProvider.RecipientSession); }
private void InternalProcessExchangeRemoteMoveAutoDiscover() { try { ExchangeRemoteMoveEndpoint exchangeRemoteMoveEndpoint = new ExchangeRemoteMoveEndpoint(); exchangeRemoteMoveEndpoint.InitializeFromAutoDiscover(this.EmailAddress, this.Credentials); this.endpoint = exchangeRemoteMoveEndpoint; } catch (LocalizedException ex) { MigrationLogger.Log(MigrationEventType.Error, ex, "Failed to determine remote endpoint via auto-discover.", new object[0]); base.WriteObject(TestMigrationServerAvailabilityOutcome.Create(TestMigrationServerAvailabilityResult.Failed, this.SupportsCutover, ex.LocalizedString, ex.ToString())); return; } this.InternalProcessEndpoint(true); }
private void DisposeSession() { IDisposable disposable = base.DataSession as IDisposable; if (disposable != null) { disposable.Dispose(); } if (this.DataProvider != null) { this.DataProvider.Dispose(); this.DataProvider = null; } if (this.batchDataProvider.IsValueCreated) { this.batchDataProvider.Value.Dispose(); } MigrationLogger.Close(); }
protected override IConfigDataProvider CreateSession() { MigrationLogger.Initialize(); MigrationLogContext.Current.Source = "Get-MigrationUserStatistics"; MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit; IConfigDataProvider result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { MigrationUserDataProvider migrationUserDataProvider = MigrationUserDataProvider.CreateDataProvider(this.Action, base.TenantGlobalCatalogSession, this.partitionMailbox, null); disposeGuard.Add <MigrationUserDataProvider>(migrationUserDataProvider); migrationUserDataProvider.LimitSkippedItemsTo = this.LimitSkippedItemsTo; migrationUserDataProvider.IncludeReport = this.IncludeReport; if (base.Diagnostic || !string.IsNullOrEmpty(base.DiagnosticArgument)) { migrationUserDataProvider.EnableDiagnostics(base.DiagnosticArgument); } disposeGuard.Success(); result = migrationUserDataProvider; } return(result); }
protected SqlRunner(IDbConnection connection, ILogger logger) { Connection = connection ?? throw new ArgumentNullException(nameof(connection)); Logger = new MigrationLogger(logger); }
/// <summary> /// Creates an DownMigrationOperation instance. /// </summary> /// <param name="mongoDbContext">The MongoDB database connection</param> /// <param name="projectFile">The absolute path the the project file that migrations are stored</param> public DownMigrationOperation(IMongoDbContext mongoDbContext, string projectFile) { _mongoDbContext = mongoDbContext; _projectFile = projectFile; _logger = MigrationLogger.Instance; }
private void WriteError(LocalizedException exception) { MigrationLogger.Log(MigrationEventType.Warning, MigrationLogger.GetDiagnosticInfo(exception, null), new object[0]); base.WriteError(exception, (ErrorCategory)1000, null); }
private void InternalProcessExchangeOutlookAnywhere(IMigrationDataProvider dataProvider) { ExchangeOutlookAnywhereEndpoint exchangeOutlookAnywhereEndpoint = new ExchangeOutlookAnywhereEndpoint(); try { if (this.Autodiscover) { TestMigrationServerAvailabilityOutcome testMigrationServerAvailabilityOutcome = null; try { exchangeOutlookAnywhereEndpoint.InitializeFromAutoDiscover(this.EmailAddress, this.Credentials); } catch (AutoDiscoverFailedConfigurationErrorException exception) { testMigrationServerAvailabilityOutcome = this.CreateAutodsicoverFailedOutcome(exception); } catch (AutoDiscoverFailedInternalErrorException exception2) { testMigrationServerAvailabilityOutcome = this.CreateAutodsicoverFailedOutcome(exception2); } if (testMigrationServerAvailabilityOutcome != null) { MigrationLogger.Log(MigrationEventType.Information, testMigrationServerAvailabilityOutcome.ToString(), new object[0]); base.WriteObject(testMigrationServerAvailabilityOutcome); return; } } else { exchangeOutlookAnywhereEndpoint.RpcProxyServer = this.RPCProxyServer; exchangeOutlookAnywhereEndpoint.Credentials = this.Credentials; exchangeOutlookAnywhereEndpoint.ExchangeServer = this.ExchangeServer; exchangeOutlookAnywhereEndpoint.AuthenticationMethod = this.Authentication; } IMigrationNspiClient nspiClient = MigrationServiceFactory.Instance.GetNspiClient(null); exchangeOutlookAnywhereEndpoint.NspiServer = nspiClient.GetNewDSA(exchangeOutlookAnywhereEndpoint); exchangeOutlookAnywhereEndpoint.MailboxPermission = this.MailboxPermission; NspiMigrationDataReader nspiDataReader = exchangeOutlookAnywhereEndpoint.GetNspiDataReader(null); nspiDataReader.Ping(); ExchangeOutlookAnywhereEndpoint.ValidateEndpoint(exchangeOutlookAnywhereEndpoint); } catch (MigrationTransientException ex) { MigrationLogger.Log(MigrationEventType.Warning, MigrationLogger.GetDiagnosticInfo(ex, null), new object[0]); base.WriteObject(TestMigrationServerAvailabilityOutcome.Create(TestMigrationServerAvailabilityResult.Failed, this.SupportsCutover, ex.LocalizedString, ex.InternalError)); return; } catch (MigrationPermanentException ex2) { MigrationLogger.Log(MigrationEventType.Error, MigrationLogger.GetDiagnosticInfo(ex2, null), new object[0]); base.WriteObject(TestMigrationServerAvailabilityOutcome.Create(TestMigrationServerAvailabilityResult.Failed, this.SupportsCutover, ex2.LocalizedString, ex2.InternalError)); return; } TestMigrationServerAvailabilityOutcome testMigrationServerAvailabilityOutcome2; try { TestMigrationServerAvailability.VerifyExchangeOutlookAnywhereConnection(dataProvider, exchangeOutlookAnywhereEndpoint, (string)this.EmailAddress, this.SourceMailboxLegacyDN, this.targetMailbox, !this.IsFieldSet("MailboxPermission")); testMigrationServerAvailabilityOutcome2 = TestMigrationServerAvailabilityOutcome.Create(TestMigrationServerAvailabilityResult.Success, this.SupportsCutover, (ExchangeConnectionSettings)exchangeOutlookAnywhereEndpoint.ConnectionSettings); } catch (LocalizedException ex3) { string diagnosticInfo = MigrationLogger.GetDiagnosticInfo(ex3, null); MigrationLogger.Log(MigrationEventType.Error, diagnosticInfo, new object[0]); testMigrationServerAvailabilityOutcome2 = TestMigrationServerAvailabilityOutcome.Create(TestMigrationServerAvailabilityResult.Failed, this.SupportsCutover, ex3.LocalizedString, diagnosticInfo); testMigrationServerAvailabilityOutcome2.ConnectionSettings = (ExchangeConnectionSettings)exchangeOutlookAnywhereEndpoint.ConnectionSettings; } base.WriteObject(testMigrationServerAvailabilityOutcome2); }