Example #1
0
        public void LoadImportConfigFile(INotificationService notificationService, TextBox importConfig, Dictionary <string, Dictionary <Guid, Guid> > inputMapper, Dictionary <string, List <Item <EntityReference, EntityReference> > > inputMapping)
        {
            if (!string.IsNullOrWhiteSpace(importConfig.Text))
            {
                try
                {
                    var configImport = CrmImportConfig.GetConfiguration(importConfig.Text);
                    if (configImport.MigrationConfig == null)
                    {
                        notificationService.DisplayFeedback("Invalid Import Config File");
                        importConfig.Text = "";
                        return;
                    }

                    inputMapper = configImport.MigrationConfig.Mappings;
                    DataConversion(inputMapping, inputMapper);

                    notificationService.DisplayFeedback("Guid Id Mappings loaded from Import Config File");
                }
                catch (Exception ex)
                {
                    notificationService.DisplayFeedback($"Load Correct Import Config file, error:{ex.Message}");
                }
            }
        }
        private static CrmImportConfig GetImportConfig(DataImportConfig dataImportConfig, string packageFolderPath)
        {
            var importConfig = CrmImportConfig.GetConfiguration(Path.Combine(packageFolderPath, dataImportConfig.ImportConfigPath));

            importConfig.JsonFolderPath = Path.Combine(packageFolderPath, dataImportConfig.DataFolderPath);
            return(importConfig);
        }
Example #3
0
        public void GetConfiguration()
        {
            var filePath = "TestData/ImportConfig.json";

            var actual = CrmImportConfig.GetConfiguration(filePath);

            actual.FilePrefix.Should().Be("ExportedData");
        }
Example #4
0
        private void TabImportConfigFileTextChanged(object sender, EventArgs e)
        {
            importConfig = CrmImportConfig.GetConfiguration(openFileDialog1.FileName);

            cbIgnoreSystemFields.Checked = importConfig.IgnoreSystemFields;
            cbIgnoreStatuses.Checked     = importConfig.IgnoreStatuses;
            tbSourceDataLocation.Text    = importConfig.JsonFolderPath;
            nudSavePageSize.Value        = importConfig.SaveBatchSize;
        }
 private static int ImportData(ImportOptions options)
 {
     using (var serviceClient = new CrmServiceClient(options.ConnectionString))
     {
         new CrmFileDataImporter(
             Logger,
             new EntityRepository(serviceClient.OrganizationServiceProxy, new ServiceRetryExecutor()),
             CrmImportConfig.GetConfiguration(options.ConfigurationFile),
             CancellationToken.None).MigrateData();
         return(0);
     }
 }
Example #6
0
        private static int ImportData(ImportOptions options)
        {
            using (var serviceClient = new CrmServiceClient(options.ConnectionString))
            {
                var config = CrmImportConfig.GetConfiguration(options.ConfigurationFile);

                new CrmFileDataImporter(
                    Logger,
                    new EntityRepository(serviceClient, new ServiceRetryExecutor(), config.EnableLookupCaching ? RepositoryCachingMode.Lookup : RepositoryCachingMode.None),
                    config,
                    CancellationToken.None).MigrateData();
                return(0);
            }
        }
Example #7
0
        public void GenerateImportConfigFile(INotificationService notificationService, TextBox importConfig, Dictionary <string, Dictionary <Guid, Guid> > inputMapper)
        {
            try
            {
                var migration = new CrmImportConfig()
                {
                    IgnoreStatuses     = true,
                    IgnoreSystemFields = true,
                    SaveBatchSize      = 1000,
                    JsonFolderPath     = "ExtractedData"
                };

                if (File.Exists(importConfig.Text))
                {
                    migration = CrmImportConfig.GetConfiguration(importConfig.Text);
                }

                if (migration.MigrationConfig == null)
                {
                    migration.MigrationConfig = new MappingConfiguration();
                }

                if (inputMapper != null)
                {
                    migration.MigrationConfig.Mappings.Clear();
                    migration.MigrationConfig.Mappings.AddRange(inputMapper);

                    if (File.Exists(importConfig.Text))
                    {
                        File.Delete(importConfig.Text);
                    }

                    migration.SaveConfiguration(importConfig.Text);
                }
            }
            catch (Exception ex)
            {
                notificationService.DisplayFeedback($"Error Saving Import Config file. Error: {ex.Message}");
            }
        }
Example #8
0
        public void CrmFileDataImporterWithIgnoredFieldsTest()
        {
            ConsoleLogger.LogLevel = 3;

            using (CancellationTokenSource tokenSource = new CancellationTokenSource())
            {
                List <IEntityRepository> entRep = new List <IEntityRepository>
                {
                    new EntityRepository(ConnectionHelper.GetOrganizationalServiceTarget(), new ServiceRetryExecutor()),
                    new EntityRepository(ConnectionHelper.GetOrganizationalServiceTarget(), new ServiceRetryExecutor()),
                    new EntityRepository(ConnectionHelper.GetOrganizationalServiceTarget(), new ServiceRetryExecutor()),
                    new EntityRepository(ConnectionHelper.GetOrganizationalServiceTarget(), new ServiceRetryExecutor())
                };

                CrmImportConfig importConfig = CrmImportConfig.GetConfiguration(@"TestData\ImportConfig.json");

                CrmFileDataImporter fileExporter = new CrmFileDataImporter(new ConsoleLogger(), entRep, importConfig, tokenSource.Token);

                fileExporter.MigrateData();

                Assert.IsNotNull(fileExporter);
            }
        }
        static CrmImportConfig GetImportConfig()
        {
            var importConfig = new CrmImportConfig()
            {
                FilePrefix     = $"Demo{Settings.Default.DemoScenarioName}",
                SaveBatchSize  = 50,
                JsonFolderPath = GetExportPath(),
            };

            var filePath = $"{GetScenarioPath()}\\ImportConfig.json";

            if (!File.Exists(filePath))
            {
                importConfig.SaveConfiguration(filePath);
            }
            else
            {
                importConfig = CrmImportConfig.GetConfiguration(filePath);
            }

            importConfig.JsonFolderPath = GetExportPath();

            return(importConfig);
        }
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            var logger = new CmdletLogger(TreatWarningsAsErrors);

            try
            {
                logger.LogInfo("About to start importing data from Dynamics365");
                var manager = new Dynamics365DataManager();

                var cancellationTokenSource = new CancellationTokenSource();

                var importConfig = new CrmImportConfig();
                if (!string.IsNullOrWhiteSpace(ConfigFilePath))
                {
                    if (!File.Exists(ConfigFilePath))
                    {
                        WriteWarning($"Import config file path does not exist, will be ignored {ConfigFilePath}");
                    }
                    else
                    {
                        importConfig = CrmImportConfig.GetConfiguration(ConfigFilePath);
                    }
                }

                PopulateConfigFile(importConfig);

                if (!Directory.Exists(JsonFolderPath))
                {
                    WriteWarning($"JsonFolderPath {JsonFolderPath} does not exist, cannot continue!");
                    throw new DirectoryNotFoundException($"JsonFolderPath {JsonFolderPath} does not exist, cannot continue!");
                }

                CrmSchemaConfiguration schemaConfig = null;

                if (CsvImport)
                {
                    if (string.IsNullOrWhiteSpace(SchemaFilePath))
                    {
                        throw new ConfigurationException("Schema file is required for CSV Import!");
                    }

                    schemaConfig = CrmSchemaConfiguration.ReadFromFile(SchemaFilePath);
                    logger.LogInfo("Using Csv import");
                }
                else
                {
                    logger.LogInfo("Using JSon import");
                }

                if (MaxThreads > 1)
                {
                    var result = manager.StartImport(importConfig, logger, cancellationTokenSource, ConnectionString, MaxThreads, CsvImport, schemaConfig)
                                 .ContinueWith(a =>
                    {
                        logger.LogInfo("Dynamics365 data import completed successfully.");
                    },
                                               cancellationTokenSource.Token);

                    result.Wait(cancellationTokenSource.Token);
                }
                else
                {
                    manager.StartSingleThreadedImport(importConfig, new CmdletLoggerPS(this, TreatWarningsAsErrors), cancellationTokenSource, ConnectionString, CsvImport, schemaConfig);
                }
            }
            catch (Exception exception)
            {
                var errorMessage = $"Dynamics365 data import failed: {exception.Message}";
                logger.LogVerbose(errorMessage);
                logger.LogError(errorMessage);
                throw;
            }
        }
        public void CrmImportProcessorConfigReadTest()
        {
            var mgr = CrmImportConfig.GetConfiguration(@"TestData/ImportConfig.json");

            Assert.IsNotNull(mgr);
        }