diff --git a/src/main/java/de/bps/course/nodewizard/CopyStructureWizardStepRunnerCallback.java b/src/main/java/de/bps/course/nodewizard/CopyStructureWizardStepRunnerCallback.java
index 641b0a9bde032b7217558c584fe90237c143337b..79087939c560743dc67b8f1c89a9bac714f28205 100644
--- a/src/main/java/de/bps/course/nodewizard/CopyStructureWizardStepRunnerCallback.java
+++ b/src/main/java/de/bps/course/nodewizard/CopyStructureWizardStepRunnerCallback.java
@@ -1,10 +1,5 @@
 package de.bps.course.nodewizard;
 
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.tree.TreeNode;
 import org.olat.core.gui.control.WindowControl;
@@ -15,9 +10,7 @@ import org.olat.core.gui.control.generic.wizard.StepsRunContext;
 import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
-import org.olat.core.util.FileUtils;
 import org.olat.core.util.nodes.INode;
-import org.olat.core.util.vfs.MergeSource;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.course.CourseFactory;
 import org.olat.course.export.CourseFragmentEnvironmentMapper;
@@ -66,25 +59,9 @@ public class CopyStructureWizardStepRunnerCallback implements StepRunnerCallback
 	}
 
 	private void copyAllFiles() {
-		File srcDir = null;
 		final VFSContainer srcRootFolder = process.getSrcCourse().getCourseEnvironment().getCourseFolderContainer();
-		if (srcRootFolder instanceof MergeSource) {
-			final VFSContainer srcRootWriteContainer = ((MergeSource) srcRootFolder).getRootWriteContainer();
-			if (srcRootWriteContainer instanceof OlatRootFolderImpl) {
-				srcDir = ((OlatRootFolderImpl) srcRootWriteContainer).getBasefile();
-			}
-		}
-		File targetDir = null;
 		final VFSContainer targetRootFolder = process.getTargetCourse().getCourseEnvironment().getCourseFolderContainer();
-		if (targetRootFolder instanceof MergeSource) {
-			final VFSContainer targetRootWriteContainer = ((MergeSource) targetRootFolder).getRootWriteContainer();
-			if (targetRootWriteContainer instanceof OlatRootFolderImpl) {
-				targetDir = ((OlatRootFolderImpl) targetRootWriteContainer).getBasefile();
-			}
-		}
-		if (srcDir != null && srcDir.exists() && srcDir.isDirectory() && targetDir != null && targetDir.exists() && targetDir.isDirectory()) {
-			FileUtils.copyDirContentsToDir(srcDir, targetDir, false, "");
-		}
+		targetRootFolder.copyContentOf(srcRootFolder);
 	}
 
 	private void addChildNode(final Identity fallbackIdentity, CourseNode targetParentNode, final INode node) {
diff --git a/src/main/java/de/bps/course/nodewizard/coursenode/SPCourseNodeCopyConfigurator.java b/src/main/java/de/bps/course/nodewizard/coursenode/SPCourseNodeCopyConfigurator.java
index b821cfd065cf9ea0e2f97ea32d0400913f043cf9..bb4805d9cc0924d0d6fa48f57fbb3768b63898df 100644
--- a/src/main/java/de/bps/course/nodewizard/coursenode/SPCourseNodeCopyConfigurator.java
+++ b/src/main/java/de/bps/course/nodewizard/coursenode/SPCourseNodeCopyConfigurator.java
@@ -20,18 +20,12 @@
 package de.bps.course.nodewizard.coursenode;
 
 import java.io.File;
-import java.io.FilenameFilter;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.regex.Pattern;
 
-import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl;
-import org.olat.core.gui.translator.PackageTranslator;
-import org.olat.core.gui.translator.Translator;
+import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.id.Identity;
 import org.olat.core.util.FileUtils;
-import org.olat.core.util.vfs.MergeSource;
-import org.olat.core.util.vfs.VFSContainer;
 import org.olat.course.export.CourseFragmentEnvironmentMapper;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.nodes.sp.SPEditController;
@@ -73,18 +67,6 @@ public class SPCourseNodeCopyConfigurator extends AbstractCourseNodeCopyConfigur
 		}
 		return newFile;
 	}
-
-	private File courseEnvRootDir(CourseEnvironment courseEnv) {
-		File srcDir = null;
-		final VFSContainer srcRootFolder = courseEnv.getCourseFolderContainer();
-		if (srcRootFolder instanceof MergeSource) {
-			final VFSContainer srcRootWriteContainer = ((MergeSource) srcRootFolder).getRootWriteContainer();
-			if (srcRootWriteContainer instanceof OlatRootFolderImpl) {
-				srcDir = ((OlatRootFolderImpl) srcRootWriteContainer).getBasefile();
-			}
-		}
-		return srcDir;
-	}
 	
 	@Override
 	public void configure() {
@@ -92,10 +74,10 @@ public class SPCourseNodeCopyConfigurator extends AbstractCourseNodeCopyConfigur
 
 		if (canCopyToCourseFolder) {
 			// copy page
-			File srcDir = courseEnvRootDir(srcCourseEnv);
-			File targetDir = courseEnvRootDir(targetCourseEnv);
+			File srcDir = new File(FolderConfig.getCanonicalRoot() + srcCourseEnv.getCourseFolderContainer().getRelPath());
+			File targetDir = new File(FolderConfig.getCanonicalRoot() + targetCourseEnv.getCourseFolderContainer().getRelPath());
 
-			if (srcDir != null && targetDir != null && srcDir.exists() && srcDir.isDirectory() && targetDir.exists() && targetDir.isDirectory()) {
+			if (srcDir.exists() && srcDir.isDirectory() && targetDir.exists() && targetDir.isDirectory()) {
 				final String fileName = (String) this.srcCourseNode.getModuleConfiguration().get(SPEditController.CONFIG_KEY_FILE);
 				Path fileNamePath = Paths.get(fileName);
 				Path fileNameParent = fileNamePath.normalize().getParent();