diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3da95305aa89611ad231f4f087367233115b472f..dae3f1850ee7aafc2e3f2825cf60001924e45509 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,10 @@ that users understand how the changes affect the new version.
 
 version 5.0.0-dev
 ---------------------------
++ Update Lima to version 2.0.0.
++ Update IsoSeq3 to version 3.4.0.
++ Update samtools to version 1.11.
++ Update Picard to version 2.23.8.
 + Update NanoPlot to version 1.32.1.
 + Update MultiQC to version 1.9.
 + Update CutAdapt to version 3.0.0.
diff --git a/isoseq3.wdl b/isoseq3.wdl
index c1c4397c242aae24ff10945dca92a16c837cda55..aacbfc60217ee9bc888b3a0c2ca4783037722109 100644
--- a/isoseq3.wdl
+++ b/isoseq3.wdl
@@ -34,7 +34,7 @@ task Refine {
         Int threads = 2
         String memory = "2G"
         Int timeMinutes = 30
-        String dockerImage = "quay.io/biocontainers/isoseq3:3.3.0--0"
+        String dockerImage = "quay.io/biocontainers/isoseq3:3.4.0--0"
     }
 
     command {
diff --git a/lima.wdl b/lima.wdl
index 33b2328b4ec0ab81c5d14cb81d2dbcbb0106ab23..119db3f4112b31756dd6a127dbd5551151955fc9 100644
--- a/lima.wdl
+++ b/lima.wdl
@@ -51,7 +51,7 @@ task Lima {
         Int threads = 2
         String memory = "2G"
         Int timeMinutes = 30
-        String dockerImage = "quay.io/biocontainers/lima:1.11.0--0"
+        String dockerImage = "quay.io/biocontainers/lima:2.0.0--0"
     }
 
     Map[String, String] libraryDesignOptions = {"same": "--same", "different": "--different", "neighbors": "--neighbors"}
diff --git a/picard.wdl b/picard.wdl
index d5601ad0817716f0b830492aee21de22462f19de..f75fdc326133675c7a95286a14c09cba8079987c 100644
--- a/picard.wdl
+++ b/picard.wdl
@@ -29,7 +29,7 @@ task BedToIntervalList {
         String javaXmx = "3G"
         String memory = "4G"
         Int timeMinutes = 5
-        String dockerImage = "quay.io/biocontainers/picard:2.20.5--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -89,7 +89,7 @@ task CollectHsMetrics {
         # Additional * 2 because picard multiple metrics reads the
         # reference fasta twice.
         Int timeMinutes = 1 + ceil(size(referenceFasta, "G") * 3 * 2) + ceil(size(inputBam, "G") * 6)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -158,7 +158,7 @@ task CollectMultipleMetrics {
         Int memoryMb = javaXmxMb + 512
         # Additional * 2 because picard multiple metrics reads the reference fasta twice.
         Int timeMinutes = 1 + ceil(size(referenceFasta, "G") * 3 * 2) + ceil(size(inputBam, "G") * 6)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -284,7 +284,7 @@ task CollectRnaSeqMetrics {
         String memory = "9G"
         # With 6 minutes per G there were several timeouts.
         Int timeMinutes = 1 + ceil(size(inputBam, "G") * 12)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -342,7 +342,7 @@ task CollectTargetedPcrMetrics {
         String javaXmx = "3G"
         String memory = "4G"
         Int timeMinutes = 1 + ceil(size(inputBam, "G") * 6)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -404,7 +404,7 @@ task CollectVariantCallingMetrics {
         String javaXmx =  "8G"
         String memory = "9G"
         Int timeMinutes = 1440
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -453,7 +453,7 @@ task CreateSequenceDictionary {
 
         String javaXmx = "2G"
         String memory = "3G"
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -503,7 +503,7 @@ task GatherBamFiles {
         Int memoryMb = javaXmxMb + 512
         # One minute per input gigabyte.
         Int timeMinutes = 1 + ceil(size(inputBams, "G") * 1)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -558,7 +558,7 @@ task GatherVcfs {
         String javaXmx = "4G"
         String memory = "5G"
         Int timeMinutes = 1 + ceil(size(inputVcfs, "G") * 2)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -622,7 +622,7 @@ task MarkDuplicates {
         String memoryMb = javaXmxMb + 512
 
         Int timeMinutes = 1 + ceil(size(inputBams, "G") * 8)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     # Task is assuming query-sorted input so that the Secondary and Supplementary reads get
@@ -701,7 +701,7 @@ task MergeVCFs {
         String javaXmx = "4G"
         String memory = "5G"
         Int timeMinutes = 1 + ceil(size(inputVCFs, "G")) * 2
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     # Using MergeVcfs instead of GatherVcfs so we can create indices.
@@ -757,7 +757,7 @@ task SamToFastq {
         String javaXmx = "16G" # High memory default to avoid crashes.
         String memory = "17G"
         Int timeMinutes = 30
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
 
         File? noneFile
     }
@@ -818,7 +818,7 @@ task ScatterIntervalList {
 
         String javaXmx = "3G"
         String memory = "4G"
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -859,7 +859,7 @@ task SortSam {
         # GATK Best practices uses 75000 here: https://github.com/gatk-workflows/broad-prod-wgs-germline-snps-indels/blob/d2934ed656ade44801f9cfe1c0e78d4f80684b7b/PairedEndSingleSampleWf-fc-hg38.wdl#L778
         Int XmxGb = ceil(maxRecordsInRam / 125001.0)
         Int timeMinutes = 1 + ceil(size(inputBam, "G") * 3)
-        String dockerImage = "quay.io/biocontainers/picard:2.23.2--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
@@ -917,7 +917,7 @@ task SortVcf {
         String javaXmx = "8G"
         String memory = "9G"
         Int timeMinutes = 1 + ceil(size(vcfFiles, "G") * 5)
-        String dockerImage = "quay.io/biocontainers/picard:2.20.5--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
 
@@ -967,7 +967,7 @@ task RenameSample {
         String javaXmx = "8G"
         String memory = "9G"
         Int timeMinutes = 1 + ceil(size(inputVcf, "G") * 2)
-        String dockerImage = "quay.io/biocontainers/picard:2.19.0--0"
+        String dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
     }
 
     command {
diff --git a/samtools.wdl b/samtools.wdl
index 0aecf4eef533a5601af0ccc206287bdb575c5385..9042a0dfc42b0d3b8bb158ac9ee2fa902c633849 100644
--- a/samtools.wdl
+++ b/samtools.wdl
@@ -69,7 +69,7 @@ task Faidx {
         String outputDir
 
         String memory = "2G"
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     command {
@@ -118,7 +118,7 @@ task Fastq {
         Int threads = 1
         String memory = "1G"
         Int timeMinutes = 1 + ceil(size(inputBam) * 2)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     command {
@@ -180,7 +180,7 @@ task FilterShortReadsBam {
 
         String memory = "1G"
         Int timeMinutes = 1 + ceil(size(bamFile, "G") * 8)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     String outputPathBamIndex = sub(outputPathBam, "\.bam$", ".bai")
@@ -226,7 +226,7 @@ task Flagstat {
 
         String memory = "256M"  # Only 40.5 MiB used for 150G bam file.
         Int timeMinutes = 1 + ceil(size(inputBam, "G"))
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     command {
@@ -266,7 +266,7 @@ task Index {
 
         String memory = "2G"
         Int timeMinutes = 1 + ceil(size(bamFile, "G") * 4)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     # Select_first is needed, otherwise womtool validate fails.
@@ -317,7 +317,7 @@ task Markdup {
         String outputBamPath
 
         Int timeMinutes = 1 + ceil(size(inputBam, "G") * 2)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     command {
@@ -356,7 +356,7 @@ task Merge {
         Int threads = 1
         String memory = "4G"
         Int timeMinutes = 1 + ceil(size(bamFiles, "G") * 2)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     String indexPath = sub(outputBamPath, "\.bam$",".bai")
@@ -411,7 +411,7 @@ task Sort {
         Int threads = 1
         Int memoryGb = 1 + threads * memoryPerThreadGb
         Int timeMinutes = 1 + ceil(size(inputBam, "G") * 3)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     # Select first needed as outputPath is optional input (bug in cromwell).
@@ -523,7 +523,7 @@ task View {
         Int threads = 1
         String memory = "1G"
         Int timeMinutes = 1 + ceil(size(inFile, "G") * 5)
-        String dockerImage = "quay.io/biocontainers/samtools:1.10--h9402c20_2"
+        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
     }
 
     String outputIndexPath = basename(outputFileName) + ".bai"
diff --git a/scripts b/scripts
index 0cca0f40a8e9121e8dcc9e76838f85835a0d8e94..85e2ec542b65be5f2a25c22db05c28700fbe6db5 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit 0cca0f40a8e9121e8dcc9e76838f85835a0d8e94
+Subproject commit 85e2ec542b65be5f2a25c22db05c28700fbe6db5