diff --git a/mage_helpers/build.go b/mage_helpers/build.go
index b27588798f936041ba7f7474134877977382a120..0a29383070a70489d039d314f6dcd97d201cfdc0 100644
--- a/mage_helpers/build.go
+++ b/mage_helpers/build.go
@@ -55,7 +55,7 @@ func Build(dir string, module string, isDebug bool) error {
 	}
 
 	// Copy files in handler folder
-	err = copyFilesToBuildDir(fullPath, outputDir)
+	err = copyFilesToBuildDir(fullPath, outputDir, false)
 	if err != nil {
 		return err
 	}
@@ -64,7 +64,16 @@ func Build(dir string, module string, isDebug bool) error {
 	sharedDir := currentDir + "/core/utils"
 	_, err = os.Stat(sharedDir)
 	if err == nil {
-		err = copyFilesToBuildDir(sharedDir, outputDir)
+		err = copyFilesToBuildDir(sharedDir, outputDir, false)
+		if err != nil {
+			return err
+		}
+	}
+
+	wkhtmltopdfDir := currentDir + "/cdk/src/lambda/wkhtmltopdf"
+	_, err = os.Stat(wkhtmltopdfDir)
+	if err == nil {
+		err = copyFilesToBuildDir(wkhtmltopdfDir, outputDir+"/wkhtmltopdf", true)
 		if err != nil {
 			return err
 		}
@@ -72,7 +81,7 @@ func Build(dir string, module string, isDebug bool) error {
 
 	if isDebug {
 		// copy env file
-		err = copyFilesToBuildDir(currentDir+"/.env.debug", outputDir)
+		err = copyFilesToBuildDir(currentDir+"/.env.debug", outputDir, false)
 		if err != nil {
 			return err
 		}
diff --git a/mage_helpers/file_system.go b/mage_helpers/file_system.go
index b45122a72110f20cdb1ef1b55f992302f01e1195..95ed0eba7a444d36dd1cc118d1fead14fe48ac2b 100644
--- a/mage_helpers/file_system.go
+++ b/mage_helpers/file_system.go
@@ -36,7 +36,7 @@ func GetDirs(path string) []os.FileInfo {
 	return dirs
 }
 
-func copyFilesToBuildDir(currentDir string, buildDir string) error {
+func copyFilesToBuildDir(currentDir string, buildDir string, maintainSubfolders bool) error {
 	files, err := AllFiles(currentDir)
 	if err != nil {
 		return err
@@ -48,7 +48,11 @@ func copyFilesToBuildDir(currentDir string, buildDir string) error {
 		}
 
 		// Copy files to build DIR
-		err := Copy(file, buildDir+"/"+path.Base(file))
+		if maintainSubfolders {
+			err = Copy(file, buildDir+strings.TrimPrefix(file, currentDir))
+		} else {
+			err = Copy(file, buildDir+"/"+path.Base(file))
+		}
 		if err != nil {
 			return err
 		}
@@ -90,6 +94,11 @@ func Copy(src, dst string) error {
 		}
 	}
 
+	err = os.MkdirAll(strings.TrimSuffix(dst, path.Base(dst)), os.ModePerm)
+	if err != nil {
+		return err
+	}
+
 	in, err := os.Open(src)
 	if err != nil {
 		return err