diff --git a/alfa-client/apps/alfa-e2e/cypress.config.ts b/alfa-client/apps/alfa-e2e/cypress.config.ts
index 295e1555d5ec2b698d90e570b76ba63fbbe13d7c..51783ad96c857f6e8f3989c8aac7692ce9c4e188 100644
--- a/alfa-client/apps/alfa-e2e/cypress.config.ts
+++ b/alfa-client/apps/alfa-e2e/cypress.config.ts
@@ -45,3 +45,19 @@ export default defineConfig({
     runMode: true,
   },
 });
+
+export interface CypressConfig {
+  baseUrl: string;
+  env: Env;
+}
+
+export interface Env {
+  dbUrl: string;
+  database: string;
+  userManager: UserManager;
+}
+
+export interface UserManager {
+  dbUrl: string;
+  database: string;
+}
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts
index 5c35d68799e7acaa6229dec4f6be990a81b2da05..f2dd9e0c5d7154ae951368e83bbc4011fd94003f 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-anhang/vorgang-anhang-herunterladen.cy.ts
@@ -34,12 +34,12 @@ import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.
 import { VorgangPage } from '../../../page-objects/vorgang.po';
 import {
   createJpgAttachment,
-  createJpgGridFsData,
+  createJpgFileData,
   createPdfAttachment,
-  createPdfGridFsData,
-  createXmlGridFsData,
+  createPdfFileData,
+  createXmlFileData,
   createXmlRepresentation,
-  initGridFs,
+  initFile,
 } from '../../../support/binary-file-util';
 import {
   countDownloadFiles,
@@ -51,12 +51,7 @@ import {
 } from '../../../support/cypress-helper';
 import { exist, notExist } from '../../../support/cypress.util';
 import { loginAsSabine } from '../../../support/user-util';
-import {
-  buildVorgang,
-  createVorgang,
-  initVorgaenge,
-  objectIds,
-} from '../../../support/vorgang-util';
+import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
 
 describe('Vorgang Anhänge', () => {
   const mainPage: MainPage = new MainPage();
@@ -66,17 +61,17 @@ describe('Vorgang Anhänge', () => {
   const vorgangHeader: VorgangDetailHeaderE2EComponent = vorgangPage.getVorgangDetailHeader();
   const subnavigation: VorgangSubnavigationE2EComponent = vorgangPage.getSubnavigation();
   const attachmentContainer: AttachmentContainerE2EComponent = vorgangPage.getAttachmentContainer();
+
   const attachmentList: AttachmentListE2EComponent = new AttachmentListE2EComponent();
-  const formularDatenContainer: VorgangFormularDatenE2EComponent =
-    vorgangPage.getFormularDatenContainer();
-  const vorgangDatenFormular: VorgangFormularDatenE2EComponent =
-    vorgangPage.getFormularDatenContainer();
+  const formularDatenContainer: VorgangFormularDatenE2EComponent = vorgangPage.getFormularDatenContainer();
 
   const xmlRepresentation: FileDataE2E = createXmlRepresentation();
 
+  const jpgAttachment: FileDataE2E = createJpgAttachment();
+  const pdfAttachment: FileDataE2E = createPdfAttachment();
   const sonstigeAttachment = {
     name: 'datei_sonstiges',
-    files: [createJpgAttachment(), createPdfAttachment()],
+    files: [jpgAttachment, pdfAttachment],
   };
   const vorgangKeinAnhang: VorgangE2E = createVorgang();
 
@@ -93,7 +88,7 @@ describe('Vorgang Anhänge', () => {
   };
 
   before(() => {
-    initGridFs([createXmlGridFsData(), createPdfGridFsData(), createJpgGridFsData()]);
+    initFile([createXmlFileData(), createPdfFileData(), createJpgFileData()]);
     initVorgaenge([vorgangKeinAnhang, vorgangAnhangVorhanden]);
 
     loginAsSabine();
@@ -104,6 +99,7 @@ describe('Vorgang Anhänge', () => {
 
   after(() => {
     dropCollections();
+    deleteDownloadFolder();
   });
 
   describe('Download Attachment', () => {
@@ -122,36 +118,32 @@ describe('Vorgang Anhänge', () => {
     });
 
     it('should download jpg', () => {
-      const jpgAttachmentName: string = getJpgAttachment().name;
-      attachmentContainer.getList().getItem(jpgAttachmentName).getRoot().click();
+      attachmentContainer.getList().getItem(jpgAttachment.name).getRoot().click();
       waitForSpinnerToDisappear();
 
-      exist(readFileFromDownloads(buildDownloadFileName(jpgAttachmentName)));
+      exist(readFileFromDownloads(buildDownloadFileName(jpgAttachment.name)));
     });
 
     it('should download pdf', () => {
-      const pdfAttachmentName: string = getPdfAttachment().name;
-      attachmentContainer
-        .getList()
-        .getItem(convertToDataTestId(pdfAttachmentName))
-        .getRoot()
-        .click();
+      attachmentContainer.getList().getItem(convertToDataTestId(pdfAttachment.name)).getRoot().click();
       waitForSpinnerToDisappear();
 
-      exist(readFileFromDownloads(buildDownloadFileName(pdfAttachmentName)));
+      exist(readFileFromDownloads(buildDownloadFileName(pdfAttachment.name)));
     });
 
     it('should download attachment zip file', () => {
-      deleteDownloadFolder().then(() => {
-        attachmentList.downloadAttachments();
-      });
+      attachmentList.downloadAttachments();
+
+      waitForSpinnerToDisappear();
+
+      exist(readFileFromDownloads(`${vorgangAnhangVorhanden.nummer}_Anhaenge.zip`));
     });
 
     it('should unzip attachment file', () => {
       getDownloadFiles().then((files) => {
         unzipDownloadFile(files[0]).then(() => {
           countDownloadFiles().then((count) => {
-            expect(count).to.eq(3);
+            expect(count).to.eq(5);
           });
         });
       });
@@ -163,14 +155,6 @@ describe('Vorgang Anhänge', () => {
 
       exist(vorgangList.getRoot());
     });
-
-    function getJpgAttachment(): FileDataE2E {
-      return sonstigeAttachment.files[1];
-    }
-
-    function getPdfAttachment(): FileDataE2E {
-      return sonstigeAttachment.files[0];
-    }
   });
 
   describe('Download Representation', () => {
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts
index a509bde697a20d4b91a641169ced8ac651ea52be..c93d89d9e08a0433aa15dc52a59e02b8a848f3c1 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-dateien-tab.cy.ts
@@ -32,26 +32,17 @@ import {
   createJpgAttachment,
   createPdfAttachment,
   createXmlRepresentation,
-  initGridFs,
+  initFile,
 } from 'apps/alfa-e2e/src/support/binary-file-util';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
 import { EingangE2E, VorgangE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
 import { VorgangPage } from '../../../page-objects/vorgang.po';
-import {
-  createJpgGridFsData,
-  createPdfGridFsData,
-  createXmlGridFsData,
-} from '../../../support/binary-file-util';
+import { createJpgFileData, createPdfFileData, createXmlFileData } from '../../../support/binary-file-util';
 import { dropCollections } from '../../../support/cypress-helper';
 import { contains, exist, notExist } from '../../../support/cypress.util';
 import { loginAsSabine } from '../../../support/user-util';
-import {
-  buildVorgang,
-  createVorgang,
-  initVorgaenge,
-  objectIds,
-} from '../../../support/vorgang-util';
+import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
@@ -60,8 +51,7 @@ describe('Dateien Tab', () => {
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
   const vorgangPage: VorgangPage = new VorgangPage();
-  const vorgangDatenFormular: VorgangFormularDatenE2EComponent =
-    vorgangPage.getFormularDatenContainer();
+  const vorgangDatenFormular: VorgangFormularDatenE2EComponent = vorgangPage.getFormularDatenContainer();
   const vorgangSubnavigation: VorgangSubnavigationE2EComponent = vorgangPage.getSubnavigation();
   const attachmentList: AttachmentListE2EComponent = new AttachmentListE2EComponent();
 
@@ -101,7 +91,7 @@ describe('Dateien Tab', () => {
   };
 
   before(() => {
-    initGridFs([createXmlGridFsData(), createPdfGridFsData(), createJpgGridFsData()]);
+    initFile([createXmlFileData(), createPdfFileData(), createJpgFileData()]);
     initVorgaenge([vorgangRepresentation, vorgangWithAttachments]);
 
     loginAsSabine();
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/attachment/jpg.json b/alfa-client/apps/alfa-e2e/src/fixtures/attachment/jpg.json
index 4c029ded7b8e5f33c7ecf24ed68e66b057848b01..dfc9cd633294f0f8568e74dcce44b1e555455c54 100644
--- a/alfa-client/apps/alfa-e2e/src/fixtures/attachment/jpg.json
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/attachment/jpg.json
@@ -3,6 +3,5 @@
   "vendorId": "assistants.C45A300C4E5B1B764AE597F6C5DE9B445849AAA5",
   "name": "win.jpg",
   "contentType": "image/jpeg",
-  "size": 10129,
-  "content": ""
+  "size": 10129
 }
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/attachment/pdf.json b/alfa-client/apps/alfa-e2e/src/fixtures/attachment/pdf.json
index 741e703ad15e902db71930a846ebd2b9698748d1..785d5e3631ce9442ff971ac88c2046e0b3949923 100644
--- a/alfa-client/apps/alfa-e2e/src/fixtures/attachment/pdf.json
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/attachment/pdf.json
@@ -3,6 +3,5 @@
   "vendorId": "assistants.2546462108DD4C61C52C7FC31AE62F7E740315AB",
   "name": "Anlage Vollmacht.pdf",
   "contentType": "application/pdf",
-  "size": 187585,
-  "content": ""
+  "size": 187585
 }
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/jpg/file.json b/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/jpg/file.json
index 7c11a540fe7abb57393df51727f7bc5d63e4a7c2..88949dc44c4f27b899e4b62a1a3ba0551a2dc2c7 100644
--- a/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/jpg/file.json
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/jpg/file.json
@@ -10,7 +10,7 @@
   },
   "metadata": {
     "vorgangId": "602566a807bb665df9a86111",
-    "client": "alfa",
+    "client": "Alfa",
     "fieldName": "vorgangAttachment",
     "contentType": "image/jpeg",
     "name": "win.jpg",
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/pdf/file.json b/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/pdf/file.json
index 398ce180a658e2d422edcc4b79ecc79da03d83b5..7aae05bf5c2a691ac039569a2865beb186535cf1 100644
--- a/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/pdf/file.json
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/pdf/file.json
@@ -10,7 +10,7 @@
   },
   "metadata": {
     "vorgangId": "602566a807bb665df9a86111",
-    "client": "alfa",
+    "client": "Alfa",
     "fieldName": "vorgangAttachment",
     "contentType": "application/pdf",
     "name": "Anlage Vollmacht.pdf",
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/xml/file.json b/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/xml/file.json
index b7c9bf892a60293fcdb086358959d249ff08617b..957013ed092ec82feec7dd074d0df5212f27b550 100644
--- a/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/xml/file.json
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/grid-fs/xml/file.json
@@ -10,7 +10,7 @@
   },
   "metadata": {
     "vorgangId": "602566a807bb665df9a86111",
-    "client": "eingangAdapter",
+    "client": "Alfa",
     "fieldName": "vorgangAttachment",
     "contentType": "text/xml",
     "name": "XML-Daten.xml",
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/jpg-file.json b/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/jpg-file.json
new file mode 100644
index 0000000000000000000000000000000000000000..5e8cd63c5601d1a34339326699dadbd47bdbfaa2
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/jpg-file.json
@@ -0,0 +1,14 @@
+{
+  "_id": {
+    "$oid": "6270c62e261af555e8f4f904"
+  },
+  "client": "Alfa",
+  "contentId": "6270c62e261af555e8f4f904",
+  "contentType": "image/jpeg'",
+  "createdBy": "",
+  "fieldName": "vorgangAttachment",
+  "name": "win.jpg",
+  "size": 10129,
+  "version": 0,
+  "vorgangId": "602566a807bb665df9a86111"
+}
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/pdf-file.json b/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/pdf-file.json
new file mode 100644
index 0000000000000000000000000000000000000000..9c92dc28b5b8c3a94c2b269cd13068065d0aeba8
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/pdf-file.json
@@ -0,0 +1,14 @@
+{
+  "_id": {
+    "$oid": "6270c62e261af555e8f4f900"
+  },
+  "client": "Alfa",
+  "contentId": "6270c62e261af555e8f4f900",
+  "contentType": "application/pdf'",
+  "createdBy": "",
+  "fieldName": "vorgangAttachment",
+  "name": "Anlage Vollmacht.pdf",
+  "size": 187585,
+  "version": 0,
+  "vorgangId": "602566a807bb665df9a86111"
+}
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/xml-file.json b/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/xml-file.json
new file mode 100644
index 0000000000000000000000000000000000000000..360761985975e3ce2c69f24a256467a8cb495da0
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/ozgcloud-file/xml-file.json
@@ -0,0 +1,14 @@
+{
+  "_id": {
+    "$oid": "626e444157089b0cc5dceddc"
+  },
+  "client": "Alfa",
+  "contentId": "626e444157089b0cc5dceddc",
+  "fieldName": "vorgangAttachment",
+  "contentType": "text/xml",
+  "name": "XML-Daten.xml",
+  "createdBy": "",
+  "size": 3145,
+  "version": 0,
+  "vorgangId": "602566a807bb665df9a86111"
+}
diff --git a/alfa-client/apps/alfa-e2e/src/fixtures/representation/xml.json b/alfa-client/apps/alfa-e2e/src/fixtures/representation/xml.json
index 264adc7122f9d139ecc1047dad40061bdc069459..83d654319adf14b3436b93f1b157f4850a63e219 100644
--- a/alfa-client/apps/alfa-e2e/src/fixtures/representation/xml.json
+++ b/alfa-client/apps/alfa-e2e/src/fixtures/representation/xml.json
@@ -3,11 +3,5 @@
   "vendorId": "myForm-xml",
   "name": "XML-Daten.xml",
   "contentType": "text/xml",
-  "size": 5520,
-  "content": {
-    "$binary": {
-      "base64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHQ6dXVpZD0iZWFjMjQ4MGUtNzE2Ni00YjE2LWJkZGQtODgwNTkxZTdkOTNiIiB0OmlkPSIyMDIxMDQxNTMwNzAyMDQxNDcwMSIgdDp0aW1lc3RhbXA9IjIwMjEtMDQtMTVUMDg6MzE6NDIuMzk4WiIgdDpzZW5kZXI9ImludGVsbGlmb3JtLm96Zy1zaC5kZSIgdDpmb3JtPSJTaW1wbGVGb3JtU2VuZGV0QW5Ib21lU2VydmVyVm9uVG9yc3RlbiIgdDpmb3JtLWlkPSJTaW1wbGVGb3JtU2VuZGV0QW5Ib21lU2VydmVyVm9uVG9yc3RlbiIgdDpjdXN0b21lcj0iS2llbCIgdDpjdXN0b21lci1pZD0iS2llbCIgdDpjbGllbnQ9InNoLWRldiIgdDpjbGllbnQtaWQ9InNoLWRldiI+PEtvbnRha3RzeXN0ZW1UeXBBPjIzMzAzNDYwMDwvS29udGFrdHN5c3RlbVR5cEE+PEtvbnRha3RzeXN0ZW1UeXBCPjIzMzAzNDYwMTwvS29udGFrdHN5c3RlbVR5cEI+PEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD48YW50cmFnc3RlbGxlcj48c2hfc3RyYXNzZT5BbiBkZXIgU2NobmVpZGVyZWk8L3NoX3N0cmFzc2U+PHNoX2hhdXNudW1tZXI+MTwvc2hfaGF1c251bW1lcj48c2hfcGx6PjI0MTAzPC9zaF9wbHo+PG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPjxvcnQ+S2llbDwvb3J0PjxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD48R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+PEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPjxzdGFhdD4wMDA8L3N0YWF0Pjxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD48a29udF90ZWxlZm9ubnVtbWVyLz48a29udF9tb2JpbG51bW1lci8+PGtvbnRfdGVsZWZheG51bW1lci8+PGtvbnRfZW1haWwvPjxrb250X2RlbWFpbC8+PC9hbnRyYWdzdGVsbGVyPjxVcGxvYWQxPjxmaWxlIGNvbnRlbnQtdHlwZT0iaW1hZ2UvanBlZyIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuRTBGQkEzNjFDMTkxRjhCNzIzOTQ5NDY3QUUzMDJCRUEyNEU0NzQ1RSIgbGVuZ3RoPSIxNTUyNTEiPkhlbGdlMS5qcGc8L2ZpbGU+PC9VcGxvYWQxPjxVcGxvYWQyPjxmaWxlIGNvbnRlbnQtdHlwZT0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiBkZXNjcmlwdGlvbj0iIiBpZD0iYXNzaXN0YW50cy41MkQ3OUU1QjIxMThEMTc0MDA0NUFCODcxNTE1MzVEQ0FEMjRFOUE3IiBsZW5ndGg9Ijc5OTMiPkhlbGdldGV4dDIub2R0PC9maWxlPjwvVXBsb2FkMj48R2ViaWV0SUQ+OTAwNjQwMjwvR2ViaWV0SUQ+PHp1c3RhZW5kaWdlc3RlbGxlPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4xMDM2MzQ1NTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4xMDM2MzQ1NTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kIE9yZG51bmdzYW10LCBTYWNoYmVyZWljaCBHZWZhaHJlbmFid2VociwgV2FmZmVuYW5nZWxlZ2VuaGVpdGVuLCBKYWdkYmVow7ZyZGUsIEJlc3RhdHR1bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+PHN0cmFzc2U+U3RyZXNlbWFubnBsYXR6PC9zdHJhc3NlPjxoYXVzbnVtbWVyPjU8L2hhdXNudW1tZXI+PHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPjxvcnRJRD45MDA2NDAyPC9vcnRJRD48b3J0PktpZWw8L29ydD48dGVsZWZvbm51bW1lci8+PHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5MDEtNjIxODE8L3RlbGVmYXhudW1tZXI+PGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+PGRlbWFpbGFkcmVzc2UvPjxrb250YWt0c3lzdGVtX2tlbm51bmcvPjxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHovPjxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPjxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD48L3p1c3RhZW5kaWdlc3RlbGxlPjxlbXBmYW5nZW5kZXN0ZWxsZT48T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz48c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT48aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPjxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD48b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+PG9ydD5LaWVsPC9vcnQ+PHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj48dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPjxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPjxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT48a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+PGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+PC9lbXBmYW5nZW5kZXN0ZWxsZT48ZXJrbGFlcnVuZ2VuPjxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPjxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD48Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+PGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD48Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4uPC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+PGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIgYmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6IDYwLDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4gClNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIgRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyIFByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUgQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwgZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4gVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4gUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz48Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+PGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlciBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyIEF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIgRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMgTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwgdmVyYXJiZWl0ZXQgIHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4gYW4gZGllIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVpdGV0LiBFYmVuc28gYmluIGljaCBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiAgRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUgRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIgZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4gRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuIHp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+PGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyIE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRlcyBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21pc3NicmF1Y2g+PHBvbGljeXVybD5odHRwOi8vd3d3LmVhLXNoLmluZm8vZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+PC9lcmtsYWVydW5nZW4+PGxvZ291cmw+aHR0cDovL3d3dy5lYS1zaC5pbmZvL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+PC9teUZvcm0+",
-      "subType": "00"
-    }
-  }
+  "size": 5520
 }
diff --git a/alfa-client/apps/alfa-e2e/src/model/binary-file.ts b/alfa-client/apps/alfa-e2e/src/model/binary-file.ts
index 339d1d09768fb8704f0e1cf41d30a38e202c8ea4..9593eb229c6ec779cfe6f355b4b95da6ebfdb945 100644
--- a/alfa-client/apps/alfa-e2e/src/model/binary-file.ts
+++ b/alfa-client/apps/alfa-e2e/src/model/binary-file.ts
@@ -39,12 +39,12 @@ export class FileDataE2E {
   name: string;
   size: number;
   contentType: string;
-  content: BinaryBase64E2E; //TODO Entfernen -> content wird jetzt im GridFs gespeichert
 }
 
-export interface GridFsFileDataE2E {
+export interface CreateFileDataE2E {
   file: GridFsFileE2E;
   chunks: GridFsChunkE2E[];
+  ozgcloudFile: OzgCloudFileE2E;
 }
 
 export interface GridFsFileE2E {
@@ -74,3 +74,21 @@ export interface GridFsChunkE2E {
 export class BinaryBase64E2E {
   $binary: { base64: string };
 }
+
+export interface InitOzgCloudFileTaskData {
+  collection: string;
+  data: OzgCloudFileE2E[];
+}
+
+export class OzgCloudFileE2E {
+  _id: ObjectIdE2E;
+  client: string;
+  contentId: string;
+  contentType: string;
+  createdBy: string;
+  fieldName: string;
+  name: string;
+  size: number;
+  version: number;
+  vorgangId: string;
+}
diff --git a/alfa-client/apps/alfa-e2e/src/support/binary-file-util.ts b/alfa-client/apps/alfa-e2e/src/support/binary-file-util.ts
index 5e3fb63c240c9863ed67da88a3a161f6136bd032..fed2f548552d26cd63b4bd544829a6a695d07247 100644
--- a/alfa-client/apps/alfa-e2e/src/support/binary-file-util.ts
+++ b/alfa-client/apps/alfa-e2e/src/support/binary-file-util.ts
@@ -21,8 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { FileDataE2E, GridFsFileDataE2E } from '../model/binary-file';
-import { initGridFsData } from './cypress-helper';
+import { CreateFileDataE2E, FileDataE2E } from '../model/binary-file';
+import { initFileData } from './cypress-helper';
 
 const xmlRepresentation = require('../fixtures/representation/xml.json');
 
@@ -31,12 +31,15 @@ const pdfAttachment = require('../fixtures/attachment/pdf.json');
 
 const xmlFile = require('../fixtures/grid-fs/xml/file.json');
 const xmlChunk = require('../fixtures/grid-fs/xml/chunk.json');
+const xmlOzgCloudFile = require('../fixtures/ozgcloud-file/xml-file.json');
 
 const jpgFile = require('../fixtures/grid-fs/jpg/file.json');
 const jpgChunk = require('../fixtures/grid-fs/jpg/chunk.json');
+const jpgOzgCloudFile = require('../fixtures/ozgcloud-file/jpg-file.json');
 
 const pdfFile = require('../fixtures/grid-fs/pdf/file.json');
 const pdfChunk = require('../fixtures/grid-fs/pdf/chunk.json');
+const pdfOzgCloudFile = require('../fixtures/ozgcloud-file/pdf-file.json');
 
 export function createXmlRepresentation(): FileDataE2E {
   return xmlRepresentation;
@@ -50,18 +53,18 @@ export function createPdfAttachment(): FileDataE2E {
   return pdfAttachment;
 }
 
-export function createXmlGridFsData(): GridFsFileDataE2E {
-  return { file: xmlFile, chunks: [xmlChunk] };
+export function createXmlFileData(): CreateFileDataE2E {
+  return { file: xmlFile, chunks: [xmlChunk], ozgcloudFile: xmlOzgCloudFile };
 }
 
-export function createJpgGridFsData(): GridFsFileDataE2E {
-  return { file: jpgFile, chunks: [jpgChunk] };
+export function createJpgFileData(): CreateFileDataE2E {
+  return { file: jpgFile, chunks: [jpgChunk], ozgcloudFile: jpgOzgCloudFile };
 }
 
-export function createPdfGridFsData(): GridFsFileDataE2E {
-  return { file: pdfFile, chunks: [pdfChunk] };
+export function createPdfFileData(): CreateFileDataE2E {
+  return { file: pdfFile, chunks: [pdfChunk], ozgcloudFile: pdfOzgCloudFile };
 }
 
-export function initGridFs(gridFsData: GridFsFileDataE2E[]): void {
-  initGridFsData(gridFsData);
+export function initFile(createFileData: CreateFileDataE2E[]): void {
+  initFileData(createFileData);
 }
diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts
index 85919497c268712ac183a2cf2af6b08b4d4c7cec..9c2bd2f7944d04ee78e668cf89f1cbe9c396689f 100644
--- a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts
+++ b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts
@@ -22,7 +22,7 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { Interception, RouteHandler, RouteMatcher } from 'cypress/types/net-stubbing';
-import { GridFsChunkE2E, GridFsFileDataE2E, GridFsFileE2E } from '../model/binary-file';
+import { CreateFileDataE2E, GridFsChunkE2E, GridFsFileE2E, OzgCloudFileE2E } from '../model/binary-file';
 import { CommandE2E } from '../model/command';
 import { SmockerMocks } from '../model/smocker';
 import { UsermanagerUserE2E } from '../model/usermanager';
@@ -35,6 +35,7 @@ enum CypressTasks {
   INIT_COMMAND_DATA = 'initCommandData',
   INIT_GRID_FS_FILE_DATA = 'initGridFsFileData',
   INIT_GRID_FS_CHUNK_DATA = 'initGridFsChunkData',
+  INIT_OZG_CLOUD_FILE = 'initOzgCloudFileData',
   INIT_VORGANG_DATA = 'initVorgangData',
   INIT_VORGANG_ATTACHED_ITEM_DATA = 'initVorgangAttachedItemData',
   INIT_USERMANAGER_DATA = 'initUsermanagerData',
@@ -49,6 +50,7 @@ enum MongoCollections {
   COMMAND = 'command',
   FS_CHUNKS = 'fs.chunks',
   FS_FILES = 'fs.files',
+  OZG_CLOUD_FILE = 'ozgCloudFile',
   VORGANG = 'vorgang',
   VORGANG_ATTACHED_ITEM = 'vorgangAttachedItem',
   USER = 'User',
@@ -67,35 +69,43 @@ export function visitUrl(url: string): void {
 }
 
 export function initCommandData(data: CommandE2E[]): void {
-  cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.COMMAND]);
+  dropCollection(MongoCollections.COMMAND);
   cy.task(CypressTasks.INIT_COMMAND_DATA, { collection: MongoCollections.COMMAND, data });
 }
 
-export function initGridFsData(data: GridFsFileDataE2E[]): void {
+export function initFileData(data: CreateFileDataE2E[]): void {
   const files: GridFsFileE2E[] = [];
+  const ozgCloudFiles: OzgCloudFileE2E[] = [];
   let chunks: GridFsChunkE2E[] = [];
 
   data.forEach((singleData) => {
     files.push(singleData.file);
+    ozgCloudFiles.push(singleData.ozgcloudFile);
     chunks = chunks.concat(singleData.chunks);
   });
 
   initGridFsFileData(files);
   initGridFsChunkData(chunks);
+  initOzgCloudFileData(ozgCloudFiles);
 }
 
 function initGridFsFileData(data: GridFsFileE2E[]): void {
-  cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.FS_FILES]);
+  dropCollection(MongoCollections.FS_FILES);
   cy.task(CypressTasks.INIT_GRID_FS_FILE_DATA, { collection: MongoCollections.FS_FILES, data });
 }
 
 function initGridFsChunkData(data: GridFsChunkE2E[]): void {
-  cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.FS_CHUNKS]);
+  dropCollection(MongoCollections.FS_CHUNKS);
   cy.task(CypressTasks.INIT_GRID_FS_CHUNK_DATA, { collection: MongoCollections.FS_CHUNKS, data });
 }
 
+function initOzgCloudFileData(data: OzgCloudFileE2E[]): void {
+  dropCollection(MongoCollections.OZG_CLOUD_FILE);
+  cy.task(CypressTasks.INIT_OZG_CLOUD_FILE, { collection: MongoCollections.OZG_CLOUD_FILE, data });
+}
+
 export function initVorgangAttachedItemData(data: VorgangAttachedItemE2E[]): void {
-  cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.VORGANG_ATTACHED_ITEM]);
+  dropCollection(MongoCollections.VORGANG_ATTACHED_ITEM);
   cy.task(CypressTasks.INIT_VORGANG_ATTACHED_ITEM_DATA, {
     collection: MongoCollections.VORGANG_ATTACHED_ITEM,
     data,
@@ -103,10 +113,14 @@ export function initVorgangAttachedItemData(data: VorgangAttachedItemE2E[]): voi
 }
 
 export function initVorgangData(data: VorgangE2E[]): void {
-  cy.task(CypressTasks.DROP_COLLECTIONS, [MongoCollections.VORGANG]);
+  dropCollection(MongoCollections.VORGANG);
   cy.task(CypressTasks.INIT_VORGANG_DATA, { collection: MongoCollections.VORGANG, data });
 }
 
+function dropCollection(collectionName: string): void {
+  cy.task(CypressTasks.DROP_COLLECTIONS, [collectionName]);
+}
+
 export function initSearchIndexData(vorgaenge: VorgangE2E[]): void {
   vorgaenge.forEach((vorgang) => cy.addVorgangToSearchIndex(vorgang));
 }
diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress-tasks.ts b/alfa-client/apps/alfa-e2e/src/support/cypress-tasks.ts
index df7ae46a29c361be0665c83fa9aa962a7ed37a35..0c4ad2fdcb4914807629b2432bbb76c43e4743f6 100644
--- a/alfa-client/apps/alfa-e2e/src/support/cypress-tasks.ts
+++ b/alfa-client/apps/alfa-e2e/src/support/cypress-tasks.ts
@@ -21,15 +21,18 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import { CypressConfig } from 'apps/alfa-e2e/cypress.config';
 import { readdir, remove } from 'fs-extra';
 import { Db, Document, Long, MongoClient, ObjectId, WithId } from 'mongodb';
+import { InitOzgCloudFileTaskData, OzgCloudFileE2E } from '../model/binary-file';
+import { dropCollections, insert, insertWithDrop } from './mongodb-util';
 
 const fs = require('fs');
 const decompress = require('decompress');
 
 const Binary = require('mongodb').Binary;
 
-module.exports = (on: any, config: any) => {
+module.exports = (on: any, config: CypressConfig): CypressConfig => {
   on('task', {
     initCommandData({ collection, data }) {
       console.log('initCommandData');
@@ -46,6 +49,11 @@ module.exports = (on: any, config: any) => {
       insertIntoDatabase(config, collection, parseGridFsChunkData(data));
       return 0;
     },
+    initOzgCloudFileData(taskData: InitOzgCloudFileTaskData): number {
+      console.log('initOzgCloudFileData');
+      insertIntoDatabase(config, taskData.collection, parseOzgCloudFileData(taskData.data));
+      return 0;
+    },
     initVorgangData({ collection, data }) {
       console.log('initVorgangData');
       insertIntoDatabase(config, collection, parseVorgangData(data));
@@ -61,7 +69,7 @@ module.exports = (on: any, config: any) => {
       insertIntoUserManagerDatabase(config, collection, parseUserData(data));
       return 0;
     },
-    dropCollections(collections) {
+    dropCollections(collections: string[]): number {
       console.log('dropCollections: ', collections);
       dropCollectionsFromDatabase(config, collections);
       return 0;
@@ -183,6 +191,17 @@ function parseGridFsChunk(gridFsChunk) {
   gridFsChunk.data = createBinData(gridFsChunk.data);
 }
 
+function parseOzgCloudFileData(ozgCloudFiles: OzgCloudFileE2E[]) {
+  ozgCloudFiles.forEach((ozgCloudFile: OzgCloudFileE2E) => parseOzgCloudFile(ozgCloudFile));
+  return ozgCloudFiles;
+}
+
+function parseOzgCloudFile(ozgCloudFile) {
+  ozgCloudFile._id = createObjectId(ozgCloudFile);
+  ozgCloudFile.size = createNumberLong(ozgCloudFile.size);
+  ozgCloudFile.version = createNumberLong(ozgCloudFile.version);
+}
+
 function parseVorgangData(data) {
   data.forEach((vorgang) => parseVorgang(vorgang));
   return data;
@@ -204,32 +223,12 @@ function parseVorgang(vorgang) {
 
 function parseEingang(eingang) {
   eingang.header.createdAt = createDate(eingang.header.createdAt);
-
-  if (eingang.attachments) {
-    eingang.attachments.forEach((attachment) => parseAttachment(attachment));
-  }
-  if (eingang.representations) {
-    eingang.representations.forEach((representation) => parseRepresentations(representation));
-  }
-}
-
-function parseAttachment(attachment) {
-  attachment.files[0].content = createBinData('');
 }
 
 function createBinData(encoded64Value) {
   return Binary(Buffer.from(encoded64Value, 'base64'), 0);
 }
 
-function parseRepresentations(representation) {
-  representation.content = createBinary(representation);
-}
-
-//TODO Code entfernen und stattdessen createBinData(value) nutzen
-function createBinary(field) {
-  return Binary(field.content.$binary.base64, 'base64');
-}
-
 function parseWiedervorlage(wiedervorlage) {
   wiedervorlage.frist = createDate(wiedervorlage.frist);
   wiedervorlage.createdAt = createDate(wiedervorlage.createdAt);
@@ -268,114 +267,42 @@ function createObjectId(field) {
   return new ObjectId(field._id.$oid);
 }
 
-function createNumberLong(numberValue) {
+function createNumberLong(numberValue: number): Long {
   return Long.fromNumber(numberValue);
 }
 
-function insertIntoDatabase(config, collection, data) {
-  insert(getDatabaseUrl(config), getDatabase(config), collection, data);
+function insertIntoDatabase(config: CypressConfig, collection: string, data): void {
+  insertWithDrop(getDatabaseUrl(config), getDatabase(config), collection, data);
 }
 
-function insertIntoUserManagerDatabase(config, collection, data) {
-  insertWithoutDrop(getUserManagerDatabaseUrl(config), getUserManagerDatabase(config), collection, data);
-}
-
-function insertWithoutDrop(databaseUrl, databaseName, collection, data) {
-  MongoClient.connect(databaseUrl, (error, connection) => {
-    console.log(`connect to ${databaseName} database with ${databaseUrl}`);
-    if (!error) {
-      console.log('success');
-      const db: Db = connection.db(databaseName);
-
-      db.createCollection(collection, (error) => handleCreateCollection(db, connection, collection, data, error));
-    } else {
-      console.error('Error: ', error);
-    }
-  });
+function insertIntoUserManagerDatabase(config: CypressConfig, collection: string, data): void {
+  insert(getUserManagerDatabaseUrl(config), getUserManagerDatabase(config), collection, data);
 }
 
-function insert(databaseUrl, databaseName, collection, data) {
-  MongoClient.connect(databaseUrl, (error, connection) => {
-    console.log(`connect to ${databaseName} database with ${databaseUrl}`);
-    if (!error) {
-      console.log('success');
-      const db: Db = connection.db(databaseName);
-
-      db.collection(collection).drop(() => {
-        db.createCollection(collection, (error) => handleCreateCollection(db, connection, collection, data, error));
-      });
-    } else {
-      console.error('Error: ', error);
-    }
-  });
-}
-
-function handleCreateCollection(db, connection, collection, data, error) {
-  if (error) {
-    console.error(`Fehler beim Erstellen der Collection "${collection}": `, error);
-  } else {
-    console.log(`Collection ${collection} erfolgreich erstellt`);
-    insertManyToDatabase(db, connection, collection, data);
-  }
-}
-
-function insertManyToDatabase(db, connection, collection, data) {
-  db.collection(collection).insertMany(data, (error) => handleInsertMany(connection, error));
-}
-
-function handleInsertMany(connection, error) {
-  if (error) {
-    console.error('Fehler beim Einlesen der Daten: ', error);
-  } else {
-    console.log('Die Daten wurden erfolgreich eingelesen.');
-  }
-  connection.close();
-}
-
-function dropCollectionsFromDatabase(config, collections) {
+function dropCollectionsFromDatabase(config: CypressConfig, collections: string[]): void {
   dropCollections(getDatabaseUrl(config), getDatabase(config), collections);
 }
 
-function getDatabaseUrl(config) {
+function getDatabaseUrl(config: CypressConfig): string {
   return config.env.dbUrl;
 }
 
-function getDatabase(config) {
+function getDatabase(config: CypressConfig): string {
   return config.env.database;
 }
 
-function dropUserManagerCollectionsFromDatabase(config, collections) {
+function dropUserManagerCollectionsFromDatabase(config: CypressConfig, collections) {
   dropCollections(getUserManagerDatabaseUrl(config), getUserManagerDatabase(config), collections);
 }
 
-function getUserManagerDatabaseUrl(config) {
+function getUserManagerDatabaseUrl(config: CypressConfig): string {
   return config.env.userManager.dbUrl;
 }
 
-function getUserManagerDatabase(config) {
+function getUserManagerDatabase(config: CypressConfig): string {
   return config.env.userManager.database;
 }
 
-function dropCollections(databaseUrl, databaseName, collections) {
-  MongoClient.connect(databaseUrl, (error, connection) => {
-    if (!error) {
-      const db = connection.db(databaseName);
-      collections.forEach((oneCollection, index) => {
-        console.log('drop collection', oneCollection);
-        db.collection(oneCollection).drop(() => {
-          //CHECKME Ist die Abfrage notwendig?
-          if (index == collections.length) {
-            console.log('close connection');
-            connection.close();
-          }
-        });
-      });
-    } else {
-      console.error('Error: ', error);
-    }
-  });
-}
-
 function countFiles(folderName) {
   return readdir(folderName)
     .then((files) => files.length)
diff --git a/alfa-client/apps/alfa-e2e/src/support/mongodb-util.ts b/alfa-client/apps/alfa-e2e/src/support/mongodb-util.ts
new file mode 100644
index 0000000000000000000000000000000000000000..07b558512b4f32b00e9788b313553060ff729608
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/support/mongodb-util.ts
@@ -0,0 +1,56 @@
+import { Db, MongoClient } from 'mongodb';
+
+export function insertWithDrop(databaseUrl: string, databaseName: string, collection: string, data): void {
+  connectoToDb(databaseUrl, databaseName, async (database: Db) => {
+    try {
+      console.log('drop collection and insert data');
+      await database.dropCollection(collection);
+      await database.collection(collection).insertMany(data);
+    } catch (error) {
+      console.error('Failed to insert data: ', error);
+    }
+  });
+}
+
+export async function insert(databaseUrl: string, databaseName: string, collection: string, data): Promise<void> {
+  connectoToDb(databaseUrl, databaseName, async (database: Db) => {
+    try {
+      console.log('insert data');
+      await database.collection(collection).insertMany(data);
+    } catch (error) {
+      console.error('Failed to insert data: ', error);
+    }
+  });
+}
+
+export function dropCollections(databaseUrl: string, databaseName: string, collections: string[]): void {
+  connectoToDb(databaseUrl, databaseName, async (database: Db) => {
+    for (let collection of collections) {
+      await dropCollection(database, collection);
+    }
+  });
+}
+
+async function dropCollection(database: Db, collection: string): Promise<void> {
+  try {
+    console.log('drop collection', collection);
+    await database.collection(collection).drop();
+  } catch (err) {
+    console.warn(`Failed to drop collection ${collection}:`, err.message);
+  }
+}
+
+async function connectoToDb(databaseUrl: string, databaseName: string, execution: (database: Db) => void): Promise<void> {
+  const client: MongoClient = new MongoClient(databaseUrl);
+  try {
+    console.log('open db connection');
+    const client: MongoClient = await MongoClient.connect(databaseUrl);
+    const database: Db = client.db(databaseName);
+    await execution(database);
+  } catch (error) {
+    console.error('Error:', error);
+  } finally {
+    console.log('close db connection');
+    await client.close();
+  }
+}
diff --git a/alfa-client/pnpm-lock.yaml b/alfa-client/pnpm-lock.yaml
index 9ff1eea46810db9efacb973e06d4db04bd98f748..f875d36ba7bae2db40b66c5570722a489edb5300 100644
--- a/alfa-client/pnpm-lock.yaml
+++ b/alfa-client/pnpm-lock.yaml
@@ -4081,8 +4081,8 @@ packages:
     resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==}
     engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
 
-  '@ungap/structured-clone@1.2.0':
-    resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+  '@ungap/structured-clone@1.2.1':
+    resolution: {integrity: sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==}
 
   '@vitejs/plugin-basic-ssl@1.1.0':
     resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==}
@@ -5198,6 +5198,10 @@ packages:
     resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
     engines: {node: '>= 8'}
 
+  cross-spawn@7.0.6:
+    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+    engines: {node: '>= 8'}
+
   crypto-browserify@3.12.1:
     resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==}
     engines: {node: '>= 0.10'}
@@ -16032,7 +16036,7 @@ snapshots:
       '@typescript-eslint/types': 8.13.0
       eslint-visitor-keys: 3.4.3
 
-  '@ungap/structured-clone@1.2.0': {}
+  '@ungap/structured-clone@1.2.1': {}
 
   '@vitejs/plugin-basic-ssl@1.1.0(vite@5.4.6(@types/node@20.17.6)(less@4.2.0)(sass@1.77.6)(stylus@0.59.0)(terser@5.31.6))':
     dependencies:
@@ -17373,6 +17377,12 @@ snapshots:
       shebang-command: 2.0.0
       which: 2.0.2
 
+  cross-spawn@7.0.6:
+    dependencies:
+      path-key: 3.1.1
+      shebang-command: 2.0.0
+      which: 2.0.2
+
   crypto-browserify@3.12.1:
     dependencies:
       browserify-cipher: 1.0.1
@@ -18140,10 +18150,10 @@ snapshots:
       '@humanwhocodes/config-array': 0.11.14
       '@humanwhocodes/module-importer': 1.0.1
       '@nodelib/fs.walk': 1.2.8
-      '@ungap/structured-clone': 1.2.0
+      '@ungap/structured-clone': 1.2.1
       ajv: 6.12.6
       chalk: 4.1.2
-      cross-spawn: 7.0.5
+      cross-spawn: 7.0.6
       debug: 4.3.7(supports-color@8.1.1)
       doctrine: 3.0.0
       escape-string-regexp: 4.0.0