diff --git a/BudgetMasterServer/src/main/resources/templates/accounts/accounts.ftl b/BudgetMasterServer/src/main/resources/templates/accounts/accounts.ftl
index baf58c7e50bb064417d61abec637fa8d26615e0e..67c1422582cf1e27843211cf35e0823159387723 100644
--- a/BudgetMasterServer/src/main/resources/templates/accounts/accounts.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/accounts/accounts.ftl
@@ -47,7 +47,7 @@
                                             <div>
                                                 <label>
                                                     <input type="checkbox" name="includeHidden" <#if accountsFilterConfiguration?? && accountsFilterConfiguration.includeHidden>checked</#if>/>
-                                                    <span><i class="far fa-eye-slash placeholder-icon-right"></i>${locale.getString("account.state.hidden")}</span>
+                                                    <span id="includeHidden"><i class="far fa-eye-slash placeholder-icon-right"></i>${locale.getString("account.state.hidden")}</span>
                                                 </label>
                                             </div>
                                         </th>
diff --git a/BudgetMasterServer/src/main/resources/templates/templates/templates.ftl b/BudgetMasterServer/src/main/resources/templates/templates/templates.ftl
index e93cef1c0ecad613715496e7a732c1c370d85e11..88ce5b639440b424fe6ac17246800316a8104a17 100644
--- a/BudgetMasterServer/src/main/resources/templates/templates/templates.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/templates/templates.ftl
@@ -53,7 +53,7 @@
 
         <#import "../helpers/scripts.ftl" as scripts>
         <@scripts.scripts/>
-        <script src="<@s.url '/webjars/sortablejs/1.15.3/Sortable.min.js'/>"></script>
+        <script src="<@s.url '/webjars/sortablejs/Sortable.min.js'/>"></script>
         <script src="<@s.url '/js/templates.js'/>"></script>
     </@header.body>
 </html>
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
index c8f4ea6a790d0626870f0b01a288985c29cdedf9..95512785d9b4bab3ddc239c2a8d2c0f0f593e76f 100644
--- a/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
+++ b/BudgetMasterServer/src/main/resources/templates/transactions/transactionImport.ftl
@@ -8,7 +8,7 @@
         <@header.style "transactionImport"/>
         <@header.style "collapsible"/>
         <#import "/spring.ftl" as s>
-        <link rel="stylesheet" href="<@s.url '/webjars/datatables/2.1.0/css/dataTables.dataTables.min.css'/>"/>
+        <link rel="stylesheet" href="<@s.url '/webjars/datatables/css/dataTables.dataTables.min.css'/>"/>
     </head>
     <@header.body>
         <#import "../helpers/navbar.ftl" as navbar>
@@ -73,7 +73,7 @@
         <!--  Scripts-->
         <#import "../helpers/scripts.ftl" as scripts>
         <@scripts.scripts/>
-        <script src="<@s.url '/webjars/datatables/2.1.0/js/dataTables.min.js'/>"></script>
+        <script src="<@s.url '/webjars/datatables/js/dataTables.min.js'/>"></script>
         <script src="<@s.url '/js/transactionImport.js'/>"></script>
     </@header.body>
 </html>
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java
index 82ce134412c11853b2ec8080936d7934faaecc91..61f9d77c814598c5f404623a972e2a984eea52d6 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java
@@ -45,15 +45,21 @@ class AccountTest extends SeleniumTestBase
 		// delete account "zzzz" if existing
 
 		driver.get(helper.getUrl() + "/accounts");
+		ensureHiddenAccountsAreIncludedInFilter();
 
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
 		for(WebElement row : accountRows)
 		{
 			final List<WebElement> columns = row.findElements(By.tagName("td"));
-			final String name = columns.get(2).getText();
+			if(columns.isEmpty())
+			{
+				continue;
+			}
+
+			final String name = columns.get(3).getText();
 			if(name.equals("zzzz"))
 			{
-				columns.get(4).findElements(By.tagName("a")).get(1).click();
+				columns.get(5).findElements(By.tagName("a")).get(1).click();
 
 				WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 				wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".modal-content h4"), "Delete Account"));
@@ -90,6 +96,7 @@ class AccountTest extends SeleniumTestBase
 
 		// assert
 		assertThat(driver.getCurrentUrl()).endsWith("/accounts");
+		ensureHiddenAccountsAreIncludedInFilter();
 
 		accountRows = driver.findElements(By.cssSelector(".account-container tr"));
 		assertThat(accountRows).hasSize(numberOfAccountsBefore);
@@ -119,15 +126,17 @@ class AccountTest extends SeleniumTestBase
 		// assert
 		assertThat(driver.getCurrentUrl()).endsWith("/accounts");
 
+		ensureHiddenAccountsAreIncludedInFilter();
+
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
-		assertThat(accountRows).hasSize(6);
-
-		assertAccountColumns(accountRows.get(0).findElements(By.tagName("td")), true, true, AccountState.FULL_ACCESS, "Default Account", "");
-		assertAccountColumns(accountRows.get(1).findElements(By.tagName("td")), true, false, AccountState.FULL_ACCESS, "DefaultAccount0815", "");
-		assertAccountColumns(accountRows.get(2).findElements(By.tagName("td")), false, false, AccountState.HIDDEN, "hidden account", "");
-		assertAccountColumns(accountRows.get(3).findElements(By.tagName("td")), false, false, AccountState.READ_ONLY, "read only account", "");
-		assertAccountColumns(accountRows.get(4).findElements(By.tagName("td")), true, false, AccountState.FULL_ACCESS, "sfsdf", "");
-		assertAccountColumns(accountRows.get(5).findElements(By.tagName("td")), false, false, AccountState.READ_ONLY, name, "");
+		assertThat(accountRows).hasSize(7);
+
+		assertAccountColumns(accountRows.get(1).findElements(By.tagName("td")), true, true, AccountState.FULL_ACCESS, "Default Account", "");
+		assertAccountColumns(accountRows.get(2).findElements(By.tagName("td")), true, false, AccountState.FULL_ACCESS, "DefaultAccount0815", "");
+		assertAccountColumns(accountRows.get(3).findElements(By.tagName("td")), false, false, AccountState.HIDDEN, "hidden account", "");
+		assertAccountColumns(accountRows.get(4).findElements(By.tagName("td")), false, false, AccountState.READ_ONLY, "read only account", "");
+		assertAccountColumns(accountRows.get(5).findElements(By.tagName("td")), true, false, AccountState.FULL_ACCESS, "sfsdf", "");
+		assertAccountColumns(accountRows.get(6).findElements(By.tagName("td")), false, false, AccountState.READ_ONLY, name, "");
 	}
 
 	@Test
@@ -154,11 +163,12 @@ class AccountTest extends SeleniumTestBase
 
 		// assert
 		assertThat(driver.getCurrentUrl()).endsWith("/accounts");
+		ensureHiddenAccountsAreIncludedInFilter();
 
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
-		assertThat(accountRows).hasSize(6);
+		assertThat(accountRows).hasSize(7);
 
-		final WebElement icon = accountRows.get(5).findElements(By.tagName("td")).get(1);
+		final WebElement icon = accountRows.get(6).findElements(By.tagName("td")).get(0);
 		assertThat(icon).hasFieldOrPropertyWithValue("text", name.substring(0, 1).toUpperCase());
 		assertThat(icon.findElement(By.tagName("span")).getCssValue("color")).isEqualTo("rgb(255, 0, 0)");
 	}
@@ -189,11 +199,12 @@ class AccountTest extends SeleniumTestBase
 
 		// assert
 		assertThat(driver.getCurrentUrl()).endsWith("/accounts");
+		ensureHiddenAccountsAreIncludedInFilter();
 
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
-		assertThat(accountRows).hasSize(6);
+		assertThat(accountRows).hasSize(7);
 
-		final WebElement icon = accountRows.get(5).findElements(By.tagName("td")).get(1);
+		final WebElement icon = accountRows.get(6).findElements(By.tagName("td")).get(0);
 		assertThat(icon.findElement(By.cssSelector("span i")).getAttribute("class")).isEqualTo("fas fa-address-book account-select-icon");
 		assertThat(icon.findElement(By.tagName("span")).getCssValue("color")).isEqualTo("rgb(255, 0, 0)");
 	}
@@ -224,11 +235,12 @@ class AccountTest extends SeleniumTestBase
 
 		// assert
 		assertThat(driver.getCurrentUrl()).endsWith("/accounts");
+		ensureHiddenAccountsAreIncludedInFilter();
 
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
-		assertThat(accountRows).hasSize(6);
+		assertThat(accountRows).hasSize(7);
 
-		final WebElement icon = accountRows.get(5).findElements(By.tagName("td")).get(1);
+		final WebElement icon = accountRows.get(6).findElements(By.tagName("td")).get(0);
 		assertThat(icon.findElement(By.cssSelector("span img")).getAttribute("src")).startsWith(helper.getUrl() + "/media/getImageByIconID/");
 	}
 
@@ -375,7 +387,7 @@ class AccountTest extends SeleniumTestBase
 	public static void assertAccountColumns(List<WebElement> columns, boolean isDefaultIconVisible, boolean isDefaultIconSelected, AccountState expectedAccountState, String name, String description)
 	{
 		// icons
-		final List<WebElement> icons = columns.get(0).findElements(By.tagName("i"));
+		final List<WebElement> icons = columns.get(1).findElements(By.tagName("i"));
 		int numberOfVisibleIcons = 0;
 
 		if(isDefaultIconVisible)
@@ -414,10 +426,10 @@ class AccountTest extends SeleniumTestBase
 		assertThat(icons).hasSize(numberOfVisibleIcons);
 
 		// name
-		assertThat(columns.get(2)).hasFieldOrPropertyWithValue("text", name);
+		assertThat(columns.get(3)).hasFieldOrPropertyWithValue("text", name);
 
 		// description
-		assertThat(columns.get(3)).hasFieldOrPropertyWithValue("text", description);
+		assertThat(columns.get(4)).hasFieldOrPropertyWithValue("text", description);
 	}
 
 	private void setAccountState(int accountID, AccountState accountState)
@@ -431,4 +443,17 @@ class AccountTest extends SeleniumTestBase
 
 		driver.findElement(By.id("button-save-account")).click();
 	}
+
+	private void ensureHiddenAccountsAreIncludedInFilter()
+	{
+		WebDriverWait wait;
+		final WebElement checkboxIncludeHidden = driver.findElement(By.name("includeHidden"));
+		if(!checkboxIncludeHidden.isSelected())
+		{
+			driver.findElement(By.id("includeHidden")).click();
+			driver.findElement(By.id("accounts-filter-button")).click();
+			wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+			wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Accounts"));
+		}
+	}
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java
index 0d79a7a2da384005c757e09f9a9a00b2d088787e..9ea838c2f04b6c6a7af582877b7107ac33bf82b5 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java
@@ -14,6 +14,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 import java.io.File;
 import java.time.Duration;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java
index 1758ffcae61bf89d8ecc94aeff9069a9ddb4fb50..b509c91cd1f542911a8a6244f7269e6f062df6bd 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java
@@ -43,18 +43,19 @@ class MediaTest extends SeleniumTestBase
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Accounts"));
 
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
-		assertThat(accountRows).hasSize(4);
+		assertThat(accountRows).hasSize(5);
 
-		checkImageLoaded(accountRows.get(0), "JPG");
-		checkImageLoaded(accountRows.get(1), "PNG");
-		checkImageLoaded(accountRows.get(2), "SVG");
+		// the first row is the table header
+		checkImageLoaded(accountRows.get(1), "JPG");
+		checkImageLoaded(accountRows.get(2), "PNG");
+		checkImageLoaded(accountRows.get(3), "SVG");
 		// the last account ist the default account created on database creation and has no image
 	}
 
 	private void checkImageLoaded(WebElement accountRow, String imageType)
 	{
 		final List<WebElement> columns = accountRow.findElements(By.tagName("td"));
-		final WebElement image = columns.get(1).findElement(By.className("account-select-icon"));
+		final WebElement image = columns.get(0).findElement(By.className("account-select-icon"));
 
 		Object result = ((JavascriptExecutor) driver).executeScript(
 				"return arguments[0].complete && " +
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java
index a91317eca0127c473c8d79ecf8d22932d77d3fd5..e6b966bcc1252a929407b8117df75c91041ed285 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java
@@ -8,6 +8,7 @@ import de.deadlocker8.budgetmaster.services.EntityType;
 import de.deadlocker8.budgetmaster.services.ImportResultItem;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -55,6 +56,7 @@ class AccountImporterTest extends ImporterTestBase
 		placeholderAccount.setID(12);
 
 		final Account existingPlaceholderAccount = new Account("Placeholder", "", AccountType.ALL, null);
+		accountRepository.save(existingPlaceholderAccount);
 		existingPlaceholderAccount.setID(1);
 		accountRepository.save(existingPlaceholderAccount);
 
@@ -73,6 +75,7 @@ class AccountImporterTest extends ImporterTestBase
 		account.setID(12);
 
 		final Account existingAccount = new Account("ABC", "", AccountType.CUSTOM, null);
+		accountRepository.save(existingAccount);
 		existingAccount.setID(1);
 		accountRepository.save(existingAccount);
 
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java
index c6d4de314fb21972076a786c94e34e80f8c28a46..4f1b6dceb6d063eaebeaec7db75f1b06407aeccd 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java
@@ -51,8 +51,8 @@ class CategoryImporterTest extends ImporterTestBase
 	void test_importCategories_skipExisting_defaultNone()
 	{
 		final Category category = new Category("No category", "#ff0000", CategoryType.NONE);
+		categoryRepository.save(category);
 		category.setID(1);
-
 		categoryRepository.save(category);
 
 		final CategoryImporter importer = new CategoryImporter(categoryRepository);
@@ -67,8 +67,8 @@ class CategoryImporterTest extends ImporterTestBase
 	void test_importCategories_skipExisting_defaultRest()
 	{
 		final Category category = new Category("Balance", "#ff0000", CategoryType.REST);
+		categoryRepository.save(category);
 		category.setID(1);
-
 		categoryRepository.save(category);
 
 		final CategoryImporter importer = new CategoryImporter(categoryRepository);
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java
index d1a9b4d164bb49863e168e649ceefa9b37665c63..0d384b06318e2de4316f9b5027ec3284444aa960 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java
@@ -54,6 +54,7 @@ class IconImporterTest extends ImporterTestBase
 	void test_importIcons_alreadyExisting()
 	{
 		final Icon icon = new Icon("fas fa-icons");
+		iconRepository.save(icon);
 		icon.setID(1);
 		iconRepository.save(icon);
 
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java
index ffd17a3bbce321379cc1600027aaee722ef4c70f..deb8d81ddf07f31761495a8b030dda9d546d5310 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java
@@ -46,6 +46,7 @@ class ImageImporterTest extends ImporterTestBase
 	void test_importImages_alreadyExisting()
 	{
 		final Image image = new Image(new Byte[0], "awesomeIcon.png", ImageFileExtension.PNG);
+		imageRepository.save(image);
 		image.setID(1);
 		imageRepository.save(image);
 
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionNameKeywordImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionNameKeywordImporterTest.java
index 489d35ca68dcb066c3f6c09d19b5c4f00ec8469c..29a0c74d0e0f5e6381d79abb0e635cad2e9809f4 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionNameKeywordImporterTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionNameKeywordImporterTest.java
@@ -49,7 +49,7 @@ class TransactionNameKeywordImporterTest extends ImporterTestBase
 	@Test
 	void test_importKeywords_skipAlreadyExisting()
 	{
-		final TransactionNameKeyword existingKeyword = new TransactionNameKeyword(12, "income");
+		final TransactionNameKeyword existingKeyword = new TransactionNameKeyword(null, "income");
 		keywordRepository.save(existingKeyword);
 
 		final TransactionNameKeywordImporter importer = new TransactionNameKeywordImporter(keywordRepository);