private void UploadReportsForFolder(Folder parentFolder, string rootPath, string newRootFolderName, string dataSourcePath) { parentFolder.SetNewRootPath(newRootFolderName); _destCommunicator.CreateFolder(parentFolder.Name, rootPath); foreach (var report in parentFolder.Reports.Where(r => r.Selected)) { var reportDefinition = _sourceCommunicator.GetReportDefinition(report.Path); _destCommunicator.CreateReport(report.Name, parentFolder.Path, reportDefinition, dataSourcePath); } foreach (var subFolder in parentFolder.SubFolders.Where(f => f.ShouldTransfer)) { UploadReportsForFolder(subFolder, parentFolder.Path, newRootFolderName, dataSourcePath); } }