protected override void DoJob() { try { Log.DebugFormat("Tenant: {0}", tenantId); Status = DistributedTaskStatus.Running; using var scope = ServiceProvider.CreateScope(); var tempPath = scope.ServiceProvider.GetService <TempPath>(); var scopeClass = scope.ServiceProvider.GetService <MigrateOperationScope>(); var(tenantManager, securityContext, storageFactory, options, storageSettingsHelper, settingsManager) = scopeClass; var tenant = tenantManager.GetTenant(tenantId); tenantManager.SetCurrentTenant(tenant); securityContext.AuthenticateMeWithoutCookie(tenant.OwnerId); foreach (var module in Modules) { var oldStore = storageFactory.GetStorage(ConfigPath, tenantId.ToString(), module); var store = storageFactory.GetStorageFromConsumer(ConfigPath, tenantId.ToString(), module, storageSettingsHelper.DataStoreConsumer(settings)); var domains = StorageFactoryConfig.GetDomainList(ConfigPath, module).ToList(); var crossModuleTransferUtility = new CrossModuleTransferUtility(options, TempStream, tempPath, oldStore, store); string[] files; foreach (var domain in domains) { //Status = module + domain; Log.DebugFormat("Domain: {0}", domain); files = oldStore.ListFilesRelative(domain, "\\", "*.*", true); foreach (var file in files) { Log.DebugFormat("File: {0}", file); crossModuleTransferUtility.CopyFile(domain, file, domain, file); } } Log.Debug("Domain:"); files = oldStore.ListFilesRelative(string.Empty, "\\", "*.*", true) .Where(path => domains.All(domain => !path.Contains(domain + "/"))) .ToArray(); foreach (var file in files) { Log.DebugFormat("File: {0}", file); crossModuleTransferUtility.CopyFile("", file, "", file); } StepDone(); MigrationPublish(); } settingsManager.Save(settings); tenant.SetStatus(TenantStatus.Active); tenantManager.SaveTenant(tenant); Status = DistributedTaskStatus.Completed; } catch (Exception e) { Status = DistributedTaskStatus.Failted; Exception = e; Log.Error(e); } MigrationPublish(); }