diff --git a/goofy-client/apps/goofy-e2e/cypress.config.ts b/goofy-client/apps/goofy-e2e/cypress.config.ts
index 9a49dde39416be544323860b89f605015d8f615a..21b3aad9fb32db1ae98081e63a3facb256b3593a 100644
--- a/goofy-client/apps/goofy-e2e/cypress.config.ts
+++ b/goofy-client/apps/goofy-e2e/cypress.config.ts
@@ -12,4 +12,4 @@ export default defineConfig({
 			return cypressEvents(on, config);
 		}
 	},
-});
\ No newline at end of file
+});
diff --git a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts
index f860a6d99217dd94c8d807dd4c4f33bf92c4ff84..0e5cc6e24d453b4b316ee55d17045984eb1161ed 100644
--- a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts
+++ b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-exportieren.cy.ts
@@ -29,10 +29,11 @@ import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-lis
 import { VorgangE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
 import { VorgangPage } from '../../../page-objects/vorgang.po';
-import { dropCollections } from '../../../support/cypress-helper';
-import { exist, notExist } from '../../../support/cypress.util';
+import { countDownloadFiles, deleteDownloadFolder, dropCollections } from '../../../support/cypress-helper';
+import { exist, haveValue, notExist } from '../../../support/cypress.util';
 import { loginAsSabine } from '../../../support/user-util';
 import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
+import * as fs from 'fs';
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
@@ -83,11 +84,14 @@ describe('Vorgang exportieren', () => {
 			exist(menuItem.getButton());
 		})
 
-		it('should download', () => {
+		it('should have 1 file in download folder after download', () => {
 			menuItem.getButton().click();
 
 			waitForSpinnerToDisappear();
-			//TODO In Cypress 10+ implement something like https://docs.cypress.io/api/commands/task#Return-number-of-files-in-the-folder
+			countDownloadFiles().then((count) => {
+				expect(count).to.eq(1);
+				deleteDownloadFolder();
+			});
 		})
 
 		it('should close menu after download', () => {
diff --git a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts
index 1e7f6eb1e7c108eeb80bba03550c68078ed89a36..977ce30f2e623f7661b02f9ea3ad8ed672bfbfaf 100644
--- a/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts
+++ b/goofy-client/apps/goofy-e2e/src/e2e/main-tests/vorgang-list/vorgang-list.search.cy.ts
@@ -54,15 +54,19 @@ describe('VorgangList Suche', () => {
 		const vorgangToStay: VorgangE2E = { ...createVorgang(), name: 'VorgangToStay', eingangs: [eingang], assignedTo: getUserSabineInternalId() };
 
 		const vorgangToDisappear: VorgangE2E = { ...buildVorgang(objectIds[0], 'VorgangToDisappear'), status: VorgangStatusE2E.NEU };
+		const vorgangHyphen: VorgangE2E = { ...buildVorgang(objectIds[1], 'Vorgang-mit-Bindestrich'), status: VorgangStatusE2E.NEU };
+		const vorgangWOHyphen: VorgangE2E = { ...buildVorgang(objectIds[2], 'Vorgang mit Leerzeichen'), status: VorgangStatusE2E.NEU };
 
 		const vorgangStayInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangToStay.name);
 		const vorgangDisappearInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangToDisappear.name);
+		const vorgangHyphenInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangHyphen.name);
+		const vorgangWOHyphenInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangWOHyphen.name);
 
 		const userSabine: UserE2E = getUserSabine();
 
 		before(() => {
-			initVorgaenge([vorgangToStay, vorgangToDisappear]);
-			initSearchIndex([vorgangToStay, vorgangToDisappear]);
+			initVorgaenge([vorgangToStay, vorgangToDisappear, vorgangHyphen, vorgangWOHyphen]);
+			initSearchIndex([vorgangToStay, vorgangToDisappear, vorgangHyphen, vorgangWOHyphen]);
 			initUsermanagerUsers([getUserManagerUserSabine()]);
 
 			loginAsSabine();
@@ -84,6 +88,64 @@ describe('VorgangList Suche', () => {
 			notExist(vorgangDisappearInList.getRoot());
 		})
 
+		describe('Search for partial strings...', () => {
+			it ('should find partial string at the beginning', () => {
+				doSearchWith('VorgangToS');
+				waitForSpinnerToDisappear();
+
+				exist(vorgangStayInList.getRoot());
+			})
+
+			it ('should find partial string in the middle', () => {
+				doSearchWith('gangToSt');
+				waitForSpinnerToDisappear();
+
+				exist(vorgangStayInList.getRoot());
+			})
+
+			it ('should find partial string at the end, case insensitive', () => {
+				doSearchWith('toStay');
+				waitForSpinnerToDisappear();
+
+				exist(vorgangStayInList.getRoot());
+			})
+
+		})
+
+		describe ('Search with hyphen', () => {
+			it ('should find entry with hyphen', () => {
+				doSearchWith('Vorgang-mit');
+				waitForSpinnerToDisappear();
+
+				exist(vorgangHyphenInList.getRoot());
+				notExist(vorgangWOHyphenInList.getRoot());
+			})
+
+			it ('should find entry without hyphen', () => {
+				doSearchWith('Vorgang mit');
+				waitForSpinnerToDisappear();
+
+				notExist(vorgangHyphenInList.getRoot());
+				exist(vorgangWOHyphenInList.getRoot());
+			})
+		})
+
+		describe ('Search using AND operator', () => {
+			it ('should find entry with all matches', () => {
+				doSearchWith('Vorgang mit Leerzeichen');
+				waitForSpinnerToDisappear();
+
+				exist(vorgangWOHyphenInList.getRoot());
+			})
+
+			it ('should not find entry when using additional words', () => {
+				doSearchWith('Vorgang mit als Leerzeichen');
+				waitForSpinnerToDisappear();
+
+				notExist(vorgangWOHyphenInList.getRoot());
+			})
+		})
+
 		describe('navigate with filtered list to vorgang detail', () => {
 
 			beforeEach(() => {
@@ -442,6 +504,7 @@ describe('VorgangList Suche', () => {
 	})
 
 
+
 	function doSearchWith(searchBy: string): void {
 		enterWith(vorgangSearch.getInput(), searchBy);
 	}
diff --git a/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts b/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts
index bde71f182f74051db676b6bf41da1e23ff93072c..62b64501d57ac8bfed9e3492f184b01eae723a5f 100644
--- a/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts
+++ b/goofy-client/apps/goofy-e2e/src/support/cypress-helper.ts
@@ -37,6 +37,8 @@ enum CypressTasks {
 	INIT_VORGANG_DATA = 'initVorgangData',
 	INIT_VORGANG_ATTACHED_ITEM_DATA = 'initVorgangAttachedItemData',
 	INIT_USERMANAGER_DATA = 'initUsermanagerData',
+	COUNT_FILES = 'countFiles',
+	DELETE_FOLDER = 'deleteFolder'
 }
 
 enum MongoCollections {
@@ -48,6 +50,8 @@ enum MongoCollections {
 	USER = "User"
 }
 
+const DOWNLOAD_FOLDER: string = 'cypress/downloads';
+
 export function login(userJsonPath: string): void {
 	cy.fixture(userJsonPath).then(user => {
 		cy.login(user.name, user.password);
@@ -108,6 +112,14 @@ export function dropCollections() {
 	cy.task(CypressTasks.DROP_USER_MANAGER_COLLECTIONS, [MongoCollections.USER]);
 }
 
+export function countDownloadFiles(): Cypress.Chainable<number> {
+	return cy.task(CypressTasks.COUNT_FILES, DOWNLOAD_FOLDER);
+}
+
+export function deleteDownloadFolder(): void {
+	cy.task(CypressTasks.DELETE_FOLDER, DOWNLOAD_FOLDER);
+}
+
 export function scrollToWindowBottom(): void {
 	cy.window().scrollTo('bottom');
 }
@@ -143,7 +155,7 @@ export function reload(): void {
 }
 
 export function readFileFromDownloads(fileName: string) {
-	return cy.readFile(`cypress/downloads/${fileName}`);
+	return cy.readFile(`${DOWNLOAD_FOLDER}/${fileName}`);
 }
 
 export function pressTab(): void {
diff --git a/goofy-client/apps/goofy-e2e/src/support/cypress-tasks.ts b/goofy-client/apps/goofy-e2e/src/support/cypress-tasks.ts
index 6c6806b83b7e4cd4e2d8dbfcd48976a506dc6774..d92b9e80d3c05c57f3e62671449e84d4ecd40f5b 100644
--- a/goofy-client/apps/goofy-e2e/src/support/cypress-tasks.ts
+++ b/goofy-client/apps/goofy-e2e/src/support/cypress-tasks.ts
@@ -1,3 +1,4 @@
+import { rmdir } from 'fs';
 import { Long, MongoClient, ObjectId } from 'mongodb';
 
 const Binary = require('mongodb').Binary;
@@ -43,7 +44,16 @@ module.exports = (on: any, config: any) => {
 			console.log('dropUserManagerCollections: ', collections);
 			dropUserManagerCollectionsFromDatabase(config, collections);
 			return 0;
-		}
+		},
+		countFiles(folderName:string) {
+			console.log('counting files in folder %s', folderName);
+			return countFiles(folderName);					
+		},
+		deleteFolder(folderName:string) {
+			console.log('deleting folder %s', folderName);
+			deleteFolder(folderName);
+			return 0;
+		},
 	});
 
 	// Workaround für Angular 13 und Cypress mit Webpack 4,
@@ -295,4 +305,28 @@ function dropCollections(databaseUrl, databaseName, collections){
 			});
 		}
 	});
+}
+
+function countFiles(folderName:string): Promise<number> {
+	return new Promise((resolve, reject) => {
+		fs.readdir(folderName, (err, files) => {
+			if (err) {
+				console.error(err)
+				return reject(err)
+			}
+			resolve(files.length)
+		})
+	})
+}
+
+function deleteFolder(folderName:string): void {
+	new Promise((resolve, reject) => {
+		rmdir(folderName, { maxRetries: 10, recursive: true }, (err) => {
+			if (err) {
+				console.error(err)
+				return reject(err)
+			}
+			resolve(null)
+		})
+	})
 }
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts b/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts
index b836197cd6fcb9e10772e25c8b9ec86c7d9c606d..7e1fe4e63291541aca5faff95ceafd503f76d672 100644
--- a/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts
+++ b/goofy-client/apps/goofy-e2e/src/support/delete-old-reports.ts
@@ -21,6 +21,6 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import * as fs from 'fs';
+const fs = require('fs');
 
 fs.rmdirSync(`apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}`, { recursive: true });
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts b/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts
index a73634273e24cc94aee5faa9523cc525a46a99d1..08d5f533e0192fe38759f724e2eb41984fea6fed 100644
--- a/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts
+++ b/goofy-client/apps/goofy-e2e/src/support/pre-ea-report-merge.ts
@@ -21,10 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import * as fs from 'fs';
+const fs = require('fs');
 
-const EINHEITLICHER_ANSPRECHPARTNER_REPORT_FOLDER: string = 'apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report';
-
-if (fs.existsSync(`${EINHEITLICHER_ANSPRECHPARTNER_REPORT_FOLDER}/.jsons`)) {
-	fs.rename(`${EINHEITLICHER_ANSPRECHPARTNER_REPORT_FOLDER}/.jsons`, `${EINHEITLICHER_ANSPRECHPARTNER_REPORT_FOLDER}/jsons`, () => { })
+if (fs.existsSync(`apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report/.jsons`)) {
+	fs.rename(`apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report/.jsons`, `apps/goofy-e2e/reports_einheitlicher-ansprechpartner/mochawesome-report/jsons`, () => { })
 }
\ No newline at end of file
diff --git a/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts b/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts
index 3f19606e7ee3ab96d3a52a164e9e75024361c648..6ea856303c5a3675377b4df88b5e7fbdf19f9c38 100644
--- a/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts
+++ b/goofy-client/apps/goofy-e2e/src/support/pre-merge.ts
@@ -21,10 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import * as fs from 'fs';
+const fs = require('fs');
 
-const MAIN_TEST_REPORT_FOLDER: string = `apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report`;
-
-if (fs.existsSync(`${MAIN_TEST_REPORT_FOLDER}/.jsons`)) {
-	fs.rename(`${MAIN_TEST_REPORT_FOLDER}/.jsons`, `${MAIN_TEST_REPORT_FOLDER}/jsons`, () => { })
+if (fs.existsSync(`apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report/.jsons`)) {
+	fs.rename(`apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report/.jsons`, `apps/goofy-e2e/reports/${process.env.REPORT_FOLDER}/mochawesome-report/jsons`, () => { })
 }
\ No newline at end of file