diff --git a/src/documents/file_handling.py b/src/documents/file_handling.py
index a5274a5f4..dd798e8ab 100644
--- a/src/documents/file_handling.py
+++ b/src/documents/file_handling.py
@@ -91,7 +91,7 @@ def generate_unique_filename(doc, root):
             return new_filename
 
 
-def generate_filename(doc, counter=0):
+def generate_filename(doc, counter=0, append_gpg=True):
     path = ""
 
     try:
@@ -151,7 +151,7 @@ def generate_filename(doc, counter=0):
         filename = f"{doc.pk:07}{counter_str}{doc.file_type}"
 
     # Append .gpg for encrypted files
-    if doc.storage_type == doc.STORAGE_TYPE_GPG:
+    if append_gpg and doc.storage_type == doc.STORAGE_TYPE_GPG:
         filename += ".gpg"
 
     return filename
diff --git a/src/documents/management/commands/document_exporter.py b/src/documents/management/commands/document_exporter.py
index e2313e86a..250ae1adf 100644
--- a/src/documents/management/commands/document_exporter.py
+++ b/src/documents/management/commands/document_exporter.py
@@ -108,7 +108,8 @@ class Command(Renderable, BaseCommand):
             while True:
                 if self.use_filename_format:
                     base_name = generate_filename(
-                        document, counter=filename_counter)
+                        document, counter=filename_counter,
+                        append_gpg=False)
                 else:
                     base_name = document.get_public_filename(
                         counter=filename_counter)
@@ -139,15 +140,18 @@ class Command(Renderable, BaseCommand):
             t = int(time.mktime(document.created.timetuple()))
             if document.storage_type == Document.STORAGE_TYPE_GPG:
 
+                os.makedirs(os.path.dirname(original_target), exist_ok=True)
                 with open(original_target, "wb") as f:
                     f.write(GnuPG.decrypted(document.source_file))
                     os.utime(original_target, times=(t, t))
 
+                os.makedirs(os.path.dirname(thumbnail_target), exist_ok=True)
                 with open(thumbnail_target, "wb") as f:
                     f.write(GnuPG.decrypted(document.thumbnail_file))
                     os.utime(thumbnail_target, times=(t, t))
 
                 if archive_target:
+                    os.makedirs(os.path.dirname(archive_target), exist_ok=True)
                     with open(archive_target, "wb") as f:
                         f.write(GnuPG.decrypted(document.archive_path))
                         os.utime(archive_target, times=(t, t))
diff --git a/src/documents/tests/samples/documents/originals/0000002.pdf.gpg b/src/documents/tests/samples/documents/originals/0000002.pdf.gpg
deleted file mode 100644
index 0322a8039..000000000
Binary files a/src/documents/tests/samples/documents/originals/0000002.pdf.gpg and /dev/null differ
diff --git a/src/documents/tests/samples/documents/originals/0000004.pdf.gpg b/src/documents/tests/samples/documents/originals/0000004.pdf.gpg
new file mode 100644
index 000000000..754efcbf6
Binary files /dev/null and b/src/documents/tests/samples/documents/originals/0000004.pdf.gpg differ
diff --git a/src/documents/tests/samples/documents/thumbnails/0000002.png.gpg b/src/documents/tests/samples/documents/thumbnails/0000004.png.gpg
similarity index 100%
rename from src/documents/tests/samples/documents/thumbnails/0000002.png.gpg
rename to src/documents/tests/samples/documents/thumbnails/0000004.png.gpg
diff --git a/src/documents/tests/test_management_exporter.py b/src/documents/tests/test_management_exporter.py
index d6e7ad6e0..e3fef6b78 100644
--- a/src/documents/tests/test_management_exporter.py
+++ b/src/documents/tests/test_management_exporter.py
@@ -24,6 +24,8 @@ class TestExportImport(DirectoriesMixin, TestCase):
         self.d1 = Document.objects.create(content="Content", checksum="42995833e01aea9b3edee44bbfdd7ce1", archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b", title="wow1", filename="0000001.pdf", mime_type="application/pdf")
         self.d2 = Document.objects.create(content="Content", checksum="9c9691e51741c1f4f41a20896af31770", title="wow2", filename="0000002.pdf", mime_type="application/pdf")
         self.d3 = Document.objects.create(content="Content", checksum="d38d7ed02e988e072caf924e0f3fcb76", title="wow2", filename="0000003.pdf", mime_type="application/pdf")
+        self.d4 = Document.objects.create(content="Content", checksum="82186aaa94f0b98697d704b90fd1c072", title="wow_dec", filename="0000004.pdf.gpg", mime_type="application/pdf", storage_type=Document.STORAGE_TYPE_GPG)
+
         self.t1 = Tag.objects.create(name="t")
         self.dt1 = DocumentType.objects.create(name="dt")
         self.c1 = Correspondent.objects.create(name="c")
@@ -34,6 +36,9 @@ class TestExportImport(DirectoriesMixin, TestCase):
         self.d1.save()
         super(TestExportImport, self).setUp()
 
+    @override_settings(
+        PASSPHRASE="test"
+    )
     def _do_export(self, use_filename_format=False, compare_checksums=False):
         args = ['document_exporter', self.target]
         if use_filename_format:
@@ -54,8 +59,8 @@ class TestExportImport(DirectoriesMixin, TestCase):
 
         manifest = self._do_export(use_filename_format=use_filename_format)
 
-        self.assertEqual(len(manifest), 6)
-        self.assertEqual(len(list(filter(lambda e: e['model'] == 'documents.document', manifest))), 3)
+        self.assertEqual(len(manifest), 7)
+        self.assertEqual(len(list(filter(lambda e: e['model'] == 'documents.document', manifest))), 4)
 
         self.assertTrue(os.path.exists(os.path.join(self.target, "manifest.json")))
 
@@ -69,6 +74,8 @@ class TestExportImport(DirectoriesMixin, TestCase):
                     checksum = hashlib.md5(f.read()).hexdigest()
                 self.assertEqual(checksum, element['fields']['checksum'])
 
+                self.assertEqual(element['fields']['storage_type'], Document.STORAGE_TYPE_UNENCRYPTED)
+
                 if document_exporter.EXPORTER_ARCHIVE_NAME in element:
                     fname = os.path.join(self.target, element[document_exporter.EXPORTER_ARCHIVE_NAME])
                     self.assertTrue(os.path.exists(fname))
@@ -78,7 +85,7 @@ class TestExportImport(DirectoriesMixin, TestCase):
                     self.assertEqual(checksum, element['fields']['archive_checksum'])
 
         with paperless_environment() as dirs:
-            self.assertEqual(Document.objects.count(), 3)
+            self.assertEqual(Document.objects.count(), 4)
             Document.objects.all().delete()
             Correspondent.objects.all().delete()
             DocumentType.objects.all().delete()
@@ -86,13 +93,14 @@ class TestExportImport(DirectoriesMixin, TestCase):
             self.assertEqual(Document.objects.count(), 0)
 
             call_command('document_importer', self.target)
-            self.assertEqual(Document.objects.count(), 3)
+            self.assertEqual(Document.objects.count(), 4)
             self.assertEqual(Tag.objects.count(), 1)
             self.assertEqual(Correspondent.objects.count(), 1)
             self.assertEqual(DocumentType.objects.count(), 1)
             self.assertEqual(Document.objects.get(id=self.d1.id).title, "wow1")
             self.assertEqual(Document.objects.get(id=self.d2.id).title, "wow2")
             self.assertEqual(Document.objects.get(id=self.d3.id).title, "wow2")
+            self.assertEqual(Document.objects.get(id=self.d4.id).title, "wow_dec")
             messages = check_sanity()
             # everything is alright after the test
             self.assertEqual(len(messages), 0, str([str(m) for m in messages]))