diff --git a/CHANGELOG.md b/CHANGELOG.md
index 424dc76444073fce38836e0a6264c7ea7a5e6a9d..5e175c6df7be51f49ef55987266c2792ac21d54f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ that users understand how the changes affect the new version.
 
 version 5.0.0-dev
 ---------------------------
++ Update BCFTOOLS view: add options for filtering (include, exclude, excludeUncalled).
++ Duphold: add duphold.wdl.
 + Add new wdl file prepareShiny.wdl for creating input files for shiny app.
 + mergePacBio: Rename `mergedReport` to `outputPathMergedReport`.
 + Lima: Fix copy commands.
diff --git a/bcftools.wdl b/bcftools.wdl
index 28380dea78515f35122bd01be987cd6ecc0b7e80..4dc4edb5e4cccd9559fa5b260d83db79354e3a09 100644
--- a/bcftools.wdl
+++ b/bcftools.wdl
@@ -290,6 +290,10 @@ task View {
     input {
         File inputFile
         String outputPath = "output.vcf"
+        Boolean excludeUncalled = false
+
+        String? exclude
+        String? include
 
         String memory = "256M"
         Int timeMinutes = 1 + ceil(size(inputFile, "G"))
@@ -302,6 +306,9 @@ task View {
         set -e
         mkdir -p "$(dirname ~{outputPath})"
         bcftools view \
+        ~{"--exclude " + exclude} \
+        ~{"--include " + include} \
+        ~{true="--exclude-uncalled" false="" excludeUncalled} \
         -o ~{outputPath} \
         -O ~{true="z" false="v" compressed} \
         ~{inputFile}
@@ -324,6 +331,9 @@ task View {
         # inputs
         inputFile: {description: "A vcf or bcf file.", category: "required"}
         outputPath: {description: "The location the output VCF file should be written.", category: "common"}
+        include: {description: "Select sites for which the expression is true (see man page for details).", category: "advanced"}
+        exclude: {description: "Exclude sites for which the expression is true (see man page for details).", category: "advanced"}
+        excludeUncalled: {description: "Exclude sites without a called genotype (see man page for details).", category: "advanced"}
         memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}
         dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
diff --git a/duphold.wdl b/duphold.wdl
new file mode 100644
index 0000000000000000000000000000000000000000..80fe31d23bcfa8bc8a68c777005411615a441b2e
--- /dev/null
+++ b/duphold.wdl
@@ -0,0 +1,75 @@
+version 1.0
+
+# Copyright (c) 2020 Leiden University Medical Center
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+task Duphold {
+    input {
+        File inputVcf
+        File bamFile
+        File bamIndex
+        File referenceFasta
+        File referenceFastaFai
+        String sample
+        String outputPath = "./duphold.vcf"
+
+        String memory = "15G"
+        Int timeMinutes = 1440
+        String dockerImage = "quay.io/biocontainers/duphold:0.2.1--h516909a_1"
+    }
+
+    command {
+        set -e
+        mkdir -p "$(dirname ~{outputPath})"
+        export DUPHOLD_SAMPLE_NAME=~{sample}
+        duphold \
+        -v ~{inputVcf} \
+        -b ~{bamFile} \
+        -f ~{referenceFasta} \
+        -o ~{outputPath}
+    }
+
+    output {
+        File outputVcf = outputPath
+    }
+
+    runtime {
+        memory: memory
+        time_minutes: timeMinutes
+        docker: dockerImage
+    }
+
+    parameter_meta {
+        # inputs
+        inputVcf: {description: "The VCF file to process.", category: "required"}
+        bamFile: {description: "The bam file to process.", category: "required"}
+        bamIndex: {description: "The index of the bam file.", category: "required"}
+        referenceFasta: {description: "The reference fasta file also used for mapping.", category: "required"}
+        referenceFastaFai: {description: "Fasta index (.fai) file of the reference.", category: "required" }
+        sample: {description: "The name of the sample.", category: "required"}
+        outputPath: {description: "The location the output VCF file should be written.", category: "common"}
+        memory: {description: "The memory required to run the programs.", category: "advanced"}
+        timeMinutes: {description: "The maximum duration (in minutes) the tool is allowed to run.", category: "advanced"}
+        dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"}
+
+        # outputs
+        outputVcf: {description: "Duphold annotated VCF file."}
+    }
+}