Exemple #1
0
 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)));
 }
Exemple #2
0
 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());
 }
Exemple #3
0
        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);
                    }
                }
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 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));
 }
Exemple #6
0
 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));
 }
Exemple #7
0
 protected virtual void DisposeSession()
 {
     if (base.DataSession is IDisposable)
     {
         MigrationLogger.Close();
         ((IDisposable)base.DataSession).Dispose();
     }
 }
Exemple #8
0
 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));
 }
Exemple #9
0
 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));
        }
Exemple #12
0
        /// <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);
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        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);
        }
Exemple #15
0
 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);
 }
Exemple #16
0
        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);
        }
Exemple #18
0
 protected SqlRunner(IDbConnection connection, ILogger logger)
 {
     Connection = connection ?? throw new ArgumentNullException(nameof(connection));
     Logger     = new MigrationLogger(logger);
 }
Exemple #19
0
 /// <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;
 }
Exemple #20
0
 private void WriteError(LocalizedException exception)
 {
     MigrationLogger.Log(MigrationEventType.Warning, MigrationLogger.GetDiagnosticInfo(exception, null), new object[0]);
     base.WriteError(exception, (ErrorCategory)1000, null);
 }
Exemple #21
0
        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);
        }