diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml
index 410ee5e4..8371508c 100644
--- a/.github/workflows/website.yml
+++ b/.github/workflows/website.yml
@@ -23,4 +23,6 @@ jobs:
       - name: Build website (${{ env.DOCSPELL_VERSION }})
         run: nix-shell website/shell.nix --run "sbt make-website"
       - name: Publish website (${{ env.DOCSPELL_VERSION }})
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         run: sbt publish-website
diff --git a/Changelog.md b/Changelog.md
index 9ed82b94..1f628076 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,17 @@
 # Changelog
 
+## v0.25.0
+
+*Unreleased*
+
+### Rest API Changes
+
+- Removed `sec/collective/previews` endpoint, in favor for new
+  `admin/attachments/generatePreviews` endpoint which is now an admin
+  task to generate previews for all files. The now removed enpoint did
+  this only for one collective.
+
+
 ## v0.24.0
 
 *Jun 18, 2021*
@@ -61,6 +73,10 @@ state (the master branch). The `latest` tag points to the latest
 release. Each release is also tagged with its version number, like
 `v0.24.0`.
 
+The images changed slightly in that there is no assumption on where
+the config file is placed. Now you need to pass the docspell config
+file explicitely when using the images.
+
 Multiarch: Images are now build for `amd64`, `arm64` and `armv7`.
 
 The consumedir is being replaced by the more generic `docspell/tools`
@@ -80,7 +96,10 @@ The docker-compose setup is now at `docker/docker-compose`. Please
 look at the new [compose
 file](https://github.com/eikek/docspell/blob/master/docker/docker-compose/docker-compose.yml)
 and do the corresponding changes at yours. Especially the consumedir
-container changed significantly.
+container changed significantly. Then due to the fact that the config
+file must be given explicitely, you need to add this argument to each
+docspell component (restserver and joex) via a `command` section (see
+the compose file referenced above).
 
 The `.envrc` has been cleaned from some settings. Since the config
 files is mounted into the image, you can just edit this file instead.
@@ -912,7 +931,7 @@ improvements for processing files.
   upload the file into memory for nothing if something fails (e.g. the
   source doesn't exist)
 - Re-process files. A
-  [route](https://docspell.org/openapi/docspell-openapi.html#api-Item-secItemItemIdReprocessPost)
+  [route](https://docspell.org/openapi/docspell-openapi.html#operation/sec-item-start-reprocess)
   has been added that submits files for re-processing. It is possible
   to re-process some files of an item or all. There is no UI for this
   for now. You'd need to run `curl` or something manually to trigger
diff --git a/NOTICE.txt b/NOTICE.txt
index 92cbb9bf..227d8733 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,5 +1,5 @@
 Docspell
-Copyright 2019-2021, Eike Kettner
+Copyright 2019-2021, Eike Kettner and Contributors
 Licensed under the GPLv3 or later
 
 This software contains portions of code from tika-parser
diff --git a/build.sbt b/build.sbt
index 1aca4bf2..849d7a71 100644
--- a/build.sbt
+++ b/build.sbt
@@ -2,6 +2,7 @@ import com.github.eikek.sbt.openapi._
 import scala.sys.process._
 import com.typesafe.sbt.SbtGit.GitKeys._
 import docspell.build._
+import de.heikoseeberger.sbtheader.CommentBlockCreator
 
 val toolsPackage   = taskKey[Seq[File]]("Package the scripts/extension tools")
 val elmCompileMode = settingKey[ElmCompileMode]("How to compile elm sources")
@@ -20,6 +21,13 @@ val scalafixSettings = Seq(
 val sharedSettings = Seq(
   organization := "com.github.eikek",
   scalaVersion := "2.13.6",
+  organizationName := "Docspell Contributors",
+  licenses += ("GPL-3.0-or-later", url(
+    "https://spdx.org/licenses/GPL-3.0-or-later.html"
+  )),
+  startYear := Some(2020),
+  headerLicenseStyle := HeaderLicenseStyle.SpdxSyntax,
+  headerSources / excludeFilter := HiddenFileFilter || "*.java" || "StringUtil.scala",
   scalacOptions ++= Seq(
     "-deprecation",
     "-encoding",
@@ -35,6 +43,7 @@ val sharedSettings = Seq(
     "-Wvalue-discard",
     "-Wnumeric-widen"
   ),
+  javacOptions ++= Seq("-target", "1.8", "-source", "1.8"),
   LocalRootProject / toolsPackage := {
     val v      = version.value
     val logger = streams.value.log
@@ -75,7 +84,13 @@ val elmSettings = Seq(
     (Compile / sourceDirectory).value / "elm",
     FileFilter.globFilter("*.elm"),
     HiddenFileFilter
-  )
+  ),
+  Compile / unmanagedSourceDirectories += (Compile / sourceDirectory).value / "elm",
+  headerSources / includeFilter := "*.elm",
+  headerMappings := headerMappings.value + (HeaderFileType("elm") -> HeaderCommentStyle(
+    new CommentBlockCreator("{-", " ", "-}"),
+    HeaderPattern.commentBetween("\\{\\-", " ", "\\-\\}")
+  ))
 )
 val stylesSettings = Seq(
   stylesMode := StylesMode.Dev,
@@ -113,7 +128,7 @@ def webjarSettings(queryJS: Project) = Seq(
 
 def debianSettings(cfgFile: String) =
   Seq(
-    maintainer := "Eike Kettner <eike.kettner@posteo.de>",
+    maintainer := "Eike Kettner <eikek@posteo.de>",
     Universal / mappings += {
       val conf = (Compile / resourceDirectory).value / "reference.conf"
       if (!conf.exists)
@@ -788,8 +803,11 @@ addCommandAlias("make-pkg", ";clean ;make ;make-zip ;make-deb ;make-tools")
 addCommandAlias("ci", "make; lint; test")
 addCommandAlias(
   "lint",
-  "restapi/openapiLint; joexapi/openapiLint; scalafmtSbtCheck; scalafmtCheckAll; Compile/scalafix --check; Test/scalafix --check"
+  "restapi/openapiLint; joexapi/openapiLint; headerCheck; scalafmtSbtCheck; scalafmtCheckAll; Compile/scalafix --check; Test/scalafix --check"
+)
+addCommandAlias(
+  "fix",
+  "headerCreateAll; Compile/scalafix; Test/scalafix; scalafmtSbt; scalafmtAll"
 )
-addCommandAlias("fix", "Compile/scalafix; Test/scalafix; scalafmtSbt; scalafmtAll")
 addCommandAlias("make-website", ";website/clean ;website/zolaBuild ;website/zolaCheck")
 addCommandAlias("publish-website", "website/publishToGitHubPages")
diff --git a/docker/docker-compose/docspell.conf b/docker/docker-compose/docspell.conf
index 03feea5e..963d3ed9 100644
--- a/docker/docker-compose/docspell.conf
+++ b/docker/docker-compose/docspell.conf
@@ -18,7 +18,7 @@
 db_url="jdbc:postgresql://db:5432/dbname"
 db_user="dbuser"
 db_pass="dbpass"
-solr_url="http://docspell-solr:8983/docspell"
+solr_url="http://docspell-solr:8983/solr/docspell"
 
 
 # This configures the restserver
@@ -34,6 +34,17 @@ docspell.server {
       header-value = ${?DOCSPELL_HEADER_VALUE}
     }
   }
+
+  # This is a special endpoint that allows some basic administration.
+  #
+  # This is used for some endpoints, for example:
+  # - re-create complete fulltext index:
+  #   curl -XPOST -H'Docspell-Admin-Secret: xyz' http://localhost:7880/api/v1/admin/fts/reIndexAll
+  admin-endpoint {
+    # The secret. If empty, the endpoint is disabled.
+    secret = ""
+  }
+
   # Configuration of the full-text search engine.
   full-text-search {
     enabled = true
diff --git a/modules/analysis/src/main/scala/docspell/analysis/NlpSettings.scala b/modules/analysis/src/main/scala/docspell/analysis/NlpSettings.scala
index a1b426e5..b3a2bff2 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/NlpSettings.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/NlpSettings.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/TextAnalyser.scala b/modules/analysis/src/main/scala/docspell/analysis/TextAnalyser.scala
index 6f0c8dd8..657a6f6a 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/TextAnalyser.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/TextAnalyser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis
 
 import cats.Applicative
diff --git a/modules/analysis/src/main/scala/docspell/analysis/TextAnalysisConfig.scala b/modules/analysis/src/main/scala/docspell/analysis/TextAnalysisConfig.scala
index abc92043..d8b8e524 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/TextAnalysisConfig.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/TextAnalysisConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis
 
 import docspell.analysis.TextAnalysisConfig.NlpConfig
diff --git a/modules/analysis/src/main/scala/docspell/analysis/classifier/ClassifierModel.scala b/modules/analysis/src/main/scala/docspell/analysis/classifier/ClassifierModel.scala
index 071a8e29..81e54f10 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/classifier/ClassifierModel.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/classifier/ClassifierModel.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.classifier
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/classifier/StanfordTextClassifier.scala b/modules/analysis/src/main/scala/docspell/analysis/classifier/StanfordTextClassifier.scala
index 14257b40..a4a416c0 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/classifier/StanfordTextClassifier.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/classifier/StanfordTextClassifier.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.classifier
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifier.scala b/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifier.scala
index 3569f499..e90b1672 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifier.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifier.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.classifier
 
 import cats.data.Kleisli
diff --git a/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifierConfig.scala b/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifierConfig.scala
index bb628ebf..a27a7b15 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifierConfig.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/classifier/TextClassifierConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.classifier
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/contact/Contact.scala b/modules/analysis/src/main/scala/docspell/analysis/contact/Contact.scala
index 175f293f..1ff1d3f6 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/contact/Contact.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/contact/Contact.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.contact
 
 import cats.implicits._
diff --git a/modules/analysis/src/main/scala/docspell/analysis/contact/Domain.scala b/modules/analysis/src/main/scala/docspell/analysis/contact/Domain.scala
index 31afdbd0..ae4eaa0b 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/contact/Domain.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/contact/Domain.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.contact
 
 import cats.data.NonEmptyList
diff --git a/modules/analysis/src/main/scala/docspell/analysis/contact/Tld.scala b/modules/analysis/src/main/scala/docspell/analysis/contact/Tld.scala
index df76fada..19853ded 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/contact/Tld.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/contact/Tld.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.contact
 
 private[analysis] object Tld {
diff --git a/modules/analysis/src/main/scala/docspell/analysis/date/DateFind.scala b/modules/analysis/src/main/scala/docspell/analysis/date/DateFind.scala
index a36a2698..038dba08 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/date/DateFind.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/date/DateFind.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.date
 
 import java.time.LocalDate
diff --git a/modules/analysis/src/main/scala/docspell/analysis/date/MonthName.scala b/modules/analysis/src/main/scala/docspell/analysis/date/MonthName.scala
index bc117d95..8a5852d0 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/date/MonthName.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/date/MonthName.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.date
 
 import docspell.common.Language
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/Annotator.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/Annotator.scala
index d509805a..ae5620fc 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/Annotator.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/Annotator.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import cats.effect.Sync
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/BasicCRFAnnotator.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/BasicCRFAnnotator.scala
index 76ffe7c6..28484b74 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/BasicCRFAnnotator.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/BasicCRFAnnotator.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import java.net.URL
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/LabelConverter.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/LabelConverter.scala
index c32a532d..b73ea792 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/LabelConverter.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/LabelConverter.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import docspell.common.{NerLabel, NerTag}
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala
index 0a34b0b0..0b530715 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/PipelineCache.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import scala.concurrent.duration.{Duration => _, _}
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/Properties.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/Properties.scala
index 75fe9d36..d2f942f3 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/Properties.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/Properties.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerAnnotator.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerAnnotator.scala
index 2ec4e802..ad0ebc0f 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerAnnotator.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerAnnotator.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerSettings.scala b/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerSettings.scala
index fd0a7ecd..3ca25578 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerSettings.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/nlp/StanfordNerSettings.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import java.nio.file.Path
diff --git a/modules/analysis/src/main/scala/docspell/analysis/split/TextSplitter.scala b/modules/analysis/src/main/scala/docspell/analysis/split/TextSplitter.scala
index deebd448..5b2a4797 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/split/TextSplitter.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/split/TextSplitter.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.split
 
 import fs2.Stream
diff --git a/modules/analysis/src/main/scala/docspell/analysis/split/Word.scala b/modules/analysis/src/main/scala/docspell/analysis/split/Word.scala
index f68f0af7..4e2bae63 100644
--- a/modules/analysis/src/main/scala/docspell/analysis/split/Word.scala
+++ b/modules/analysis/src/main/scala/docspell/analysis/split/Word.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.split
 
 case class Word(value: String, begin: Int, end: Int) {
diff --git a/modules/analysis/src/test/scala/docspell/analysis/Env.scala b/modules/analysis/src/test/scala/docspell/analysis/Env.scala
index dec26074..4d222413 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/Env.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/Env.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis
 
 object Env {
diff --git a/modules/analysis/src/test/scala/docspell/analysis/classifier/StanfordTextClassifierSuite.scala b/modules/analysis/src/test/scala/docspell/analysis/classifier/StanfordTextClassifierSuite.scala
index fe448f3f..87588041 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/classifier/StanfordTextClassifierSuite.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/classifier/StanfordTextClassifierSuite.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.classifier
 
 import java.nio.file.Paths
diff --git a/modules/analysis/src/test/scala/docspell/analysis/contact/ContactAnnotateSpec.scala b/modules/analysis/src/test/scala/docspell/analysis/contact/ContactAnnotateSpec.scala
index f9f5d9e4..4cfc8d2a 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/contact/ContactAnnotateSpec.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/contact/ContactAnnotateSpec.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.contact
 
 import docspell.common.{NerLabel, NerTag}
diff --git a/modules/analysis/src/test/scala/docspell/analysis/date/DateFindSpec.scala b/modules/analysis/src/test/scala/docspell/analysis/date/DateFindSpec.scala
index 6d014868..7784fd2f 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/date/DateFindSpec.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/date/DateFindSpec.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.date
 
 import java.time._
diff --git a/modules/analysis/src/test/scala/docspell/analysis/nlp/BaseCRFAnnotatorSuite.scala b/modules/analysis/src/test/scala/docspell/analysis/nlp/BaseCRFAnnotatorSuite.scala
index e760532f..accf4560 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/nlp/BaseCRFAnnotatorSuite.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/nlp/BaseCRFAnnotatorSuite.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import docspell.analysis.Env
diff --git a/modules/analysis/src/test/scala/docspell/analysis/nlp/StanfordNerAnnotatorSuite.scala b/modules/analysis/src/test/scala/docspell/analysis/nlp/StanfordNerAnnotatorSuite.scala
index e3119467..1e6463bd 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/nlp/StanfordNerAnnotatorSuite.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/nlp/StanfordNerAnnotatorSuite.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.nlp
 
 import java.nio.file.Paths
diff --git a/modules/analysis/src/test/scala/docspell/analysis/split/TestSplitterSpec.scala b/modules/analysis/src/test/scala/docspell/analysis/split/TestSplitterSpec.scala
index 81c37702..f1129b36 100644
--- a/modules/analysis/src/test/scala/docspell/analysis/split/TestSplitterSpec.scala
+++ b/modules/analysis/src/test/scala/docspell/analysis/split/TestSplitterSpec.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.analysis.split
 
 import munit._
diff --git a/modules/backend/src/main/scala/docspell/backend/BackendApp.scala b/modules/backend/src/main/scala/docspell/backend/BackendApp.scala
index eddbd161..59d27658 100644
--- a/modules/backend/src/main/scala/docspell/backend/BackendApp.scala
+++ b/modules/backend/src/main/scala/docspell/backend/BackendApp.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/backend/src/main/scala/docspell/backend/Common.scala b/modules/backend/src/main/scala/docspell/backend/Common.scala
index bf16e8eb..0afcddb7 100644
--- a/modules/backend/src/main/scala/docspell/backend/Common.scala
+++ b/modules/backend/src/main/scala/docspell/backend/Common.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend
 
 import cats.effect._
diff --git a/modules/backend/src/main/scala/docspell/backend/Config.scala b/modules/backend/src/main/scala/docspell/backend/Config.scala
index 830363a2..8204b11d 100644
--- a/modules/backend/src/main/scala/docspell/backend/Config.scala
+++ b/modules/backend/src/main/scala/docspell/backend/Config.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend
 
 import docspell.backend.signup.{Config => SignupConfig}
diff --git a/modules/backend/src/main/scala/docspell/backend/JobFactory.scala b/modules/backend/src/main/scala/docspell/backend/JobFactory.scala
index 56ac2566..e1d11a9d 100644
--- a/modules/backend/src/main/scala/docspell/backend/JobFactory.scala
+++ b/modules/backend/src/main/scala/docspell/backend/JobFactory.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend
 
 import cats.effect._
@@ -139,23 +145,26 @@ object JobFactory {
       prio: Priority,
       tracker: Option[Ident]
   ): F[Vector[RJob]] = {
-    def create(id: Ident, now: Timestamp, arg: ProcessItemArgs): RJob =
-      RJob.newJob(
-        id,
-        ProcessItemArgs.taskName,
-        account.collective,
-        arg,
-        arg.makeSubject,
-        now,
-        account.user,
-        prio,
-        tracker
-      )
+    def create(now: Timestamp, arg: ProcessItemArgs): F[RJob] =
+      Ident
+        .randomId[F]
+        .map(id =>
+          RJob.newJob(
+            id,
+            ProcessItemArgs.taskName,
+            account.collective,
+            arg,
+            arg.makeSubject,
+            now,
+            account.user,
+            prio,
+            tracker
+          )
+        )
 
     for {
-      id  <- Ident.randomId[F]
-      now <- Timestamp.current[F]
-      jobs = args.map(a => create(id, now, a))
+      now  <- Timestamp.current[F]
+      jobs <- args.traverse(a => create(now, a))
     } yield jobs
   }
 
diff --git a/modules/backend/src/main/scala/docspell/backend/PasswordCrypt.scala b/modules/backend/src/main/scala/docspell/backend/PasswordCrypt.scala
index 965ffb02..722dc26b 100644
--- a/modules/backend/src/main/scala/docspell/backend/PasswordCrypt.scala
+++ b/modules/backend/src/main/scala/docspell/backend/PasswordCrypt.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend
 
 import docspell.common.Password
diff --git a/modules/backend/src/main/scala/docspell/backend/auth/AuthToken.scala b/modules/backend/src/main/scala/docspell/backend/auth/AuthToken.scala
index 05524902..07ea592f 100644
--- a/modules/backend/src/main/scala/docspell/backend/auth/AuthToken.scala
+++ b/modules/backend/src/main/scala/docspell/backend/auth/AuthToken.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.auth
 
 import java.time.Instant
diff --git a/modules/backend/src/main/scala/docspell/backend/auth/Login.scala b/modules/backend/src/main/scala/docspell/backend/auth/Login.scala
index 94cfa660..51fbcc5f 100644
--- a/modules/backend/src/main/scala/docspell/backend/auth/Login.scala
+++ b/modules/backend/src/main/scala/docspell/backend/auth/Login.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.auth
 
 import cats.data.OptionT
diff --git a/modules/backend/src/main/scala/docspell/backend/auth/RememberToken.scala b/modules/backend/src/main/scala/docspell/backend/auth/RememberToken.scala
index b40d4c00..8d634fbf 100644
--- a/modules/backend/src/main/scala/docspell/backend/auth/RememberToken.scala
+++ b/modules/backend/src/main/scala/docspell/backend/auth/RememberToken.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.auth
 
 import java.time.Instant
diff --git a/modules/backend/src/main/scala/docspell/backend/auth/TokenUtil.scala b/modules/backend/src/main/scala/docspell/backend/auth/TokenUtil.scala
index 66343d69..470798c5 100644
--- a/modules/backend/src/main/scala/docspell/backend/auth/TokenUtil.scala
+++ b/modules/backend/src/main/scala/docspell/backend/auth/TokenUtil.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.auth
 
 import javax.crypto.Mac
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OClientSettings.scala b/modules/backend/src/main/scala/docspell/backend/ops/OClientSettings.scala
index cf467b89..b76b2fc1 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OClientSettings.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OClientSettings.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.OptionT
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OCollective.scala b/modules/backend/src/main/scala/docspell/backend/ops/OCollective.scala
index 8510703e..9a598726 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OCollective.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OCollective.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala b/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala
index 4d370ee4..c4f9af78 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OCustomFields.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.EitherT
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OEquipment.scala b/modules/backend/src/main/scala/docspell/backend/ops/OEquipment.scala
index 4dcd1a92..984b351d 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OEquipment.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OEquipment.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OFolder.scala b/modules/backend/src/main/scala/docspell/backend/ops/OFolder.scala
index d5ac1270..ad9e0c74 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OFolder.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OFolder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect._
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OFulltext.scala b/modules/backend/src/main/scala/docspell/backend/ops/OFulltext.scala
index 1a8e1ebd..6e00666e 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OFulltext.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OFulltext.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.NonEmptyList
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala b/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala
index 423949f9..135162da 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.{NonEmptyList, OptionT}
@@ -187,6 +193,14 @@ trait OItem[F[_]] {
       account: AccountId,
       notifyJoex: Boolean
   ): F[UpdateResult]
+
+  /** Submits a task that (re)generates the preview images for all
+    * attachments.
+    */
+  def generateAllPreviews(
+      storeMode: MakePreviewArgs.StoreMode,
+      notifyJoex: Boolean
+  ): F[UpdateResult]
 }
 
 object OItem {
@@ -693,6 +707,16 @@ object OItem {
             _   <- if (notifyJoex) joex.notifyAllNodes else ().pure[F]
           } yield UpdateResult.success
 
+        def generateAllPreviews(
+            storeMode: MakePreviewArgs.StoreMode,
+            notifyJoex: Boolean
+        ): F[UpdateResult] =
+          for {
+            job <- JobFactory.allPreviews[F](AllPreviewsArgs(None, storeMode), None)
+            _   <- queue.insertIfNew(job)
+            _   <- if (notifyJoex) joex.notifyAllNodes else ().pure[F]
+          } yield UpdateResult.success
+
         private def onSuccessIgnoreError(update: F[Unit])(ar: UpdateResult): F[Unit] =
           ar match {
             case UpdateResult.Success =>
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OItemSearch.scala b/modules/backend/src/main/scala/docspell/backend/ops/OItemSearch.scala
index 756f7f41..3abc6771 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OItemSearch.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OItemSearch.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.OptionT
@@ -49,7 +55,7 @@ trait OItemSearch[F[_]] {
 
   def findByFileCollective(checksum: String, collective: Ident): F[Vector[RItem]]
 
-  def findByFileSource(checksum: String, sourceId: Ident): F[Vector[RItem]]
+  def findByFileSource(checksum: String, sourceId: Ident): F[Option[Vector[RItem]]]
 
 }
 
@@ -274,11 +280,11 @@ object OItemSearch {
       def findByFileCollective(checksum: String, collective: Ident): F[Vector[RItem]] =
         store.transact(QItem.findByChecksum(checksum, collective, Set.empty))
 
-      def findByFileSource(checksum: String, sourceId: Ident): F[Vector[RItem]] =
+      def findByFileSource(checksum: String, sourceId: Ident): F[Option[Vector[RItem]]] =
         store.transact((for {
           coll  <- OptionT(RSource.findCollective(sourceId))
           items <- OptionT.liftF(QItem.findByChecksum(checksum, coll, Set.empty))
-        } yield items).getOrElse(Vector.empty))
+        } yield items).value)
 
     })
 }
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OJob.scala b/modules/backend/src/main/scala/docspell/backend/ops/OJob.scala
index 6809f259..16922ae3 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OJob.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OJob.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.OptionT
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OJoex.scala b/modules/backend/src/main/scala/docspell/backend/ops/OJoex.scala
index f0c6dd39..9971da9b 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OJoex.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OJoex.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OMail.scala b/modules/backend/src/main/scala/docspell/backend/ops/OMail.scala
index d23086e8..9366a45a 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OMail.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OMail.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.OptionT
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/ONode.scala b/modules/backend/src/main/scala/docspell/backend/ops/ONode.scala
index 647bd319..97fd0dd8 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/ONode.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/ONode.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OOrganization.scala b/modules/backend/src/main/scala/docspell/backend/ops/OOrganization.scala
index 53e690c3..64c664f5 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OOrganization.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OOrganization.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OSimpleSearch.scala b/modules/backend/src/main/scala/docspell/backend/ops/OSimpleSearch.scala
index 22f2b949..34e015b1 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OSimpleSearch.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OSimpleSearch.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.Applicative
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OSource.scala b/modules/backend/src/main/scala/docspell/backend/ops/OSource.scala
index 4e07620a..be526702 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OSource.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OSource.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OTag.scala b/modules/backend/src/main/scala/docspell/backend/ops/OTag.scala
index 6531714b..ce500aec 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OTag.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OTag.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OUpload.scala b/modules/backend/src/main/scala/docspell/backend/ops/OUpload.scala
index b87f420b..cb92f251 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OUpload.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OUpload.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.Functor
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OUserTask.scala b/modules/backend/src/main/scala/docspell/backend/ops/OUserTask.scala
index 0e3ae2f1..c7583c04 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/OUserTask.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/OUserTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import cats.data.OptionT
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/SendResult.scala b/modules/backend/src/main/scala/docspell/backend/ops/SendResult.scala
index f64f48f6..4ada98b5 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/SendResult.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/SendResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 import docspell.common._
diff --git a/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala b/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala
index 3da10172..d70fcd5b 100644
--- a/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala
+++ b/modules/backend/src/main/scala/docspell/backend/ops/WildcardString.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.ops
 
 final class WildcardString private (str: String) {
diff --git a/modules/backend/src/main/scala/docspell/backend/signup/Config.scala b/modules/backend/src/main/scala/docspell/backend/signup/Config.scala
index 0635044d..599b071f 100644
--- a/modules/backend/src/main/scala/docspell/backend/signup/Config.scala
+++ b/modules/backend/src/main/scala/docspell/backend/signup/Config.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.signup
 
 import docspell.common.{Duration, Password}
diff --git a/modules/backend/src/main/scala/docspell/backend/signup/NewInviteResult.scala b/modules/backend/src/main/scala/docspell/backend/signup/NewInviteResult.scala
index 88b7d59a..855e26c1 100644
--- a/modules/backend/src/main/scala/docspell/backend/signup/NewInviteResult.scala
+++ b/modules/backend/src/main/scala/docspell/backend/signup/NewInviteResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.signup
 
 import docspell.common.Ident
diff --git a/modules/backend/src/main/scala/docspell/backend/signup/OSignup.scala b/modules/backend/src/main/scala/docspell/backend/signup/OSignup.scala
index a2f797b2..aae3ffe4 100644
--- a/modules/backend/src/main/scala/docspell/backend/signup/OSignup.scala
+++ b/modules/backend/src/main/scala/docspell/backend/signup/OSignup.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.signup
 
 import cats.effect.{Async, Resource}
diff --git a/modules/backend/src/main/scala/docspell/backend/signup/SignupResult.scala b/modules/backend/src/main/scala/docspell/backend/signup/SignupResult.scala
index 585cf296..7e664c0b 100644
--- a/modules/backend/src/main/scala/docspell/backend/signup/SignupResult.scala
+++ b/modules/backend/src/main/scala/docspell/backend/signup/SignupResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.backend.signup
 
 import docspell.store.AddResult
diff --git a/modules/common/src/main/scala/docspell/common/AccountId.scala b/modules/common/src/main/scala/docspell/common/AccountId.scala
index 5ff4cd8d..59044be1 100644
--- a/modules/common/src/main/scala/docspell/common/AccountId.scala
+++ b/modules/common/src/main/scala/docspell/common/AccountId.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe._
diff --git a/modules/common/src/main/scala/docspell/common/AllPreviewsArgs.scala b/modules/common/src/main/scala/docspell/common/AllPreviewsArgs.scala
index b4ee054f..a5815e9e 100644
--- a/modules/common/src/main/scala/docspell/common/AllPreviewsArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/AllPreviewsArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.generic.semiauto._
diff --git a/modules/common/src/main/scala/docspell/common/Banner.scala b/modules/common/src/main/scala/docspell/common/Banner.scala
index 52d1f7a0..4ab2940d 100644
--- a/modules/common/src/main/scala/docspell/common/Banner.scala
+++ b/modules/common/src/main/scala/docspell/common/Banner.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 case class Banner(
diff --git a/modules/common/src/main/scala/docspell/common/BaseJsonCodecs.scala b/modules/common/src/main/scala/docspell/common/BaseJsonCodecs.scala
index 65a41e16..83248ffc 100644
--- a/modules/common/src/main/scala/docspell/common/BaseJsonCodecs.scala
+++ b/modules/common/src/main/scala/docspell/common/BaseJsonCodecs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.Instant
diff --git a/modules/common/src/main/scala/docspell/common/Binary.scala b/modules/common/src/main/scala/docspell/common/Binary.scala
index 74fb27e2..67693b56 100644
--- a/modules/common/src/main/scala/docspell/common/Binary.scala
+++ b/modules/common/src/main/scala/docspell/common/Binary.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.nio.charset.Charset
diff --git a/modules/common/src/main/scala/docspell/common/ByteSize.scala b/modules/common/src/main/scala/docspell/common/ByteSize.scala
index 3f6e4ccc..fecfc534 100644
--- a/modules/common/src/main/scala/docspell/common/ByteSize.scala
+++ b/modules/common/src/main/scala/docspell/common/ByteSize.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.Decoder
diff --git a/modules/common/src/main/scala/docspell/common/CollectiveState.scala b/modules/common/src/main/scala/docspell/common/CollectiveState.scala
index 04e42128..1846c0db 100644
--- a/modules/common/src/main/scala/docspell/common/CollectiveState.scala
+++ b/modules/common/src/main/scala/docspell/common/CollectiveState.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.{Decoder, Encoder}
diff --git a/modules/common/src/main/scala/docspell/common/ContactKind.scala b/modules/common/src/main/scala/docspell/common/ContactKind.scala
index e8a97ce7..152ce4aa 100644
--- a/modules/common/src/main/scala/docspell/common/ContactKind.scala
+++ b/modules/common/src/main/scala/docspell/common/ContactKind.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.{Decoder, Encoder}
diff --git a/modules/common/src/main/scala/docspell/common/ConvertAllPdfArgs.scala b/modules/common/src/main/scala/docspell/common/ConvertAllPdfArgs.scala
index eb2978d7..a31beccf 100644
--- a/modules/common/src/main/scala/docspell/common/ConvertAllPdfArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/ConvertAllPdfArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe._
diff --git a/modules/common/src/main/scala/docspell/common/CustomFieldType.scala b/modules/common/src/main/scala/docspell/common/CustomFieldType.scala
index 55f9b6bf..e1a457c4 100644
--- a/modules/common/src/main/scala/docspell/common/CustomFieldType.scala
+++ b/modules/common/src/main/scala/docspell/common/CustomFieldType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.LocalDate
diff --git a/modules/common/src/main/scala/docspell/common/DataType.scala b/modules/common/src/main/scala/docspell/common/DataType.scala
index 4fba074e..05a37088 100644
--- a/modules/common/src/main/scala/docspell/common/DataType.scala
+++ b/modules/common/src/main/scala/docspell/common/DataType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 sealed trait DataType {}
diff --git a/modules/common/src/main/scala/docspell/common/Direction.scala b/modules/common/src/main/scala/docspell/common/Direction.scala
index cb4bcb4c..244b9799 100644
--- a/modules/common/src/main/scala/docspell/common/Direction.scala
+++ b/modules/common/src/main/scala/docspell/common/Direction.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.{Decoder, Encoder}
diff --git a/modules/common/src/main/scala/docspell/common/DocspellSystem.scala b/modules/common/src/main/scala/docspell/common/DocspellSystem.scala
index def2ade2..a055f1c0 100644
--- a/modules/common/src/main/scala/docspell/common/DocspellSystem.scala
+++ b/modules/common/src/main/scala/docspell/common/DocspellSystem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 object DocspellSystem {
diff --git a/modules/common/src/main/scala/docspell/common/Duration.scala b/modules/common/src/main/scala/docspell/common/Duration.scala
index 74081c76..c7d8b9ad 100644
--- a/modules/common/src/main/scala/docspell/common/Duration.scala
+++ b/modules/common/src/main/scala/docspell/common/Duration.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.{Duration => JDur}
diff --git a/modules/common/src/main/scala/docspell/common/EnvMode.scala b/modules/common/src/main/scala/docspell/common/EnvMode.scala
index d3bdfcf5..635394ce 100644
--- a/modules/common/src/main/scala/docspell/common/EnvMode.scala
+++ b/modules/common/src/main/scala/docspell/common/EnvMode.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.implicits._
diff --git a/modules/common/src/main/scala/docspell/common/EquipmentUse.scala b/modules/common/src/main/scala/docspell/common/EquipmentUse.scala
index 9841da59..4437beaa 100644
--- a/modules/common/src/main/scala/docspell/common/EquipmentUse.scala
+++ b/modules/common/src/main/scala/docspell/common/EquipmentUse.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/File.scala b/modules/common/src/main/scala/docspell/common/File.scala
index c27c369c..9dd2c3e4 100644
--- a/modules/common/src/main/scala/docspell/common/File.scala
+++ b/modules/common/src/main/scala/docspell/common/File.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.nio.file.Path
diff --git a/modules/common/src/main/scala/docspell/common/FileName.scala b/modules/common/src/main/scala/docspell/common/FileName.scala
index 1bc9184c..3649d802 100644
--- a/modules/common/src/main/scala/docspell/common/FileName.scala
+++ b/modules/common/src/main/scala/docspell/common/FileName.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 case class FileName private (name: String) {
diff --git a/modules/common/src/main/scala/docspell/common/Glob.scala b/modules/common/src/main/scala/docspell/common/Glob.scala
index 6a41057e..52795bf8 100644
--- a/modules/common/src/main/scala/docspell/common/Glob.scala
+++ b/modules/common/src/main/scala/docspell/common/Glob.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/Hash.scala b/modules/common/src/main/scala/docspell/common/Hash.scala
index a3c3c6ad..cb888205 100644
--- a/modules/common/src/main/scala/docspell/common/Hash.scala
+++ b/modules/common/src/main/scala/docspell/common/Hash.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.nio.charset.StandardCharsets
diff --git a/modules/common/src/main/scala/docspell/common/IdRef.scala b/modules/common/src/main/scala/docspell/common/IdRef.scala
index 918030e7..3b334fbc 100644
--- a/modules/common/src/main/scala/docspell/common/IdRef.scala
+++ b/modules/common/src/main/scala/docspell/common/IdRef.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.Order
diff --git a/modules/common/src/main/scala/docspell/common/Ident.scala b/modules/common/src/main/scala/docspell/common/Ident.scala
index 3e30d9d4..37f7a7d4 100644
--- a/modules/common/src/main/scala/docspell/common/Ident.scala
+++ b/modules/common/src/main/scala/docspell/common/Ident.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.security.SecureRandom
diff --git a/modules/common/src/main/scala/docspell/common/ItemQueryString.scala b/modules/common/src/main/scala/docspell/common/ItemQueryString.scala
index 08303eb0..5a4d5744 100644
--- a/modules/common/src/main/scala/docspell/common/ItemQueryString.scala
+++ b/modules/common/src/main/scala/docspell/common/ItemQueryString.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 final case class ItemQueryString(query: String) {
diff --git a/modules/common/src/main/scala/docspell/common/ItemState.scala b/modules/common/src/main/scala/docspell/common/ItemState.scala
index a839476f..70ed7e04 100644
--- a/modules/common/src/main/scala/docspell/common/ItemState.scala
+++ b/modules/common/src/main/scala/docspell/common/ItemState.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/JobState.scala b/modules/common/src/main/scala/docspell/common/JobState.scala
index 0ab68584..4eb687a4 100644
--- a/modules/common/src/main/scala/docspell/common/JobState.scala
+++ b/modules/common/src/main/scala/docspell/common/JobState.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/JvmInfo.scala b/modules/common/src/main/scala/docspell/common/JvmInfo.scala
index 35852c98..adcd96b2 100644
--- a/modules/common/src/main/scala/docspell/common/JvmInfo.scala
+++ b/modules/common/src/main/scala/docspell/common/JvmInfo.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.Instant
diff --git a/modules/common/src/main/scala/docspell/common/Language.scala b/modules/common/src/main/scala/docspell/common/Language.scala
index 13ea7ac0..a3e012fa 100644
--- a/modules/common/src/main/scala/docspell/common/Language.scala
+++ b/modules/common/src/main/scala/docspell/common/Language.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/LearnClassifierArgs.scala b/modules/common/src/main/scala/docspell/common/LearnClassifierArgs.scala
index 9cfa9395..54be5407 100644
--- a/modules/common/src/main/scala/docspell/common/LearnClassifierArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/LearnClassifierArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import docspell.common.syntax.all._
diff --git a/modules/common/src/main/scala/docspell/common/LenientUri.scala b/modules/common/src/main/scala/docspell/common/LenientUri.scala
index 4193162f..1cc4cb90 100644
--- a/modules/common/src/main/scala/docspell/common/LenientUri.scala
+++ b/modules/common/src/main/scala/docspell/common/LenientUri.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.net.HttpURLConnection
diff --git a/modules/common/src/main/scala/docspell/common/ListType.scala b/modules/common/src/main/scala/docspell/common/ListType.scala
index d2b29e91..17d8b8b4 100644
--- a/modules/common/src/main/scala/docspell/common/ListType.scala
+++ b/modules/common/src/main/scala/docspell/common/ListType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/LogLevel.scala b/modules/common/src/main/scala/docspell/common/LogLevel.scala
index d2404d98..69b05d9f 100644
--- a/modules/common/src/main/scala/docspell/common/LogLevel.scala
+++ b/modules/common/src/main/scala/docspell/common/LogLevel.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.{Decoder, Encoder}
diff --git a/modules/common/src/main/scala/docspell/common/Logger.scala b/modules/common/src/main/scala/docspell/common/Logger.scala
index 6b340cce..3a7fe370 100644
--- a/modules/common/src/main/scala/docspell/common/Logger.scala
+++ b/modules/common/src/main/scala/docspell/common/Logger.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.effect.Sync
diff --git a/modules/common/src/main/scala/docspell/common/MailSendConfig.scala b/modules/common/src/main/scala/docspell/common/MailSendConfig.scala
index ae05b496..8617cc18 100644
--- a/modules/common/src/main/scala/docspell/common/MailSendConfig.scala
+++ b/modules/common/src/main/scala/docspell/common/MailSendConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 case class MailSendConfig(listId: String)
diff --git a/modules/common/src/main/scala/docspell/common/MakePageCountArgs.scala b/modules/common/src/main/scala/docspell/common/MakePageCountArgs.scala
index ed955213..7bb4959f 100644
--- a/modules/common/src/main/scala/docspell/common/MakePageCountArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/MakePageCountArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.generic.semiauto._
diff --git a/modules/common/src/main/scala/docspell/common/MakePreviewArgs.scala b/modules/common/src/main/scala/docspell/common/MakePreviewArgs.scala
index ebe94107..646ff473 100644
--- a/modules/common/src/main/scala/docspell/common/MakePreviewArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/MakePreviewArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.generic.semiauto._
diff --git a/modules/common/src/main/scala/docspell/common/MetaProposal.scala b/modules/common/src/main/scala/docspell/common/MetaProposal.scala
index 36f4be1c..34322690 100644
--- a/modules/common/src/main/scala/docspell/common/MetaProposal.scala
+++ b/modules/common/src/main/scala/docspell/common/MetaProposal.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.LocalDate
diff --git a/modules/common/src/main/scala/docspell/common/MetaProposalList.scala b/modules/common/src/main/scala/docspell/common/MetaProposalList.scala
index 1f34648d..58dd2649 100644
--- a/modules/common/src/main/scala/docspell/common/MetaProposalList.scala
+++ b/modules/common/src/main/scala/docspell/common/MetaProposalList.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/MetaProposalType.scala b/modules/common/src/main/scala/docspell/common/MetaProposalType.scala
index 0799e330..0ec3220a 100644
--- a/modules/common/src/main/scala/docspell/common/MetaProposalType.scala
+++ b/modules/common/src/main/scala/docspell/common/MetaProposalType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe._
diff --git a/modules/common/src/main/scala/docspell/common/MimeType.scala b/modules/common/src/main/scala/docspell/common/MimeType.scala
index 67fe15cb..1cd01ee5 100644
--- a/modules/common/src/main/scala/docspell/common/MimeType.scala
+++ b/modules/common/src/main/scala/docspell/common/MimeType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.nio.charset.Charset
diff --git a/modules/common/src/main/scala/docspell/common/MimeTypeHint.scala b/modules/common/src/main/scala/docspell/common/MimeTypeHint.scala
index 4199a29f..16a39bd3 100644
--- a/modules/common/src/main/scala/docspell/common/MimeTypeHint.scala
+++ b/modules/common/src/main/scala/docspell/common/MimeTypeHint.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 case class MimeTypeHint(filename: Option[String], advertised: Option[String]) {
diff --git a/modules/common/src/main/scala/docspell/common/NerDateLabel.scala b/modules/common/src/main/scala/docspell/common/NerDateLabel.scala
index 960559c3..691de25a 100644
--- a/modules/common/src/main/scala/docspell/common/NerDateLabel.scala
+++ b/modules/common/src/main/scala/docspell/common/NerDateLabel.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.LocalDate
diff --git a/modules/common/src/main/scala/docspell/common/NerLabel.scala b/modules/common/src/main/scala/docspell/common/NerLabel.scala
index 7eddfc2d..b7d3fabf 100644
--- a/modules/common/src/main/scala/docspell/common/NerLabel.scala
+++ b/modules/common/src/main/scala/docspell/common/NerLabel.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.generic.semiauto._
diff --git a/modules/common/src/main/scala/docspell/common/NerLabelSpan.scala b/modules/common/src/main/scala/docspell/common/NerLabelSpan.scala
index 12e87618..941d2bbd 100644
--- a/modules/common/src/main/scala/docspell/common/NerLabelSpan.scala
+++ b/modules/common/src/main/scala/docspell/common/NerLabelSpan.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 final case class NerLabelSpan private (
diff --git a/modules/common/src/main/scala/docspell/common/NerTag.scala b/modules/common/src/main/scala/docspell/common/NerTag.scala
index e2ad2ca0..2b8b65bd 100644
--- a/modules/common/src/main/scala/docspell/common/NerTag.scala
+++ b/modules/common/src/main/scala/docspell/common/NerTag.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.{Decoder, Encoder}
diff --git a/modules/common/src/main/scala/docspell/common/NlpMode.scala b/modules/common/src/main/scala/docspell/common/NlpMode.scala
index 013b2275..ef0a7020 100644
--- a/modules/common/src/main/scala/docspell/common/NlpMode.scala
+++ b/modules/common/src/main/scala/docspell/common/NlpMode.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 sealed trait NlpMode { self: Product =>
diff --git a/modules/common/src/main/scala/docspell/common/NodeType.scala b/modules/common/src/main/scala/docspell/common/NodeType.scala
index 3020ffb4..fb68ba28 100644
--- a/modules/common/src/main/scala/docspell/common/NodeType.scala
+++ b/modules/common/src/main/scala/docspell/common/NodeType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 sealed trait NodeType { self: Product =>
diff --git a/modules/common/src/main/scala/docspell/common/NotifyDueItemsArgs.scala b/modules/common/src/main/scala/docspell/common/NotifyDueItemsArgs.scala
index 4e3ec089..de37cc59 100644
--- a/modules/common/src/main/scala/docspell/common/NotifyDueItemsArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/NotifyDueItemsArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import docspell.common.syntax.all._
diff --git a/modules/common/src/main/scala/docspell/common/OrgUse.scala b/modules/common/src/main/scala/docspell/common/OrgUse.scala
index fc2f803e..9fa9138e 100644
--- a/modules/common/src/main/scala/docspell/common/OrgUse.scala
+++ b/modules/common/src/main/scala/docspell/common/OrgUse.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/Password.scala b/modules/common/src/main/scala/docspell/common/Password.scala
index c7b7bef9..c52ed104 100644
--- a/modules/common/src/main/scala/docspell/common/Password.scala
+++ b/modules/common/src/main/scala/docspell/common/Password.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.effect.Sync
diff --git a/modules/common/src/main/scala/docspell/common/PersonRef.scala b/modules/common/src/main/scala/docspell/common/PersonRef.scala
index e5624548..ab8f00f2 100644
--- a/modules/common/src/main/scala/docspell/common/PersonRef.scala
+++ b/modules/common/src/main/scala/docspell/common/PersonRef.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe._
diff --git a/modules/common/src/main/scala/docspell/common/PersonUse.scala b/modules/common/src/main/scala/docspell/common/PersonUse.scala
index d070425e..faa3cf78 100644
--- a/modules/common/src/main/scala/docspell/common/PersonUse.scala
+++ b/modules/common/src/main/scala/docspell/common/PersonUse.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/main/scala/docspell/common/Pools.scala b/modules/common/src/main/scala/docspell/common/Pools.scala
index c51e781f..556af7d0 100644
--- a/modules/common/src/main/scala/docspell/common/Pools.scala
+++ b/modules/common/src/main/scala/docspell/common/Pools.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/common/src/main/scala/docspell/common/Priority.scala b/modules/common/src/main/scala/docspell/common/Priority.scala
index 10e5f003..5e75b6a1 100644
--- a/modules/common/src/main/scala/docspell/common/Priority.scala
+++ b/modules/common/src/main/scala/docspell/common/Priority.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.Order
diff --git a/modules/common/src/main/scala/docspell/common/ProcessItemArgs.scala b/modules/common/src/main/scala/docspell/common/ProcessItemArgs.scala
index 87995da0..e6a934d9 100644
--- a/modules/common/src/main/scala/docspell/common/ProcessItemArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/ProcessItemArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import docspell.common.ProcessItemArgs._
diff --git a/modules/common/src/main/scala/docspell/common/ReIndexTaskArgs.scala b/modules/common/src/main/scala/docspell/common/ReIndexTaskArgs.scala
index d7624048..68b14236 100644
--- a/modules/common/src/main/scala/docspell/common/ReIndexTaskArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/ReIndexTaskArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe._
diff --git a/modules/common/src/main/scala/docspell/common/ReProcessItemArgs.scala b/modules/common/src/main/scala/docspell/common/ReProcessItemArgs.scala
index f8afdd58..db107737 100644
--- a/modules/common/src/main/scala/docspell/common/ReProcessItemArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/ReProcessItemArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.generic.semiauto._
diff --git a/modules/common/src/main/scala/docspell/common/ScanMailboxArgs.scala b/modules/common/src/main/scala/docspell/common/ScanMailboxArgs.scala
index 65cd8367..9da5d08c 100644
--- a/modules/common/src/main/scala/docspell/common/ScanMailboxArgs.scala
+++ b/modules/common/src/main/scala/docspell/common/ScanMailboxArgs.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import docspell.common.syntax.all._
diff --git a/modules/common/src/main/scala/docspell/common/SystemCommand.scala b/modules/common/src/main/scala/docspell/common/SystemCommand.scala
index ec6bd3f7..3af39b57 100644
--- a/modules/common/src/main/scala/docspell/common/SystemCommand.scala
+++ b/modules/common/src/main/scala/docspell/common/SystemCommand.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.io.InputStream
diff --git a/modules/common/src/main/scala/docspell/common/ThreadFactories.scala b/modules/common/src/main/scala/docspell/common/ThreadFactories.scala
index 230e7885..7b3d6ba5 100644
--- a/modules/common/src/main/scala/docspell/common/ThreadFactories.scala
+++ b/modules/common/src/main/scala/docspell/common/ThreadFactories.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.util.concurrent.ForkJoinPool
diff --git a/modules/common/src/main/scala/docspell/common/Timestamp.scala b/modules/common/src/main/scala/docspell/common/Timestamp.scala
index c18bb6aa..cd0b85b5 100644
--- a/modules/common/src/main/scala/docspell/common/Timestamp.scala
+++ b/modules/common/src/main/scala/docspell/common/Timestamp.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import java.time.LocalDateTime
diff --git a/modules/common/src/main/scala/docspell/common/UserState.scala b/modules/common/src/main/scala/docspell/common/UserState.scala
index d0a579c7..3a42e3b0 100644
--- a/modules/common/src/main/scala/docspell/common/UserState.scala
+++ b/modules/common/src/main/scala/docspell/common/UserState.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import io.circe.{Decoder, Encoder}
diff --git a/modules/common/src/main/scala/docspell/common/config/Implicits.scala b/modules/common/src/main/scala/docspell/common/config/Implicits.scala
index 9dab40dc..436deaec 100644
--- a/modules/common/src/main/scala/docspell/common/config/Implicits.scala
+++ b/modules/common/src/main/scala/docspell/common/config/Implicits.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common.config
 
 import scala.reflect.ClassTag
diff --git a/modules/common/src/main/scala/docspell/common/syntax/EitherSyntax.scala b/modules/common/src/main/scala/docspell/common/syntax/EitherSyntax.scala
index 169c5740..bbe57a39 100644
--- a/modules/common/src/main/scala/docspell/common/syntax/EitherSyntax.scala
+++ b/modules/common/src/main/scala/docspell/common/syntax/EitherSyntax.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common.syntax
 
 trait EitherSyntax {
diff --git a/modules/common/src/main/scala/docspell/common/syntax/FileSyntax.scala b/modules/common/src/main/scala/docspell/common/syntax/FileSyntax.scala
index 6eef143b..63b2a928 100644
--- a/modules/common/src/main/scala/docspell/common/syntax/FileSyntax.scala
+++ b/modules/common/src/main/scala/docspell/common/syntax/FileSyntax.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common.syntax
 
 import java.nio.file.Path
diff --git a/modules/common/src/main/scala/docspell/common/syntax/LoggerSyntax.scala b/modules/common/src/main/scala/docspell/common/syntax/LoggerSyntax.scala
index c58e7f08..a442d260 100644
--- a/modules/common/src/main/scala/docspell/common/syntax/LoggerSyntax.scala
+++ b/modules/common/src/main/scala/docspell/common/syntax/LoggerSyntax.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common.syntax
 
 import cats.effect.Sync
diff --git a/modules/common/src/main/scala/docspell/common/syntax/StreamSyntax.scala b/modules/common/src/main/scala/docspell/common/syntax/StreamSyntax.scala
index a17931f0..f54ee39d 100644
--- a/modules/common/src/main/scala/docspell/common/syntax/StreamSyntax.scala
+++ b/modules/common/src/main/scala/docspell/common/syntax/StreamSyntax.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common.syntax
 
 import cats.effect.Sync
diff --git a/modules/common/src/main/scala/docspell/common/syntax/StringSyntax.scala b/modules/common/src/main/scala/docspell/common/syntax/StringSyntax.scala
index 67d29f24..6bade454 100644
--- a/modules/common/src/main/scala/docspell/common/syntax/StringSyntax.scala
+++ b/modules/common/src/main/scala/docspell/common/syntax/StringSyntax.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common.syntax
 
 import cats.implicits._
diff --git a/modules/common/src/main/scala/docspell/common/syntax/package.scala b/modules/common/src/main/scala/docspell/common/syntax/package.scala
index 8d512741..51eb39b3 100644
--- a/modules/common/src/main/scala/docspell/common/syntax/package.scala
+++ b/modules/common/src/main/scala/docspell/common/syntax/package.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 package object syntax {
diff --git a/modules/common/src/test/scala/docspell/common/FileNameTest.scala b/modules/common/src/test/scala/docspell/common/FileNameTest.scala
index 05b12d74..1c2a0219 100644
--- a/modules/common/src/test/scala/docspell/common/FileNameTest.scala
+++ b/modules/common/src/test/scala/docspell/common/FileNameTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import munit._
diff --git a/modules/common/src/test/scala/docspell/common/GlobTest.scala b/modules/common/src/test/scala/docspell/common/GlobTest.scala
index 90408ceb..118e881c 100644
--- a/modules/common/src/test/scala/docspell/common/GlobTest.scala
+++ b/modules/common/src/test/scala/docspell/common/GlobTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import docspell.common.Glob._
diff --git a/modules/common/src/test/scala/docspell/common/LenientUriTest.scala b/modules/common/src/test/scala/docspell/common/LenientUriTest.scala
index 5e3e0c97..e443738c 100644
--- a/modules/common/src/test/scala/docspell/common/LenientUriTest.scala
+++ b/modules/common/src/test/scala/docspell/common/LenientUriTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.implicits._
diff --git a/modules/common/src/test/scala/docspell/common/MetaProposalListTest.scala b/modules/common/src/test/scala/docspell/common/MetaProposalListTest.scala
index fdee5937..aee301c1 100644
--- a/modules/common/src/test/scala/docspell/common/MetaProposalListTest.scala
+++ b/modules/common/src/test/scala/docspell/common/MetaProposalListTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import cats.data.NonEmptyList
diff --git a/modules/common/src/test/scala/docspell/common/NerLabelSpanTest.scala b/modules/common/src/test/scala/docspell/common/NerLabelSpanTest.scala
index 2d3568cf..ba5240bf 100644
--- a/modules/common/src/test/scala/docspell/common/NerLabelSpanTest.scala
+++ b/modules/common/src/test/scala/docspell/common/NerLabelSpanTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.common
 
 import munit._
diff --git a/modules/convert/src/main/scala/docspell/convert/Conversion.scala b/modules/convert/src/main/scala/docspell/convert/Conversion.scala
index ef67e2af..aadf3b81 100644
--- a/modules/convert/src/main/scala/docspell/convert/Conversion.scala
+++ b/modules/convert/src/main/scala/docspell/convert/Conversion.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert
 
 import java.nio.charset.StandardCharsets
diff --git a/modules/convert/src/main/scala/docspell/convert/ConversionResult.scala b/modules/convert/src/main/scala/docspell/convert/ConversionResult.scala
index a5456649..a8d749aa 100644
--- a/modules/convert/src/main/scala/docspell/convert/ConversionResult.scala
+++ b/modules/convert/src/main/scala/docspell/convert/ConversionResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert
 
 import cats.data.Kleisli
diff --git a/modules/convert/src/main/scala/docspell/convert/ConvertConfig.scala b/modules/convert/src/main/scala/docspell/convert/ConvertConfig.scala
index 8013f3bb..3ae367d4 100644
--- a/modules/convert/src/main/scala/docspell/convert/ConvertConfig.scala
+++ b/modules/convert/src/main/scala/docspell/convert/ConvertConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert
 
 import docspell.convert.extern.OcrMyPdfConfig
diff --git a/modules/convert/src/main/scala/docspell/convert/SanitizeHtml.scala b/modules/convert/src/main/scala/docspell/convert/SanitizeHtml.scala
index 0badbb45..b73b9bdd 100644
--- a/modules/convert/src/main/scala/docspell/convert/SanitizeHtml.scala
+++ b/modules/convert/src/main/scala/docspell/convert/SanitizeHtml.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert
 import java.nio.charset.Charset
 
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/ExternConv.scala b/modules/convert/src/main/scala/docspell/convert/extern/ExternConv.scala
index d690a9f2..ba248c10 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/ExternConv.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/ExternConv.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdf.scala b/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdf.scala
index f89b6f95..cab17c1f 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdf.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdf.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdfConfig.scala b/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdfConfig.scala
index 218e52ad..2b78c65c 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdfConfig.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/OcrMyPdfConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/Tesseract.scala b/modules/convert/src/main/scala/docspell/convert/extern/Tesseract.scala
index c7329827..296d32a7 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/Tesseract.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/Tesseract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/TesseractConfig.scala b/modules/convert/src/main/scala/docspell/convert/extern/TesseractConfig.scala
index 90049641..e3a18524 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/TesseractConfig.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/TesseractConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/Unoconv.scala b/modules/convert/src/main/scala/docspell/convert/extern/Unoconv.scala
index c907126f..916ea353 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/Unoconv.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/Unoconv.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/UnoconvConfig.scala b/modules/convert/src/main/scala/docspell/convert/extern/UnoconvConfig.scala
index 9805e862..bbbcb5ab 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/UnoconvConfig.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/UnoconvConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdf.scala b/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdf.scala
index f48d3f67..539b9dfe 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdf.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdf.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.charset.Charset
diff --git a/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdfConfig.scala b/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdfConfig.scala
index e030c19a..41392ff0 100644
--- a/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdfConfig.scala
+++ b/modules/convert/src/main/scala/docspell/convert/extern/WkHtmlPdfConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.file.Path
diff --git a/modules/convert/src/main/scala/docspell/convert/flexmark/Markdown.scala b/modules/convert/src/main/scala/docspell/convert/flexmark/Markdown.scala
index 41e2c85e..e7c4ca7c 100644
--- a/modules/convert/src/main/scala/docspell/convert/flexmark/Markdown.scala
+++ b/modules/convert/src/main/scala/docspell/convert/flexmark/Markdown.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.flexmark
 
 import java.io.{InputStream, InputStreamReader}
diff --git a/modules/convert/src/main/scala/docspell/convert/flexmark/MarkdownConfig.scala b/modules/convert/src/main/scala/docspell/convert/flexmark/MarkdownConfig.scala
index 3d0a5ab3..05af590e 100644
--- a/modules/convert/src/main/scala/docspell/convert/flexmark/MarkdownConfig.scala
+++ b/modules/convert/src/main/scala/docspell/convert/flexmark/MarkdownConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.flexmark
 
 case class MarkdownConfig(internalCss: String)
diff --git a/modules/convert/src/test/scala/docspell/convert/ConversionTest.scala b/modules/convert/src/test/scala/docspell/convert/ConversionTest.scala
index 908016d2..e5d330b6 100644
--- a/modules/convert/src/test/scala/docspell/convert/ConversionTest.scala
+++ b/modules/convert/src/test/scala/docspell/convert/ConversionTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert
 
 import java.nio.file.Paths
diff --git a/modules/convert/src/test/scala/docspell/convert/FileChecks.scala b/modules/convert/src/test/scala/docspell/convert/FileChecks.scala
index 07c171fc..a46375bb 100644
--- a/modules/convert/src/test/scala/docspell/convert/FileChecks.scala
+++ b/modules/convert/src/test/scala/docspell/convert/FileChecks.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert
 
 import java.nio.charset.StandardCharsets
diff --git a/modules/convert/src/test/scala/docspell/convert/extern/ExternConvTest.scala b/modules/convert/src/test/scala/docspell/convert/extern/ExternConvTest.scala
index 7dbf386e..77c97d3d 100644
--- a/modules/convert/src/test/scala/docspell/convert/extern/ExternConvTest.scala
+++ b/modules/convert/src/test/scala/docspell/convert/extern/ExternConvTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.convert.extern
 
 import java.nio.charset.StandardCharsets
diff --git a/modules/extract/src/main/scala/docspell/extract/ExtractConfig.scala b/modules/extract/src/main/scala/docspell/extract/ExtractConfig.scala
index e283b720..106b57a4 100644
--- a/modules/extract/src/main/scala/docspell/extract/ExtractConfig.scala
+++ b/modules/extract/src/main/scala/docspell/extract/ExtractConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract
 
 import docspell.extract.ocr.OcrConfig
diff --git a/modules/extract/src/main/scala/docspell/extract/ExtractResult.scala b/modules/extract/src/main/scala/docspell/extract/ExtractResult.scala
index ac9716b3..70350c7a 100644
--- a/modules/extract/src/main/scala/docspell/extract/ExtractResult.scala
+++ b/modules/extract/src/main/scala/docspell/extract/ExtractResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract
 
 import docspell.common.MimeType
diff --git a/modules/extract/src/main/scala/docspell/extract/Extraction.scala b/modules/extract/src/main/scala/docspell/extract/Extraction.scala
index 3be2537d..bbe0ec4b 100644
--- a/modules/extract/src/main/scala/docspell/extract/Extraction.scala
+++ b/modules/extract/src/main/scala/docspell/extract/Extraction.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract
 
 import cats.effect._
diff --git a/modules/extract/src/main/scala/docspell/extract/PdfConfig.scala b/modules/extract/src/main/scala/docspell/extract/PdfConfig.scala
index cf21e8ac..dee39f9d 100644
--- a/modules/extract/src/main/scala/docspell/extract/PdfConfig.scala
+++ b/modules/extract/src/main/scala/docspell/extract/PdfConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract
 
 case class PdfConfig(minTextLen: Int)
diff --git a/modules/extract/src/main/scala/docspell/extract/PdfExtract.scala b/modules/extract/src/main/scala/docspell/extract/PdfExtract.scala
index 52cede85..9113a708 100644
--- a/modules/extract/src/main/scala/docspell/extract/PdfExtract.scala
+++ b/modules/extract/src/main/scala/docspell/extract/PdfExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract
 
 import cats.effect._
diff --git a/modules/extract/src/main/scala/docspell/extract/internal/Text.scala b/modules/extract/src/main/scala/docspell/extract/internal/Text.scala
index a42cb89e..851272bb 100644
--- a/modules/extract/src/main/scala/docspell/extract/internal/Text.scala
+++ b/modules/extract/src/main/scala/docspell/extract/internal/Text.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.internal
 
 case class Text(raw: String) {
diff --git a/modules/extract/src/main/scala/docspell/extract/ocr/Ocr.scala b/modules/extract/src/main/scala/docspell/extract/ocr/Ocr.scala
index 6c1b8a5b..7c0fa1c4 100644
--- a/modules/extract/src/main/scala/docspell/extract/ocr/Ocr.scala
+++ b/modules/extract/src/main/scala/docspell/extract/ocr/Ocr.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.ocr
 
 import java.nio.file.Path
diff --git a/modules/extract/src/main/scala/docspell/extract/ocr/OcrConfig.scala b/modules/extract/src/main/scala/docspell/extract/ocr/OcrConfig.scala
index bcd6fc3f..0f6e0e87 100644
--- a/modules/extract/src/main/scala/docspell/extract/ocr/OcrConfig.scala
+++ b/modules/extract/src/main/scala/docspell/extract/ocr/OcrConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.ocr
 
 import java.nio.file.{Path, Paths}
diff --git a/modules/extract/src/main/scala/docspell/extract/ocr/OcrType.scala b/modules/extract/src/main/scala/docspell/extract/ocr/OcrType.scala
index 96a51005..c2fd772c 100644
--- a/modules/extract/src/main/scala/docspell/extract/ocr/OcrType.scala
+++ b/modules/extract/src/main/scala/docspell/extract/ocr/OcrType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.ocr
 
 import docspell.common.MimeType
diff --git a/modules/extract/src/main/scala/docspell/extract/ocr/TextExtract.scala b/modules/extract/src/main/scala/docspell/extract/ocr/TextExtract.scala
index 0a390473..30e754b6 100644
--- a/modules/extract/src/main/scala/docspell/extract/ocr/TextExtract.scala
+++ b/modules/extract/src/main/scala/docspell/extract/ocr/TextExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.ocr
 
 import cats.effect._
diff --git a/modules/extract/src/main/scala/docspell/extract/odf/OdfExtract.scala b/modules/extract/src/main/scala/docspell/extract/odf/OdfExtract.scala
index cd8cbd30..1139a6d3 100644
--- a/modules/extract/src/main/scala/docspell/extract/odf/OdfExtract.scala
+++ b/modules/extract/src/main/scala/docspell/extract/odf/OdfExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.odf
 
 import java.io.{ByteArrayInputStream, InputStream}
diff --git a/modules/extract/src/main/scala/docspell/extract/odf/OdfType.scala b/modules/extract/src/main/scala/docspell/extract/odf/OdfType.scala
index 13dd3dd2..6acffa69 100644
--- a/modules/extract/src/main/scala/docspell/extract/odf/OdfType.scala
+++ b/modules/extract/src/main/scala/docspell/extract/odf/OdfType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.odf
 
 import docspell.common.MimeType
diff --git a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfLoader.scala b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfLoader.scala
index 47e04543..8c333f5a 100644
--- a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfLoader.scala
+++ b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfLoader.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import cats.effect._
diff --git a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfMetaData.scala b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfMetaData.scala
index eb450ae9..69c02622 100644
--- a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfMetaData.scala
+++ b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfMetaData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import docspell.common.Timestamp
diff --git a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxExtract.scala b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxExtract.scala
index d3267503..9bd2fddc 100644
--- a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxExtract.scala
+++ b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import java.io.InputStream
diff --git a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxPreview.scala b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxPreview.scala
index 18c4aae1..f3b903b8 100644
--- a/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxPreview.scala
+++ b/modules/extract/src/main/scala/docspell/extract/pdfbox/PdfboxPreview.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import java.awt.image.BufferedImage
diff --git a/modules/extract/src/main/scala/docspell/extract/pdfbox/PreviewConfig.scala b/modules/extract/src/main/scala/docspell/extract/pdfbox/PreviewConfig.scala
index db3bc56b..f6bf607d 100644
--- a/modules/extract/src/main/scala/docspell/extract/pdfbox/PreviewConfig.scala
+++ b/modules/extract/src/main/scala/docspell/extract/pdfbox/PreviewConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 case class PreviewConfig(dpi: Float)
diff --git a/modules/extract/src/main/scala/docspell/extract/poi/PoiExtract.scala b/modules/extract/src/main/scala/docspell/extract/poi/PoiExtract.scala
index f780a4a5..fc7e57ba 100644
--- a/modules/extract/src/main/scala/docspell/extract/poi/PoiExtract.scala
+++ b/modules/extract/src/main/scala/docspell/extract/poi/PoiExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.poi
 
 import java.io.{ByteArrayInputStream, InputStream}
diff --git a/modules/extract/src/main/scala/docspell/extract/poi/PoiType.scala b/modules/extract/src/main/scala/docspell/extract/poi/PoiType.scala
index e83c3853..f66f5add 100644
--- a/modules/extract/src/main/scala/docspell/extract/poi/PoiType.scala
+++ b/modules/extract/src/main/scala/docspell/extract/poi/PoiType.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.poi
 
 import docspell.common.MimeType
diff --git a/modules/extract/src/main/scala/docspell/extract/rtf/RtfExtract.scala b/modules/extract/src/main/scala/docspell/extract/rtf/RtfExtract.scala
index 7ea80cbf..234ca674 100644
--- a/modules/extract/src/main/scala/docspell/extract/rtf/RtfExtract.scala
+++ b/modules/extract/src/main/scala/docspell/extract/rtf/RtfExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.rtf
 
 import java.io.{ByteArrayInputStream, InputStream}
diff --git a/modules/extract/src/test/scala/docspell/extract/ocr/TextExtractionSuite.scala b/modules/extract/src/test/scala/docspell/extract/ocr/TextExtractionSuite.scala
index f6dafa8d..907cafa7 100644
--- a/modules/extract/src/test/scala/docspell/extract/ocr/TextExtractionSuite.scala
+++ b/modules/extract/src/test/scala/docspell/extract/ocr/TextExtractionSuite.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.ocr
 
 import cats.effect.IO
diff --git a/modules/extract/src/test/scala/docspell/extract/odf/OdfExtractTest.scala b/modules/extract/src/test/scala/docspell/extract/odf/OdfExtractTest.scala
index df79d4a1..3a260fcc 100644
--- a/modules/extract/src/test/scala/docspell/extract/odf/OdfExtractTest.scala
+++ b/modules/extract/src/test/scala/docspell/extract/odf/OdfExtractTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.odf
 
 import cats.effect._
diff --git a/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfMetaDataTest.scala b/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfMetaDataTest.scala
index 4ea52331..3a1eb9de 100644
--- a/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfMetaDataTest.scala
+++ b/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfMetaDataTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import munit._
diff --git a/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxExtractTest.scala b/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxExtractTest.scala
index 54b736fb..486ee000 100644
--- a/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxExtractTest.scala
+++ b/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxExtractTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import cats.effect._
diff --git a/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxPreviewTest.scala b/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxPreviewTest.scala
index 0389152e..3c7a4830 100644
--- a/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxPreviewTest.scala
+++ b/modules/extract/src/test/scala/docspell/extract/pdfbox/PdfboxPreviewTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.pdfbox
 
 import java.nio.file.Path
diff --git a/modules/extract/src/test/scala/docspell/extract/poi/PoiExtractTest.scala b/modules/extract/src/test/scala/docspell/extract/poi/PoiExtractTest.scala
index 69be2e4d..5ba33eba 100644
--- a/modules/extract/src/test/scala/docspell/extract/poi/PoiExtractTest.scala
+++ b/modules/extract/src/test/scala/docspell/extract/poi/PoiExtractTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.poi
 
 import cats.effect._
diff --git a/modules/extract/src/test/scala/docspell/extract/rtf/RtfExtractTest.scala b/modules/extract/src/test/scala/docspell/extract/rtf/RtfExtractTest.scala
index 9f513ba4..2fbc6125 100644
--- a/modules/extract/src/test/scala/docspell/extract/rtf/RtfExtractTest.scala
+++ b/modules/extract/src/test/scala/docspell/extract/rtf/RtfExtractTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.extract.rtf
 
 import docspell.files.ExampleFiles
diff --git a/modules/files/src/main/scala/docspell/files/Dimension.scala b/modules/files/src/main/scala/docspell/files/Dimension.scala
index 44025311..1b2aef52 100644
--- a/modules/files/src/main/scala/docspell/files/Dimension.scala
+++ b/modules/files/src/main/scala/docspell/files/Dimension.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 case class Dimension(width: Int, height: Int) {
diff --git a/modules/files/src/main/scala/docspell/files/ImageSize.scala b/modules/files/src/main/scala/docspell/files/ImageSize.scala
index e1dc23b2..20046fc9 100644
--- a/modules/files/src/main/scala/docspell/files/ImageSize.scala
+++ b/modules/files/src/main/scala/docspell/files/ImageSize.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import java.io.{ByteArrayInputStream, InputStream}
diff --git a/modules/files/src/main/scala/docspell/files/TikaMimetype.scala b/modules/files/src/main/scala/docspell/files/TikaMimetype.scala
index b6fd0c48..588d37cc 100644
--- a/modules/files/src/main/scala/docspell/files/TikaMimetype.scala
+++ b/modules/files/src/main/scala/docspell/files/TikaMimetype.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import java.io.BufferedInputStream
diff --git a/modules/files/src/main/scala/docspell/files/Zip.scala b/modules/files/src/main/scala/docspell/files/Zip.scala
index 89d2a8b6..e8dfa05f 100644
--- a/modules/files/src/main/scala/docspell/files/Zip.scala
+++ b/modules/files/src/main/scala/docspell/files/Zip.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import java.io.InputStream
diff --git a/modules/files/src/test/scala/docspell/files/ExampleFilesSupport.scala b/modules/files/src/test/scala/docspell/files/ExampleFilesSupport.scala
index e2452e74..5e2cdd5a 100644
--- a/modules/files/src/test/scala/docspell/files/ExampleFilesSupport.scala
+++ b/modules/files/src/test/scala/docspell/files/ExampleFilesSupport.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import docspell.common._
diff --git a/modules/files/src/test/scala/docspell/files/ImageSizeTest.scala b/modules/files/src/test/scala/docspell/files/ImageSizeTest.scala
index a0b879c3..64fd623b 100644
--- a/modules/files/src/test/scala/docspell/files/ImageSizeTest.scala
+++ b/modules/files/src/test/scala/docspell/files/ImageSizeTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import scala.util.Using
diff --git a/modules/files/src/test/scala/docspell/files/Playing.scala b/modules/files/src/test/scala/docspell/files/Playing.scala
index c1c56c42..8670327f 100644
--- a/modules/files/src/test/scala/docspell/files/Playing.scala
+++ b/modules/files/src/test/scala/docspell/files/Playing.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import cats.effect._
diff --git a/modules/files/src/test/scala/docspell/files/TestFiles.scala b/modules/files/src/test/scala/docspell/files/TestFiles.scala
index aa7c413a..2f5b84ce 100644
--- a/modules/files/src/test/scala/docspell/files/TestFiles.scala
+++ b/modules/files/src/test/scala/docspell/files/TestFiles.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import cats.effect._
diff --git a/modules/files/src/test/scala/docspell/files/ZipTest.scala b/modules/files/src/test/scala/docspell/files/ZipTest.scala
index f6557a3a..3908b4f5 100644
--- a/modules/files/src/test/scala/docspell/files/ZipTest.scala
+++ b/modules/files/src/test/scala/docspell/files/ZipTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.files
 
 import cats.effect._
diff --git a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala
index 54065e3c..87101c60 100644
--- a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala
+++ b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftsclient
 
 import cats.effect._
diff --git a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsMigration.scala b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsMigration.scala
index 22858c19..f42af938 100644
--- a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsMigration.scala
+++ b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsMigration.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftsclient
 
 import cats.Functor
diff --git a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsQuery.scala b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsQuery.scala
index f5027867..1f8c19b1 100644
--- a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsQuery.scala
+++ b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsQuery.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftsclient
 
 import docspell.common._
diff --git a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsResult.scala b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsResult.scala
index 5a5be229..96f823df 100644
--- a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsResult.scala
+++ b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftsclient
 
 import docspell.common._
diff --git a/modules/fts-client/src/main/scala/docspell/ftsclient/TextData.scala b/modules/fts-client/src/main/scala/docspell/ftsclient/TextData.scala
index 3f043599..cb92e095 100644
--- a/modules/fts-client/src/main/scala/docspell/ftsclient/TextData.scala
+++ b/modules/fts-client/src/main/scala/docspell/ftsclient/TextData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftsclient
 
 import docspell.common._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/DocIdResult.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/DocIdResult.scala
index a6070443..fce7bad4 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/DocIdResult.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/DocIdResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import docspell.common._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/Field.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/Field.scala
index ff55e5ae..bc494b68 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/Field.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/Field.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import docspell.common._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/JsonCodec.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/JsonCodec.scala
index a7b5d8a9..e40eb123 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/JsonCodec.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/JsonCodec.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import cats.implicits._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/QueryData.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/QueryData.scala
index 0c332630..3ddce3c0 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/QueryData.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/QueryData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import docspell.ftsclient.FtsQuery
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFields.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFields.scala
index af9b370e..24bff0a4 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFields.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFields.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import docspell.ftsclient._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFolder.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFolder.scala
index 5dedb968..86ec23de 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFolder.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SetFolder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import docspell.common._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrConfig.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrConfig.scala
index 639ae424..8c9bdeaf 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrConfig.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import docspell.common._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala
index 84383a7b..e206c55a 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import cats.effect._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrMigration.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrMigration.scala
index d812beb3..f2e4a1f9 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrMigration.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrMigration.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 import cats.implicits._
 import cats.{Applicative, Functor}
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrQuery.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrQuery.scala
index b8b66d9c..df6604b7 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrQuery.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrQuery.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import cats.effect._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrSetup.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrSetup.scala
index 3ffef19c..0bd16487 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrSetup.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrSetup.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import cats.effect._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrUpdate.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrUpdate.scala
index 5c0e43d3..8703747e 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrUpdate.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrUpdate.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 import cats.effect._
diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/VersionDoc.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/VersionDoc.scala
index 4d733340..5efdb4b0 100644
--- a/modules/fts-solr/src/main/scala/docspell/ftssolr/VersionDoc.scala
+++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/VersionDoc.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.ftssolr
 
 final case class VersionDoc(id: String, currentVersion: Int)
diff --git a/modules/joex/src/main/scala/docspell/joex/Config.scala b/modules/joex/src/main/scala/docspell/joex/Config.scala
index e995e757..69746793 100644
--- a/modules/joex/src/main/scala/docspell/joex/Config.scala
+++ b/modules/joex/src/main/scala/docspell/joex/Config.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import java.nio.file.Path
diff --git a/modules/joex/src/main/scala/docspell/joex/ConfigFile.scala b/modules/joex/src/main/scala/docspell/joex/ConfigFile.scala
index 24af4ca9..9091cffd 100644
--- a/modules/joex/src/main/scala/docspell/joex/ConfigFile.scala
+++ b/modules/joex/src/main/scala/docspell/joex/ConfigFile.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import docspell.common.config.Implicits._
diff --git a/modules/joex/src/main/scala/docspell/joex/JoexApp.scala b/modules/joex/src/main/scala/docspell/joex/JoexApp.scala
index bbb052a6..bafb2e7a 100644
--- a/modules/joex/src/main/scala/docspell/joex/JoexApp.scala
+++ b/modules/joex/src/main/scala/docspell/joex/JoexApp.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import docspell.common.Ident
diff --git a/modules/joex/src/main/scala/docspell/joex/JoexAppImpl.scala b/modules/joex/src/main/scala/docspell/joex/JoexAppImpl.scala
index 2197455f..1d7f3419 100644
--- a/modules/joex/src/main/scala/docspell/joex/JoexAppImpl.scala
+++ b/modules/joex/src/main/scala/docspell/joex/JoexAppImpl.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/joex/src/main/scala/docspell/joex/JoexServer.scala b/modules/joex/src/main/scala/docspell/joex/JoexServer.scala
index e325cf67..e7740abe 100644
--- a/modules/joex/src/main/scala/docspell/joex/JoexServer.scala
+++ b/modules/joex/src/main/scala/docspell/joex/JoexServer.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import cats.effect.Ref
diff --git a/modules/joex/src/main/scala/docspell/joex/Main.scala b/modules/joex/src/main/scala/docspell/joex/Main.scala
index a5ccd338..a8dc09ed 100644
--- a/modules/joex/src/main/scala/docspell/joex/Main.scala
+++ b/modules/joex/src/main/scala/docspell/joex/Main.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import java.nio.file.{Files, Paths}
diff --git a/modules/joex/src/main/scala/docspell/joex/analysis/NerFile.scala b/modules/joex/src/main/scala/docspell/joex/analysis/NerFile.scala
index 8075dd5d..1851f5aa 100644
--- a/modules/joex/src/main/scala/docspell/joex/analysis/NerFile.scala
+++ b/modules/joex/src/main/scala/docspell/joex/analysis/NerFile.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.analysis
 
 import java.nio.file.Path
diff --git a/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala b/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala
index e1a3b65d..b3ec75cd 100644
--- a/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala
+++ b/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.analysis
 
 import java.nio.file.Path
diff --git a/modules/joex/src/main/scala/docspell/joex/extract/JsoupSanitizer.scala b/modules/joex/src/main/scala/docspell/joex/extract/JsoupSanitizer.scala
index 87d3ed2a..993cc923 100644
--- a/modules/joex/src/main/scala/docspell/joex/extract/JsoupSanitizer.scala
+++ b/modules/joex/src/main/scala/docspell/joex/extract/JsoupSanitizer.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.extract
 
 import java.nio.charset.Charset
diff --git a/modules/joex/src/main/scala/docspell/joex/fts/FtsContext.scala b/modules/joex/src/main/scala/docspell/joex/fts/FtsContext.scala
index 8bf28b77..97012dfc 100644
--- a/modules/joex/src/main/scala/docspell/joex/fts/FtsContext.scala
+++ b/modules/joex/src/main/scala/docspell/joex/fts/FtsContext.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.fts
 
 import docspell.common.Logger
diff --git a/modules/joex/src/main/scala/docspell/joex/fts/FtsWork.scala b/modules/joex/src/main/scala/docspell/joex/fts/FtsWork.scala
index 8180ab7e..da7fad95 100644
--- a/modules/joex/src/main/scala/docspell/joex/fts/FtsWork.scala
+++ b/modules/joex/src/main/scala/docspell/joex/fts/FtsWork.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.fts
 
 import cats._
diff --git a/modules/joex/src/main/scala/docspell/joex/fts/Migration.scala b/modules/joex/src/main/scala/docspell/joex/fts/Migration.scala
index 036c84fd..a3c64382 100644
--- a/modules/joex/src/main/scala/docspell/joex/fts/Migration.scala
+++ b/modules/joex/src/main/scala/docspell/joex/fts/Migration.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.fts
 
 import cats.data.Kleisli
diff --git a/modules/joex/src/main/scala/docspell/joex/fts/MigrationTask.scala b/modules/joex/src/main/scala/docspell/joex/fts/MigrationTask.scala
index 63b27a88..c303118f 100644
--- a/modules/joex/src/main/scala/docspell/joex/fts/MigrationTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/fts/MigrationTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.fts
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/fts/ReIndexTask.scala b/modules/joex/src/main/scala/docspell/joex/fts/ReIndexTask.scala
index a04449bd..e5e7cf48 100644
--- a/modules/joex/src/main/scala/docspell/joex/fts/ReIndexTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/fts/ReIndexTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.fts
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/fts/package.scala b/modules/joex/src/main/scala/docspell/joex/fts/package.scala
index 7cf8de80..0e1d00ef 100644
--- a/modules/joex/src/main/scala/docspell/joex/fts/package.scala
+++ b/modules/joex/src/main/scala/docspell/joex/fts/package.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex
 
 import cats.data.Kleisli
diff --git a/modules/joex/src/main/scala/docspell/joex/hk/CheckNodesTask.scala b/modules/joex/src/main/scala/docspell/joex/hk/CheckNodesTask.scala
index 77909929..b439eb82 100644
--- a/modules/joex/src/main/scala/docspell/joex/hk/CheckNodesTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/hk/CheckNodesTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.hk
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/hk/CleanupInvitesTask.scala b/modules/joex/src/main/scala/docspell/joex/hk/CleanupInvitesTask.scala
index 2bbccfa1..a3cc3106 100644
--- a/modules/joex/src/main/scala/docspell/joex/hk/CleanupInvitesTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/hk/CleanupInvitesTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.hk
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/hk/CleanupJobsTask.scala b/modules/joex/src/main/scala/docspell/joex/hk/CleanupJobsTask.scala
index 3d2a84b0..60ff4c0f 100644
--- a/modules/joex/src/main/scala/docspell/joex/hk/CleanupJobsTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/hk/CleanupJobsTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.hk
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/hk/CleanupRememberMeTask.scala b/modules/joex/src/main/scala/docspell/joex/hk/CleanupRememberMeTask.scala
index 05568e8f..5c85caf0 100644
--- a/modules/joex/src/main/scala/docspell/joex/hk/CleanupRememberMeTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/hk/CleanupRememberMeTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.hk
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingConfig.scala b/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingConfig.scala
index c631fedb..8af321da 100644
--- a/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingConfig.scala
+++ b/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.hk
 
 import docspell.common._
diff --git a/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingTask.scala b/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingTask.scala
index 3613a188..9a29077a 100644
--- a/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/hk/HouseKeepingTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.hk
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/ClassifierName.scala b/modules/joex/src/main/scala/docspell/joex/learn/ClassifierName.scala
index c08b96db..fb34bc23 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/ClassifierName.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/ClassifierName.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import cats.data.NonEmptyList
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/Classify.scala b/modules/joex/src/main/scala/docspell/joex/learn/Classify.scala
index ce8dffc9..0775e78e 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/Classify.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/Classify.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import java.nio.file.Path
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/LearnClassifierTask.scala b/modules/joex/src/main/scala/docspell/joex/learn/LearnClassifierTask.scala
index 49e4711b..f1abc1e2 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/LearnClassifierTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/LearnClassifierTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import cats.data.OptionT
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/LearnItemEntities.scala b/modules/joex/src/main/scala/docspell/joex/learn/LearnItemEntities.scala
index f442f49f..f76118bc 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/LearnItemEntities.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/LearnItemEntities.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import cats.data.Kleisli
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/LearnTags.scala b/modules/joex/src/main/scala/docspell/joex/learn/LearnTags.scala
index 4a3f211f..ac3232b7 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/LearnTags.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/LearnTags.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import cats.data.Kleisli
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/SelectItems.scala b/modules/joex/src/main/scala/docspell/joex/learn/SelectItems.scala
index 8ce77f62..57f3287c 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/SelectItems.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/SelectItems.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import fs2.{Pipe, Stream}
diff --git a/modules/joex/src/main/scala/docspell/joex/learn/StoreClassifierModel.scala b/modules/joex/src/main/scala/docspell/joex/learn/StoreClassifierModel.scala
index 91251c2e..e949787b 100644
--- a/modules/joex/src/main/scala/docspell/joex/learn/StoreClassifierModel.scala
+++ b/modules/joex/src/main/scala/docspell/joex/learn/StoreClassifierModel.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.learn
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/mail/EmilHeader.scala b/modules/joex/src/main/scala/docspell/joex/mail/EmilHeader.scala
index 9fbdb609..05761358 100644
--- a/modules/joex/src/main/scala/docspell/joex/mail/EmilHeader.scala
+++ b/modules/joex/src/main/scala/docspell/joex/mail/EmilHeader.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.mail
 
 import emil.builder._
diff --git a/modules/joex/src/main/scala/docspell/joex/mail/ReadMail.scala b/modules/joex/src/main/scala/docspell/joex/mail/ReadMail.scala
index 78179d69..84566343 100644
--- a/modules/joex/src/main/scala/docspell/joex/mail/ReadMail.scala
+++ b/modules/joex/src/main/scala/docspell/joex/mail/ReadMail.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.mail
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/notify/MailContext.scala b/modules/joex/src/main/scala/docspell/joex/notify/MailContext.scala
index e8097f6a..187c65bd 100644
--- a/modules/joex/src/main/scala/docspell/joex/notify/MailContext.scala
+++ b/modules/joex/src/main/scala/docspell/joex/notify/MailContext.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.notify
 
 import docspell.common._
diff --git a/modules/joex/src/main/scala/docspell/joex/notify/MailTemplate.scala b/modules/joex/src/main/scala/docspell/joex/notify/MailTemplate.scala
index 73f80f99..fa3d7a70 100644
--- a/modules/joex/src/main/scala/docspell/joex/notify/MailTemplate.scala
+++ b/modules/joex/src/main/scala/docspell/joex/notify/MailTemplate.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.notify
 
 import yamusca.implicits._
diff --git a/modules/joex/src/main/scala/docspell/joex/notify/NotifyDueItemsTask.scala b/modules/joex/src/main/scala/docspell/joex/notify/NotifyDueItemsTask.scala
index 391fadd5..d196f390 100644
--- a/modules/joex/src/main/scala/docspell/joex/notify/NotifyDueItemsTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/notify/NotifyDueItemsTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.notify
 
 import cats.data.{NonEmptyList => Nel, OptionT}
diff --git a/modules/joex/src/main/scala/docspell/joex/notify/YamuscaConverter.scala b/modules/joex/src/main/scala/docspell/joex/notify/YamuscaConverter.scala
index 0f09c862..4a2eaa88 100644
--- a/modules/joex/src/main/scala/docspell/joex/notify/YamuscaConverter.scala
+++ b/modules/joex/src/main/scala/docspell/joex/notify/YamuscaConverter.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.notify
 
 import docspell.common._
diff --git a/modules/joex/src/main/scala/docspell/joex/pagecount/AllPageCountTask.scala b/modules/joex/src/main/scala/docspell/joex/pagecount/AllPageCountTask.scala
index 5e0b542e..420dda56 100644
--- a/modules/joex/src/main/scala/docspell/joex/pagecount/AllPageCountTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/pagecount/AllPageCountTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.pagecount
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/pagecount/PageCountTask.scala b/modules/joex/src/main/scala/docspell/joex/pagecount/PageCountTask.scala
index c0d8f988..2d401806 100644
--- a/modules/joex/src/main/scala/docspell/joex/pagecount/PageCountTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/pagecount/PageCountTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.pagecount
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/pdfconv/ConvertAllPdfTask.scala b/modules/joex/src/main/scala/docspell/joex/pdfconv/ConvertAllPdfTask.scala
index e97ce780..b98fd602 100644
--- a/modules/joex/src/main/scala/docspell/joex/pdfconv/ConvertAllPdfTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/pdfconv/ConvertAllPdfTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.pdfconv
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/pdfconv/PdfConvTask.scala b/modules/joex/src/main/scala/docspell/joex/pdfconv/PdfConvTask.scala
index eb8ebe4a..4aa23327 100644
--- a/modules/joex/src/main/scala/docspell/joex/pdfconv/PdfConvTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/pdfconv/PdfConvTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.pdfconv
 
 import cats.data.Kleisli
diff --git a/modules/joex/src/main/scala/docspell/joex/preview/AllPreviewsTask.scala b/modules/joex/src/main/scala/docspell/joex/preview/AllPreviewsTask.scala
index ba8a94b6..fb5b0959 100644
--- a/modules/joex/src/main/scala/docspell/joex/preview/AllPreviewsTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/preview/AllPreviewsTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.preview
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/preview/MakePreviewTask.scala b/modules/joex/src/main/scala/docspell/joex/preview/MakePreviewTask.scala
index 8d2b6cf6..9bbb97f3 100644
--- a/modules/joex/src/main/scala/docspell/joex/preview/MakePreviewTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/preview/MakePreviewTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.preview
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/process/AttachmentPageCount.scala b/modules/joex/src/main/scala/docspell/joex/process/AttachmentPageCount.scala
index 62e22082..a8527f38 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/AttachmentPageCount.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/AttachmentPageCount.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.Functor
diff --git a/modules/joex/src/main/scala/docspell/joex/process/AttachmentPreview.scala b/modules/joex/src/main/scala/docspell/joex/process/AttachmentPreview.scala
index 68c5ec3e..3735ef20 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/AttachmentPreview.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/AttachmentPreview.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.Functor
diff --git a/modules/joex/src/main/scala/docspell/joex/process/ConvertPdf.scala b/modules/joex/src/main/scala/docspell/joex/process/ConvertPdf.scala
index f1b528ae..d6a2dbbb 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/ConvertPdf.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/ConvertPdf.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.Functor
diff --git a/modules/joex/src/main/scala/docspell/joex/process/CreateItem.scala b/modules/joex/src/main/scala/docspell/joex/process/CreateItem.scala
index 90a4b8a5..8be2ef08 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/CreateItem.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/CreateItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.data.NonEmptyList
diff --git a/modules/joex/src/main/scala/docspell/joex/process/CrossCheckProposals.scala b/modules/joex/src/main/scala/docspell/joex/process/CrossCheckProposals.scala
index 06c85ec0..aa50ef20 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/CrossCheckProposals.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/CrossCheckProposals.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.data.NonEmptyList
diff --git a/modules/joex/src/main/scala/docspell/joex/process/DuplicateCheck.scala b/modules/joex/src/main/scala/docspell/joex/process/DuplicateCheck.scala
index 6d34db07..fea8d544 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/DuplicateCheck.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/DuplicateCheck.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/process/EvalProposals.scala b/modules/joex/src/main/scala/docspell/joex/process/EvalProposals.scala
index 8846b27a..98fc0ce7 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/EvalProposals.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/EvalProposals.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import java.time.{LocalDate, Period}
diff --git a/modules/joex/src/main/scala/docspell/joex/process/ExtractArchive.scala b/modules/joex/src/main/scala/docspell/joex/process/ExtractArchive.scala
index 8420023f..8c5afb65 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/ExtractArchive.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/ExtractArchive.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.Functor
diff --git a/modules/joex/src/main/scala/docspell/joex/process/FindProposal.scala b/modules/joex/src/main/scala/docspell/joex/process/FindProposal.scala
index a159ad34..c936d258 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/FindProposal.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/FindProposal.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import java.time.ZoneId
diff --git a/modules/joex/src/main/scala/docspell/joex/process/ItemData.scala b/modules/joex/src/main/scala/docspell/joex/process/ItemData.scala
index f19a4244..3376a3e0 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/ItemData.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/ItemData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import docspell.common._
diff --git a/modules/joex/src/main/scala/docspell/joex/process/ItemHandler.scala b/modules/joex/src/main/scala/docspell/joex/process/ItemHandler.scala
index 2428dce3..50c10234 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/ItemHandler.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/ItemHandler.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.data.OptionT
diff --git a/modules/joex/src/main/scala/docspell/joex/process/LinkProposal.scala b/modules/joex/src/main/scala/docspell/joex/process/LinkProposal.scala
index 6d0c8ac0..be443b10 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/LinkProposal.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/LinkProposal.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.data.NonEmptyList
diff --git a/modules/joex/src/main/scala/docspell/joex/process/ProcessItem.scala b/modules/joex/src/main/scala/docspell/joex/process/ProcessItem.scala
index 535c1ba9..7df00755 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/ProcessItem.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/ProcessItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/process/ReProcessItem.scala b/modules/joex/src/main/scala/docspell/joex/process/ReProcessItem.scala
index 49103c69..caf74e26 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/ReProcessItem.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/ReProcessItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.data.OptionT
diff --git a/modules/joex/src/main/scala/docspell/joex/process/RemoveEmptyItem.scala b/modules/joex/src/main/scala/docspell/joex/process/RemoveEmptyItem.scala
index 75751672..5558fe1e 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/RemoveEmptyItem.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/RemoveEmptyItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/process/SaveProposals.scala b/modules/joex/src/main/scala/docspell/joex/process/SaveProposals.scala
index dfe4e1e2..321ec5a7 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/SaveProposals.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/SaveProposals.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.effect.Sync
diff --git a/modules/joex/src/main/scala/docspell/joex/process/SetGivenData.scala b/modules/joex/src/main/scala/docspell/joex/process/SetGivenData.scala
index 5d1c6038..53162af2 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/SetGivenData.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/SetGivenData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.effect._
@@ -6,6 +12,7 @@ import cats.implicits._
 import docspell.backend.ops.OItem
 import docspell.common._
 import docspell.joex.scheduler.Task
+import docspell.store.UpdateResult
 
 object SetGivenData {
   type Args = ProcessItemArgs
@@ -40,7 +47,12 @@ object SetGivenData {
         e <- ops.setFolder(itemId, folderId, collective).attempt
         _ <- e.fold(
           ex => ctx.logger.warn(s"Error setting folder: ${ex.getMessage}"),
-          _ => ().pure[F]
+          res =>
+            res match {
+              case UpdateResult.Failure(ex) =>
+                ctx.logger.warn(s"Error setting folder: ${ex.getMessage}")
+              case _ => ().pure[F]
+            }
         )
       } yield data
     }
diff --git a/modules/joex/src/main/scala/docspell/joex/process/TestTasks.scala b/modules/joex/src/main/scala/docspell/joex/process/TestTasks.scala
index 5fa6c69e..02aec7aa 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/TestTasks.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/TestTasks.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.effect.Sync
diff --git a/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala b/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala
index 33c5e545..c25f8170 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.Traverse
diff --git a/modules/joex/src/main/scala/docspell/joex/process/TextExtraction.scala b/modules/joex/src/main/scala/docspell/joex/process/TextExtraction.scala
index dcb2ba28..0bcc849e 100644
--- a/modules/joex/src/main/scala/docspell/joex/process/TextExtraction.scala
+++ b/modules/joex/src/main/scala/docspell/joex/process/TextExtraction.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.process
 
 import cats.data.OptionT
diff --git a/modules/joex/src/main/scala/docspell/joex/routes/InfoRoutes.scala b/modules/joex/src/main/scala/docspell/joex/routes/InfoRoutes.scala
index 093d9806..2849b57f 100644
--- a/modules/joex/src/main/scala/docspell/joex/routes/InfoRoutes.scala
+++ b/modules/joex/src/main/scala/docspell/joex/routes/InfoRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.routes
 
 import cats.effect.Sync
diff --git a/modules/joex/src/main/scala/docspell/joex/routes/JoexRoutes.scala b/modules/joex/src/main/scala/docspell/joex/routes/JoexRoutes.scala
index b3a87973..32fb2930 100644
--- a/modules/joex/src/main/scala/docspell/joex/routes/JoexRoutes.scala
+++ b/modules/joex/src/main/scala/docspell/joex/routes/JoexRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.routes
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scanmailbox/ScanMailboxTask.scala b/modules/joex/src/main/scala/docspell/joex/scanmailbox/ScanMailboxTask.scala
index fba08dcf..00314cb9 100644
--- a/modules/joex/src/main/scala/docspell/joex/scanmailbox/ScanMailboxTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scanmailbox/ScanMailboxTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scanmailbox
 
 import cats.data.Kleisli
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/Context.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/Context.scala
index 6720e7d4..8b4b995c 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/Context.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/Context.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/CountingScheme.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/CountingScheme.scala
index b8580e82..294b04a8 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/CountingScheme.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/CountingScheme.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.implicits._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/JobTask.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/JobTask.scala
index 9d415303..211fde1c 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/JobTask.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/JobTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect.Sync
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/JobTaskRegistry.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/JobTaskRegistry.scala
index 8bfab413..b250d611 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/JobTaskRegistry.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/JobTaskRegistry.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import docspell.common.Ident
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/LogEvent.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/LogEvent.scala
index 99e389e2..d4976e27 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/LogEvent.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/LogEvent.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect.Sync
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/LogSink.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/LogSink.scala
index db04c3da..68672abd 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/LogSink.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/LogSink.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicScheduler.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicScheduler.scala
index 17a0344f..b83aaed8 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicScheduler.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicScheduler.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerConfig.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerConfig.scala
index 8a0e9f1d..e27f91c8 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerConfig.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import docspell.common._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerImpl.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerImpl.scala
index 3b6c0bfc..d4a64387 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerImpl.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/PeriodicSchedulerImpl.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/QueueLogger.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/QueueLogger.scala
index a4fe2777..54ae6a88 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/QueueLogger.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/QueueLogger.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/Scheduler.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/Scheduler.scala
index 9d261cd5..54972263 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/Scheduler.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/Scheduler.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerBuilder.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerBuilder.scala
index 6a8ba93c..56cf72cc 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerBuilder.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.effect._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerConfig.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerConfig.scala
index 6f638dbe..c4da0ab5 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerConfig.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import docspell.common._
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerImpl.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerImpl.scala
index 06de35ba..8f5ed9db 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerImpl.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/SchedulerImpl.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats.data.OptionT
diff --git a/modules/joex/src/main/scala/docspell/joex/scheduler/Task.scala b/modules/joex/src/main/scala/docspell/joex/scheduler/Task.scala
index c5be1237..57ce6dfb 100644
--- a/modules/joex/src/main/scala/docspell/joex/scheduler/Task.scala
+++ b/modules/joex/src/main/scala/docspell/joex/scheduler/Task.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import cats._
diff --git a/modules/joex/src/test/scala/docspell/joex/analysis/NerFileTest.scala b/modules/joex/src/test/scala/docspell/joex/analysis/NerFileTest.scala
index b5c83f5f..c95a9db3 100644
--- a/modules/joex/src/test/scala/docspell/joex/analysis/NerFileTest.scala
+++ b/modules/joex/src/test/scala/docspell/joex/analysis/NerFileTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.analysis
 
 import java.{util => ju}
diff --git a/modules/joex/src/test/scala/docspell/joex/scheduler/CountingSchemeSpec.scala b/modules/joex/src/test/scala/docspell/joex/scheduler/CountingSchemeSpec.scala
index fca5bff5..33b5c0cf 100644
--- a/modules/joex/src/test/scala/docspell/joex/scheduler/CountingSchemeSpec.scala
+++ b/modules/joex/src/test/scala/docspell/joex/scheduler/CountingSchemeSpec.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joex.scheduler
 
 import docspell.common.Priority
diff --git a/modules/joexapi/src/main/scala/docspell/joexapi/client/JoexClient.scala b/modules/joexapi/src/main/scala/docspell/joexapi/client/JoexClient.scala
index a1b479b3..56b274ea 100644
--- a/modules/joexapi/src/main/scala/docspell/joexapi/client/JoexClient.scala
+++ b/modules/joexapi/src/main/scala/docspell/joexapi/client/JoexClient.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.joexapi.client
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/query/js/src/main/scala/docspell/query/js/JSItemQueryParser.scala b/modules/query/js/src/main/scala/docspell/query/js/JSItemQueryParser.scala
index a58371cd..3864bb4d 100644
--- a/modules/query/js/src/main/scala/docspell/query/js/JSItemQueryParser.scala
+++ b/modules/query/js/src/main/scala/docspell/query/js/JSItemQueryParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.js
 
 import scala.scalajs.js
diff --git a/modules/query/shared/src/main/scala/docspell/query/Date.scala b/modules/query/shared/src/main/scala/docspell/query/Date.scala
index 21ce9b35..d38e38d7 100644
--- a/modules/query/shared/src/main/scala/docspell/query/Date.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/Date.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import java.time.LocalDate
diff --git a/modules/query/shared/src/main/scala/docspell/query/FulltextExtract.scala b/modules/query/shared/src/main/scala/docspell/query/FulltextExtract.scala
index cb6a73c6..08f82934 100644
--- a/modules/query/shared/src/main/scala/docspell/query/FulltextExtract.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/FulltextExtract.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import cats._
diff --git a/modules/query/shared/src/main/scala/docspell/query/ItemQuery.scala b/modules/query/shared/src/main/scala/docspell/query/ItemQuery.scala
index e8e38afd..918b6d33 100644
--- a/modules/query/shared/src/main/scala/docspell/query/ItemQuery.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/ItemQuery.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/query/shared/src/main/scala/docspell/query/ItemQueryDsl.scala b/modules/query/shared/src/main/scala/docspell/query/ItemQueryDsl.scala
index a016de90..94c161be 100644
--- a/modules/query/shared/src/main/scala/docspell/query/ItemQueryDsl.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/ItemQueryDsl.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import cats.data.NonEmptyList
diff --git a/modules/query/shared/src/main/scala/docspell/query/ItemQueryParser.scala b/modules/query/shared/src/main/scala/docspell/query/ItemQueryParser.scala
index 68a03de7..b5012f3a 100644
--- a/modules/query/shared/src/main/scala/docspell/query/ItemQueryParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/ItemQueryParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import cats.data.NonEmptyList
diff --git a/modules/query/shared/src/main/scala/docspell/query/ParseFailure.scala b/modules/query/shared/src/main/scala/docspell/query/ParseFailure.scala
index 2ecb1edf..5c6013dd 100644
--- a/modules/query/shared/src/main/scala/docspell/query/ParseFailure.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/ParseFailure.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/AttrParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/AttrParser.scala
index 6d74ea59..25b92f5a 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/AttrParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/AttrParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.parse.{Parser => P}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/BasicParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/BasicParser.scala
index bb38fc90..5200aad2 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/BasicParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/BasicParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/Constants.scala b/modules/query/shared/src/main/scala/docspell/query/internal/Constants.scala
index 232d6940..157cd9f8 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/Constants.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/Constants.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 object Constants {
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/DateParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/DateParser.scala
index 02d99926..5948210a 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/DateParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/DateParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import java.time.Period
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/ExprParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/ExprParser.scala
index de6e9165..22a10bf8 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/ExprParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/ExprParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.parse.{Parser => P}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/ExprUtil.scala b/modules/query/shared/src/main/scala/docspell/query/internal/ExprUtil.scala
index ebe42e52..9c25edcf 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/ExprUtil.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/ExprUtil.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/MacroParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/MacroParser.scala
index 44b2d93f..d9c8290e 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/MacroParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/MacroParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.parse.{Parser => P}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/OperatorParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/OperatorParser.scala
index 2b5956a4..1a31757b 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/OperatorParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/OperatorParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.parse.{Parser => P}
diff --git a/modules/query/shared/src/main/scala/docspell/query/internal/SimpleExprParser.scala b/modules/query/shared/src/main/scala/docspell/query/internal/SimpleExprParser.scala
index 950df0cb..be514ba9 100644
--- a/modules/query/shared/src/main/scala/docspell/query/internal/SimpleExprParser.scala
+++ b/modules/query/shared/src/main/scala/docspell/query/internal/SimpleExprParser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.parse.Numbers
diff --git a/modules/query/shared/src/test/scala/docspell/query/FulltextExtractTest.scala b/modules/query/shared/src/test/scala/docspell/query/FulltextExtractTest.scala
index 79fb4577..3bb852fa 100644
--- a/modules/query/shared/src/test/scala/docspell/query/FulltextExtractTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/FulltextExtractTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query
 
 import docspell.query.FulltextExtract.Result
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/AttrParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/AttrParserTest.scala
index 9330fc3d..68c39e9b 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/AttrParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/AttrParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import docspell.query.ItemQuery.Attr
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/BasicParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/BasicParserTest.scala
index fe185454..ed02a56f 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/BasicParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/BasicParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/DateParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/DateParserTest.scala
index 3bd1cbca..29e6b4d8 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/DateParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/DateParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import java.time.Period
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/ExprParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/ExprParserTest.scala
index 276ea00d..8a1200bb 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/ExprParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/ExprParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/ItemQueryParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/ItemQueryParserTest.scala
index 16eb8b25..3ea05e5d 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/ItemQueryParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/ItemQueryParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import cats.implicits._
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/MacroParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/MacroParserTest.scala
index 8f587fe6..a9dbb305 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/MacroParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/MacroParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import docspell.query.ItemQuery.Expr
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/OperatorParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/OperatorParserTest.scala
index a60aa228..1deaa702 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/OperatorParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/OperatorParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import docspell.query.ItemQuery.{Operator, TagOperator}
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/SimpleExprParserTest.scala b/modules/query/shared/src/test/scala/docspell/query/internal/SimpleExprParserTest.scala
index 58d4fe5b..00c7dd7f 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/SimpleExprParserTest.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/SimpleExprParserTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import java.time.Period
diff --git a/modules/query/shared/src/test/scala/docspell/query/internal/ValueHelper.scala b/modules/query/shared/src/test/scala/docspell/query/internal/ValueHelper.scala
index 34f22f6d..acdbd9b7 100644
--- a/modules/query/shared/src/test/scala/docspell/query/internal/ValueHelper.scala
+++ b/modules/query/shared/src/test/scala/docspell/query/internal/ValueHelper.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.query.internal
 
 import java.time.Period
diff --git a/modules/restapi/src/main/resources/docspell-openapi.yml b/modules/restapi/src/main/resources/docspell-openapi.yml
index e871a98d..f4013210 100644
--- a/modules/restapi/src/main/resources/docspell-openapi.yml
+++ b/modules/restapi/src/main/resources/docspell-openapi.yml
@@ -70,7 +70,7 @@ paths:
     get:
       operationId: "open-checkfile-checksum-by-id"
       tags: [ Upload ]
-      summary: Check if a file is in docspell.
+      summary: Check if a file is in docspell (via source).
       description: |
         Checks if a file with the given SHA-256 checksum is in
         docspell. The id is a *source id* configured by a collective.
@@ -91,7 +91,7 @@ paths:
     post:
       operationId: "open-upload-new-item-by-source"
       tags: [ Upload ]
-      summary: Upload files to docspell.
+      summary: Upload files to docspell (via source).
       description: |
         Upload a file to docspell for processing. The id is a *source
         id* configured by a collective. Files are submitted for
@@ -134,7 +134,7 @@ paths:
     post:
       operationId: "open-upload-to-item-by-source"
       tags: [ Upload ]
-      summary: Upload files to docspell.
+      summary: Upload files to an existing item (via source).
       description: |
         Upload a file to docspell for processing. The id is a *source
         id* configured by a collective. Files are submitted for
@@ -219,7 +219,7 @@ paths:
     get:
       operationId: "sec-checkfile-by-checksum"
       tags: [ Upload ]
-      summary: Check if a file is in docspell.
+      summary: Check if a file is in docspell (authenticated).
       description: |
         Checks if a file with the given SHA-256 checksum is in
         docspell.
@@ -241,7 +241,7 @@ paths:
     post:
       operationId: "sec-upload-new-item"
       tags: [ Upload ]
-      summary: Upload files to docspell.
+      summary: Upload files to docspell (authenticated).
       description: |
         Upload files to docspell for processing. This route is meant
         for authenticated users that upload files to their account.
@@ -283,7 +283,7 @@ paths:
     post:
       operationId: "sec-upload-to-item"
       tags: [ Upload ]
-      summary: Upload files to docspell.
+      summary: Upload files to an existing item (authenticated).
       description: |
         Upload files to docspell for processing. This route is meant
         for authenticated users that upload files to their account.
@@ -354,8 +354,8 @@ paths:
           description: Unauthorized
     post:
       operationId: "open-integration-item-upload"
-      tags: [ Integration Endpoint ]
-      summary: Upload files to docspell.
+      tags: [ Integration Endpoint, Upload ]
+      summary: Upload files to docspell (Integration Endpoint).
       description: |
         Upload a file to docspell for processing. The id is a
         *collective name*. This route only exists, if enabled by an
@@ -400,8 +400,8 @@ paths:
   /open/integration/checkfile/{id}/{checksum}:
     get:
       operationId: "open-integration-checkfile-by-checksum"
-      tags: [ Integration Endpoint ]
-      summary: Check if a file is in docspell.
+      tags: [ Integration Endpoint, Upload ]
+      summary: Check if a file is in docspell (Integration Endpoint).
       description: |
         Checks if a file with the given SHA-256 checksum is in
         docspell. The `id` is the *collective name*. This route only
@@ -1136,30 +1136,6 @@ paths:
               schema:
                 $ref: "#/components/schemas/BasicResult"
 
-  /sec/collective/previews:
-    post:
-      operationId: "sec-collective-previews-start-generate"
-      tags: [ Collective ]
-      summary: Starts the generate previews task
-      description: |
-        Submits a task that re-generates preview images of all
-        attachments of the current collective. Each existing preview
-        image will be replaced.
-
-        This can be used after changing the `preview` settings.
-
-        If only preview images of selected attachments should be
-        regenerated, see the `/sec/attachment/{id}/preview` endpoint.
-      security:
-        - authTokenHeader: []
-      responses:
-        200:
-          description: Ok
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/BasicResult"
-
   /sec/user:
     get:
       operationId: "sec-user-get-all"
@@ -1348,6 +1324,32 @@ paths:
               schema:
                 $ref: "#/components/schemas/ResetPasswordResult"
 
+  /admin/attachments/generatePreviews:
+    post:
+      operationId: "admin-attachments-generate-previews"
+      tags: [Attachment, Admin]
+      summary: (Re)generate all preview images
+      description: |
+        Submits a task that re-generates preview images of all
+        attachments. Each existing preview image will be replaced.
+
+        This can be used after changing the `preview` settings.
+
+        If only preview images of selected attachments should be
+        regenerated, see the `/sec/attachment/{id}/preview` endpoint.
+
+        This is an admin route, you need to specify the secret from
+        the config file via a http header `Docspell-Admin-Secret`.
+      security:
+        - adminHeader: []
+      responses:
+        200:
+          description: Ok
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/BasicResult"
+
   /sec/source:
     get:
       operationId: "sec-source-get-all"
@@ -2716,7 +2718,7 @@ paths:
     head:
       operationId: "sec-attach-check"
       tags: [ Attachment ]
-      summary: Get an attachment file.
+      summary: Get headers to an attachment file.
       description: |
         Get information about the binary file belonging to the
         attachment with the given id.
@@ -2747,7 +2749,8 @@ paths:
       summary: Get an attachment file.
       description: |
         Get the binary file belonging to the attachment with the given
-        id.
+        id. The binary is a pdf file. If conversion failed, then the
+        original file is returned.
       security:
         - authTokenHeader: []
       parameters:
@@ -2764,7 +2767,7 @@ paths:
     head:
       operationId: "sec-attach-check-original"
       tags: [ Attachment ]
-      summary: Get an attachment file.
+      summary: Get headers of the original file of an attachment.
       description: |
         Get information about the original binary file of the
         attachment with the given id.
@@ -2795,7 +2798,7 @@ paths:
     get:
       operationId: "sec-attach-get-original"
       tags: [ Attachment ]
-      summary: Get an attachment file.
+      summary: Get the original file of an attachment.
       description: |
         Get the original binary file of the attachment with the given
         id.
@@ -2818,7 +2821,7 @@ paths:
     head:
       operationId: "sec-attach-check-archive"
       tags: [ Attachment ]
-      summary: Get an attachment archive file.
+      summary: Get headers of the archive file to an attachment.
       description: |
         Get information about the archive that contains the attachment
         with the given id.
@@ -2849,7 +2852,7 @@ paths:
     get:
       operationId: "sec-attach-get-archive"
       tags: [ Attachment ]
-      summary: Get an attachment archive file.
+      summary: Get the archive file of an attachment.
       description: |
         Get the archive file that was originally uploaded that
         contains the attachment with the given id.
@@ -2872,7 +2875,7 @@ paths:
     head:
       operationId: "sec-attach-check-preview"
       tags: [ Attachment ]
-      summary: Get a preview image of an attachment file.
+      summary: Get the headers to a preview image of an attachment file.
       description: |
         Checks if an image file showing a preview of the attachment is
         available. If not available, a 404 is returned.
@@ -2951,15 +2954,17 @@ paths:
     get:
       operationId: "sec-attach-show-viewerjs"
       tags: [ Attachment ]
-      summary: A preview of the attachment
+      summary: A javascript rendered view of the pdf attachment
       description: |
-        This provides a preview of the attachment. It currently uses a
-        third-party javascript library (viewerjs) to display the
-        preview. This works by redirecting to the viewerjs url with
-        the attachment url as parameter. Note that the resulting url
-        that is redirected to is not stable. It may change from
-        version to version. This route, however, is meant to provide a
-        stable url for the preview.
+        This provides a preview of the attachment rendered in a
+        browser.
+
+        It currently uses a third-party javascript library (viewerjs)
+        to display the preview. This works by redirecting to the
+        viewerjs url with the attachment url as parameter. Note that
+        the resulting url that is redirected to is not stable. It may
+        change from version to version. This route, however, is meant
+        to provide a stable url for the preview.
       security:
         - authTokenHeader: []
       parameters:
@@ -5067,50 +5072,61 @@ components:
         specified, you have to specifiy whether the corresponding
         files should become one single item or if an item is created
         for each file.
-
-        A direction can be given, `Incoming` is used if not specified.
-
-        A folderId can be given, the item is placed into this folder
-        after creation.
-
-        The `fileFilter` is an optional glob for filtering files to
-        import. Only applicable if archive files are uploaded. It
-        applies to all of them. For example, to only import pdf files
-        when uploading e-mails, use `*.pdf`. If the pattern doesn't
-        contain a slash `/`, then it is applied to all file names.
-        Otherwise it is applied to the complete path in the archive
-        (useful for zip files). Note that the archive file itself is
-        always saved completely, too.
-
-        The `tags` input allows to provide tags that should be applied
-        to the item being created. This only works if the tags already
-        exist. It is possible to specify their ids or names.
-
-        The `language` of the document may be specified, otherwise the
-        one from settings is used.
       required:
         - multiple
       properties:
         multiple:
           type: boolean
           default: true
+          description: |
+            If `true` (the default) each file in the upload request
+            results in a separate item. If it is set to `false`, then
+            all files in the request are put into a single item.
         direction:
           type: string
           format: direction
+          default: "incoming"
+          description: |
+            The direction of the item, can be `Incoming` or `Outgoing`.
         folder:
           type: string
           format: ident
+          description: |
+            A folder can be specified that is attached to the new
+            item. The folder must exist and can be specified by id or
+            name.
         skipDuplicates:
           type: boolean
           default: false
+          description: |
+            If set to `true` the processing will look for the same
+            file in Docspell and will skip processing this one if one
+            is found. The check is done via the file's checksum.
         tags:
           $ref: "#/components/schemas/StringList"
+          description: |
+            The `tags` input allows to provide tags that should be
+            applied to the item being created. This only works if the
+            tags already exist. It is possible to specify their ids or
+            names.
         fileFilter:
           type: string
           format: glob
+          description: |
+            The `fileFilter` is an optional glob for filtering files
+            to import. Only applicable if archive files are uploaded.
+            It applies to all of them. For example, to only import pdf
+            files when uploading e-mails, use `*.pdf`. If the pattern
+            doesn't contain a slash `/`, then it is applied to all
+            file names. Otherwise it is applied to the complete path
+            in the archive (useful for zip files). Note that the
+            archive file itself is always saved completely, too.
         language:
           type: string
           format: language
+          description: |
+            The `language` of the document may be specified, otherwise
+            the one from settings is used.
 
     Collective:
       description: |
@@ -5484,6 +5500,7 @@ components:
         - date
         - source
         - tags
+        - attachments
       properties:
         id:
           type: string
diff --git a/modules/restserver/src/main/scala/docspell/restserver/Config.scala b/modules/restserver/src/main/scala/docspell/restserver/Config.scala
index e5aae021..5454de28 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/Config.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/Config.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver
 
 import docspell.backend.auth.Login
diff --git a/modules/restserver/src/main/scala/docspell/restserver/ConfigFile.scala b/modules/restserver/src/main/scala/docspell/restserver/ConfigFile.scala
index c1c1dc1f..6225ff64 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/ConfigFile.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/ConfigFile.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver
 
 import docspell.backend.signup.{Config => SignupConfig}
diff --git a/modules/restserver/src/main/scala/docspell/restserver/Main.scala b/modules/restserver/src/main/scala/docspell/restserver/Main.scala
index fcbedf96..5e226b35 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/Main.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/Main.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver
 
 import java.nio.file.{Files, Paths}
diff --git a/modules/restserver/src/main/scala/docspell/restserver/RestApp.scala b/modules/restserver/src/main/scala/docspell/restserver/RestApp.scala
index 7c8edf35..7719c1c8 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/RestApp.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/RestApp.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver
 
 import docspell.backend.BackendApp
diff --git a/modules/restserver/src/main/scala/docspell/restserver/RestAppImpl.scala b/modules/restserver/src/main/scala/docspell/restserver/RestAppImpl.scala
index 34262f99..c09c294f 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/RestAppImpl.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/RestAppImpl.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/restserver/src/main/scala/docspell/restserver/RestServer.scala b/modules/restserver/src/main/scala/docspell/restserver/RestServer.scala
index a54bc7f3..60a33b6e 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/RestServer.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/RestServer.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver
 
 import cats.effect._
@@ -102,9 +108,10 @@ object RestServer {
 
   def adminRoutes[F[_]: Async](cfg: Config, restApp: RestApp[F]): HttpRoutes[F] =
     Router(
-      "fts"  -> FullTextIndexRoutes.admin(cfg, restApp.backend),
-      "user" -> UserRoutes.admin(restApp.backend),
-      "info" -> InfoRoutes.admin(cfg)
+      "fts"         -> FullTextIndexRoutes.admin(cfg, restApp.backend),
+      "user"        -> UserRoutes.admin(restApp.backend),
+      "info"        -> InfoRoutes.admin(cfg),
+      "attachments" -> AttachmentRoutes.admin(restApp.backend)
     )
 
   def redirectTo[F[_]: Async](path: String): HttpRoutes[F] = {
diff --git a/modules/restserver/src/main/scala/docspell/restserver/auth/CookieData.scala b/modules/restserver/src/main/scala/docspell/restserver/auth/CookieData.scala
index 60528e24..a2b087d0 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/auth/CookieData.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/auth/CookieData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.auth
 
 import docspell.backend.auth._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/auth/RememberCookieData.scala b/modules/restserver/src/main/scala/docspell/restserver/auth/RememberCookieData.scala
index 79d03038..6baf8f70 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/auth/RememberCookieData.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/auth/RememberCookieData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.auth
 
 import docspell.backend.auth._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/conv/Conversions.scala b/modules/restserver/src/main/scala/docspell/restserver/conv/Conversions.scala
index e990ff6a..73ffc0d0 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/conv/Conversions.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/conv/Conversions.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.conv
 
 import java.time.{LocalDate, ZoneId}
diff --git a/modules/restserver/src/main/scala/docspell/restserver/conv/MultiIdSupport.scala b/modules/restserver/src/main/scala/docspell/restserver/conv/MultiIdSupport.scala
index bb020c25..e4afcac6 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/conv/MultiIdSupport.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/conv/MultiIdSupport.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.conv
 
 import cats.data.NonEmptyList
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/BinaryUtil.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/BinaryUtil.scala
index 2f2e1962..2bb98584 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/BinaryUtil.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/BinaryUtil.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import cats.data.NonEmptyList
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/ClientRequestInfo.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/ClientRequestInfo.scala
index 91b37a60..5cc1b9be 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/ClientRequestInfo.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/ClientRequestInfo.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import cats.data.NonEmptyList
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/EnvMiddleware.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/EnvMiddleware.scala
index cc52dc25..ea721a2c 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/EnvMiddleware.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/EnvMiddleware.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import cats.Functor
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/NoCacheMiddleware.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/NoCacheMiddleware.scala
index 00a450e3..d17beb5f 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/NoCacheMiddleware.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/NoCacheMiddleware.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import cats.Functor
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/QueryParam.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/QueryParam.scala
index 6907c2c4..74c2b418 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/QueryParam.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/QueryParam.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import docspell.common.ContactKind
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/ResponseGenerator.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/ResponseGenerator.scala
index f5d23627..e9ef1a74 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/ResponseGenerator.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/ResponseGenerator.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import cats.Applicative
diff --git a/modules/restserver/src/main/scala/docspell/restserver/http4s/Responses.scala b/modules/restserver/src/main/scala/docspell/restserver/http4s/Responses.scala
index 1ad57b8e..a13a0e7d 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/http4s/Responses.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/http4s/Responses.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.http4s
 
 import cats.data.NonEmptyList
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/AdminRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/AdminRoutes.scala
index 70050551..6480b443 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/AdminRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/AdminRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.{Kleisli, OptionT}
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentMultiRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentMultiRoutes.scala
index 0c90436d..a17945f4 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentMultiRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentMultiRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect.Async
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentRoutes.scala
index bb882d69..85b02b42 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/AttachmentRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
@@ -183,4 +189,19 @@ object AttachmentRoutes {
         } yield resp
     }
   }
+
+  def admin[F[_]: Async](backend: BackendApp[F]): HttpRoutes[F] = {
+    val dsl = Http4sDsl[F]
+    import dsl._
+
+    HttpRoutes.of { case POST -> Root / "generatePreviews" =>
+      for {
+        res <- backend.item.generateAllPreviews(MakePreviewArgs.StoreMode.Replace, true)
+        resp <- Ok(
+          Conversions.basicResult(res, "Generate all previews task submitted.")
+        )
+      } yield resp
+    }
+  }
+
 }
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/Authenticate.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/Authenticate.scala
index a51d40f9..c20dc158 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/Authenticate.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/Authenticate.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/CalEventCheckRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/CalEventCheckRoutes.scala
index 098eba3a..f9a1dc37 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/CalEventCheckRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/CalEventCheckRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/CheckFileRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/CheckFileRoutes.scala
index 5ed78058..31bf195d 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/CheckFileRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/CheckFileRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
@@ -37,7 +43,7 @@ object CheckFileRoutes {
     HttpRoutes.of { case GET -> Root / Ident(id) / checksum =>
       for {
         items <- backend.itemSearch.findByFileSource(checksum, id)
-        resp  <- Ok(convert(items))
+        resp  <- items.map(convert).map(Ok(_)).getOrElse(NotFound())
       } yield resp
     }
   }
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/ClientSettingsRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/ClientSettingsRoutes.scala
index c3db37bb..d50837dd 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/ClientSettingsRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/ClientSettingsRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/CollectiveRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/CollectiveRoutes.scala
index 57eb8292..3cbb27cd 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/CollectiveRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/CollectiveRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
@@ -6,7 +12,7 @@ import cats.implicits._
 import docspell.backend.BackendApp
 import docspell.backend.auth.AuthToken
 import docspell.backend.ops.OCollective
-import docspell.common.{ListType, MakePreviewArgs}
+import docspell.common.ListType
 import docspell.restapi.model._
 import docspell.restserver.conv.Conversions
 import docspell.restserver.http4s._
@@ -95,18 +101,6 @@ object CollectiveRoutes {
           resp <- Ok(BasicResult(true, "Task submitted"))
         } yield resp
 
-      case POST -> Root / "previews" =>
-        for {
-          res <- backend.collective.generatePreviews(
-            MakePreviewArgs.StoreMode.Replace,
-            user.account,
-            true
-          )
-          resp <- Ok(
-            Conversions.basicResult(res, "Generate all previews task submitted.")
-          )
-        } yield resp
-
       case GET -> Root =>
         for {
           collDb <- backend.collective.find(user.account.collective)
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/CustomFieldRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/CustomFieldRoutes.scala
index cfcb3bc7..7a5bb8a0 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/CustomFieldRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/CustomFieldRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/EquipmentRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/EquipmentRoutes.scala
index bd0e56d4..92e858ea 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/EquipmentRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/EquipmentRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/FolderRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/FolderRoutes.scala
index 81a9ccb3..99475f0f 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/FolderRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/FolderRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/FullTextIndexRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/FullTextIndexRoutes.scala
index 1cd41dc0..738ef5bb 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/FullTextIndexRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/FullTextIndexRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/InfoRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/InfoRoutes.scala
index 9102df6e..354ccb90 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/InfoRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/InfoRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect.Sync
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/IntegrationEndpointRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/IntegrationEndpointRoutes.scala
index d2b9dd91..f1b1fe8e 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/IntegrationEndpointRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/IntegrationEndpointRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.{EitherT, OptionT}
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/ItemMultiRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/ItemMultiRoutes.scala
index 55fe5f49..a7422c9e 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/ItemMultiRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/ItemMultiRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/ItemRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/ItemRoutes.scala
index 7b2e5cc2..6635550a 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/ItemRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/ItemRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.NonEmptyList
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/JobQueueRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/JobQueueRoutes.scala
index 4dcae88b..10dd372a 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/JobQueueRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/JobQueueRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/LoginRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/LoginRoutes.scala
index 6d16ac13..a6f38d2c 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/LoginRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/LoginRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala
index 15a90ea5..84dc1b92 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSendRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala
index 112dc186..ddb24a4a 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/MailSettingsRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/NotifyDueItemsRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/NotifyDueItemsRoutes.scala
index e68fa868..b69c52b2 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/NotifyDueItemsRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/NotifyDueItemsRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/OrganizationRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/OrganizationRoutes.scala
index f4ae63c6..100f4ff3 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/OrganizationRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/OrganizationRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/PersonRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/PersonRoutes.scala
index 55470780..fa677125 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/PersonRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/PersonRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/RegisterRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/RegisterRoutes.scala
index 9fab734f..834b61c3 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/RegisterRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/RegisterRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/ScanMailboxRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/ScanMailboxRoutes.scala
index a1b83c84..e2595542 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/ScanMailboxRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/ScanMailboxRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala
index 7de6ec9f..0404e765 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/SentMailRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/SourceRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/SourceRoutes.scala
index f8e0bd26..4195984f 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/SourceRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/SourceRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/TagRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/TagRoutes.scala
index 8e92abff..85e4c5f3 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/TagRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/TagRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/UploadRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/UploadRoutes.scala
index 34194bda..d737d63e 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/UploadRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/UploadRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.data.OptionT
diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala
index 5785aa4b..02aaedd6 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.routes
 
 import cats.effect._
diff --git a/modules/restserver/src/main/scala/docspell/restserver/webapp/Flags.scala b/modules/restserver/src/main/scala/docspell/restserver/webapp/Flags.scala
index bcd041d3..4964909d 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/webapp/Flags.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/webapp/Flags.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.webapp
 
 import docspell.backend.signup.{Config => SignupConfig}
diff --git a/modules/restserver/src/main/scala/docspell/restserver/webapp/TemplateRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/webapp/TemplateRoutes.scala
index d20afa4d..24923369 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/webapp/TemplateRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/webapp/TemplateRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.webapp
 
 import java.net.URL
diff --git a/modules/restserver/src/main/scala/docspell/restserver/webapp/WebjarRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/webapp/WebjarRoutes.scala
index 27ba87d8..b9b7aff8 100644
--- a/modules/restserver/src/main/scala/docspell/restserver/webapp/WebjarRoutes.scala
+++ b/modules/restserver/src/main/scala/docspell/restserver/webapp/WebjarRoutes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.restserver.webapp
 
 import cats.data.Kleisli
diff --git a/modules/store/src/main/scala/docspell/store/AddResult.scala b/modules/store/src/main/scala/docspell/store/AddResult.scala
index fd6baf33..1024f18d 100644
--- a/modules/store/src/main/scala/docspell/store/AddResult.scala
+++ b/modules/store/src/main/scala/docspell/store/AddResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store
 
 import docspell.store.AddResult._
diff --git a/modules/store/src/main/scala/docspell/store/JdbcConfig.scala b/modules/store/src/main/scala/docspell/store/JdbcConfig.scala
index 13edbe21..c9553964 100644
--- a/modules/store/src/main/scala/docspell/store/JdbcConfig.scala
+++ b/modules/store/src/main/scala/docspell/store/JdbcConfig.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store
 
 import docspell.common.LenientUri
diff --git a/modules/store/src/main/scala/docspell/store/Store.scala b/modules/store/src/main/scala/docspell/store/Store.scala
index 8988a96f..b34b6fb0 100644
--- a/modules/store/src/main/scala/docspell/store/Store.scala
+++ b/modules/store/src/main/scala/docspell/store/Store.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store
 
 import scala.concurrent.ExecutionContext
diff --git a/modules/store/src/main/scala/docspell/store/UpdateResult.scala b/modules/store/src/main/scala/docspell/store/UpdateResult.scala
index 09ae064a..29e66f33 100644
--- a/modules/store/src/main/scala/docspell/store/UpdateResult.scala
+++ b/modules/store/src/main/scala/docspell/store/UpdateResult.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store
 
 import cats.ApplicativeError
diff --git a/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala b/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala
index c38ff900..a1ae5da3 100644
--- a/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala
+++ b/modules/store/src/main/scala/docspell/store/impl/DoobieMeta.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.impl
 
 import java.time.format.DateTimeFormatter
diff --git a/modules/store/src/main/scala/docspell/store/impl/StoreImpl.scala b/modules/store/src/main/scala/docspell/store/impl/StoreImpl.scala
index 580113a7..3d60b3fe 100644
--- a/modules/store/src/main/scala/docspell/store/impl/StoreImpl.scala
+++ b/modules/store/src/main/scala/docspell/store/impl/StoreImpl.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.impl
 
 import cats.effect.Async
diff --git a/modules/store/src/main/scala/docspell/store/impl/h2/CastNumericFun.scala b/modules/store/src/main/scala/docspell/store/impl/h2/CastNumericFun.scala
index c35b43e0..b9794a21 100644
--- a/modules/store/src/main/scala/docspell/store/impl/h2/CastNumericFun.scala
+++ b/modules/store/src/main/scala/docspell/store/impl/h2/CastNumericFun.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.impl.h2
 
 import java.math.BigDecimal
diff --git a/modules/store/src/main/scala/docspell/store/migrate/FlywayMigrate.scala b/modules/store/src/main/scala/docspell/store/migrate/FlywayMigrate.scala
index 5957ff07..57783ccd 100644
--- a/modules/store/src/main/scala/docspell/store/migrate/FlywayMigrate.scala
+++ b/modules/store/src/main/scala/docspell/store/migrate/FlywayMigrate.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.migrate
 
 import cats.effect.Sync
diff --git a/modules/store/src/main/scala/docspell/store/qb/Batch.scala b/modules/store/src/main/scala/docspell/store/qb/Batch.scala
index 26ffa148..35284c8b 100644
--- a/modules/store/src/main/scala/docspell/store/qb/Batch.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/Batch.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 case class Batch(offset: Int, limit: Int) {
diff --git a/modules/store/src/main/scala/docspell/store/qb/Column.scala b/modules/store/src/main/scala/docspell/store/qb/Column.scala
index e5e13749..fa065862 100644
--- a/modules/store/src/main/scala/docspell/store/qb/Column.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/Column.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 case class Column[A](name: String, table: TableDef) {
diff --git a/modules/store/src/main/scala/docspell/store/qb/Condition.scala b/modules/store/src/main/scala/docspell/store/qb/Condition.scala
index cfe156a2..7616be55 100644
--- a/modules/store/src/main/scala/docspell/store/qb/Condition.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/Condition.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/qb/CteBind.scala b/modules/store/src/main/scala/docspell/store/qb/CteBind.scala
index 16e5d436..0f0e17c9 100644
--- a/modules/store/src/main/scala/docspell/store/qb/CteBind.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/CteBind.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 case class CteBind(name: TableDef, coldef: Vector[Column[_]], select: Select) {}
diff --git a/modules/store/src/main/scala/docspell/store/qb/DBFunction.scala b/modules/store/src/main/scala/docspell/store/qb/DBFunction.scala
index 705bf959..2479029b 100644
--- a/modules/store/src/main/scala/docspell/store/qb/DBFunction.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/DBFunction.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/qb/DML.scala b/modules/store/src/main/scala/docspell/store/qb/DML.scala
index c30e790d..0ba5f072 100644
--- a/modules/store/src/main/scala/docspell/store/qb/DML.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/DML.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/store/src/main/scala/docspell/store/qb/DSL.scala b/modules/store/src/main/scala/docspell/store/qb/DSL.scala
index 671d4e71..d9588357 100644
--- a/modules/store/src/main/scala/docspell/store/qb/DSL.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/DSL.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/store/src/main/scala/docspell/store/qb/FromExpr.scala b/modules/store/src/main/scala/docspell/store/qb/FromExpr.scala
index 2edb13a4..ff35dd94 100644
--- a/modules/store/src/main/scala/docspell/store/qb/FromExpr.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/FromExpr.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import docspell.store.qb.FromExpr.{Joined, Relation}
diff --git a/modules/store/src/main/scala/docspell/store/qb/GroupBy.scala b/modules/store/src/main/scala/docspell/store/qb/GroupBy.scala
index 8a5b451b..d28d6887 100644
--- a/modules/store/src/main/scala/docspell/store/qb/GroupBy.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/GroupBy.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/qb/Operator.scala b/modules/store/src/main/scala/docspell/store/qb/Operator.scala
index 47b436ef..6244c538 100644
--- a/modules/store/src/main/scala/docspell/store/qb/Operator.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/Operator.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 sealed trait Operator
diff --git a/modules/store/src/main/scala/docspell/store/qb/OrderBy.scala b/modules/store/src/main/scala/docspell/store/qb/OrderBy.scala
index 128d3b81..b27b71e3 100644
--- a/modules/store/src/main/scala/docspell/store/qb/OrderBy.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/OrderBy.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import docspell.store.qb.OrderBy.OrderType
diff --git a/modules/store/src/main/scala/docspell/store/qb/Select.scala b/modules/store/src/main/scala/docspell/store/qb/Select.scala
index d6150b18..67cb4cdd 100644
--- a/modules/store/src/main/scala/docspell/store/qb/Select.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/Select.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import cats.data.{NonEmptyList => Nel}
diff --git a/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala b/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala
index 6ab371b2..e380af3d 100644
--- a/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import doobie.Put
diff --git a/modules/store/src/main/scala/docspell/store/qb/Setter.scala b/modules/store/src/main/scala/docspell/store/qb/Setter.scala
index b6808e55..50335fdd 100644
--- a/modules/store/src/main/scala/docspell/store/qb/Setter.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/Setter.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import doobie._
diff --git a/modules/store/src/main/scala/docspell/store/qb/TableDef.scala b/modules/store/src/main/scala/docspell/store/qb/TableDef.scala
index e78d3ff4..6584ac0c 100644
--- a/modules/store/src/main/scala/docspell/store/qb/TableDef.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/TableDef.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 trait TableDef {
diff --git a/modules/store/src/main/scala/docspell/store/qb/generator/ItemQueryGenerator.scala b/modules/store/src/main/scala/docspell/store/qb/generator/ItemQueryGenerator.scala
index 203c4a0d..4e356ae2 100644
--- a/modules/store/src/main/scala/docspell/store/qb/generator/ItemQueryGenerator.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/generator/ItemQueryGenerator.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.generator
 
 import java.time.Instant
diff --git a/modules/store/src/main/scala/docspell/store/qb/generator/Tables.scala b/modules/store/src/main/scala/docspell/store/qb/generator/Tables.scala
index 0d30c99c..20a47eb3 100644
--- a/modules/store/src/main/scala/docspell/store/qb/generator/Tables.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/generator/Tables.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.generator
 
 import docspell.store.queries.AttachCountTable
diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/CommonBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/CommonBuilder.scala
index e0418e60..cef61277 100644
--- a/modules/store/src/main/scala/docspell/store/qb/impl/CommonBuilder.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/impl/CommonBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb._
diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/ConditionBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/ConditionBuilder.scala
index 665ca476..59e9a193 100644
--- a/modules/store/src/main/scala/docspell/store/qb/impl/ConditionBuilder.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/impl/ConditionBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/DBFunctionBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/DBFunctionBuilder.scala
index eba78b27..fd4d1d22 100644
--- a/modules/store/src/main/scala/docspell/store/qb/impl/DBFunctionBuilder.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/impl/DBFunctionBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb.DBFunction
diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/FromExprBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/FromExprBuilder.scala
index 522a8941..07c62468 100644
--- a/modules/store/src/main/scala/docspell/store/qb/impl/FromExprBuilder.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/impl/FromExprBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb._
diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/SelectBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/SelectBuilder.scala
index c6b92a7d..7ef5be16 100644
--- a/modules/store/src/main/scala/docspell/store/qb/impl/SelectBuilder.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/impl/SelectBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala
index 30cfe8f7..bc1144a5 100644
--- a/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala
+++ b/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb._
diff --git a/modules/store/src/main/scala/docspell/store/queries/AttachCountTable.scala b/modules/store/src/main/scala/docspell/store/queries/AttachCountTable.scala
index 2ed6fc3c..e74f7430 100644
--- a/modules/store/src/main/scala/docspell/store/queries/AttachCountTable.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/AttachCountTable.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common.Ident
diff --git a/modules/store/src/main/scala/docspell/store/queries/AttachmentLight.scala b/modules/store/src/main/scala/docspell/store/queries/AttachmentLight.scala
index 72caee49..f6be3f96 100644
--- a/modules/store/src/main/scala/docspell/store/queries/AttachmentLight.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/AttachmentLight.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/CategoryCount.scala b/modules/store/src/main/scala/docspell/store/queries/CategoryCount.scala
index 9724b1c6..0d3fcf20 100644
--- a/modules/store/src/main/scala/docspell/store/queries/CategoryCount.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/CategoryCount.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 final case class CategoryCount(category: Option[String], count: Int)
diff --git a/modules/store/src/main/scala/docspell/store/queries/CustomValue.scala b/modules/store/src/main/scala/docspell/store/queries/CustomValue.scala
index fddaf92f..40deb44c 100644
--- a/modules/store/src/main/scala/docspell/store/queries/CustomValue.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/CustomValue.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/FieldStats.scala b/modules/store/src/main/scala/docspell/store/queries/FieldStats.scala
index 4fb90c50..d18840dc 100644
--- a/modules/store/src/main/scala/docspell/store/queries/FieldStats.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/FieldStats.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.store.records.RCustomField
diff --git a/modules/store/src/main/scala/docspell/store/queries/FolderCount.scala b/modules/store/src/main/scala/docspell/store/queries/FolderCount.scala
index a1f93c55..af91be66 100644
--- a/modules/store/src/main/scala/docspell/store/queries/FolderCount.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/FolderCount.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/ItemData.scala b/modules/store/src/main/scala/docspell/store/queries/ItemData.scala
index d96d726e..942cf579 100644
--- a/modules/store/src/main/scala/docspell/store/queries/ItemData.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/ItemData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/ItemFieldValue.scala b/modules/store/src/main/scala/docspell/store/queries/ItemFieldValue.scala
index 6814f6d7..2c76a6a7 100644
--- a/modules/store/src/main/scala/docspell/store/queries/ItemFieldValue.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/ItemFieldValue.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/ListItem.scala b/modules/store/src/main/scala/docspell/store/queries/ListItem.scala
index d5a37595..fe0b0a02 100644
--- a/modules/store/src/main/scala/docspell/store/queries/ListItem.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/ListItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/ListItemWithTags.scala b/modules/store/src/main/scala/docspell/store/queries/ListItemWithTags.scala
index 5401986d..7d430fe5 100644
--- a/modules/store/src/main/scala/docspell/store/queries/ListItemWithTags.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/ListItemWithTags.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.store.records.RTag
diff --git a/modules/store/src/main/scala/docspell/store/queries/QAttachment.scala b/modules/store/src/main/scala/docspell/store/queries/QAttachment.scala
index 1b6fa8ab..2085b62e 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QAttachment.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QAttachment.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.OptionT
diff --git a/modules/store/src/main/scala/docspell/store/queries/QCollective.scala b/modules/store/src/main/scala/docspell/store/queries/QCollective.scala
index 15e600dc..ede76360 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QCollective.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QCollective.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import fs2.Stream
diff --git a/modules/store/src/main/scala/docspell/store/queries/QCustomField.scala b/modules/store/src/main/scala/docspell/store/queries/QCustomField.scala
index b2923295..c944cddf 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QCustomField.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QCustomField.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.implicits._
diff --git a/modules/store/src/main/scala/docspell/store/queries/QFolder.scala b/modules/store/src/main/scala/docspell/store/queries/QFolder.scala
index 08192cf3..819b6004 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QFolder.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QFolder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.OptionT
diff --git a/modules/store/src/main/scala/docspell/store/queries/QItem.scala b/modules/store/src/main/scala/docspell/store/queries/QItem.scala
index 8b5c6e86..0aefa0db 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QItem.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import java.time.LocalDate
diff --git a/modules/store/src/main/scala/docspell/store/queries/QJob.scala b/modules/store/src/main/scala/docspell/store/queries/QJob.scala
index 9115dfa5..2973a667 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QJob.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QJob.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/queries/QLogin.scala b/modules/store/src/main/scala/docspell/store/queries/QLogin.scala
index 08af3265..c77610d2 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QLogin.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QLogin.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.OptionT
diff --git a/modules/store/src/main/scala/docspell/store/queries/QMails.scala b/modules/store/src/main/scala/docspell/store/queries/QMails.scala
index b58740c7..7a711565 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QMails.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QMails.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.OptionT
diff --git a/modules/store/src/main/scala/docspell/store/queries/QMoveAttachment.scala b/modules/store/src/main/scala/docspell/store/queries/QMoveAttachment.scala
index 8992065e..1b8ef579 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QMoveAttachment.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QMoveAttachment.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.OptionT
diff --git a/modules/store/src/main/scala/docspell/store/queries/QOrganization.scala b/modules/store/src/main/scala/docspell/store/queries/QOrganization.scala
index 05415b5b..b223d2df 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QOrganization.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QOrganization.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/queries/QPeriodicTask.scala b/modules/store/src/main/scala/docspell/store/queries/QPeriodicTask.scala
index 9cccf026..7b129b23 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QPeriodicTask.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QPeriodicTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/QUserTask.scala b/modules/store/src/main/scala/docspell/store/queries/QUserTask.scala
index 8ed3a3d0..3705416e 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QUserTask.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QUserTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import fs2._
diff --git a/modules/store/src/main/scala/docspell/store/queries/Query.scala b/modules/store/src/main/scala/docspell/store/queries/Query.scala
index 7fcc6ca6..3fe1d299 100644
--- a/modules/store/src/main/scala/docspell/store/queries/Query.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/Query.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/QueryWildcard.scala b/modules/store/src/main/scala/docspell/store/queries/QueryWildcard.scala
index 16a2f1bb..dbcdf07f 100644
--- a/modules/store/src/main/scala/docspell/store/queries/QueryWildcard.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/QueryWildcard.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 object QueryWildcard {
diff --git a/modules/store/src/main/scala/docspell/store/queries/SearchSummary.scala b/modules/store/src/main/scala/docspell/store/queries/SearchSummary.scala
index 7beb1724..db2b5335 100644
--- a/modules/store/src/main/scala/docspell/store/queries/SearchSummary.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/SearchSummary.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 case class SearchSummary(
diff --git a/modules/store/src/main/scala/docspell/store/queries/SelectedItem.scala b/modules/store/src/main/scala/docspell/store/queries/SelectedItem.scala
index 9beba7cb..b43f3095 100644
--- a/modules/store/src/main/scala/docspell/store/queries/SelectedItem.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/SelectedItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queries/TagCount.scala b/modules/store/src/main/scala/docspell/store/queries/TagCount.scala
index b7237f2f..2bb8fded 100644
--- a/modules/store/src/main/scala/docspell/store/queries/TagCount.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/TagCount.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.store.records.RTag
diff --git a/modules/store/src/main/scala/docspell/store/queries/TextAndTag.scala b/modules/store/src/main/scala/docspell/store/queries/TextAndTag.scala
index ffeb2984..a73c6e61 100644
--- a/modules/store/src/main/scala/docspell/store/queries/TextAndTag.scala
+++ b/modules/store/src/main/scala/docspell/store/queries/TextAndTag.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/queue/JobQueue.scala b/modules/store/src/main/scala/docspell/store/queue/JobQueue.scala
index 40147571..5a641d4b 100644
--- a/modules/store/src/main/scala/docspell/store/queue/JobQueue.scala
+++ b/modules/store/src/main/scala/docspell/store/queue/JobQueue.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queue
 
 import cats.effect._
diff --git a/modules/store/src/main/scala/docspell/store/queue/Marked.scala b/modules/store/src/main/scala/docspell/store/queue/Marked.scala
index 3844ee88..477b384b 100644
--- a/modules/store/src/main/scala/docspell/store/queue/Marked.scala
+++ b/modules/store/src/main/scala/docspell/store/queue/Marked.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queue
 
 sealed trait Marked[+A] {}
diff --git a/modules/store/src/main/scala/docspell/store/queue/PeriodicTaskStore.scala b/modules/store/src/main/scala/docspell/store/queue/PeriodicTaskStore.scala
index 297b3c15..f7b8f8f6 100644
--- a/modules/store/src/main/scala/docspell/store/queue/PeriodicTaskStore.scala
+++ b/modules/store/src/main/scala/docspell/store/queue/PeriodicTaskStore.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queue
 
 import cats.effect._
diff --git a/modules/store/src/main/scala/docspell/store/records/RAttachment.scala b/modules/store/src/main/scala/docspell/store/records/RAttachment.scala
index bbb7a00d..4384e67d 100644
--- a/modules/store/src/main/scala/docspell/store/records/RAttachment.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RAttachment.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RAttachmentArchive.scala b/modules/store/src/main/scala/docspell/store/records/RAttachmentArchive.scala
index f71116e2..6c85972c 100644
--- a/modules/store/src/main/scala/docspell/store/records/RAttachmentArchive.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RAttachmentArchive.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RAttachmentMeta.scala b/modules/store/src/main/scala/docspell/store/records/RAttachmentMeta.scala
index 5bc8feea..d6b68fa7 100644
--- a/modules/store/src/main/scala/docspell/store/records/RAttachmentMeta.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RAttachmentMeta.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RAttachmentPreview.scala b/modules/store/src/main/scala/docspell/store/records/RAttachmentPreview.scala
index 61576930..f70100b7 100644
--- a/modules/store/src/main/scala/docspell/store/records/RAttachmentPreview.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RAttachmentPreview.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RAttachmentSource.scala b/modules/store/src/main/scala/docspell/store/records/RAttachmentSource.scala
index 62c1b1d8..609b781d 100644
--- a/modules/store/src/main/scala/docspell/store/records/RAttachmentSource.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RAttachmentSource.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RClassifierModel.scala b/modules/store/src/main/scala/docspell/store/records/RClassifierModel.scala
index 2032e61e..2d2c4de4 100644
--- a/modules/store/src/main/scala/docspell/store/records/RClassifierModel.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RClassifierModel.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RClassifierSetting.scala b/modules/store/src/main/scala/docspell/store/records/RClassifierSetting.scala
index 1d7fd5f6..424ee2fb 100644
--- a/modules/store/src/main/scala/docspell/store/records/RClassifierSetting.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RClassifierSetting.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.{NonEmptyList, OptionT}
diff --git a/modules/store/src/main/scala/docspell/store/records/RClientSettings.scala b/modules/store/src/main/scala/docspell/store/records/RClientSettings.scala
index ed7c3911..655ab794 100644
--- a/modules/store/src/main/scala/docspell/store/records/RClientSettings.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RClientSettings.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RCollective.scala b/modules/store/src/main/scala/docspell/store/records/RCollective.scala
index d1a0cb09..bac88ccd 100644
--- a/modules/store/src/main/scala/docspell/store/records/RCollective.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RCollective.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.{NonEmptyList, OptionT}
diff --git a/modules/store/src/main/scala/docspell/store/records/RContact.scala b/modules/store/src/main/scala/docspell/store/records/RContact.scala
index e625a86c..12833aac 100644
--- a/modules/store/src/main/scala/docspell/store/records/RContact.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RContact.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RCustomField.scala b/modules/store/src/main/scala/docspell/store/records/RCustomField.scala
index e63c6b9c..5b3ab4de 100644
--- a/modules/store/src/main/scala/docspell/store/records/RCustomField.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RCustomField.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RCustomFieldValue.scala b/modules/store/src/main/scala/docspell/store/records/RCustomFieldValue.scala
index 3a5eaa2c..f98ae47a 100644
--- a/modules/store/src/main/scala/docspell/store/records/RCustomFieldValue.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RCustomFieldValue.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/REquipment.scala b/modules/store/src/main/scala/docspell/store/records/REquipment.scala
index 6cb31224..0aa6fc34 100644
--- a/modules/store/src/main/scala/docspell/store/records/REquipment.scala
+++ b/modules/store/src/main/scala/docspell/store/records/REquipment.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RFileMeta.scala b/modules/store/src/main/scala/docspell/store/records/RFileMeta.scala
index 2567562f..29776488 100644
--- a/modules/store/src/main/scala/docspell/store/records/RFileMeta.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RFileMeta.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import java.time.Instant
diff --git a/modules/store/src/main/scala/docspell/store/records/RFolder.scala b/modules/store/src/main/scala/docspell/store/records/RFolder.scala
index a83ef1a6..f4e48a39 100644
--- a/modules/store/src/main/scala/docspell/store/records/RFolder.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RFolder.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
@@ -68,6 +74,25 @@ object RFolder {
     sql.query[RFolder].option
   }
 
+  def requireIdByIdOrName(
+      folderId: Ident,
+      name: String,
+      collective: Ident
+  ): ConnectionIO[Ident] = {
+    val sql = run(
+      select(T.id),
+      from(T),
+      T.id === folderId || (T.name === name && T.collective === collective)
+    )
+    sql.query[Ident].option.flatMap {
+      case Some(id) => id.pure[ConnectionIO]
+      case None =>
+        Sync[ConnectionIO].raiseError(
+          new Exception(s"No folder found for: id=${folderId.id} or name=${name}")
+        )
+    }
+  }
+
   def findAll(
       coll: Ident,
       nameQ: Option[String],
diff --git a/modules/store/src/main/scala/docspell/store/records/RFolderMember.scala b/modules/store/src/main/scala/docspell/store/records/RFolderMember.scala
index 2e38ab74..9452b4f4 100644
--- a/modules/store/src/main/scala/docspell/store/records/RFolderMember.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RFolderMember.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RInvitation.scala b/modules/store/src/main/scala/docspell/store/records/RInvitation.scala
index bacecc0f..c8516faa 100644
--- a/modules/store/src/main/scala/docspell/store/records/RInvitation.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RInvitation.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RItem.scala b/modules/store/src/main/scala/docspell/store/records/RItem.scala
index 6a65ef83..1dd977cc 100644
--- a/modules/store/src/main/scala/docspell/store/records/RItem.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
@@ -268,10 +274,14 @@ object RItem {
   ): ConnectionIO[Int] =
     for {
       t <- currentTime
+      fid <- folderId match {
+        case Some(f) => RFolder.requireIdByIdOrName(f, f.id, coll).map(_.some)
+        case None    => None.pure[ConnectionIO]
+      }
       n <- DML.update(
         T,
         T.cid === coll && T.id === itemId,
-        DML.set(T.folder.setTo(folderId), T.updated.setTo(t))
+        DML.set(T.folder.setTo(fid), T.updated.setTo(t))
       )
     } yield n
 
diff --git a/modules/store/src/main/scala/docspell/store/records/RItemProposal.scala b/modules/store/src/main/scala/docspell/store/records/RItemProposal.scala
index c5d44cc0..a30311f2 100644
--- a/modules/store/src/main/scala/docspell/store/records/RItemProposal.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RItemProposal.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RJob.scala b/modules/store/src/main/scala/docspell/store/records/RJob.scala
index e9112c5a..5f16bdf7 100644
--- a/modules/store/src/main/scala/docspell/store/records/RJob.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RJob.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RJobGroupUse.scala b/modules/store/src/main/scala/docspell/store/records/RJobGroupUse.scala
index c00a4e77..cca58860 100644
--- a/modules/store/src/main/scala/docspell/store/records/RJobGroupUse.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RJobGroupUse.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RJobLog.scala b/modules/store/src/main/scala/docspell/store/records/RJobLog.scala
index 3e14bda7..933380b2 100644
--- a/modules/store/src/main/scala/docspell/store/records/RJobLog.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RJobLog.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RNode.scala b/modules/store/src/main/scala/docspell/store/records/RNode.scala
index c3495aa4..623cd482 100644
--- a/modules/store/src/main/scala/docspell/store/records/RNode.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RNode.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 import cats.data.NonEmptyList
 import cats.effect.Sync
diff --git a/modules/store/src/main/scala/docspell/store/records/ROrganization.scala b/modules/store/src/main/scala/docspell/store/records/ROrganization.scala
index bbf4e385..4e2f4a01 100644
--- a/modules/store/src/main/scala/docspell/store/records/ROrganization.scala
+++ b/modules/store/src/main/scala/docspell/store/records/ROrganization.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.Eq
diff --git a/modules/store/src/main/scala/docspell/store/records/RPeriodicTask.scala b/modules/store/src/main/scala/docspell/store/records/RPeriodicTask.scala
index 74c9982c..4eb48e90 100644
--- a/modules/store/src/main/scala/docspell/store/records/RPeriodicTask.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RPeriodicTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RPerson.scala b/modules/store/src/main/scala/docspell/store/records/RPerson.scala
index e2552b53..e14b0ecf 100644
--- a/modules/store/src/main/scala/docspell/store/records/RPerson.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RPerson.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.Eq
diff --git a/modules/store/src/main/scala/docspell/store/records/RRememberMe.scala b/modules/store/src/main/scala/docspell/store/records/RRememberMe.scala
index 1e0606ff..8938d06c 100644
--- a/modules/store/src/main/scala/docspell/store/records/RRememberMe.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RRememberMe.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RSentMail.scala b/modules/store/src/main/scala/docspell/store/records/RSentMail.scala
index f2aa1d72..c92e7206 100644
--- a/modules/store/src/main/scala/docspell/store/records/RSentMail.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RSentMail.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala b/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala
index d648567b..128251de 100644
--- a/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RSentMailItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RSource.scala b/modules/store/src/main/scala/docspell/store/records/RSource.scala
index de8ce7cd..ef703f5f 100644
--- a/modules/store/src/main/scala/docspell/store/records/RSource.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RSource.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RTag.scala b/modules/store/src/main/scala/docspell/store/records/RTag.scala
index 51f25912..f9739b74 100644
--- a/modules/store/src/main/scala/docspell/store/records/RTag.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RTag.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RTagItem.scala b/modules/store/src/main/scala/docspell/store/records/RTagItem.scala
index cca55b8f..6b8a6ae5 100644
--- a/modules/store/src/main/scala/docspell/store/records/RTagItem.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RTagItem.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RTagSource.scala b/modules/store/src/main/scala/docspell/store/records/RTagSource.scala
index 86f6faff..e89cbdee 100644
--- a/modules/store/src/main/scala/docspell/store/records/RTagSource.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RTagSource.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RUser.scala b/modules/store/src/main/scala/docspell/store/records/RUser.scala
index befd4865..a77324ca 100644
--- a/modules/store/src/main/scala/docspell/store/records/RUser.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RUser.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/records/RUserEmail.scala b/modules/store/src/main/scala/docspell/store/records/RUserEmail.scala
index ca9cf28a..45898e51 100644
--- a/modules/store/src/main/scala/docspell/store/records/RUserEmail.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RUserEmail.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.{NonEmptyList, OptionT}
diff --git a/modules/store/src/main/scala/docspell/store/records/RUserImap.scala b/modules/store/src/main/scala/docspell/store/records/RUserImap.scala
index 33ce5689..3c9e432c 100644
--- a/modules/store/src/main/scala/docspell/store/records/RUserImap.scala
+++ b/modules/store/src/main/scala/docspell/store/records/RUserImap.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.{NonEmptyList, OptionT}
diff --git a/modules/store/src/main/scala/docspell/store/records/SourceData.scala b/modules/store/src/main/scala/docspell/store/records/SourceData.scala
index 2cccd63d..beaa2c70 100644
--- a/modules/store/src/main/scala/docspell/store/records/SourceData.scala
+++ b/modules/store/src/main/scala/docspell/store/records/SourceData.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.effect.Ref
diff --git a/modules/store/src/main/scala/docspell/store/records/TagItemName.scala b/modules/store/src/main/scala/docspell/store/records/TagItemName.scala
index 012dad4c..8eeb2f4f 100644
--- a/modules/store/src/main/scala/docspell/store/records/TagItemName.scala
+++ b/modules/store/src/main/scala/docspell/store/records/TagItemName.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.records
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/main/scala/docspell/store/syntax/MimeTypes.scala b/modules/store/src/main/scala/docspell/store/syntax/MimeTypes.scala
index 2006a325..8b934fa1 100644
--- a/modules/store/src/main/scala/docspell/store/syntax/MimeTypes.scala
+++ b/modules/store/src/main/scala/docspell/store/syntax/MimeTypes.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.syntax
 
 import docspell.common._
diff --git a/modules/store/src/main/scala/docspell/store/usertask/UserTask.scala b/modules/store/src/main/scala/docspell/store/usertask/UserTask.scala
index 81d5330f..722374a0 100644
--- a/modules/store/src/main/scala/docspell/store/usertask/UserTask.scala
+++ b/modules/store/src/main/scala/docspell/store/usertask/UserTask.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.usertask
 
 import cats.effect._
diff --git a/modules/store/src/main/scala/docspell/store/usertask/UserTaskStore.scala b/modules/store/src/main/scala/docspell/store/usertask/UserTaskStore.scala
index 0854cdaf..914e1357 100644
--- a/modules/store/src/main/scala/docspell/store/usertask/UserTaskStore.scala
+++ b/modules/store/src/main/scala/docspell/store/usertask/UserTaskStore.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.usertask
 
 import cats.data.OptionT
diff --git a/modules/store/src/test/scala/docspell/store/StoreFixture.scala b/modules/store/src/test/scala/docspell/store/StoreFixture.scala
index 00798db9..65e9f911 100644
--- a/modules/store/src/test/scala/docspell/store/StoreFixture.scala
+++ b/modules/store/src/test/scala/docspell/store/StoreFixture.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store
 
 import cats.effect._
diff --git a/modules/store/src/test/scala/docspell/store/generator/ItemQueryGeneratorTest.scala b/modules/store/src/test/scala/docspell/store/generator/ItemQueryGeneratorTest.scala
index 25ee0af0..db49f5cd 100644
--- a/modules/store/src/test/scala/docspell/store/generator/ItemQueryGeneratorTest.scala
+++ b/modules/store/src/test/scala/docspell/store/generator/ItemQueryGeneratorTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.generator
 
 import java.time.LocalDate
diff --git a/modules/store/src/test/scala/docspell/store/qb/QueryBuilderTest.scala b/modules/store/src/test/scala/docspell/store/qb/QueryBuilderTest.scala
index c355a7cb..806d1738 100644
--- a/modules/store/src/test/scala/docspell/store/qb/QueryBuilderTest.scala
+++ b/modules/store/src/test/scala/docspell/store/qb/QueryBuilderTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb
 
 import docspell.store.qb.DSL._
diff --git a/modules/store/src/test/scala/docspell/store/qb/impl/ConditionBuilderTest.scala b/modules/store/src/test/scala/docspell/store/qb/impl/ConditionBuilderTest.scala
index ebab052c..20fc10d0 100644
--- a/modules/store/src/test/scala/docspell/store/qb/impl/ConditionBuilderTest.scala
+++ b/modules/store/src/test/scala/docspell/store/qb/impl/ConditionBuilderTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb.DSL._
diff --git a/modules/store/src/test/scala/docspell/store/qb/impl/DSLTest.scala b/modules/store/src/test/scala/docspell/store/qb/impl/DSLTest.scala
index e5b0b5be..6855fe72 100644
--- a/modules/store/src/test/scala/docspell/store/qb/impl/DSLTest.scala
+++ b/modules/store/src/test/scala/docspell/store/qb/impl/DSLTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb.DSL._
diff --git a/modules/store/src/test/scala/docspell/store/qb/impl/SelectBuilderTest.scala b/modules/store/src/test/scala/docspell/store/qb/impl/SelectBuilderTest.scala
index f8b07595..ee133730 100644
--- a/modules/store/src/test/scala/docspell/store/qb/impl/SelectBuilderTest.scala
+++ b/modules/store/src/test/scala/docspell/store/qb/impl/SelectBuilderTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.impl
 
 import docspell.store.qb.DSL._
diff --git a/modules/store/src/test/scala/docspell/store/qb/model/CourseRecord.scala b/modules/store/src/test/scala/docspell/store/qb/model/CourseRecord.scala
index 31ee4859..6a2ed274 100644
--- a/modules/store/src/test/scala/docspell/store/qb/model/CourseRecord.scala
+++ b/modules/store/src/test/scala/docspell/store/qb/model/CourseRecord.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.model
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/test/scala/docspell/store/qb/model/PersonRecord.scala b/modules/store/src/test/scala/docspell/store/qb/model/PersonRecord.scala
index 2080541b..7e52bdcb 100644
--- a/modules/store/src/test/scala/docspell/store/qb/model/PersonRecord.scala
+++ b/modules/store/src/test/scala/docspell/store/qb/model/PersonRecord.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.qb.model
 
 import cats.data.NonEmptyList
diff --git a/modules/store/src/test/scala/docspell/store/queries/QJobTest.scala b/modules/store/src/test/scala/docspell/store/queries/QJobTest.scala
index 66dade6b..6d9146c0 100644
--- a/modules/store/src/test/scala/docspell/store/queries/QJobTest.scala
+++ b/modules/store/src/test/scala/docspell/store/queries/QJobTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import java.time.Instant
diff --git a/modules/store/src/test/scala/docspell/store/queries/QueryWildcardTest.scala b/modules/store/src/test/scala/docspell/store/queries/QueryWildcardTest.scala
index 92b92834..70d7507e 100644
--- a/modules/store/src/test/scala/docspell/store/queries/QueryWildcardTest.scala
+++ b/modules/store/src/test/scala/docspell/store/queries/QueryWildcardTest.scala
@@ -1,3 +1,9 @@
+/*
+ * Copyright 2020 Docspell Contributors
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
 package docspell.store.queries
 
 import munit._
diff --git a/modules/webapp/src/main/elm/Api.elm b/modules/webapp/src/main/elm/Api.elm
index c883d71c..3f5e447c 100644
--- a/modules/webapp/src/main/elm/Api.elm
+++ b/modules/webapp/src/main/elm/Api.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Api exposing
     ( addConcEquip
     , addConcPerson
diff --git a/modules/webapp/src/main/elm/App/Data.elm b/modules/webapp/src/main/elm/App/Data.elm
index 784d8493..d61ba672 100644
--- a/modules/webapp/src/main/elm/App/Data.elm
+++ b/modules/webapp/src/main/elm/App/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module App.Data exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/App/Update.elm b/modules/webapp/src/main/elm/App/Update.elm
index fa92a709..b718c1a0 100644
--- a/modules/webapp/src/main/elm/App/Update.elm
+++ b/modules/webapp/src/main/elm/App/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module App.Update exposing
     ( initPage
     , update
diff --git a/modules/webapp/src/main/elm/App/View2.elm b/modules/webapp/src/main/elm/App/View2.elm
index 00c807b6..0a57c3d6 100644
--- a/modules/webapp/src/main/elm/App/View2.elm
+++ b/modules/webapp/src/main/elm/App/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module App.View2 exposing (view)
 
 import Api.Model.AuthResult exposing (AuthResult)
diff --git a/modules/webapp/src/main/elm/Comp/AddressForm.elm b/modules/webapp/src/main/elm/Comp/AddressForm.elm
index e8b2fd61..b294b60d 100644
--- a/modules/webapp/src/main/elm/Comp/AddressForm.elm
+++ b/modules/webapp/src/main/elm/Comp/AddressForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.AddressForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm b/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm
index 40196793..3e4901df 100644
--- a/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm
+++ b/modules/webapp/src/main/elm/Comp/AttachmentMeta.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.AttachmentMeta exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/Basic.elm b/modules/webapp/src/main/elm/Comp/Basic.elm
index 57051c17..c0b7c314 100644
--- a/modules/webapp/src/main/elm/Comp/Basic.elm
+++ b/modules/webapp/src/main/elm/Comp/Basic.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.Basic exposing
     ( editLinkLabel
     , editLinkTableCell
diff --git a/modules/webapp/src/main/elm/Comp/BasicSizeField.elm b/modules/webapp/src/main/elm/Comp/BasicSizeField.elm
index 590682fd..a1675682 100644
--- a/modules/webapp/src/main/elm/Comp/BasicSizeField.elm
+++ b/modules/webapp/src/main/elm/Comp/BasicSizeField.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.BasicSizeField exposing
     ( Msg
     , update
diff --git a/modules/webapp/src/main/elm/Comp/CalEventInput.elm b/modules/webapp/src/main/elm/Comp/CalEventInput.elm
index e9610043..0855b617 100644
--- a/modules/webapp/src/main/elm/Comp/CalEventInput.elm
+++ b/modules/webapp/src/main/elm/Comp/CalEventInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CalEventInput exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ChangePasswordForm.elm b/modules/webapp/src/main/elm/Comp/ChangePasswordForm.elm
index 3c1bb180..1821b684 100644
--- a/modules/webapp/src/main/elm/Comp/ChangePasswordForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ChangePasswordForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ChangePasswordForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm b/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm
index e13eba68..1fc3e3c4 100644
--- a/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ClassifierSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ClassifierSettingsForm exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm b/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm
index 947e6567..ea0404a9 100644
--- a/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Comp/CollectiveSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CollectiveSettingsForm exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ColorTagger.elm b/modules/webapp/src/main/elm/Comp/ColorTagger.elm
index 5651e448..16645e6a 100644
--- a/modules/webapp/src/main/elm/Comp/ColorTagger.elm
+++ b/modules/webapp/src/main/elm/Comp/ColorTagger.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ColorTagger exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ConfirmModal.elm b/modules/webapp/src/main/elm/Comp/ConfirmModal.elm
index 5f01a733..9254d171 100644
--- a/modules/webapp/src/main/elm/Comp/ConfirmModal.elm
+++ b/modules/webapp/src/main/elm/Comp/ConfirmModal.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ConfirmModal exposing
     ( Settings
     , defaultSettings
diff --git a/modules/webapp/src/main/elm/Comp/ContactField.elm b/modules/webapp/src/main/elm/Comp/ContactField.elm
index 03441734..5c1106e2 100644
--- a/modules/webapp/src/main/elm/Comp/ContactField.elm
+++ b/modules/webapp/src/main/elm/Comp/ContactField.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ContactField exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm b/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm
index 7100e12e..08243b16 100644
--- a/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm
+++ b/modules/webapp/src/main/elm/Comp/CustomFieldForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CustomFieldForm exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldInput.elm b/modules/webapp/src/main/elm/Comp/CustomFieldInput.elm
index d524e72a..36d5750b 100644
--- a/modules/webapp/src/main/elm/Comp/CustomFieldInput.elm
+++ b/modules/webapp/src/main/elm/Comp/CustomFieldInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CustomFieldInput exposing
     ( FieldResult(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldManage.elm b/modules/webapp/src/main/elm/Comp/CustomFieldManage.elm
index 37965d9f..f84c51ab 100644
--- a/modules/webapp/src/main/elm/Comp/CustomFieldManage.elm
+++ b/modules/webapp/src/main/elm/Comp/CustomFieldManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CustomFieldManage exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm b/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm
index bb2f6f94..b74e3b12 100644
--- a/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm
+++ b/modules/webapp/src/main/elm/Comp/CustomFieldMultiInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CustomFieldMultiInput exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/CustomFieldTable.elm b/modules/webapp/src/main/elm/Comp/CustomFieldTable.elm
index 9a19756d..bcd33b64 100644
--- a/modules/webapp/src/main/elm/Comp/CustomFieldTable.elm
+++ b/modules/webapp/src/main/elm/Comp/CustomFieldTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.CustomFieldTable exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/DatePicker.elm b/modules/webapp/src/main/elm/Comp/DatePicker.elm
index a983aa47..1a401c99 100644
--- a/modules/webapp/src/main/elm/Comp/DatePicker.elm
+++ b/modules/webapp/src/main/elm/Comp/DatePicker.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.DatePicker exposing
     ( Msg
     , defaultSettings
diff --git a/modules/webapp/src/main/elm/Comp/DetailEdit.elm b/modules/webapp/src/main/elm/Comp/DetailEdit.elm
index 0b861b63..0d6ec46a 100644
--- a/modules/webapp/src/main/elm/Comp/DetailEdit.elm
+++ b/modules/webapp/src/main/elm/Comp/DetailEdit.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.DetailEdit exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/Dropdown.elm b/modules/webapp/src/main/elm/Comp/Dropdown.elm
index 966236ea..eb792c8f 100644
--- a/modules/webapp/src/main/elm/Comp/Dropdown.elm
+++ b/modules/webapp/src/main/elm/Comp/Dropdown.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.Dropdown exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/Dropzone.elm b/modules/webapp/src/main/elm/Comp/Dropzone.elm
index e5e2ca3b..e3e99807 100644
--- a/modules/webapp/src/main/elm/Comp/Dropzone.elm
+++ b/modules/webapp/src/main/elm/Comp/Dropzone.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 -- inspired from here: https://ellie-app.com/3T5mNms7SwKa1
 
 
diff --git a/modules/webapp/src/main/elm/Comp/EmailInput.elm b/modules/webapp/src/main/elm/Comp/EmailInput.elm
index 92b5cca6..7525b9f3 100644
--- a/modules/webapp/src/main/elm/Comp/EmailInput.elm
+++ b/modules/webapp/src/main/elm/Comp/EmailInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EmailInput exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/EmailSettingsForm.elm b/modules/webapp/src/main/elm/Comp/EmailSettingsForm.elm
index c3e90a5c..427acbe7 100644
--- a/modules/webapp/src/main/elm/Comp/EmailSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Comp/EmailSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EmailSettingsForm exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm b/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm
index 0b6ad225..54acfea5 100644
--- a/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Comp/EmailSettingsManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EmailSettingsManage exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/EmailSettingsTable.elm b/modules/webapp/src/main/elm/Comp/EmailSettingsTable.elm
index 0e242a24..dc54ec5f 100644
--- a/modules/webapp/src/main/elm/Comp/EmailSettingsTable.elm
+++ b/modules/webapp/src/main/elm/Comp/EmailSettingsTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EmailSettingsTable exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/EquipmentForm.elm b/modules/webapp/src/main/elm/Comp/EquipmentForm.elm
index 31b8147d..4d91a575 100644
--- a/modules/webapp/src/main/elm/Comp/EquipmentForm.elm
+++ b/modules/webapp/src/main/elm/Comp/EquipmentForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EquipmentForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/EquipmentManage.elm b/modules/webapp/src/main/elm/Comp/EquipmentManage.elm
index 4c2d7c8f..09ab1bf6 100644
--- a/modules/webapp/src/main/elm/Comp/EquipmentManage.elm
+++ b/modules/webapp/src/main/elm/Comp/EquipmentManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EquipmentManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/EquipmentTable.elm b/modules/webapp/src/main/elm/Comp/EquipmentTable.elm
index 7ba757bf..b9bc351b 100644
--- a/modules/webapp/src/main/elm/Comp/EquipmentTable.elm
+++ b/modules/webapp/src/main/elm/Comp/EquipmentTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.EquipmentTable exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/ExpandCollapse.elm b/modules/webapp/src/main/elm/Comp/ExpandCollapse.elm
index 29ab4635..58dda86b 100644
--- a/modules/webapp/src/main/elm/Comp/ExpandCollapse.elm
+++ b/modules/webapp/src/main/elm/Comp/ExpandCollapse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ExpandCollapse exposing
     ( collapseToggle
     , expandToggle
diff --git a/modules/webapp/src/main/elm/Comp/FieldListSelect.elm b/modules/webapp/src/main/elm/Comp/FieldListSelect.elm
index 50f72c49..fcd724c0 100644
--- a/modules/webapp/src/main/elm/Comp/FieldListSelect.elm
+++ b/modules/webapp/src/main/elm/Comp/FieldListSelect.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.FieldListSelect exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/FixedDropdown.elm b/modules/webapp/src/main/elm/Comp/FixedDropdown.elm
index ff8fdbe6..9ca59bb9 100644
--- a/modules/webapp/src/main/elm/Comp/FixedDropdown.elm
+++ b/modules/webapp/src/main/elm/Comp/FixedDropdown.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.FixedDropdown exposing
     ( Item
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/FolderDetail.elm b/modules/webapp/src/main/elm/Comp/FolderDetail.elm
index b1296460..87da6fdc 100644
--- a/modules/webapp/src/main/elm/Comp/FolderDetail.elm
+++ b/modules/webapp/src/main/elm/Comp/FolderDetail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.FolderDetail exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/FolderManage.elm b/modules/webapp/src/main/elm/Comp/FolderManage.elm
index 1264cb5c..e581d2cd 100644
--- a/modules/webapp/src/main/elm/Comp/FolderManage.elm
+++ b/modules/webapp/src/main/elm/Comp/FolderManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.FolderManage exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/FolderSelect.elm b/modules/webapp/src/main/elm/Comp/FolderSelect.elm
index ff5be07f..19a5d28d 100644
--- a/modules/webapp/src/main/elm/Comp/FolderSelect.elm
+++ b/modules/webapp/src/main/elm/Comp/FolderSelect.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.FolderSelect exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/FolderTable.elm b/modules/webapp/src/main/elm/Comp/FolderTable.elm
index 2f3a7540..9745b97f 100644
--- a/modules/webapp/src/main/elm/Comp/FolderTable.elm
+++ b/modules/webapp/src/main/elm/Comp/FolderTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.FolderTable exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/ImapSettingsForm.elm b/modules/webapp/src/main/elm/Comp/ImapSettingsForm.elm
index 7e001c80..693a2f70 100644
--- a/modules/webapp/src/main/elm/Comp/ImapSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ImapSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ImapSettingsForm exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm b/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm
index ed88a705..2301a9d5 100644
--- a/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Comp/ImapSettingsManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ImapSettingsManage exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ImapSettingsTable.elm b/modules/webapp/src/main/elm/Comp/ImapSettingsTable.elm
index a0954b46..9c535ff2 100644
--- a/modules/webapp/src/main/elm/Comp/ImapSettingsTable.elm
+++ b/modules/webapp/src/main/elm/Comp/ImapSettingsTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ImapSettingsTable exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/IntField.elm b/modules/webapp/src/main/elm/Comp/IntField.elm
index 1ecbac18..9a082034 100644
--- a/modules/webapp/src/main/elm/Comp/IntField.elm
+++ b/modules/webapp/src/main/elm/Comp/IntField.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.IntField exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ItemCard.elm b/modules/webapp/src/main/elm/Comp/ItemCard.elm
index e904a2cb..ddb299f7 100644
--- a/modules/webapp/src/main/elm/Comp/ItemCard.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemCard.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemCard exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ItemCardList.elm b/modules/webapp/src/main/elm/Comp/ItemCardList.elm
index 0894d711..d0125eee 100644
--- a/modules/webapp/src/main/elm/Comp/ItemCardList.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemCardList.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemCardList exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail.elm b/modules/webapp/src/main/elm/Comp/ItemDetail.elm
index 89f354ad..a649813c 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail exposing
     ( Model
     , emptyModel
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm
index 5c6e9c25..0f74f532 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/AddFilesForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.AddFilesForm exposing (view)
 
 import Comp.Dropzone
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/ConfirmModalView.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/ConfirmModalView.elm
index 9703b70f..3334e941 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/ConfirmModalView.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/ConfirmModalView.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.ConfirmModalView exposing (view)
 
 import Comp.ConfirmModal
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm
index 94d1c413..aa872abe 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/EditForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.EditForm exposing (formTabs, view2)
 
 import Comp.CustomFieldMultiInput
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm
index 0a3c48cf..97e75a8d 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/FieldTabState.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.FieldTabState exposing (EditTab(..), allTabs, findTab, tabName, tabState)
 
 import Comp.CustomFieldMultiInput
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm
index 121ef7dd..bf332bc9 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.FormChange exposing
     ( FormChange(..)
     , multiUpdate
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm
index 182ee51e..f7e51f66 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/ItemInfoHeader.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.ItemInfoHeader exposing (view)
 
 import Api.Model.IdName exposing (IdName)
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm
index 1a944942..b0dddc19 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.Model exposing
     ( AttachmentRename
     , ConfirmModalValue(..)
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm
index 9fe1d01b..a0aad0c6 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/MultiEditMenu.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.MultiEditMenu exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Notes.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Notes.elm
index 76ad0851..a92742b7 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/Notes.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Notes.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.Notes exposing (view)
 
 import Comp.ItemDetail.Model
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
index 792ea53a..0a39c76c 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/SingleAttachment.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.SingleAttachment exposing (view)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm
index 3cf80460..cb560040 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm
index d4c93ebd..a90a4537 100644
--- a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemDetail.View2 exposing (view)
 
 import Comp.Basic as B
diff --git a/modules/webapp/src/main/elm/Comp/ItemMail.elm b/modules/webapp/src/main/elm/Comp/ItemMail.elm
index 57867d57..5467280c 100644
--- a/modules/webapp/src/main/elm/Comp/ItemMail.elm
+++ b/modules/webapp/src/main/elm/Comp/ItemMail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ItemMail exposing
     ( FormAction(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/KeyInput.elm b/modules/webapp/src/main/elm/Comp/KeyInput.elm
index e46d47b0..8b92c99c 100644
--- a/modules/webapp/src/main/elm/Comp/KeyInput.elm
+++ b/modules/webapp/src/main/elm/Comp/KeyInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.KeyInput exposing
     ( KeyInput
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/LinkTarget.elm b/modules/webapp/src/main/elm/Comp/LinkTarget.elm
index d9b456d0..1163a888 100644
--- a/modules/webapp/src/main/elm/Comp/LinkTarget.elm
+++ b/modules/webapp/src/main/elm/Comp/LinkTarget.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.LinkTarget exposing
     ( LinkTarget(..)
     , makeConcLink
diff --git a/modules/webapp/src/main/elm/Comp/MarkdownInput.elm b/modules/webapp/src/main/elm/Comp/MarkdownInput.elm
index 8254d325..3f9f8160 100644
--- a/modules/webapp/src/main/elm/Comp/MarkdownInput.elm
+++ b/modules/webapp/src/main/elm/Comp/MarkdownInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.MarkdownInput exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/MenuBar.elm b/modules/webapp/src/main/elm/Comp/MenuBar.elm
index abe6e9c2..f7a19e5d 100644
--- a/modules/webapp/src/main/elm/Comp/MenuBar.elm
+++ b/modules/webapp/src/main/elm/Comp/MenuBar.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.MenuBar exposing
     ( ButtonData
     , CheckboxData
diff --git a/modules/webapp/src/main/elm/Comp/NotificationForm.elm b/modules/webapp/src/main/elm/Comp/NotificationForm.elm
index ca8a3b4f..f895371b 100644
--- a/modules/webapp/src/main/elm/Comp/NotificationForm.elm
+++ b/modules/webapp/src/main/elm/Comp/NotificationForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.NotificationForm exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/NotificationList.elm b/modules/webapp/src/main/elm/Comp/NotificationList.elm
index 912efba5..7825d200 100644
--- a/modules/webapp/src/main/elm/Comp/NotificationList.elm
+++ b/modules/webapp/src/main/elm/Comp/NotificationList.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.NotificationList exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/NotificationManage.elm b/modules/webapp/src/main/elm/Comp/NotificationManage.elm
index f9705102..8b993c08 100644
--- a/modules/webapp/src/main/elm/Comp/NotificationManage.elm
+++ b/modules/webapp/src/main/elm/Comp/NotificationManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.NotificationManage exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/OrgForm.elm b/modules/webapp/src/main/elm/Comp/OrgForm.elm
index 8c452fbb..860fa288 100644
--- a/modules/webapp/src/main/elm/Comp/OrgForm.elm
+++ b/modules/webapp/src/main/elm/Comp/OrgForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.OrgForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/OrgManage.elm b/modules/webapp/src/main/elm/Comp/OrgManage.elm
index ae865878..5035a9db 100644
--- a/modules/webapp/src/main/elm/Comp/OrgManage.elm
+++ b/modules/webapp/src/main/elm/Comp/OrgManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.OrgManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/OrgTable.elm b/modules/webapp/src/main/elm/Comp/OrgTable.elm
index 208cbbec..bec9603c 100644
--- a/modules/webapp/src/main/elm/Comp/OrgTable.elm
+++ b/modules/webapp/src/main/elm/Comp/OrgTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.OrgTable exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/PasswordInput.elm b/modules/webapp/src/main/elm/Comp/PasswordInput.elm
index 7d245be5..4d911f6e 100644
--- a/modules/webapp/src/main/elm/Comp/PasswordInput.elm
+++ b/modules/webapp/src/main/elm/Comp/PasswordInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.PasswordInput exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/PersonForm.elm b/modules/webapp/src/main/elm/Comp/PersonForm.elm
index 96969487..a881bf11 100644
--- a/modules/webapp/src/main/elm/Comp/PersonForm.elm
+++ b/modules/webapp/src/main/elm/Comp/PersonForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.PersonForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/PersonManage.elm b/modules/webapp/src/main/elm/Comp/PersonManage.elm
index 1a5ae2ac..46ba7047 100644
--- a/modules/webapp/src/main/elm/Comp/PersonManage.elm
+++ b/modules/webapp/src/main/elm/Comp/PersonManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.PersonManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/PersonTable.elm b/modules/webapp/src/main/elm/Comp/PersonTable.elm
index d1aab27c..28b46411 100644
--- a/modules/webapp/src/main/elm/Comp/PersonTable.elm
+++ b/modules/webapp/src/main/elm/Comp/PersonTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.PersonTable exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/PowerSearchInput.elm b/modules/webapp/src/main/elm/Comp/PowerSearchInput.elm
index 6d51b2e0..2ba79200 100644
--- a/modules/webapp/src/main/elm/Comp/PowerSearchInput.elm
+++ b/modules/webapp/src/main/elm/Comp/PowerSearchInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.PowerSearchInput exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/Progress.elm b/modules/webapp/src/main/elm/Comp/Progress.elm
index 0a2fad5c..871aa178 100644
--- a/modules/webapp/src/main/elm/Comp/Progress.elm
+++ b/modules/webapp/src/main/elm/Comp/Progress.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.Progress exposing
     ( progress2
     , smallIndicating
diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm
index a90cb407..6c5caca9 100644
--- a/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm
+++ b/modules/webapp/src/main/elm/Comp/ScanMailboxForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ScanMailboxForm exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxList.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxList.elm
index de030308..66d16e9e 100644
--- a/modules/webapp/src/main/elm/Comp/ScanMailboxList.elm
+++ b/modules/webapp/src/main/elm/Comp/ScanMailboxList.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ScanMailboxList exposing
     ( Action(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm b/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm
index a25bca94..cefc2f2f 100644
--- a/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm
+++ b/modules/webapp/src/main/elm/Comp/ScanMailboxManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.ScanMailboxManage exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/SearchMenu.elm b/modules/webapp/src/main/elm/Comp/SearchMenu.elm
index 2ecca6e7..21eb4094 100644
--- a/modules/webapp/src/main/elm/Comp/SearchMenu.elm
+++ b/modules/webapp/src/main/elm/Comp/SearchMenu.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.SearchMenu exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/SearchStatsView.elm b/modules/webapp/src/main/elm/Comp/SearchStatsView.elm
index 4e2d36a8..93939a18 100644
--- a/modules/webapp/src/main/elm/Comp/SearchStatsView.elm
+++ b/modules/webapp/src/main/elm/Comp/SearchStatsView.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.SearchStatsView exposing
     ( nameOrLabel
     , sortFields
diff --git a/modules/webapp/src/main/elm/Comp/SentMails.elm b/modules/webapp/src/main/elm/Comp/SentMails.elm
index 05d2eb48..f460e75c 100644
--- a/modules/webapp/src/main/elm/Comp/SentMails.elm
+++ b/modules/webapp/src/main/elm/Comp/SentMails.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.SentMails exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/SourceForm.elm b/modules/webapp/src/main/elm/Comp/SourceForm.elm
index 4a94ae3b..5fed0bfc 100644
--- a/modules/webapp/src/main/elm/Comp/SourceForm.elm
+++ b/modules/webapp/src/main/elm/Comp/SourceForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.SourceForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/SourceManage.elm b/modules/webapp/src/main/elm/Comp/SourceManage.elm
index 344af468..6de92a90 100644
--- a/modules/webapp/src/main/elm/Comp/SourceManage.elm
+++ b/modules/webapp/src/main/elm/Comp/SourceManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.SourceManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/SourceTable.elm b/modules/webapp/src/main/elm/Comp/SourceTable.elm
index 82c0ad27..0a9967e0 100644
--- a/modules/webapp/src/main/elm/Comp/SourceTable.elm
+++ b/modules/webapp/src/main/elm/Comp/SourceTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.SourceTable exposing
     ( Msg
     , SelectMode(..)
diff --git a/modules/webapp/src/main/elm/Comp/StringListInput.elm b/modules/webapp/src/main/elm/Comp/StringListInput.elm
index 60785b46..bc07f83c 100644
--- a/modules/webapp/src/main/elm/Comp/StringListInput.elm
+++ b/modules/webapp/src/main/elm/Comp/StringListInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.StringListInput exposing
     ( ItemAction(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/Tabs.elm b/modules/webapp/src/main/elm/Comp/Tabs.elm
index 348d0f46..268a505d 100644
--- a/modules/webapp/src/main/elm/Comp/Tabs.elm
+++ b/modules/webapp/src/main/elm/Comp/Tabs.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.Tabs exposing
     ( State(..)
     , Style
diff --git a/modules/webapp/src/main/elm/Comp/TagForm.elm b/modules/webapp/src/main/elm/Comp/TagForm.elm
index c176f862..06e9bc79 100644
--- a/modules/webapp/src/main/elm/Comp/TagForm.elm
+++ b/modules/webapp/src/main/elm/Comp/TagForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.TagForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/TagManage.elm b/modules/webapp/src/main/elm/Comp/TagManage.elm
index dce79931..bfc3062f 100644
--- a/modules/webapp/src/main/elm/Comp/TagManage.elm
+++ b/modules/webapp/src/main/elm/Comp/TagManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.TagManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/TagSelect.elm b/modules/webapp/src/main/elm/Comp/TagSelect.elm
index d9c690df..f4baf86b 100644
--- a/modules/webapp/src/main/elm/Comp/TagSelect.elm
+++ b/modules/webapp/src/main/elm/Comp/TagSelect.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.TagSelect exposing
     ( CategoryCount
     , Model
diff --git a/modules/webapp/src/main/elm/Comp/TagTable.elm b/modules/webapp/src/main/elm/Comp/TagTable.elm
index 72d36795..be9f1c2d 100644
--- a/modules/webapp/src/main/elm/Comp/TagTable.elm
+++ b/modules/webapp/src/main/elm/Comp/TagTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.TagTable exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm b/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm
index 86235734..bf4ee798 100644
--- a/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.UiSettingsForm exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm b/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm
index 178a287d..f3014e33 100644
--- a/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.UiSettingsManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/UiSettingsMigrate.elm b/modules/webapp/src/main/elm/Comp/UiSettingsMigrate.elm
index 58fdad67..2e1e127d 100644
--- a/modules/webapp/src/main/elm/Comp/UiSettingsMigrate.elm
+++ b/modules/webapp/src/main/elm/Comp/UiSettingsMigrate.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.UiSettingsMigrate exposing
     ( Model
     , Msg
diff --git a/modules/webapp/src/main/elm/Comp/UserForm.elm b/modules/webapp/src/main/elm/Comp/UserForm.elm
index 00bb3b5a..dd0ffb74 100644
--- a/modules/webapp/src/main/elm/Comp/UserForm.elm
+++ b/modules/webapp/src/main/elm/Comp/UserForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.UserForm exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/UserManage.elm b/modules/webapp/src/main/elm/Comp/UserManage.elm
index e43da5db..27a61365 100644
--- a/modules/webapp/src/main/elm/Comp/UserManage.elm
+++ b/modules/webapp/src/main/elm/Comp/UserManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.UserManage exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/UserTable.elm b/modules/webapp/src/main/elm/Comp/UserTable.elm
index d37e9e06..c7e9f49a 100644
--- a/modules/webapp/src/main/elm/Comp/UserTable.elm
+++ b/modules/webapp/src/main/elm/Comp/UserTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.UserTable exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Comp/YesNoDimmer.elm b/modules/webapp/src/main/elm/Comp/YesNoDimmer.elm
index d32ed1c3..223337b3 100644
--- a/modules/webapp/src/main/elm/Comp/YesNoDimmer.elm
+++ b/modules/webapp/src/main/elm/Comp/YesNoDimmer.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Comp.YesNoDimmer exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Data/BasicSize.elm b/modules/webapp/src/main/elm/Data/BasicSize.elm
index decae6b7..268c9531 100644
--- a/modules/webapp/src/main/elm/Data/BasicSize.elm
+++ b/modules/webapp/src/main/elm/Data/BasicSize.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.BasicSize exposing
     ( BasicSize(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/CalEvent.elm b/modules/webapp/src/main/elm/Data/CalEvent.elm
index abfc7634..df11db62 100644
--- a/modules/webapp/src/main/elm/Data/CalEvent.elm
+++ b/modules/webapp/src/main/elm/Data/CalEvent.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.CalEvent exposing
     ( CalEvent
     , everyMonth
diff --git a/modules/webapp/src/main/elm/Data/Color.elm b/modules/webapp/src/main/elm/Data/Color.elm
index 6b4e4e57..777a1050 100644
--- a/modules/webapp/src/main/elm/Data/Color.elm
+++ b/modules/webapp/src/main/elm/Data/Color.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Color exposing
     ( Color(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/ContactType.elm b/modules/webapp/src/main/elm/Data/ContactType.elm
index 2ba2055d..da3219bb 100644
--- a/modules/webapp/src/main/elm/Data/ContactType.elm
+++ b/modules/webapp/src/main/elm/Data/ContactType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.ContactType exposing
     ( ContactType(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/CustomFieldChange.elm b/modules/webapp/src/main/elm/Data/CustomFieldChange.elm
index 2ee75c02..5d6db0ce 100644
--- a/modules/webapp/src/main/elm/Data/CustomFieldChange.elm
+++ b/modules/webapp/src/main/elm/Data/CustomFieldChange.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.CustomFieldChange exposing
     ( CustomFieldChange(..)
     , CustomFieldValueCollect
diff --git a/modules/webapp/src/main/elm/Data/CustomFieldType.elm b/modules/webapp/src/main/elm/Data/CustomFieldType.elm
index 5bca7135..6ef3ed84 100644
--- a/modules/webapp/src/main/elm/Data/CustomFieldType.elm
+++ b/modules/webapp/src/main/elm/Data/CustomFieldType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.CustomFieldType exposing
     ( CustomFieldType(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/Direction.elm b/modules/webapp/src/main/elm/Data/Direction.elm
index 3933dcd4..6945d57f 100644
--- a/modules/webapp/src/main/elm/Data/Direction.elm
+++ b/modules/webapp/src/main/elm/Data/Direction.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Direction exposing
     ( Direction(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/DropdownStyle.elm b/modules/webapp/src/main/elm/Data/DropdownStyle.elm
index 8641a228..3b6e4072 100644
--- a/modules/webapp/src/main/elm/Data/DropdownStyle.elm
+++ b/modules/webapp/src/main/elm/Data/DropdownStyle.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.DropdownStyle exposing
     ( DropdownStyle
     , mainStyle
diff --git a/modules/webapp/src/main/elm/Data/EquipmentUse.elm b/modules/webapp/src/main/elm/Data/EquipmentUse.elm
index be9f24de..e1fb4a99 100644
--- a/modules/webapp/src/main/elm/Data/EquipmentUse.elm
+++ b/modules/webapp/src/main/elm/Data/EquipmentUse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.EquipmentUse exposing
     ( EquipmentUse(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/Fields.elm b/modules/webapp/src/main/elm/Data/Fields.elm
index d0cf4f3c..440a70ae 100644
--- a/modules/webapp/src/main/elm/Data/Fields.elm
+++ b/modules/webapp/src/main/elm/Data/Fields.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Fields exposing
     ( Field(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/Flags.elm b/modules/webapp/src/main/elm/Data/Flags.elm
index 74ec0c92..c945bb5d 100644
--- a/modules/webapp/src/main/elm/Data/Flags.elm
+++ b/modules/webapp/src/main/elm/Data/Flags.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Flags exposing
     ( Config
     , Flags
diff --git a/modules/webapp/src/main/elm/Data/Icons.elm b/modules/webapp/src/main/elm/Data/Icons.elm
index 9b86b0bd..3abb33b1 100644
--- a/modules/webapp/src/main/elm/Data/Icons.elm
+++ b/modules/webapp/src/main/elm/Data/Icons.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Icons exposing
     ( addFiles
     , addFiles2
diff --git a/modules/webapp/src/main/elm/Data/ItemNav.elm b/modules/webapp/src/main/elm/Data/ItemNav.elm
index 17537056..b0b37942 100644
--- a/modules/webapp/src/main/elm/Data/ItemNav.elm
+++ b/modules/webapp/src/main/elm/Data/ItemNav.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.ItemNav exposing (ItemNav, fromList)
 
 import Api.Model.ItemLight exposing (ItemLight)
diff --git a/modules/webapp/src/main/elm/Data/ItemQuery.elm b/modules/webapp/src/main/elm/Data/ItemQuery.elm
index 06336e8c..2c48e845 100644
--- a/modules/webapp/src/main/elm/Data/ItemQuery.elm
+++ b/modules/webapp/src/main/elm/Data/ItemQuery.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.ItemQuery exposing
     ( AttrMatch(..)
     , ItemQuery(..)
diff --git a/modules/webapp/src/main/elm/Data/ItemSelection.elm b/modules/webapp/src/main/elm/Data/ItemSelection.elm
index 96ea8e5e..31002e36 100644
--- a/modules/webapp/src/main/elm/Data/ItemSelection.elm
+++ b/modules/webapp/src/main/elm/Data/ItemSelection.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.ItemSelection exposing
     ( ItemSelection(..)
     , isActive
diff --git a/modules/webapp/src/main/elm/Data/ItemTemplate.elm b/modules/webapp/src/main/elm/Data/ItemTemplate.elm
index f0411401..df97162a 100644
--- a/modules/webapp/src/main/elm/Data/ItemTemplate.elm
+++ b/modules/webapp/src/main/elm/Data/ItemTemplate.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.ItemTemplate exposing
     ( ItemTemplate
     , TemplateContext
diff --git a/modules/webapp/src/main/elm/Data/Items.elm b/modules/webapp/src/main/elm/Data/Items.elm
index fbb9c9a3..ebc61622 100644
--- a/modules/webapp/src/main/elm/Data/Items.elm
+++ b/modules/webapp/src/main/elm/Data/Items.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Items exposing
     ( concat
     , first
diff --git a/modules/webapp/src/main/elm/Data/Language.elm b/modules/webapp/src/main/elm/Data/Language.elm
index 3ea22908..d67bd2d1 100644
--- a/modules/webapp/src/main/elm/Data/Language.elm
+++ b/modules/webapp/src/main/elm/Data/Language.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Language exposing
     ( Language(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/ListType.elm b/modules/webapp/src/main/elm/Data/ListType.elm
index 8a9a75fb..4dd7a5be 100644
--- a/modules/webapp/src/main/elm/Data/ListType.elm
+++ b/modules/webapp/src/main/elm/Data/ListType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.ListType exposing
     ( ListType(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/Money.elm b/modules/webapp/src/main/elm/Data/Money.elm
index cffe7dfc..932d4df5 100644
--- a/modules/webapp/src/main/elm/Data/Money.elm
+++ b/modules/webapp/src/main/elm/Data/Money.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Money exposing
     ( Money
     , MoneyParseError(..)
diff --git a/modules/webapp/src/main/elm/Data/OrgUse.elm b/modules/webapp/src/main/elm/Data/OrgUse.elm
index 5f536bd9..9783b2d7 100644
--- a/modules/webapp/src/main/elm/Data/OrgUse.elm
+++ b/modules/webapp/src/main/elm/Data/OrgUse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.OrgUse exposing
     ( OrgUse(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/PersonUse.elm b/modules/webapp/src/main/elm/Data/PersonUse.elm
index 204d5b92..f2b2fabc 100644
--- a/modules/webapp/src/main/elm/Data/PersonUse.elm
+++ b/modules/webapp/src/main/elm/Data/PersonUse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.PersonUse exposing
     ( PersonUse(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/Priority.elm b/modules/webapp/src/main/elm/Data/Priority.elm
index 3ba7828d..ed898fb3 100644
--- a/modules/webapp/src/main/elm/Data/Priority.elm
+++ b/modules/webapp/src/main/elm/Data/Priority.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Priority exposing
     ( Priority(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/QueryParseResult.elm b/modules/webapp/src/main/elm/Data/QueryParseResult.elm
index bb0046ba..dfd0e2a2 100644
--- a/modules/webapp/src/main/elm/Data/QueryParseResult.elm
+++ b/modules/webapp/src/main/elm/Data/QueryParseResult.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.QueryParseResult exposing (QueryParseResult, success)
 
 
diff --git a/modules/webapp/src/main/elm/Data/SSLType.elm b/modules/webapp/src/main/elm/Data/SSLType.elm
index 44f9b836..dbeeee9c 100644
--- a/modules/webapp/src/main/elm/Data/SSLType.elm
+++ b/modules/webapp/src/main/elm/Data/SSLType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.SSLType exposing
     ( SSLType(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/SourceState.elm b/modules/webapp/src/main/elm/Data/SourceState.elm
index fc9de838..f77963f0 100644
--- a/modules/webapp/src/main/elm/Data/SourceState.elm
+++ b/modules/webapp/src/main/elm/Data/SourceState.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.SourceState exposing
     ( SourceState(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/UiSettings.elm b/modules/webapp/src/main/elm/Data/UiSettings.elm
index 71f1fc8b..ca5cf32a 100644
--- a/modules/webapp/src/main/elm/Data/UiSettings.elm
+++ b/modules/webapp/src/main/elm/Data/UiSettings.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.UiSettings exposing
     ( ItemPattern
     , Pos(..)
diff --git a/modules/webapp/src/main/elm/Data/UiTheme.elm b/modules/webapp/src/main/elm/Data/UiTheme.elm
index 4cd01442..ed1b1506 100644
--- a/modules/webapp/src/main/elm/Data/UiTheme.elm
+++ b/modules/webapp/src/main/elm/Data/UiTheme.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.UiTheme exposing
     ( UiTheme(..)
     , cycle
diff --git a/modules/webapp/src/main/elm/Data/UserState.elm b/modules/webapp/src/main/elm/Data/UserState.elm
index 0d55649f..d6eed5c9 100644
--- a/modules/webapp/src/main/elm/Data/UserState.elm
+++ b/modules/webapp/src/main/elm/Data/UserState.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.UserState exposing
     ( UserState(..)
     , all
diff --git a/modules/webapp/src/main/elm/Data/Validated.elm b/modules/webapp/src/main/elm/Data/Validated.elm
index 688283a3..2171298b 100644
--- a/modules/webapp/src/main/elm/Data/Validated.elm
+++ b/modules/webapp/src/main/elm/Data/Validated.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Data.Validated exposing
     ( Validated(..)
     , isInvalid
diff --git a/modules/webapp/src/main/elm/Main.elm b/modules/webapp/src/main/elm/Main.elm
index 3e4b3030..b3a20d36 100644
--- a/modules/webapp/src/main/elm/Main.elm
+++ b/modules/webapp/src/main/elm/Main.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Main exposing (init, main)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Messages.elm b/modules/webapp/src/main/elm/Messages.elm
index 06857527..cdef8f9a 100644
--- a/modules/webapp/src/main/elm/Messages.elm
+++ b/modules/webapp/src/main/elm/Messages.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages exposing
     ( Messages
     , fromIso2
diff --git a/modules/webapp/src/main/elm/Messages/App.elm b/modules/webapp/src/main/elm/Messages/App.elm
index ec1e4d7f..b273530b 100644
--- a/modules/webapp/src/main/elm/Messages/App.elm
+++ b/modules/webapp/src/main/elm/Messages/App.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.App exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Basics.elm b/modules/webapp/src/main/elm/Messages/Basics.elm
index b5a42e21..c1f8f749 100644
--- a/modules/webapp/src/main/elm/Messages/Basics.elm
+++ b/modules/webapp/src/main/elm/Messages/Basics.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Basics exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/AddressForm.elm b/modules/webapp/src/main/elm/Messages/Comp/AddressForm.elm
index b816a489..c5901283 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/AddressForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/AddressForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.AddressForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm b/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm
index 553c5226..2d78fca9 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/AttachmentMeta.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.AttachmentMeta exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm b/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm
index e3d11e73..6146a92d 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CalEventInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CalEventInput exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ChangePasswordForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ChangePasswordForm.elm
index fd54b439..34f5e2b0 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ChangePasswordForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ChangePasswordForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ChangePasswordForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm
index b3e1aa17..69cdc2bd 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ClassifierSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ClassifierSettingsForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm
index 708aec44..fcf3a1b6 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CollectiveSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CollectiveSettingsForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldForm.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldForm.elm
index 5692a45f..72689a33 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CustomFieldForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldInput.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldInput.elm
index 9de28c94..184165e9 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldInput.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CustomFieldInput exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm
index 6e017d3a..50bff996 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CustomFieldManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldMultiInput.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldMultiInput.elm
index a6e66091..91c99aa9 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldMultiInput.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldMultiInput.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CustomFieldMultiInput exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm
index 5f683804..37c9175b 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/CustomFieldTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.CustomFieldTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/DetailEdit.elm b/modules/webapp/src/main/elm/Messages/Comp/DetailEdit.elm
index 8b0075e2..e631538a 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/DetailEdit.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/DetailEdit.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.DetailEdit exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/Dropzone.elm b/modules/webapp/src/main/elm/Messages/Comp/Dropzone.elm
index 502e282f..23b8edde 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/Dropzone.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/Dropzone.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.Dropzone exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsForm.elm
index 66f00a80..cbc999f6 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.EmailSettingsForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsManage.elm b/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsManage.elm
index 10d80e87..3d385230 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.EmailSettingsManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsTable.elm b/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsTable.elm
index 16022415..5d102fde 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/EmailSettingsTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.EmailSettingsTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/EquipmentForm.elm b/modules/webapp/src/main/elm/Messages/Comp/EquipmentForm.elm
index 4bd52416..144b9624 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/EquipmentForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/EquipmentForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.EquipmentForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/EquipmentManage.elm b/modules/webapp/src/main/elm/Messages/Comp/EquipmentManage.elm
index e5f54c64..d2e4100d 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/EquipmentManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/EquipmentManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.EquipmentManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/EquipmentTable.elm b/modules/webapp/src/main/elm/Messages/Comp/EquipmentTable.elm
index f02b7e14..ba71dda0 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/EquipmentTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/EquipmentTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.EquipmentTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ExpandCollapse.elm b/modules/webapp/src/main/elm/Messages/Comp/ExpandCollapse.elm
index 03de6a62..eb47261f 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ExpandCollapse.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ExpandCollapse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ExpandCollapse exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/FolderDetail.elm b/modules/webapp/src/main/elm/Messages/Comp/FolderDetail.elm
index 6b9fbe85..99a87c31 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/FolderDetail.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/FolderDetail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.FolderDetail exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm b/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm
index c566492f..c507ea89 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/FolderManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.FolderManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/FolderSelect.elm b/modules/webapp/src/main/elm/Messages/Comp/FolderSelect.elm
index 0dc463e3..608c60d1 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/FolderSelect.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/FolderSelect.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.FolderSelect exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm b/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm
index 1a7f8dac..9fc93d72 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/FolderTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.FolderTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/HttpError.elm b/modules/webapp/src/main/elm/Messages/Comp/HttpError.elm
index 9fabd1f2..2d3c7e71 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/HttpError.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/HttpError.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.HttpError exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsForm.elm
index 8f9fb954..33d73bfb 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ImapSettingsForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsManage.elm b/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsManage.elm
index 9ec72928..646312af 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ImapSettingsManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsTable.elm b/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsTable.elm
index b8b61a96..2481c553 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ImapSettingsTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ImapSettingsTable exposing (Texts, de, gb)
 
 import Messages.Basics
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm
index 0d900a80..21357c67 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemCard.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemCard exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm
index 8a83b811..f4d7a6f6 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemCardList.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemCardList exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm
index 92438c46..a7bce63d 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/AddFilesForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/AddFilesForm.elm
index 8989cd0c..cd0b9069 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/AddFilesForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/AddFilesForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.AddFilesForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ConfirmModal.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ConfirmModal.elm
index bc919870..e749b5a1 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ConfirmModal.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ConfirmModal.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.ConfirmModal exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm
index e58b68a5..85290f8d 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/EditForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.EditForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm
index ae648418..8a43783b 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/ItemInfoHeader.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.ItemInfoHeader exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/MultiEditMenu.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/MultiEditMenu.elm
index 684cb724..7ea697cc 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/MultiEditMenu.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/MultiEditMenu.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.MultiEditMenu exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/Notes.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/Notes.elm
index e20c96fa..d1be4a8e 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/Notes.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/Notes.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.Notes exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm
index cc9e1c33..44147a0a 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemDetail/SingleAttachment.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemDetail.SingleAttachment exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ItemMail.elm b/modules/webapp/src/main/elm/Messages/Comp/ItemMail.elm
index 8da5da45..3f07aedf 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ItemMail.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ItemMail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ItemMail exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/NotificationForm.elm b/modules/webapp/src/main/elm/Messages/Comp/NotificationForm.elm
index da6c523b..2be6002a 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/NotificationForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/NotificationForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.NotificationForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/NotificationManage.elm b/modules/webapp/src/main/elm/Messages/Comp/NotificationManage.elm
index f5cbb778..e7363e97 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/NotificationManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/NotificationManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.NotificationManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/NotificationTable.elm b/modules/webapp/src/main/elm/Messages/Comp/NotificationTable.elm
index a88f2e68..03af1fa7 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/NotificationTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/NotificationTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.NotificationTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/OrgForm.elm b/modules/webapp/src/main/elm/Messages/Comp/OrgForm.elm
index f24ccc56..d3269c27 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/OrgForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/OrgForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.OrgForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/OrgManage.elm b/modules/webapp/src/main/elm/Messages/Comp/OrgManage.elm
index 2a279e26..01546807 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/OrgManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/OrgManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.OrgManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/OrgTable.elm b/modules/webapp/src/main/elm/Messages/Comp/OrgTable.elm
index c7517571..d7951787 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/OrgTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/OrgTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.OrgTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/PersonForm.elm b/modules/webapp/src/main/elm/Messages/Comp/PersonForm.elm
index 1b000446..8d01112c 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/PersonForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/PersonForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.PersonForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/PersonManage.elm b/modules/webapp/src/main/elm/Messages/Comp/PersonManage.elm
index afdd0160..0e0e8e93 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/PersonManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/PersonManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.PersonManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/PersonTable.elm b/modules/webapp/src/main/elm/Messages/Comp/PersonTable.elm
index e2b9766f..b98dd3cb 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/PersonTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/PersonTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.PersonTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm
index 9f96730b..48ec65cf 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ScanMailboxForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm
index 176a0276..74d9a4ea 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ScanMailboxManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxTable.elm b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxTable.elm
index e6285968..18673608 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/ScanMailboxTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.ScanMailboxTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/SearchMenu.elm b/modules/webapp/src/main/elm/Messages/Comp/SearchMenu.elm
index 4f0cc0a9..856f9c01 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/SearchMenu.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/SearchMenu.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.SearchMenu exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/SearchStatsView.elm b/modules/webapp/src/main/elm/Messages/Comp/SearchStatsView.elm
index 0684604e..fe73f6ad 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/SearchStatsView.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/SearchStatsView.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.SearchStatsView exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm b/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm
index f4b4a847..7146b31b 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/SentMails.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.SentMails exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/SourceForm.elm b/modules/webapp/src/main/elm/Messages/Comp/SourceForm.elm
index b435ed50..ffa9f750 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/SourceForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/SourceForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.SourceForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/SourceManage.elm b/modules/webapp/src/main/elm/Messages/Comp/SourceManage.elm
index ca21d3f8..279648d6 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/SourceManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/SourceManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.SourceManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/SourceTable.elm b/modules/webapp/src/main/elm/Messages/Comp/SourceTable.elm
index d7c205fa..934ff771 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/SourceTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/SourceTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.SourceTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/TagForm.elm b/modules/webapp/src/main/elm/Messages/Comp/TagForm.elm
index 23722222..006b4f21 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/TagForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/TagForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.TagForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/TagManage.elm b/modules/webapp/src/main/elm/Messages/Comp/TagManage.elm
index 1a8620c1..a7a7437c 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/TagManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/TagManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.TagManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/TagSelect.elm b/modules/webapp/src/main/elm/Messages/Comp/TagSelect.elm
index fde21fa1..574e2247 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/TagSelect.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/TagSelect.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.TagSelect exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/TagTable.elm b/modules/webapp/src/main/elm/Messages/Comp/TagTable.elm
index ee3599ff..80b2171a 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/TagTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/TagTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.TagTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/UiSettingsForm.elm b/modules/webapp/src/main/elm/Messages/Comp/UiSettingsForm.elm
index 7abd5906..3d2dfe5a 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/UiSettingsForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/UiSettingsForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.UiSettingsForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm b/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm
index d95bb423..91422191 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.UiSettingsManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/UserForm.elm b/modules/webapp/src/main/elm/Messages/Comp/UserForm.elm
index 08033cb3..b82494f0 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/UserForm.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/UserForm.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.UserForm exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm b/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm
index c0f784bc..99bf6000 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.UserManage exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm b/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm
index aff0fa56..40a38187 100644
--- a/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm
+++ b/modules/webapp/src/main/elm/Messages/Comp/UserTable.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Comp.UserTable exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Data/Color.elm b/modules/webapp/src/main/elm/Messages/Data/Color.elm
index ebf7deb6..c03ad4e2 100644
--- a/modules/webapp/src/main/elm/Messages/Data/Color.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/Color.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.Color exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/ContactType.elm b/modules/webapp/src/main/elm/Messages/Data/ContactType.elm
index 98c0ba42..7a4eafe0 100644
--- a/modules/webapp/src/main/elm/Messages/Data/ContactType.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/ContactType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.ContactType exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/CustomFieldType.elm b/modules/webapp/src/main/elm/Messages/Data/CustomFieldType.elm
index f6706651..d952b91c 100644
--- a/modules/webapp/src/main/elm/Messages/Data/CustomFieldType.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/CustomFieldType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.CustomFieldType exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/Direction.elm b/modules/webapp/src/main/elm/Messages/Data/Direction.elm
index e7b86a76..09351645 100644
--- a/modules/webapp/src/main/elm/Messages/Data/Direction.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/Direction.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.Direction exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/EquipmentUse.elm b/modules/webapp/src/main/elm/Messages/Data/EquipmentUse.elm
index b7bf4cfe..d79ce3dc 100644
--- a/modules/webapp/src/main/elm/Messages/Data/EquipmentUse.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/EquipmentUse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.EquipmentUse exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/Fields.elm b/modules/webapp/src/main/elm/Messages/Data/Fields.elm
index 75c5d326..1d70beaa 100644
--- a/modules/webapp/src/main/elm/Messages/Data/Fields.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/Fields.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.Fields exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/Language.elm b/modules/webapp/src/main/elm/Messages/Data/Language.elm
index 6555b3b5..b52d1c4d 100644
--- a/modules/webapp/src/main/elm/Messages/Data/Language.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/Language.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.Language exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/OrgUse.elm b/modules/webapp/src/main/elm/Messages/Data/OrgUse.elm
index 0b8a5478..745d2a37 100644
--- a/modules/webapp/src/main/elm/Messages/Data/OrgUse.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/OrgUse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.OrgUse exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/PersonUse.elm b/modules/webapp/src/main/elm/Messages/Data/PersonUse.elm
index 845dc6e0..3a35057c 100644
--- a/modules/webapp/src/main/elm/Messages/Data/PersonUse.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/PersonUse.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.PersonUse exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/Data/SSLType.elm b/modules/webapp/src/main/elm/Messages/Data/SSLType.elm
index 0c723020..41ce8afa 100644
--- a/modules/webapp/src/main/elm/Messages/Data/SSLType.elm
+++ b/modules/webapp/src/main/elm/Messages/Data/SSLType.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Data.SSLType exposing
     ( de
     , gb
diff --git a/modules/webapp/src/main/elm/Messages/DateFormat.elm b/modules/webapp/src/main/elm/Messages/DateFormat.elm
index e7ccfd30..842ef11a 100644
--- a/modules/webapp/src/main/elm/Messages/DateFormat.elm
+++ b/modules/webapp/src/main/elm/Messages/DateFormat.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.DateFormat exposing
     ( format
     , formatDateLong
diff --git a/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm b/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm
index c91ffffb..5c1ac26d 100644
--- a/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/CollectiveSettings.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.CollectiveSettings exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/Home.elm b/modules/webapp/src/main/elm/Messages/Page/Home.elm
index 3579f60e..632cb914 100644
--- a/modules/webapp/src/main/elm/Messages/Page/Home.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/Home.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.Home exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/HomeSideMenu.elm b/modules/webapp/src/main/elm/Messages/Page/HomeSideMenu.elm
index 1a4e0940..a175ab0e 100644
--- a/modules/webapp/src/main/elm/Messages/Page/HomeSideMenu.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/HomeSideMenu.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.HomeSideMenu exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm b/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm
index 75430ef2..fd011be5 100644
--- a/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/ItemDetail.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.ItemDetail exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/Login.elm b/modules/webapp/src/main/elm/Messages/Page/Login.elm
index dc25e7ca..3923df12 100644
--- a/modules/webapp/src/main/elm/Messages/Page/Login.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/Login.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.Login exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/ManageData.elm b/modules/webapp/src/main/elm/Messages/Page/ManageData.elm
index cdf9a925..7191b56a 100644
--- a/modules/webapp/src/main/elm/Messages/Page/ManageData.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/ManageData.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.ManageData exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/NewInvite.elm b/modules/webapp/src/main/elm/Messages/Page/NewInvite.elm
index 26b060f4..638fe568 100644
--- a/modules/webapp/src/main/elm/Messages/Page/NewInvite.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/NewInvite.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.NewInvite exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/Queue.elm b/modules/webapp/src/main/elm/Messages/Page/Queue.elm
index ef6677ad..382e0f07 100644
--- a/modules/webapp/src/main/elm/Messages/Page/Queue.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/Queue.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.Queue exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/Register.elm b/modules/webapp/src/main/elm/Messages/Page/Register.elm
index 0c46f7da..9f766d4e 100644
--- a/modules/webapp/src/main/elm/Messages/Page/Register.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/Register.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.Register exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/Upload.elm b/modules/webapp/src/main/elm/Messages/Page/Upload.elm
index 2eeb6e67..b06d7c52 100644
--- a/modules/webapp/src/main/elm/Messages/Page/Upload.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/Upload.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.Upload exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm b/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm
index bbb02bf7..f7d65f3e 100644
--- a/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm
+++ b/modules/webapp/src/main/elm/Messages/Page/UserSettings.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.Page.UserSettings exposing
     ( Texts
     , de
diff --git a/modules/webapp/src/main/elm/Messages/UiLanguage.elm b/modules/webapp/src/main/elm/Messages/UiLanguage.elm
index 57446cec..7da3adfb 100644
--- a/modules/webapp/src/main/elm/Messages/UiLanguage.elm
+++ b/modules/webapp/src/main/elm/Messages/UiLanguage.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Messages.UiLanguage exposing
     ( UiLanguage(..)
     , all
diff --git a/modules/webapp/src/main/elm/Page.elm b/modules/webapp/src/main/elm/Page.elm
index 703007f2..b4de34ec 100644
--- a/modules/webapp/src/main/elm/Page.elm
+++ b/modules/webapp/src/main/elm/Page.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page exposing
     ( Page(..)
     , fromUrl
diff --git a/modules/webapp/src/main/elm/Page/CollectiveSettings/Data.elm b/modules/webapp/src/main/elm/Page/CollectiveSettings/Data.elm
index e6961ddb..c34484ba 100644
--- a/modules/webapp/src/main/elm/Page/CollectiveSettings/Data.elm
+++ b/modules/webapp/src/main/elm/Page/CollectiveSettings/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.CollectiveSettings.Data exposing
     ( FormState(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm b/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm
index c891013a..f22cf85f 100644
--- a/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm
+++ b/modules/webapp/src/main/elm/Page/CollectiveSettings/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.CollectiveSettings.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/CollectiveSettings/View2.elm b/modules/webapp/src/main/elm/Page/CollectiveSettings/View2.elm
index 71a91122..54fa391c 100644
--- a/modules/webapp/src/main/elm/Page/CollectiveSettings/View2.elm
+++ b/modules/webapp/src/main/elm/Page/CollectiveSettings/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.CollectiveSettings.View2 exposing (viewContent, viewSidebar)
 
 import Api.Model.TagCount exposing (TagCount)
diff --git a/modules/webapp/src/main/elm/Page/Home/Data.elm b/modules/webapp/src/main/elm/Page/Home/Data.elm
index 1ecfa5da..7a3005b6 100644
--- a/modules/webapp/src/main/elm/Page/Home/Data.elm
+++ b/modules/webapp/src/main/elm/Page/Home/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Home.Data exposing
     ( ConfirmModalValue(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Page/Home/SideMenu.elm b/modules/webapp/src/main/elm/Page/Home/SideMenu.elm
index 79433f0a..fad0b83e 100644
--- a/modules/webapp/src/main/elm/Page/Home/SideMenu.elm
+++ b/modules/webapp/src/main/elm/Page/Home/SideMenu.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Home.SideMenu exposing (view)
 
 import Comp.Basic as B
diff --git a/modules/webapp/src/main/elm/Page/Home/Update.elm b/modules/webapp/src/main/elm/Page/Home/Update.elm
index 3c09e588..83029264 100644
--- a/modules/webapp/src/main/elm/Page/Home/Update.elm
+++ b/modules/webapp/src/main/elm/Page/Home/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Home.Update exposing
     ( UpdateResult
     , update
diff --git a/modules/webapp/src/main/elm/Page/Home/View2.elm b/modules/webapp/src/main/elm/Page/Home/View2.elm
index 7f8767aa..48e681e2 100644
--- a/modules/webapp/src/main/elm/Page/Home/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Home/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Home.View2 exposing (viewContent, viewSidebar)
 
 import Comp.Basic as B
diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm b/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm
index 811b9cc0..8bfba482 100644
--- a/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm
+++ b/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.ItemDetail.Data exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm
index 81a4844f..e22f9c4d 100644
--- a/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm
+++ b/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.ItemDetail.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm b/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm
index 17c61fe6..de32963b 100644
--- a/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm
+++ b/modules/webapp/src/main/elm/Page/ItemDetail/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.ItemDetail.View2 exposing (viewContent, viewSidebar)
 
 import Comp.Basic as B
diff --git a/modules/webapp/src/main/elm/Page/Login/Data.elm b/modules/webapp/src/main/elm/Page/Login/Data.elm
index be37a621..931ad97d 100644
--- a/modules/webapp/src/main/elm/Page/Login/Data.elm
+++ b/modules/webapp/src/main/elm/Page/Login/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Login.Data exposing
     ( FormState(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Page/Login/Update.elm b/modules/webapp/src/main/elm/Page/Login/Update.elm
index 9231269a..f8cb3766 100644
--- a/modules/webapp/src/main/elm/Page/Login/Update.elm
+++ b/modules/webapp/src/main/elm/Page/Login/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Login.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/Login/View2.elm b/modules/webapp/src/main/elm/Page/Login/View2.elm
index 3fc435cf..57cc3d93 100644
--- a/modules/webapp/src/main/elm/Page/Login/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Login/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Login.View2 exposing (viewContent, viewSidebar)
 
 import Api.Model.VersionInfo exposing (VersionInfo)
diff --git a/modules/webapp/src/main/elm/Page/ManageData/Data.elm b/modules/webapp/src/main/elm/Page/ManageData/Data.elm
index d4302f42..f67f8dbc 100644
--- a/modules/webapp/src/main/elm/Page/ManageData/Data.elm
+++ b/modules/webapp/src/main/elm/Page/ManageData/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.ManageData.Data exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Page/ManageData/Update.elm b/modules/webapp/src/main/elm/Page/ManageData/Update.elm
index f684e8b5..487ff837 100644
--- a/modules/webapp/src/main/elm/Page/ManageData/Update.elm
+++ b/modules/webapp/src/main/elm/Page/ManageData/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.ManageData.Update exposing (update)
 
 import Comp.CustomFieldManage
diff --git a/modules/webapp/src/main/elm/Page/ManageData/View2.elm b/modules/webapp/src/main/elm/Page/ManageData/View2.elm
index 70ec2102..22788317 100644
--- a/modules/webapp/src/main/elm/Page/ManageData/View2.elm
+++ b/modules/webapp/src/main/elm/Page/ManageData/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.ManageData.View2 exposing (viewContent, viewSidebar)
 
 import Comp.CustomFieldManage
diff --git a/modules/webapp/src/main/elm/Page/NewInvite/Data.elm b/modules/webapp/src/main/elm/Page/NewInvite/Data.elm
index 68d21571..b05d8e86 100644
--- a/modules/webapp/src/main/elm/Page/NewInvite/Data.elm
+++ b/modules/webapp/src/main/elm/Page/NewInvite/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.NewInvite.Data exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Page/NewInvite/Update.elm b/modules/webapp/src/main/elm/Page/NewInvite/Update.elm
index 94b13c20..c5723937 100644
--- a/modules/webapp/src/main/elm/Page/NewInvite/Update.elm
+++ b/modules/webapp/src/main/elm/Page/NewInvite/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.NewInvite.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/NewInvite/View2.elm b/modules/webapp/src/main/elm/Page/NewInvite/View2.elm
index c1e1a02d..3431b39d 100644
--- a/modules/webapp/src/main/elm/Page/NewInvite/View2.elm
+++ b/modules/webapp/src/main/elm/Page/NewInvite/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.NewInvite.View2 exposing (viewContent, viewSidebar)
 
 import Data.Flags exposing (Flags)
diff --git a/modules/webapp/src/main/elm/Page/Queue/Data.elm b/modules/webapp/src/main/elm/Page/Queue/Data.elm
index e8b622db..89ac27db 100644
--- a/modules/webapp/src/main/elm/Page/Queue/Data.elm
+++ b/modules/webapp/src/main/elm/Page/Queue/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Queue.Data exposing
     ( FormState(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Page/Queue/Update.elm b/modules/webapp/src/main/elm/Page/Queue/Update.elm
index 5e5a3a87..5e5754d7 100644
--- a/modules/webapp/src/main/elm/Page/Queue/Update.elm
+++ b/modules/webapp/src/main/elm/Page/Queue/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Queue.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/Queue/View2.elm b/modules/webapp/src/main/elm/Page/Queue/View2.elm
index eaf091db..3a181f0c 100644
--- a/modules/webapp/src/main/elm/Page/Queue/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Queue/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Queue.View2 exposing (viewContent, viewSidebar)
 
 import Api.Model.JobDetail exposing (JobDetail)
diff --git a/modules/webapp/src/main/elm/Page/Register/Data.elm b/modules/webapp/src/main/elm/Page/Register/Data.elm
index eb033ef2..e78dc244 100644
--- a/modules/webapp/src/main/elm/Page/Register/Data.elm
+++ b/modules/webapp/src/main/elm/Page/Register/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Register.Data exposing
     ( FormState(..)
     , Model
diff --git a/modules/webapp/src/main/elm/Page/Register/Update.elm b/modules/webapp/src/main/elm/Page/Register/Update.elm
index 8f67f8e2..7e3a85d0 100644
--- a/modules/webapp/src/main/elm/Page/Register/Update.elm
+++ b/modules/webapp/src/main/elm/Page/Register/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Register.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/Register/View2.elm b/modules/webapp/src/main/elm/Page/Register/View2.elm
index 48078811..579bf7b0 100644
--- a/modules/webapp/src/main/elm/Page/Register/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Register/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Register.View2 exposing (viewContent, viewSidebar)
 
 import Comp.Basic as B
diff --git a/modules/webapp/src/main/elm/Page/Upload/Data.elm b/modules/webapp/src/main/elm/Page/Upload/Data.elm
index 7274c8f5..6c9d31d6 100644
--- a/modules/webapp/src/main/elm/Page/Upload/Data.elm
+++ b/modules/webapp/src/main/elm/Page/Upload/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Upload.Data exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Page/Upload/Update.elm b/modules/webapp/src/main/elm/Page/Upload/Update.elm
index beac5223..c494d21c 100644
--- a/modules/webapp/src/main/elm/Page/Upload/Update.elm
+++ b/modules/webapp/src/main/elm/Page/Upload/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Upload.Update exposing (update)
 
 import Api
diff --git a/modules/webapp/src/main/elm/Page/Upload/View2.elm b/modules/webapp/src/main/elm/Page/Upload/View2.elm
index 6f8d4e68..5d10e6c1 100644
--- a/modules/webapp/src/main/elm/Page/Upload/View2.elm
+++ b/modules/webapp/src/main/elm/Page/Upload/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.Upload.View2 exposing (viewContent, viewSidebar)
 
 import Comp.Dropzone
diff --git a/modules/webapp/src/main/elm/Page/UserSettings/Data.elm b/modules/webapp/src/main/elm/Page/UserSettings/Data.elm
index 88545c60..87042efc 100644
--- a/modules/webapp/src/main/elm/Page/UserSettings/Data.elm
+++ b/modules/webapp/src/main/elm/Page/UserSettings/Data.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.UserSettings.Data exposing
     ( Model
     , Msg(..)
diff --git a/modules/webapp/src/main/elm/Page/UserSettings/Update.elm b/modules/webapp/src/main/elm/Page/UserSettings/Update.elm
index d9e07609..ddff1c9c 100644
--- a/modules/webapp/src/main/elm/Page/UserSettings/Update.elm
+++ b/modules/webapp/src/main/elm/Page/UserSettings/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.UserSettings.Update exposing (UpdateResult, update)
 
 import Comp.ChangePasswordForm
diff --git a/modules/webapp/src/main/elm/Page/UserSettings/View2.elm b/modules/webapp/src/main/elm/Page/UserSettings/View2.elm
index a29a37bf..3c400fd2 100644
--- a/modules/webapp/src/main/elm/Page/UserSettings/View2.elm
+++ b/modules/webapp/src/main/elm/Page/UserSettings/View2.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Page.UserSettings.View2 exposing (viewContent, viewSidebar)
 
 import Comp.ChangePasswordForm
diff --git a/modules/webapp/src/main/elm/Ports.elm b/modules/webapp/src/main/elm/Ports.elm
index 0e9ad372..d1f696b0 100644
--- a/modules/webapp/src/main/elm/Ports.elm
+++ b/modules/webapp/src/main/elm/Ports.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 port module Ports exposing
     ( checkSearchQueryString
     , initClipboard
diff --git a/modules/webapp/src/main/elm/Styles.elm b/modules/webapp/src/main/elm/Styles.elm
index 93cb4dd0..7653e04f 100644
--- a/modules/webapp/src/main/elm/Styles.elm
+++ b/modules/webapp/src/main/elm/Styles.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Styles exposing (..)
 
 
diff --git a/modules/webapp/src/main/elm/Util/Address.elm b/modules/webapp/src/main/elm/Util/Address.elm
index f8d121b0..a849f597 100644
--- a/modules/webapp/src/main/elm/Util/Address.elm
+++ b/modules/webapp/src/main/elm/Util/Address.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Address exposing (toString)
 
 import Api.Model.Address exposing (Address)
diff --git a/modules/webapp/src/main/elm/Util/Contact.elm b/modules/webapp/src/main/elm/Util/Contact.elm
index 8be494d9..ec4a8940 100644
--- a/modules/webapp/src/main/elm/Util/Contact.elm
+++ b/modules/webapp/src/main/elm/Util/Contact.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Contact exposing (toString)
 
 import Api.Model.Contact exposing (Contact)
diff --git a/modules/webapp/src/main/elm/Util/CustomField.elm b/modules/webapp/src/main/elm/Util/CustomField.elm
index 80b75a6d..1811380f 100644
--- a/modules/webapp/src/main/elm/Util/CustomField.elm
+++ b/modules/webapp/src/main/elm/Util/CustomField.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.CustomField exposing
     ( boolValue
     , nameOrLabel
diff --git a/modules/webapp/src/main/elm/Util/Duration.elm b/modules/webapp/src/main/elm/Util/Duration.elm
index dae1894c..2814b349 100644
--- a/modules/webapp/src/main/elm/Util/Duration.elm
+++ b/modules/webapp/src/main/elm/Util/Duration.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Duration exposing (Duration, toHuman)
 
 -- 486ms -> 12s -> 1:05 -> 59:45 -> 1:02:12
diff --git a/modules/webapp/src/main/elm/Util/File.elm b/modules/webapp/src/main/elm/Util/File.elm
index 33c466c5..bf79fca3 100644
--- a/modules/webapp/src/main/elm/Util/File.elm
+++ b/modules/webapp/src/main/elm/Util/File.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.File exposing (makeFileId)
 
 import File exposing (File)
diff --git a/modules/webapp/src/main/elm/Util/Folder.elm b/modules/webapp/src/main/elm/Util/Folder.elm
index db6d5dec..93996276 100644
--- a/modules/webapp/src/main/elm/Util/Folder.elm
+++ b/modules/webapp/src/main/elm/Util/Folder.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Folder exposing
     ( isFolderMember
     , mkFolderOption
diff --git a/modules/webapp/src/main/elm/Util/Html.elm b/modules/webapp/src/main/elm/Util/Html.elm
index 99a3216c..ff5e7d30 100644
--- a/modules/webapp/src/main/elm/Util/Html.elm
+++ b/modules/webapp/src/main/elm/Util/Html.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Html exposing
     ( KeyCode(..)
     , checkbox2
diff --git a/modules/webapp/src/main/elm/Util/Http.elm b/modules/webapp/src/main/elm/Util/Http.elm
index cb7b696d..758b51e7 100644
--- a/modules/webapp/src/main/elm/Util/Http.elm
+++ b/modules/webapp/src/main/elm/Util/Http.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Http exposing
     ( authDelete
     , authGet
diff --git a/modules/webapp/src/main/elm/Util/ItemDragDrop.elm b/modules/webapp/src/main/elm/Util/ItemDragDrop.elm
index f9a2d6ba..0347f483 100644
--- a/modules/webapp/src/main/elm/Util/ItemDragDrop.elm
+++ b/modules/webapp/src/main/elm/Util/ItemDragDrop.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.ItemDragDrop exposing
     ( DragDropData
     , Dropped
diff --git a/modules/webapp/src/main/elm/Util/List.elm b/modules/webapp/src/main/elm/Util/List.elm
index 57f03273..a3093f18 100644
--- a/modules/webapp/src/main/elm/Util/List.elm
+++ b/modules/webapp/src/main/elm/Util/List.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.List exposing
     ( distinct
     , dropRight
diff --git a/modules/webapp/src/main/elm/Util/Maybe.elm b/modules/webapp/src/main/elm/Util/Maybe.elm
index 1d792992..8bb21d3b 100644
--- a/modules/webapp/src/main/elm/Util/Maybe.elm
+++ b/modules/webapp/src/main/elm/Util/Maybe.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Maybe exposing
     ( filter
     , fromString
diff --git a/modules/webapp/src/main/elm/Util/Person.elm b/modules/webapp/src/main/elm/Util/Person.elm
index cb61762c..32b0e726 100644
--- a/modules/webapp/src/main/elm/Util/Person.elm
+++ b/modules/webapp/src/main/elm/Util/Person.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Person exposing (mkPersonOption)
 
 import Api.Model.IdName exposing (IdName)
diff --git a/modules/webapp/src/main/elm/Util/Result.elm b/modules/webapp/src/main/elm/Util/Result.elm
index 71111bc9..e91de07c 100644
--- a/modules/webapp/src/main/elm/Util/Result.elm
+++ b/modules/webapp/src/main/elm/Util/Result.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Result exposing (fold)
 
 
diff --git a/modules/webapp/src/main/elm/Util/Size.elm b/modules/webapp/src/main/elm/Util/Size.elm
index f9a72e80..29ca2fb6 100644
--- a/modules/webapp/src/main/elm/Util/Size.elm
+++ b/modules/webapp/src/main/elm/Util/Size.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Size exposing
     ( SizeUnit(..)
     , bytesReadable
diff --git a/modules/webapp/src/main/elm/Util/String.elm b/modules/webapp/src/main/elm/Util/String.elm
index d40cd2ea..5569be0a 100644
--- a/modules/webapp/src/main/elm/Util/String.elm
+++ b/modules/webapp/src/main/elm/Util/String.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.String exposing
     ( crazyEncode
     , ellipsis
diff --git a/modules/webapp/src/main/elm/Util/Tag.elm b/modules/webapp/src/main/elm/Util/Tag.elm
index 583f3f0a..8171e12e 100644
--- a/modules/webapp/src/main/elm/Util/Tag.elm
+++ b/modules/webapp/src/main/elm/Util/Tag.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Tag exposing
     ( catSettings
     , getCategories
diff --git a/modules/webapp/src/main/elm/Util/Time.elm b/modules/webapp/src/main/elm/Util/Time.elm
index f34cc91d..7d73d962 100644
--- a/modules/webapp/src/main/elm/Util/Time.elm
+++ b/modules/webapp/src/main/elm/Util/Time.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Time exposing (formatIsoDateTime)
 
 import DateFormat
diff --git a/modules/webapp/src/main/elm/Util/Update.elm b/modules/webapp/src/main/elm/Util/Update.elm
index 90127cca..aeadc1e1 100644
--- a/modules/webapp/src/main/elm/Util/Update.elm
+++ b/modules/webapp/src/main/elm/Util/Update.elm
@@ -1,3 +1,9 @@
+{-
+  Copyright 2020 Docspell Contributors
+
+  SPDX-License-Identifier: GPL-3.0-or-later
+-}
+
 module Util.Update exposing
     ( andThen1
     , andThen2
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index 365402f9..20f713bc 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -15,32 +15,32 @@ object Dependencies {
   val DoobieVersion           = "1.0.0-M5"
   val EmilVersion             = "0.10.0-M1"
   val FlexmarkVersion         = "0.62.2"
-  val FlywayVersion           = "7.10.0"
-  val Fs2Version              = "3.0.4"
+  val FlywayVersion           = "7.11.3"
+  val Fs2Version              = "3.0.6"
   val Fs2CronVersion          = "0.7.1"
   val H2Version               = "1.4.200"
   val Http4sVersion           = "0.23.0-RC1"
   val Icu4jVersion            = "69.1"
-  val JsoupVersion            = "1.13.1"
+  val JsoupVersion            = "1.14.1"
   val KindProjectorVersion    = "0.10.3"
   val KittensVersion          = "2.3.2"
   val LevigoJbig2Version      = "2.0"
   val Log4sVersion            = "1.10.0"
-  val LogbackVersion          = "1.2.3"
+  val LogbackVersion          = "1.2.4"
   val MariaDbVersion          = "2.7.3"
-  val MUnitVersion            = "0.7.26"
+  val MUnitVersion            = "0.7.27"
   val MUnitCatsEffectVersion  = "1.0.5"
   val OrganizeImportsVersion  = "0.5.0"
   val PdfboxVersion           = "2.0.24"
   val PoiVersion              = "4.1.2"
-  val PostgresVersion         = "42.2.22"
+  val PostgresVersion         = "42.2.23"
   val PureConfigVersion       = "0.16.0"
   val ScalaJavaTimeVersion    = "2.3.0"
-  val Slf4jVersion            = "1.7.31"
+  val Slf4jVersion            = "1.7.32"
   val StanfordNlpVersion      = "4.2.2"
-  val TikaVersion             = "1.26"
+  val TikaVersion             = "1.27"
   val YamuscaVersion          = "0.8.1"
-  val SwaggerUIVersion        = "3.50.0"
+  val SwaggerUIVersion        = "3.51.1"
   val TwelveMonkeysVersion    = "3.7.0"
   val JQueryVersion           = "3.5.1"
   val ViewerJSVersion         = "0.5.8"
@@ -180,7 +180,7 @@ object Dependencies {
     "org.apache.tika" % "tika-core" % TikaVersion
   )
   val commonsIO = Seq(
-    "commons-io" % "commons-io" % "2.10.0"
+    "commons-io" % "commons-io" % "2.11.0"
   )
   val tikaParser = Seq(
     "org.apache.tika" % "tika-parsers" % TikaVersion
diff --git a/project/build.properties b/project/build.properties
index 9edb75b7..10fd9eee 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -1 +1 @@
-sbt.version=1.5.4
+sbt.version=1.5.5
diff --git a/project/plugins.sbt b/project/plugins.sbt
index ff15b416..d73086f1 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -1,13 +1,14 @@
 addSbtPlugin("ch.epfl.scala"      % "sbt-scalafix"             % "0.9.29")
 addSbtPlugin("com.eed3si9n"       % "sbt-buildinfo"            % "0.10.0")
 addSbtPlugin("com.github.eikek"   % "sbt-openapi-schema"       % "0.8.1")
-addSbtPlugin("com.github.sbt"     % "sbt-release"              % "1.1.0")
 addSbtPlugin("com.github.sbt"     % "sbt-pgp"                  % "2.1.2")
-addSbtPlugin("io.kevinlee"        % "sbt-github-pages"         % "0.5.0")
+addSbtPlugin("com.github.sbt"     % "sbt-release"              % "1.1.0")
 addSbtPlugin("com.typesafe.sbt"   % "sbt-git"                  % "1.0.1")
 addSbtPlugin("com.typesafe.sbt"   % "sbt-native-packager"      % "1.8.1")
+addSbtPlugin("de.heikoseeberger"  % "sbt-header"               % "5.6.0")
+addSbtPlugin("io.kevinlee"        % "sbt-github-pages"         % "0.6.0")
 addSbtPlugin("io.spray"           % "sbt-revolver"             % "0.9.1")
-addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.0.0")
+addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.1.0")
 addSbtPlugin("org.scala-js"       % "sbt-scalajs"              % "1.6.0")
-addSbtPlugin("org.scalameta"      % "sbt-scalafmt"             % "2.4.2")
+addSbtPlugin("org.scalameta"      % "sbt-scalafmt"             % "2.4.3")
 addSbtPlugin("org.xerial.sbt"     % "sbt-sonatype"             % "3.9.7")
diff --git a/tools/preview/regenerate-previews.sh b/tools/preview/regenerate-previews.sh
index cc474c66..fdba0c67 100755
--- a/tools/preview/regenerate-previews.sh
+++ b/tools/preview/regenerate-previews.sh
@@ -11,23 +11,12 @@ JQ_CMD="jq"
 
 
 BASE_URL="${1:-http://localhost:7880}"
-LOGIN_URL="$BASE_URL/api/v1/open/auth/login"
-TRIGGER_URL="$BASE_URL/api/v1/sec/collective/previews"
+TRIGGER_URL="$BASE_URL/api/v1/admin/attachments/generatePreviews"
 
 echo "Login to trigger regenerating preview images."
 echo "Using url: $BASE_URL"
-echo -n "Account: "
-read USER
-echo -n "Password: "
-read -s PASS
+echo -n "Admin Secret: "
+read -s ADMIN_SECRET
 echo
 
-auth=$("$CURL_CMD" --fail -XPOST --silent --data-binary "{\"account\":\"$USER\", \"password\":\"$PASS\"}" "$LOGIN_URL")
-
-if [ "$(echo $auth | $JQ_CMD .success)" == "true" ]; then
-    echo "Login successful"
-    auth_token=$(echo $auth | "$JQ_CMD" -r .token)
-    curl --fail -XPOST -H "X-Docspell-Auth: $auth_token" "$TRIGGER_URL"
-else
-    echo "Login failed."
-fi
+curl --fail -XPOST -H "Docspell-Admin-Secret: $ADMIN_SECRET" "$TRIGGER_URL"
diff --git a/website/site/content/docs/faq/_index.md b/website/site/content/docs/faq/_index.md
index fa25bcc1..84ee520f 100644
--- a/website/site/content/docs/faq/_index.md
+++ b/website/site/content/docs/faq/_index.md
@@ -117,8 +117,7 @@ Please see this [issue](https://github.com/eikek/docspell/issues/358).
 ## Why another DMS?
 
 Back when Docspell started, there weren't as many options as there are
-now. I wanted to try out a different approach. You can read more about
-that [here](@/docs/intro/_index.md#rationale).
+now. I wanted to try out a different approach.
 
 ## Wh…?
 
diff --git a/website/site/content/docs/tools/regenerate-previews.md b/website/site/content/docs/tools/regenerate-previews.md
index 878a56ef..114f1c40 100644
--- a/website/site/content/docs/tools/regenerate-previews.md
+++ b/website/site/content/docs/tools/regenerate-previews.md
@@ -20,18 +20,18 @@ It is a bash script that additionally needs
 # Usage
 
 ```
-./regenerate-previews.sh [docspell-base-url]
+./regenerate-previews.sh [docspell-base-url] [admin-secret]
 ```
 
 For example, if docspell is at `http://localhost:7880`:
 
 ```
-./convert-all-pdfs.sh http://localhost:7880
+./convert-all-pdfs.sh http://localhost:7880 test123
 ```
 
-The script asks for your account name and password. It then logs in
-and triggers the said endpoint. After this you should see a few tasks
-running.
+The script asks for the admin secret if not given to the command. It
+then logs in and triggers the said endpoint. After this you should see
+a few tasks running.
 
 There will be one task per file to convert. All these tasks are
 submitted with a low priority. So files uploaded through the webapp or
diff --git a/website/site/content/docs/webapp/processing.md b/website/site/content/docs/webapp/processing.md
index e20ad5ba..06cf9740 100644
--- a/website/site/content/docs/webapp/processing.md
+++ b/website/site/content/docs/webapp/processing.md
@@ -7,13 +7,13 @@ mktoc = true
 
 
 The page *Processing Queue* shows the current state of document
-processing for your uploads.
+processing for your uploads. The page currently only shows at most the
+80 newest jobs. There is a maximum of 40 done jobs (successful,
+cancelled or failed) and 40 not done jobs.
 
-At the top of the page a list of running jobs is shown. Below that,
-the left column shows jobs that wait to be picked up by the job
-executor. On the right are finished jobs. The number of finished jobs
-is cut to some maximum and is also restricted by a date range. The
-page refreshes itself automatically to show the progress.
+The sidebar lets you filter for a specific job state. The *Currently
+Running* tab shows all jobs that are currently executing and their log
+output. The page refreshes automatically to show the progress.
 
 Example screenshot:
 
@@ -32,8 +32,9 @@ Since job executors are shared among all collectives, it may happen
 that a job is some time waiting until it is picked up by a job
 executor. You can always start more job executors to help out.
 
-If a job fails, it is retried after some time. Only if it fails too
-often (can be configured), it then is finished with *failed* state.
+If a job fails it first enters "stuck" state and is retried after some
+time. Only if it fails too often (can be configured), it then is
+finished with *failed* state.
 
 For the document-processing task, if processing finally fails or a job
 is cancelled, the item is still created, just without suggestions.