diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
index f60aeeca83c20ad810ad2183a8938137200a0ee3..81c992b4d5911af0b9a808e7750d15f1078c44e9 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
+++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
@@ -35,6 +35,9 @@ trait MultiSampleQScript extends SummaryQScript {
     /** Overrules config of qscript with default sample */
     val config = new ConfigFunctions(defaultSample = sampleId)
 
+    /** Sample specific settings */
+    def summarySettings: Map[String, Any] = Map()
+
     /** Library class with basic functions build in */
     abstract class AbstractLibrary(val libId: String) extends Summarizable {
       /** Overrules config of qscript with default sample and default library */
@@ -45,6 +48,9 @@ trait MultiSampleQScript extends SummaryQScript {
         qscript.addSummarizable(summarizable, name, Some(sampleId), Some(libId))
       }
 
+      /** Library specific settings */
+      def summarySettings: Map[String, Any] = Map()
+
       /** Adds the library jobs */
       final def addAndTrackJobs(): Unit = {
         if (nameRegex.findFirstIn(libId) == None)
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala
index 7b8f34ecbb8108d53c342df2f4112df973f702c3..3af28669c8efac499d88ac0bdbdc98f25fb35b96 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala
+++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala
@@ -18,7 +18,7 @@ package nl.lumc.sasc.biopet.core.summary
 import java.io.{ File, PrintWriter }
 
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import nl.lumc.sasc.biopet.core.{ Version, BiopetCommandLineFunction, BiopetJavaCommandLineFunction, SampleLibraryTag }
+import nl.lumc.sasc.biopet.core._
 import nl.lumc.sasc.biopet.utils.ConfigUtils
 import nl.lumc.sasc.biopet.{ LastCommitHash, Version }
 import org.broadinstitute.gatk.queue.function.{ InProcessFunction, QFunction }
@@ -99,12 +99,26 @@ class WriteSummary(val root: Configurable) extends InProcessFunction with Config
         ).toMap
       }
 
-      val map = Map(qscript.summaryName -> ((if (settings.isEmpty) Map[String, Any]() else Map("settings" -> settings)) ++
-        (if (files.isEmpty) Map[String, Any]() else Map("files" -> Map("pipeline" -> files))) ++
-        (if (executables.isEmpty) Map[String, Any]() else Map("executables" -> executables.toMap))))
+      val map = Map(qscript.summaryName -> (Map(
+        "settings" -> settings,
+        "files" -> Map("pipeline" -> files),
+        "executables" -> executables.toMap))
+      )
 
       qscript match {
         case tag: SampleLibraryTag => prefixSampleLibrary(map, tag.sampleId, tag.libId)
+        case q:MultiSampleQScript  => {
+          q.samples.map { case (sampleName,sample) =>
+            sampleName -> Map(
+              qscript.summaryName -> Map("settings" -> sample.summarySettings),
+              "libraries" -> sample.libraries.map { case (libName, lib) =>
+                sampleName -> Map(
+                  qscript.summaryName -> Map("settings" -> lib)
+                )
+              }
+            )
+          } ++ map
+        }
         case _                     => map
       }
     }