private static void StartMultiThreadedImport(CrmImportConfig importConfig, ILogger logger, CancellationTokenSource cancellationToken, string connectionString, int maxThreads, bool useCsv, CrmSchemaConfiguration schemaConfig)
        {
            var connectionHelper = new ConnectionHelper();

            logger.Info($"Starting MultiThreaded Processing, using {maxThreads} threads");
            var repos = new List <IEntityRepository>();
            var cnt   = Convert.ToInt32(maxThreads);

            while (cnt > 0)
            {
                cnt--;
                repos.Add(new EntityRepository(connectionHelper.GetOrganizationalService(connectionString), new ServiceRetryExecutor()));
                logger.Info("New connection created to " + connectionString);
            }

            CrmGenericImporter fileImporter = null;

            if (!useCsv)
            {
                fileImporter = new CrmFileDataImporter(logger, repos, importConfig, cancellationToken.Token);
            }
            else
            {
                fileImporter = new CrmFileDataImporterCsv(logger, repos, importConfig, schemaConfig, cancellationToken.Token);
            }

            fileImporter.MigrateData();
        }
        public void StartSingleThreadedImport(CrmImportConfig importConfig, ILogger logger, CancellationTokenSource cancellationToken, string connectionString, bool useCsv, CrmSchemaConfiguration schemaConfig)
        {
            var connectionHelper = new ConnectionHelper();
            var orgService       = connectionHelper.GetOrganizationalService(connectionString);

            logger.Info("Starting Single Threaded processing, you must configure connection string for multithreaded processing adn set up max threads to more than 1");
            var entityRepo = new EntityRepository(orgService, new ServiceRetryExecutor());

            CrmGenericImporter fileImporter = null;

            if (!useCsv)
            {
                fileImporter = new CrmFileDataImporter(logger, entityRepo, importConfig, cancellationToken.Token);
            }
            else
            {
                fileImporter = new CrmFileDataImporterCsv(logger, entityRepo, importConfig, schemaConfig, cancellationToken.Token);
            }

            fileImporter.MigrateData();
        }