From 8815bc46c2b027ae4d7e7ae454c0240db0034ff0 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sun, 21 Aug 2022 20:46:36 +0200
Subject: [PATCH] #713 - removed migrator code

---
 BudgetMasterDatabaseMigrator/pom.xml          |  80 ---
 .../databasemigrator/BatchConfiguration.java  | 584 ------------------
 .../databasemigrator/CommandLineOptions.java  |  29 -
 .../databasemigrator/CustomIdGenerator.java   |  29 -
 .../DatabaseMigratorMain.java                 |  82 ---
 .../databasemigrator/DatabaseType.java        |  33 -
 .../budgetmaster/databasemigrator/Utils.java  |  26 -
 .../DestinationDatabaseConfiguration.java     |  50 --
 .../DestinationIntegerRepository.java         |  11 -
 .../destination/DestinationRepository.java    |   9 -
 .../destination/ProvidesID.java               |   8 -
 .../destination/StepNames.java                |  44 --
 .../destination/TableNames.java               |  44 --
 .../account/DestinationAccount.java           |  43 --
 .../DestinationAccountIntegerRepository.java  |   7 -
 .../category/DestinationCategory.java         |  35 --
 .../DestinationCategoryIntegerRepository.java |   7 -
 .../destination/chart/DestinationChart.java   |  44 --
 .../DestinationChartIntegerRepository.java    |   8 -
 .../destination/hint/DestinationHint.java     |  32 -
 .../DestinationHintIntegerRepository.java     |   7 -
 .../destination/icon/DestinationIcon.java     |  34 -
 .../DestinationIconIntegerRepository.java     |   7 -
 .../destination/image/DestinationImage.java   |  35 --
 .../DestinationImageIntegerRepository.java    |   7 -
 .../repeating/DestinationRepeatingOption.java |  36 --
 ...ationRepeatingOptionIntegerRepository.java |   7 -
 .../end/DestinationRepeatingEnd.java          |  32 -
 .../DestinationRepeatingEndAfterXTimes.java   |  32 -
 ...eatingEndAfterXTimesIntegerRepository.java |   7 -
 .../end/DestinationRepeatingEndDate.java      |  31 -
 ...tionRepeatingEndDateIntegerRepository.java |   7 -
 ...tinationRepeatingEndIntegerRepository.java |   7 -
 .../end/DestinationRepeatingEndNever.java     |  30 -
 ...ionRepeatingEndNeverIntegerRepository.java |   7 -
 .../DestinationRepeatingModifier.java         |  33 -
 .../DestinationRepeatingModifierDays.java     |  29 -
 ...epeatingModifierDaysIntegerRepository.java |   7 -
 ...ionRepeatingModifierIntegerRepository.java |   7 -
 .../DestinationRepeatingModifierMonths.java   |  29 -
 ...eatingModifierMonthsIntegerRepository.java |   7 -
 .../DestinationRepeatingModifierYears.java    |  29 -
 ...peatingModifierYearsIntegerRepository.java |   7 -
 .../report/DestinationReportColumn.java       |  37 --
 ...tinationReportColumnIntegerRepository.java |   7 -
 .../report/DestinationReportSettings.java     |  38 --
 ...nationReportSettingsIntegerRepository.java |   7 -
 .../settings/DestinationSettings.java         |  85 ---
 .../DestinationSettingsIntegerRepository.java |   7 -
 .../destination/tag/DestinationTag.java       |  31 -
 .../tag/DestinationTagIntegerRepository.java  |   7 -
 .../tag/DestinationTemplateTag.java           |  97 ---
 ...stinationTemplateTagIntegerRepository.java |   8 -
 .../tag/DestinationTransactionTag.java        |  96 ---
 ...nationTransactionTagIntegerRepository.java |   8 -
 .../template/DestinationTemplate.java         |  53 --
 .../DestinationTemplateIntegerRepository.java |   7 -
 .../DestinationTemplateGroup.java             |  33 -
 ...inationTemplateGroupIntegerRepository.java |   7 -
 .../transaction/DestinationTransaction.java   |  50 --
 ...stinationTransactionIntegerRepository.java |   7 -
 .../destination/user/DestinationUser.java     |  33 -
 .../DestinationUserIntegerRepository.java     |   7 -
 .../listener/GenericChunkListener.java        |  44 --
 .../listener/GenericJobListener.java          |  37 --
 .../listener/GenericStepListener.java         |  81 ---
 .../source/SourceDatabaseConfiguration.java   |  53 --
 .../steps/GenericDoNothingProcessor.java      |  17 -
 .../databasemigrator/steps/GenericWriter.java |  30 -
 .../steps/reader/AccountReader.java           |  51 --
 .../steps/reader/BaseReader.java              |  37 --
 .../steps/reader/CategoryReader.java          |  47 --
 .../steps/reader/ChartReader.java             |  53 --
 .../steps/reader/HintReader.java              |  43 --
 .../steps/reader/IconReader.java              |  45 --
 .../steps/reader/ImageReader.java             |  45 --
 .../steps/reader/SettingsReader.java          |  81 ---
 .../steps/reader/TemplateGroupReader.java     |  43 --
 .../steps/reader/TemplateReader.java          |  59 --
 .../steps/reader/TransactionReader.java       |  57 --
 .../steps/reader/UserReader.java              |  45 --
 .../repeating/RepeatingOptionReader.java      |  46 --
 .../end/RepeatingEndAfterXTimesReader.java    |  42 --
 .../repeating/end/RepeatingEndDateReader.java |  42 --
 .../end/RepeatingEndNeverReader.java          |  40 --
 .../repeating/end/RepeatingEndReader.java     |  44 --
 .../modifier/RepeatingModifierDaysReader.java |  40 --
 .../RepeatingModifierMonthsReader.java        |  40 --
 .../modifier/RepeatingModifierReader.java     |  46 --
 .../RepeatingModifierYearsReader.java         |  40 --
 .../reader/report/ReportColumnReader.java     |  46 --
 .../reader/report/ReportSettingsReader.java   |  48 --
 .../steps/reader/tag/TagReader.java           |  42 --
 .../steps/reader/tag/TemplateTagReader.java   |  44 --
 .../reader/tag/TransactionTagReader.java      |  45 --
 .../src/main/resources/application.properties |  21 -
 .../databasemigrator/MigrateAccountsTest.java |  77 ---
 .../MigrateCategoriesTest.java                |  74 ---
 .../databasemigrator/MigrateChartsTest.java   | 219 -------
 .../MigrateDefaultDatabaseTest.java           |  65 --
 .../databasemigrator/MigrateHintsTest.java    |  70 ---
 .../databasemigrator/MigrateIconsTest.java    |  76 ---
 .../databasemigrator/MigrateImagesTest.java   |  74 ---
 .../MigrateRepeatingEndAfterXTimesTest.java   |  70 ---
 .../MigrateRepeatingEndDateTest.java          |  71 ---
 .../MigrateRepeatingEndNeverTest.java         |  70 ---
 .../MigrateRepeatingEndsTest.java             |  72 ---
 .../MigrateRepeatingModifierDaysTest.java     |  70 ---
 .../MigrateRepeatingModifierMonthsTest.java   |  70 ---
 .../MigrateRepeatingModifierYearsTest.java    |  70 ---
 .../MigrateRepeatingModifiersTest.java        |  72 ---
 .../MigrateRepeatingOptionsTest.java          |  71 ---
 .../MigrateReportColumnsTest.java             |  80 ---
 .../MigrateReportSettingsTest.java            |  73 ---
 .../databasemigrator/MigrateSettingsTest.java |  73 ---
 .../databasemigrator/MigrateTagsTest.java     | 121 ----
 .../MigrateTemplateGroupsTest.java            |  71 ---
 .../MigrateTemplatesTest.java                 |  72 ---
 .../MigrateTransactionsTest.java              |  74 ---
 .../databasemigrator/MigrateUsersTest.java    |  70 ---
 .../databasemigrator/MigratorTestBase.java    | 129 ----
 .../databasemigrator/UpdateSequencesTest.java |  70 ---
 .../src/test/resources/BudgetMaster.svg       |   1 -
 .../src/test/resources/accounts.mv.db         | Bin 98304 -> 0 bytes
 .../src/test/resources/categories.mv.db       | Bin 98304 -> 0 bytes
 .../src/test/resources/charts.mv.db           | Bin 98304 -> 0 bytes
 .../default_database_after_first_start.mv.db  | Bin 94208 -> 0 bytes
 .../src/test/resources/tags.mv.db             | Bin 98304 -> 0 bytes
 .../src/test/resources/templates.mv.db        | Bin 94208 -> 0 bytes
 .../src/test/resources/transactions.mv.db     | Bin 98304 -> 0 bytes
 pom.xml                                       |   1 -
 131 files changed, 5884 deletions(-)
 delete mode 100644 BudgetMasterDatabaseMigrator/pom.xml
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CommandLineOptions.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CustomIdGenerator.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/Utils.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationDatabaseConfiguration.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/ProvidesID.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/StepNames.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/TableNames.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccount.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccountIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategory.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategoryIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChart.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChartIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHint.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHintIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIcon.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIconIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImage.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImageIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOption.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOptionIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEnd.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimes.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimesIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDate.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDateIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNever.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNeverIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifier.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDays.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDaysIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonths.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonthsIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYears.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYearsIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumn.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumnIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettings.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettingsIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettings.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettingsIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTag.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTagIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTag.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTagIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTag.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTagIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplate.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplateIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroup.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroupIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransaction.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransactionIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUser.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUserIntegerRepository.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericChunkListener.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericJobListener.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/source/SourceDatabaseConfiguration.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericDoNothingProcessor.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericWriter.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/AccountReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/BaseReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/CategoryReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ChartReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/HintReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/IconReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ImageReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/SettingsReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateGroupReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TransactionReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/UserReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/RepeatingOptionReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndAfterXTimesReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndDateReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndNeverReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierDaysReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierMonthsReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierYearsReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportColumnReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportSettingsReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TagReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TemplateTagReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TransactionTagReader.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/main/resources/application.properties
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateAccountsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateCategoriesTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateChartsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateDefaultDatabaseTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateHintsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateIconsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateImagesTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndAfterXTimesTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndDateTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndNeverTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierDaysTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierMonthsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierYearsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifiersTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingOptionsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportColumnsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportSettingsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateSettingsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTagsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplateGroupsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplatesTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTransactionsTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateUsersTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigratorTestBase.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/UpdateSequencesTest.java
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/BudgetMaster.svg
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/accounts.mv.db
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/categories.mv.db
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/charts.mv.db
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/default_database_after_first_start.mv.db
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/tags.mv.db
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/templates.mv.db
 delete mode 100644 BudgetMasterDatabaseMigrator/src/test/resources/transactions.mv.db

diff --git a/BudgetMasterDatabaseMigrator/pom.xml b/BudgetMasterDatabaseMigrator/pom.xml
deleted file mode 100644
index b5eed7be0..000000000
--- a/BudgetMasterDatabaseMigrator/pom.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>BudgetMaster</artifactId>
-        <groupId>de.deadlocker8</groupId>
-        <version>2.12.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>BudgetMasterDatabaseMigrator</artifactId>
-
-    <properties>
-        <h2database.version>1.4.199</h2database.version>
-        <commons-cli.version>1.5.0</commons-cli.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-batch</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.batch</groupId>
-            <artifactId>spring-batch-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <version>${h2database.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.postgresql</groupId>
-            <artifactId>postgresql</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mariadb.jdbc</groupId>
-            <artifactId>mariadb-java-client</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-cli</groupId>
-            <artifactId>commons-cli</artifactId>
-            <version>${commons-cli.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <outputDirectory>${basedir}/../BudgetMasterServer/src/main/resources</outputDirectory>
-                    <finalName>${project.artifactId}</finalName>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java
deleted file mode 100644
index bb0940714..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/BatchConfiguration.java
+++ /dev/null
@@ -1,584 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.account.DestinationAccount;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.account.DestinationAccountIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategory;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategoryIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.chart.DestinationChart;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.chart.DestinationChartIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.hint.DestinationHint;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.hint.DestinationHintIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.icon.DestinationIcon;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.icon.DestinationIconIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.image.DestinationImage;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.image.DestinationImageIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.DestinationRepeatingOption;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.DestinationRepeatingOptionIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.*;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.*;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportColumn;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportColumnIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportSettings;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportSettingsIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.settings.DestinationSettings;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.settings.DestinationSettingsIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.tag.*;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.template.DestinationTemplate;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.template.DestinationTemplateIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup.DestinationTemplateGroup;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup.DestinationTemplateGroupIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.transaction.DestinationTransaction;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.transaction.DestinationTransactionIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.user.DestinationUser;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.user.DestinationUserIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.listener.GenericChunkListener;
-import de.deadlocker8.budgetmaster.databasemigrator.listener.GenericJobListener;
-import de.deadlocker8.budgetmaster.databasemigrator.listener.GenericStepListener;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.GenericDoNothingProcessor;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.GenericWriter;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.*;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.RepeatingOptionReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end.RepeatingEndAfterXTimesReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end.RepeatingEndDateReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end.RepeatingEndNeverReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end.RepeatingEndReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier.RepeatingModifierDaysReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier.RepeatingModifierMonthsReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier.RepeatingModifierReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier.RepeatingModifierYearsReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.report.ReportColumnReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.report.ReportSettingsReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TagReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TemplateTagReader;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag.TransactionTagReader;
-import lombok.AllArgsConstructor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.core.Job;
-import org.springframework.batch.core.Step;
-import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
-import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
-import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
-import org.springframework.batch.core.launch.support.RunIdIncrementer;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.persistence.EntityManager;
-import javax.sql.DataSource;
-
-@Configuration
-@EnableBatchProcessing
-@AllArgsConstructor
-public class BatchConfiguration
-{
-	private static final Logger LOGGER = LoggerFactory.getLogger(BatchConfiguration.class);
-
-	final JobBuilderFactory jobBuilderFactory;
-	final StepBuilderFactory stepBuilderFactory;
-
-	final EntityManager entityManager;
-
-	final DataSource primaryDataSource;
-
-	final DestinationImageIntegerRepository destinationImageRepository;
-	final DestinationIconIntegerRepository destinationIconRepository;
-	final DestinationCategoryIntegerRepository destinationCategoryRepository;
-	final DestinationAccountIntegerRepository destinationAccountRepository;
-	final DestinationChartIntegerRepository destinationChartRepository;
-	final DestinationHintIntegerRepository destinationHintRepository;
-
-	final DestinationRepeatingEndIntegerRepository destinationRepeatingEndRepository;
-	final DestinationRepeatingEndAfterXTimesIntegerRepository destinationRepeatingEndAfterXTimesRepository;
-	final DestinationRepeatingEndDateIntegerRepository destinationRepeatingEndDateRepository;
-	final DestinationRepeatingEndNeverIntegerRepository destinationRepeatingEndNeverRepository;
-
-	final DestinationRepeatingModifierIntegerRepository destinationRepeatingModifierRepository;
-	final DestinationRepeatingModifierDaysIntegerRepository destinationRepeatingModifierDaysRepository;
-	final DestinationRepeatingModifierMonthsIntegerRepository destinationRepeatingModifierMonthsRepository;
-	final DestinationRepeatingModifierYearsIntegerRepository destinationRepeatingModifierYearsRepository;
-
-	final DestinationRepeatingOptionIntegerRepository destinationRepeatingOptionRepository;
-
-	final DestinationReportColumnIntegerRepository destinationReportColumnRepository;
-	final DestinationReportSettingsIntegerRepository destinationReportSettingsRepository;
-
-	final DestinationSettingsIntegerRepository destinationSettingsRepository;
-
-	final DestinationTagIntegerRepository destinationTagRepository;
-	final DestinationTemplateTagIntegerRepository destinationTemplateTagRepository;
-	final DestinationTransactionTagIntegerRepository destinationTransactionTagRepository;
-
-	final DestinationUserIntegerRepository destinationUserRepository;
-	final DestinationTransactionIntegerRepository destinationTransactionRepository;
-
-	final DestinationTemplateIntegerRepository destinationTemplateRepository;
-	final DestinationTemplateGroupIntegerRepository destinationTemplateGroupRepository;
-
-	final ApplicationContext context;
-
-	public void cleanDatabase()
-	{
-		LOGGER.debug(">>> Cleanup database...");
-
-		// deletion order is important!
-
-		LOGGER.debug("Cleaning tags...");
-		destinationTemplateTagRepository.deleteAll();
-		destinationTransactionTagRepository.deleteAll();
-		destinationTagRepository.deleteAll();
-
-		LOGGER.debug("Cleaning transactions...");
-		destinationTransactionRepository.deleteAll();
-
-		LOGGER.debug("Cleaning templates...");
-		destinationTemplateRepository.deleteAll();
-		LOGGER.debug("Cleaning template groups.");
-		destinationTemplateGroupRepository.deleteAll();
-
-		LOGGER.debug("Cleaning categories...");
-		destinationCategoryRepository.deleteAll();
-		LOGGER.debug("Cleaning users...");
-		destinationUserRepository.deleteAll();
-		LOGGER.debug("Cleaning accounts...");
-		destinationAccountRepository.deleteAll();
-
-		LOGGER.debug("Cleaning report settings...");
-		destinationReportColumnRepository.deleteAll();
-		destinationReportSettingsRepository.deleteAll();
-
-		LOGGER.debug("Cleaning charts...");
-		destinationChartRepository.deleteAll();
-		LOGGER.debug("Cleaning hints...");
-		destinationHintRepository.deleteAll();
-
-		LOGGER.debug("Cleaning icons...");
-		destinationIconRepository.deleteAll();
-		LOGGER.debug("Cleaning images...");
-		destinationImageRepository.deleteAll();
-
-		LOGGER.debug("Cleaning repeating options...");
-		destinationRepeatingOptionRepository.deleteAll();
-		destinationRepeatingEndAfterXTimesRepository.deleteAll();
-		destinationRepeatingEndDateRepository.deleteAll();
-		destinationRepeatingEndNeverRepository.deleteAll();
-		destinationRepeatingEndRepository.deleteAll();
-		destinationRepeatingModifierDaysRepository.deleteAll();
-		destinationRepeatingModifierMonthsRepository.deleteAll();
-		destinationRepeatingModifierYearsRepository.deleteAll();
-		destinationRepeatingModifierRepository.deleteAll();
-
-		LOGGER.debug("Cleaning settings...");
-		destinationSettingsRepository.deleteAll();
-
-		LOGGER.debug(">>> Cleanup database DONE");
-	}
-
-	@Bean(name = "jdbcTemplate2")
-	public JdbcTemplate createJdbcTemplate2(@Autowired @Qualifier("secondaryDataSource") DataSource dataSource2)
-	{
-		return new JdbcTemplate(dataSource2);
-	}
-
-	@Bean(name = "migrateJob")
-	public Job createMigrateJob()
-	{
-		return jobBuilderFactory.get("Migrate from h2 to postgresql")
-				.incrementer(new RunIdIncrementer())
-				.start(createStepForImageMigration())
-				.next(createStepForIconMigration())
-
-				.next(createStepForCategoryMigration())
-				.next(createStepForAccountMigration())
-
-				.next(createStepForChartMigration())
-				.next(createStepForHintMigration())
-
-				// repeating end options
-				.next(createStepForRepeatingEndMigration())
-				.next(createStepForRepeatingEndAfterXTimesMigration())
-				.next(createStepForRepeatingEndDateMigration())
-				.next(createStepForRepeatingEndNeverMigration())
-
-				// repeating modifiers
-				.next(createStepForRepeatingModifierMigration())
-				.next(createStepForRepeatingModifierDaysMigration())
-				.next(createStepForRepeatingModifierMonthsMigration())
-				.next(createStepForRepeatingModifierYearsMigration())
-
-				.next(createStepForRepeatingOptionMigration())
-
-				.next(createStepForReportSettingsMigration())
-				.next(createStepForReportColumnMigration())
-
-				.next(createStepForSettingsMigration())
-				.next(createStepForUserMigration())
-
-				.next(createStepForTransactionMigration())
-
-				.next(createStepForTemplateGroupMigration())
-				.next(createStepForTemplateMigration())
-
-				.next(createStepForTagMigration())
-				.next(createStepForTemplateTagMigration())
-				.next(createStepForTransactionTagMigration())
-
-				.listener(new GenericJobListener())
-				.build();
-	}
-
-	@Bean
-	public Step createStepForImageMigration()
-	{
-		return stepBuilderFactory.get(StepNames.IMAGES)
-				.<DestinationImage, DestinationImage>chunk(1)
-				.reader(new ImageReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationImageRepository))
-				.listener(new GenericChunkListener(TableNames.IMAGE))
-				.listener(new GenericStepListener<>(TableNames.IMAGE, destinationImageRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForIconMigration()
-	{
-		return stepBuilderFactory.get(StepNames.ICONS)
-				.<DestinationIcon, DestinationIcon>chunk(1)
-				.reader(new IconReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationIconRepository))
-				.listener(new GenericChunkListener(TableNames.ICON))
-				.listener(new GenericStepListener<>(TableNames.ICON, destinationIconRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForCategoryMigration()
-	{
-		return stepBuilderFactory.get(StepNames.CATEGORIES)
-				.<DestinationCategory, DestinationCategory>chunk(1)
-				.reader(new CategoryReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationCategoryRepository))
-				.listener(new GenericChunkListener(TableNames.CATEGORY))
-				.listener(new GenericStepListener<>(TableNames.CATEGORY, destinationCategoryRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForAccountMigration()
-	{
-		return stepBuilderFactory.get(StepNames.ACCOUNTS)
-				.<DestinationAccount, DestinationAccount>chunk(1)
-				.reader(new AccountReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationAccountRepository))
-				.listener(new GenericChunkListener(TableNames.ACCOUNT))
-				.listener(new GenericStepListener<>(TableNames.ACCOUNT, destinationAccountRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForChartMigration()
-	{
-		return stepBuilderFactory.get(StepNames.CHARTS)
-				.<DestinationChart, DestinationChart>chunk(1)
-				.reader(new ChartReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationChartRepository))
-				.listener(new GenericChunkListener(TableNames.CHART))
-				.listener(new GenericStepListener<>(TableNames.CHART, destinationChartRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForHintMigration()
-	{
-		return stepBuilderFactory.get(StepNames.HINTS)
-				.<DestinationHint, DestinationHint>chunk(1)
-				.reader(new HintReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationHintRepository))
-				.listener(new GenericChunkListener(TableNames.HINT))
-				.listener(new GenericStepListener<>(TableNames.HINT, destinationHintRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingEndMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_ENDS)
-				.<DestinationRepeatingEnd, DestinationRepeatingEnd>chunk(1)
-				.reader(new RepeatingEndReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingEndRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_END))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_END, destinationRepeatingEndRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingEndAfterXTimesMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_END_AFTER_X_TIMES)
-				.<DestinationRepeatingEndAfterXTimes, DestinationRepeatingEndAfterXTimes>chunk(1)
-				.reader(new RepeatingEndAfterXTimesReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingEndAfterXTimesRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_END_AFTER_X_TIMES))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_END_AFTER_X_TIMES, destinationRepeatingEndAfterXTimesRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingEndDateMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_END_DATE)
-				.<DestinationRepeatingEndDate, DestinationRepeatingEndDate>chunk(1)
-				.reader(new RepeatingEndDateReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingEndDateRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_END_DATE))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_END_DATE, destinationRepeatingEndDateRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingEndNeverMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_END_NEVER)
-				.<DestinationRepeatingEndNever, DestinationRepeatingEndNever>chunk(1)
-				.reader(new RepeatingEndNeverReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingEndNeverRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_END_NEVER))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_END_NEVER, destinationRepeatingEndNeverRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingModifierMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_MODIFIERS)
-				.<DestinationRepeatingModifier, DestinationRepeatingModifier>chunk(1)
-				.reader(new RepeatingModifierReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingModifierRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_MODIFIER))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_MODIFIER, destinationRepeatingModifierRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingModifierDaysMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_MODIFIER_DAYS)
-				.<DestinationRepeatingModifierDays, DestinationRepeatingModifierDays>chunk(1)
-				.reader(new RepeatingModifierDaysReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingModifierDaysRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_MODIFIER_DAYS))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_MODIFIER_DAYS, destinationRepeatingModifierDaysRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingModifierMonthsMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_MODIFIER_MONTHS)
-				.<DestinationRepeatingModifierMonths, DestinationRepeatingModifierMonths>chunk(1)
-				.reader(new RepeatingModifierMonthsReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingModifierMonthsRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_MODIFIER_MONTHS))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_MODIFIER_MONTHS, destinationRepeatingModifierMonthsRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingModifierYearsMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_MODIFIER_YEARS)
-				.<DestinationRepeatingModifierYears, DestinationRepeatingModifierYears>chunk(1)
-				.reader(new RepeatingModifierYearsReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingModifierYearsRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_MODIFIER_YEARS))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_MODIFIER_YEARS, destinationRepeatingModifierYearsRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForRepeatingOptionMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPEATING_OPTIONS)
-				.<DestinationRepeatingOption, DestinationRepeatingOption>chunk(1)
-				.reader(new RepeatingOptionReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationRepeatingOptionRepository))
-				.listener(new GenericChunkListener(TableNames.REPEATING_OPTION))
-				.listener(new GenericStepListener<>(TableNames.REPEATING_OPTION, destinationRepeatingOptionRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForReportColumnMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPORT_COLUMNS)
-				.<DestinationReportColumn, DestinationReportColumn>chunk(1)
-				.reader(new ReportColumnReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationReportColumnRepository))
-				.listener(new GenericChunkListener(TableNames.REPORT_COLUMN))
-				.listener(new GenericStepListener<>(TableNames.REPORT_COLUMN, destinationReportColumnRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForReportSettingsMigration()
-	{
-		return stepBuilderFactory.get(StepNames.REPORT_SETTINGS)
-				.<DestinationReportSettings, DestinationReportSettings>chunk(1)
-				.reader(new ReportSettingsReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationReportSettingsRepository))
-				.listener(new GenericChunkListener(TableNames.REPORT_SETTINGS))
-				.listener(new GenericStepListener<>(TableNames.REPORT_SETTINGS, destinationReportSettingsRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForSettingsMigration()
-	{
-		return stepBuilderFactory.get(StepNames.SETTINGS)
-				.<DestinationSettings, DestinationSettings>chunk(1)
-				.reader(new SettingsReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationSettingsRepository))
-				.listener(new GenericChunkListener(TableNames.SETTINGS))
-				.listener(new GenericStepListener<>(TableNames.SETTINGS, destinationSettingsRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForTagMigration()
-	{
-		return stepBuilderFactory.get(StepNames.TAGS)
-				.<DestinationTag, DestinationTag>chunk(1)
-				.reader(new TagReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationTagRepository))
-				.listener(new GenericChunkListener(TableNames.TAG))
-				.listener(new GenericStepListener<>(TableNames.TAG, destinationTagRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForTemplateTagMigration()
-	{
-		return stepBuilderFactory.get(StepNames.TEMPLATE_TAGS)
-				.<DestinationTemplateTag, DestinationTemplateTag>chunk(1)
-				.reader(new TemplateTagReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationTemplateTagRepository))
-				.listener(new GenericChunkListener(TableNames.TEMPLATE_TAGS))
-				.listener(new GenericStepListener<>(TableNames.TEMPLATE_TAGS, destinationTemplateTagRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForTransactionTagMigration()
-	{
-		return stepBuilderFactory.get(StepNames.TRANSACTION_TAGS)
-				.<DestinationTransactionTag, DestinationTransactionTag>chunk(1)
-				.reader(new TransactionTagReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationTransactionTagRepository))
-				.listener(new GenericChunkListener(TableNames.TRANSACTION_TAGS))
-				.listener(new GenericStepListener<>(TableNames.TRANSACTION_TAGS, destinationTransactionTagRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), false))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForUserMigration()
-	{
-		return stepBuilderFactory.get(StepNames.USER)
-				.<DestinationUser, DestinationUser>chunk(1)
-				.reader(new UserReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationUserRepository))
-				.listener(new GenericChunkListener(TableNames.USER_SOURCE))
-				.listener(new GenericStepListener<>(TableNames.USER_DESTINATION, destinationUserRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForTransactionMigration()
-	{
-		return stepBuilderFactory.get(StepNames.TRANSACTIONS)
-				.<DestinationTransaction, DestinationTransaction>chunk(1)
-				.reader(new TransactionReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationTransactionRepository))
-				.listener(new GenericChunkListener(TableNames.TRANSACTION))
-				.listener(new GenericStepListener<>(TableNames.TRANSACTION, destinationTransactionRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForTemplateMigration()
-	{
-		return stepBuilderFactory.get(StepNames.TEMPLATES)
-				.<DestinationTemplate, DestinationTemplate>chunk(1)
-				.reader(new TemplateReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationTemplateRepository))
-				.listener(new GenericChunkListener(TableNames.TEMPLATE))
-				.listener(new GenericStepListener<>(TableNames.TEMPLATE, destinationTemplateRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-
-	@Bean
-	public Step createStepForTemplateGroupMigration()
-	{
-		return stepBuilderFactory.get(StepNames.TEMPLATE_GROUPS)
-				.<DestinationTemplateGroup, DestinationTemplateGroup>chunk(1)
-				.reader(new TemplateGroupReader(primaryDataSource))
-				.processor(new GenericDoNothingProcessor<>())
-				.writer(new GenericWriter<>(destinationTemplateGroupRepository))
-				.listener(new GenericChunkListener(TableNames.TEMPLATE_GROUP))
-				.listener(new GenericStepListener<>(TableNames.TEMPLATE_GROUP, destinationTemplateGroupRepository, context.getBean("jdbcTemplate2", JdbcTemplate.class), true))
-				.allowStartIfComplete(true)
-				.build();
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CommandLineOptions.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CommandLineOptions.java
deleted file mode 100644
index 88746d544..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CommandLineOptions.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-public enum CommandLineOptions
-{
-	SOURCE_URL("spring.datasource.jdbc-url", "source h2 database JDBC url, e.g. jdbc:h2:/C:/Users/Admin/AppData/Roaming/Deadlocker/BudgetMaster/debug/budgetmaster"),
-	DESTINATION_URL("spring.seconddatasource.jdbc-url", "destination database JDBC url (postgres ir mariadb), e.g. jdbc:postgresql://localhost:5432/budgetmaster"),
-	DESTINATION_DRIVER_CLASS_NAME("spring.seconddatasource.driver-class-name", "destination database driver class name, e.g. org.postgresql.Driver or org.mariadb.jdbc.Driver"),
-	DESTINATION_USER_NAME("spring.seconddatasource.username", "destination postresql user name, e.g. budgetmaster"),
-	DESTINATION_PASSWORD("spring.seconddatasource.password", "destination postresql password, e.g. BudgetMaster");
-
-	private final String name;
-	private final String description;
-
-	CommandLineOptions(String name, String description)
-	{
-		this.name = name;
-		this.description = description;
-	}
-
-	public String getName()
-	{
-		return name;
-	}
-
-	public String getDescription()
-	{
-		return description;
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CustomIdGenerator.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CustomIdGenerator.java
deleted file mode 100644
index 96be32804..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/CustomIdGenerator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import org.hibernate.HibernateException;
-import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.id.IdentifierGenerator;
-import org.hibernate.id.IdentityGenerator;
-
-import java.io.Serializable;
-
-
-public class CustomIdGenerator extends IdentityGenerator implements IdentifierGenerator
-{
-	public static final String GENERATOR = "de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator";
-
-	@Override
-	public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException
-	{
-		final Serializable id = session.getEntityPersister(null, object).getClassMetadata().getIdentifier(object, session);
-
-		if(id == null)
-		{
-			return super.generate(session, object);
-		}
-		else
-		{
-			return id;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java
deleted file mode 100644
index df58e3280..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseMigratorMain.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import org.apache.commons.cli.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.core.Job;
-import org.springframework.batch.core.JobParametersBuilder;
-import org.springframework.batch.core.launch.JobLauncher;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class DatabaseMigratorMain implements CommandLineRunner
-{
-	public static DatabaseType databaseType;
-
-	private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseMigratorMain.class);
-
-	private final JobLauncher jobLauncher;
-
-	private final BatchConfiguration batchConfiguration;
-
-	@Qualifier("migrateJob")
-	private final Job migrateJob;
-
-	public DatabaseMigratorMain(JobLauncher jobLauncher, BatchConfiguration batchConfiguration, Job migrateJob)
-	{
-		this.jobLauncher = jobLauncher;
-		this.batchConfiguration = batchConfiguration;
-		this.migrateJob = migrateJob;
-	}
-
-	public static void main(String[] args) throws ParseException
-	{
-		final Options commandLineOptions = new Options();
-		for(CommandLineOptions option : CommandLineOptions.values())
-		{
-			commandLineOptions.addRequiredOption(null, option.getName(), true, option.getDescription());
-		}
-
-		showHelpIfRequested(args, commandLineOptions);
-
-		final CommandLineParser parser = new DefaultParser();
-		final CommandLine cmd = parser.parse(commandLineOptions, args);
-
-		for(CommandLineOptions option : CommandLineOptions.values())
-		{
-			LOGGER.debug("{}={}", option.getName(), cmd.getOptionValue(option.getName()));
-		}
-
-		databaseType = DatabaseType.fromDriverClassName(cmd.getOptionValue(CommandLineOptions.DESTINATION_DRIVER_CLASS_NAME.getName()));
-
-		SpringApplication.run(DatabaseMigratorMain.class, args);
-	}
-
-	private static void showHelpIfRequested(String[] args, Options availableCommandLineOptions) throws ParseException
-	{
-		final Options commandLineOptions = new Options();
-		commandLineOptions.addOption("h", "help", false, "Print this help");
-
-		final CommandLineParser parser = new DefaultParser();
-		final CommandLine cmd = parser.parse(commandLineOptions, args, true);
-
-		if(cmd.hasOption("help"))
-		{
-			final HelpFormatter formatter = new HelpFormatter();
-			formatter.setWidth(200);
-			formatter.printHelp("BudgetMasterMigrator", availableCommandLineOptions);
-			System.exit(0);
-		}
-	}
-
-	@Override
-	public void run(String... args) throws Exception
-	{
-		batchConfiguration.cleanDatabase();
-
-		jobLauncher.run(migrateJob, new JobParametersBuilder().toJobParameters());
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java
deleted file mode 100644
index 0725be421..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/DatabaseType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-public enum DatabaseType
-{
-	POSTGRESQL("org.postgresql.Driver"),
-	MARIADB( "org.mariadb.jdbc.Driver");
-
-	private final String driverClassName;
-
-	DatabaseType(String driverClassName)
-	{
-		this.driverClassName = driverClassName;
-	}
-
-
-	public String getDriverClassName()
-	{
-		return driverClassName;
-	}
-
-	public static DatabaseType fromDriverClassName(String driverClassName)
-	{
-		for(DatabaseType type : values())
-		{
-			if(type.getDriverClassName().equalsIgnoreCase(driverClassName))
-			{
-				return type;
-			}
-		}
-
-		return null;
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/Utils.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/Utils.java
deleted file mode 100644
index b885385b4..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/Utils.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import org.springframework.batch.core.BatchStatus;
-import org.springframework.batch.core.StepExecution;
-
-public class Utils
-{
-	private Utils()
-	{
-		// empty
-	}
-
-	public static int getCommitCount(StepExecution stepExecution)
-	{
-		final int commitCount = stepExecution.getCommitCount();
-		if(commitCount > 0 || stepExecution.getStatus().equals(BatchStatus.COMPLETED))
-		{
-			// subtract one because the commit count includes the final commit transaction
-			return commitCount - 1;
-		}
-		else
-		{
-			return commitCount;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationDatabaseConfiguration.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationDatabaseConfiguration.java
deleted file mode 100644
index 877baddad..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationDatabaseConfiguration.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(
-		entityManagerFactoryRef = "secondaryEntityManagerFactory",
-		transactionManagerRef = "secondaryTransactionManager",
-		basePackages = {"de.deadlocker8.budgetmaster.databasemigrator.destination"}
-)
-public class DestinationDatabaseConfiguration
-{
-	@Bean(name = "secondaryDataSource")
-	@ConfigurationProperties(prefix = "spring.seconddatasource")
-	public DataSource secondaryDataSource()
-	{
-		return DataSourceBuilder.create().build();
-	}
-
-	@Bean(name = "secondaryEntityManagerFactory")
-	public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(EntityManagerFactoryBuilder builder,
-																				@Qualifier("secondaryDataSource") DataSource secondaryDataSource)
-	{
-		return builder
-				.dataSource(secondaryDataSource)
-				.packages("de.deadlocker8.budgetmaster.databasemigrator.destination")
-				.build();
-	}
-
-	@Bean(name = "secondaryTransactionManager")
-	public PlatformTransactionManager secondaryTransactionManager(
-			@Qualifier("secondaryEntityManagerFactory") EntityManagerFactory secondaryEntityManagerFactory)
-	{
-		return new JpaTransactionManager(secondaryEntityManagerFactory);
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationIntegerRepository.java
deleted file mode 100644
index f6e9f44b0..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationIntegerRepository.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination;
-
-import org.springframework.data.repository.NoRepositoryBean;
-
-import java.util.List;
-
-@NoRepositoryBean
-public interface DestinationIntegerRepository<T, ID> extends DestinationRepository<T, ID>
-{
-	List<T> findAllByOrderByIDDesc();
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationRepository.java
deleted file mode 100644
index d2f6affde..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/DestinationRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.repository.NoRepositoryBean;
-
-@NoRepositoryBean
-public interface DestinationRepository<T, ID> extends JpaRepository<T, ID>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/ProvidesID.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/ProvidesID.java
deleted file mode 100644
index 4a4d9a1dd..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/ProvidesID.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination;
-
-public interface ProvidesID
-{
-	Integer getID();
-
-	void setID(Integer ID);
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/StepNames.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/StepNames.java
deleted file mode 100644
index ce50ba387..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/StepNames.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination;
-
-public class StepNames
-{
-	private StepNames()
-	{
-		// empty
-	}
-
-	public static final String IMAGES = "Migrate images";
-	public static final String ICONS = "Migrate icons";
-	public static final String CATEGORIES = "Migrate categories";
-	public static final String ACCOUNTS = "Migrate accounts";
-	public static final String CHARTS = "Migrate charts";
-	public static final String HINTS = "Migrate hints";
-
-	public static final String REPEATING_ENDS = "Migrate repeating end options";
-	public static final String REPEATING_END_AFTER_X_TIMES = "Migrate repeating end after x times";
-	public static final String REPEATING_END_DATE = "Migrate repeating end after date";
-	public static final String REPEATING_END_NEVER = "Migrate repeating end never";
-
-	public static final String REPEATING_MODIFIERS = "Migrate repeating modifiers";
-	public static final String REPEATING_MODIFIER_DAYS = "Migrate repeating modifier days";
-	public static final String REPEATING_MODIFIER_MONTHS = "Migrate repeating modifier months";
-	public static final String REPEATING_MODIFIER_YEARS = "Migrate repeating modifier years";
-
-	public static final String REPEATING_OPTIONS = "Migrate repeating options";
-
-	public static final String REPORT_COLUMNS = "Migrate report columns";
-	public static final String REPORT_SETTINGS = "Migrate report settings";
-
-	public static final String SETTINGS = "Migrate settings";
-
-	public static final String TAGS = "Migrate tags";
-	public static final String TEMPLATE_TAGS = "Migrate template tags";
-	public static final String TRANSACTION_TAGS = "Migrate transaction tags";
-
-	public static final String USER = "Migrate user";
-
-	public static final String TRANSACTIONS = "Migrate transactions";
-	public static final String TEMPLATES = "Migrate templates";
-	public static final String TEMPLATE_GROUPS = "Migrate template groups";
-}
-
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/TableNames.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/TableNames.java
deleted file mode 100644
index cecfc04e4..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/TableNames.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination;
-
-public class TableNames
-{
-	private TableNames()
-	{
-		// empty
-	}
-
-	public static final String IMAGE = "image";
-	public static final String ICON = "icon";
-	public static final String CATEGORY = "category";
-	public static final String ACCOUNT = "account";
-	public static final String CHART = "chart";
-	public static final String HINT = "hint";
-
-	public static final String REPEATING_END = "repeating_end";
-	public static final String REPEATING_END_AFTER_X_TIMES = "repeating_end_afterxtimes";
-	public static final String REPEATING_END_DATE = "repeating_end_date";
-	public static final String REPEATING_END_NEVER = "repeating_end_never";
-
-	public static final String REPEATING_MODIFIER = "repeating_modifier";
-	public static final String REPEATING_MODIFIER_DAYS = "repeating_modifier_days";
-	public static final String REPEATING_MODIFIER_MONTHS = "repeating_modifier_months";
-	public static final String REPEATING_MODIFIER_YEARS = "repeating_modifier_years";
-
-	public static final String REPEATING_OPTION = "repeating_option";
-
-	public static final String REPORT_COLUMN = "report_column";
-	public static final String REPORT_SETTINGS = "report_settings";
-
-	public static final String SETTINGS = "settings";
-
-	public static final String TAG = "tag";
-	public static final String TEMPLATE_TAGS = "template_tags";
-	public static final String TRANSACTION_TAGS = "transaction_tags";
-
-	public static final String USER_SOURCE = "user";
-	public static final String USER_DESTINATION = "login_user";
-
-	public static final String TRANSACTION = "transaction";
-	public static final String TEMPLATE = "template";
-	public static final String TEMPLATE_GROUP = "template_group";
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccount.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccount.java
deleted file mode 100644
index 71e863aca..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccount.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.account;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.ACCOUNT)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationAccount implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Column(unique = true)
-	private String name;
-
-	@Column(name = "is_selected")
-	private boolean isSelected;
-
-	@Column(name = "is_default")
-	private boolean isDefault;
-
-	@Column(name = "account_state")
-	private Integer accountState;
-
-	@Column(name = "icon_reference_id")
-	private Integer iconReferenceID;
-
-	private Integer type;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccountIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccountIntegerRepository.java
deleted file mode 100644
index 2e106fc94..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/account/DestinationAccountIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.account;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationAccountIntegerRepository extends DestinationIntegerRepository<DestinationAccount, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategory.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategory.java
deleted file mode 100644
index 3f89c0b79..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.category;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.CATEGORY)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationCategory implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private String name;
-
-	private String color;
-
-	private Integer type;
-
-	@Column(name = "icon_reference_id")
-	private Integer iconReferenceID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategoryIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategoryIntegerRepository.java
deleted file mode 100644
index 0c41fd22c..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/category/DestinationCategoryIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.category;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationCategoryIntegerRepository extends DestinationIntegerRepository<DestinationCategory, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChart.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChart.java
deleted file mode 100644
index fa6031c1a..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChart.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.chart;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.CHART)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationChart implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private String name;
-
-	@Column(columnDefinition = "TEXT")
-	@ToString.Exclude
-	private String script;
-
-	private Integer type;
-	private int version;
-
-	@Column(name = "display_type")
-	private Integer displayType;
-
-	@Column(name = "group_type")
-	private Integer groupType;
-
-	@Column(name = "preview_image_file_name")
-	private String previewImageFileName;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChartIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChartIntegerRepository.java
deleted file mode 100644
index b0031c9c4..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/chart/DestinationChartIntegerRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.chart;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationChartIntegerRepository extends DestinationIntegerRepository<DestinationChart, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHint.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHint.java
deleted file mode 100644
index b51fbbde3..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHint.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.hint;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.HINT)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationHint implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Column(name = "localization_key")
-	private String localizationKey;
-
-	@Column(name = "is_dismissed")
-	private boolean isDismissed;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHintIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHintIntegerRepository.java
deleted file mode 100644
index 7f25f2cec..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/hint/DestinationHintIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.hint;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationHintIntegerRepository extends DestinationIntegerRepository<DestinationHint, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIcon.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIcon.java
deleted file mode 100644
index b6b7b2c98..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIcon.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.icon;
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.ICON)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationIcon implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Column(name = "image_id")
-	private Integer imageID;
-
-	@Column(name = "builtin_identifier")
-	private String builtinIdentifier;
-
-	@Column(name = "font_color")
-	private String fontColor;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIconIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIconIntegerRepository.java
deleted file mode 100644
index ca8481c65..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/icon/DestinationIconIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.icon;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationIconIntegerRepository extends DestinationIntegerRepository<DestinationIcon, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImage.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImage.java
deleted file mode 100644
index f750dc76d..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImage.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.image;
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.IMAGE)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationImage implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Lob
-	@ToString.Exclude
-	private byte[] image;
-
-	@Column(name = "file_name")
-	private String fileName;
-
-	@Column(name = "file_extension")
-	private Integer fileExtension;
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImageIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImageIntegerRepository.java
deleted file mode 100644
index 6583a677b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/image/DestinationImageIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.image;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationImageIntegerRepository extends DestinationIntegerRepository<DestinationImage, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOption.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOption.java
deleted file mode 100644
index eb89e70d0..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOption.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = TableNames.REPEATING_OPTION)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingOption implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Column(name = "start_date")
-	private LocalDate startDate;
-
-	@Column(name = "end_option_id")
-	private Integer endOptionID;
-
-	@Column(name = "modifier_id")
-	private Integer modifierID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOptionIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOptionIntegerRepository.java
deleted file mode 100644
index 623f5737b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/DestinationRepeatingOptionIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingOptionIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingOption, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEnd.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEnd.java
deleted file mode 100644
index ddcc64123..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEnd.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.REPEATING_END)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingEnd implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-
-	private Integer ID;
-
-	@Column(name = "localization_key")
-	private String localizationKey;
-
-	private String type;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimes.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimes.java
deleted file mode 100644
index 784fcd9c8..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimes.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.REPEATING_END_AFTER_X_TIMES)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingEndAfterXTimes implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-
-	private Integer ID;
-
-	private Integer times;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimesIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimesIntegerRepository.java
deleted file mode 100644
index dab8aea1f..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndAfterXTimesIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingEndAfterXTimesIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingEndAfterXTimes, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDate.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDate.java
deleted file mode 100644
index 0e81e1898..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDate.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = TableNames.REPEATING_END_DATE)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingEndDate implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-
-	private Integer ID;
-
-	@Column(name = "end_date")
-	private LocalDate endDate;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDateIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDateIntegerRepository.java
deleted file mode 100644
index d3ea8c693..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndDateIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingEndDateIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingEndDate, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndIntegerRepository.java
deleted file mode 100644
index 6e3bce339..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingEndIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingEnd, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNever.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNever.java
deleted file mode 100644
index 7ed0ef451..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNever.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.REPEATING_END_NEVER)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingEndNever implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-
-	private Integer ID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNeverIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNeverIntegerRepository.java
deleted file mode 100644
index e54bc8c7e..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/end/DestinationRepeatingEndNeverIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingEndNeverIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingEndNever, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifier.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifier.java
deleted file mode 100644
index b0034154f..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.REPEATING_MODIFIER)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingModifier implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Column(name = "localization_key")
-	private String localizationKey;
-
-	private String type;
-
-	private Integer quantity;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDays.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDays.java
deleted file mode 100644
index 9ce7fe377..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDays.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.REPEATING_MODIFIER_DAYS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingModifierDays implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDaysIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDaysIntegerRepository.java
deleted file mode 100644
index 8ce35b046..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierDaysIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingModifierDaysIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingModifierDays, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierIntegerRepository.java
deleted file mode 100644
index 05c5eebf9..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingModifierIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingModifier, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonths.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonths.java
deleted file mode 100644
index 11396244a..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonths.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.REPEATING_MODIFIER_MONTHS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingModifierMonths implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonthsIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonthsIntegerRepository.java
deleted file mode 100644
index b498c5a14..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierMonthsIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingModifierMonthsIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingModifierMonths, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYears.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYears.java
deleted file mode 100644
index 00ef17011..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYears.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.REPEATING_MODIFIER_YEARS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationRepeatingModifierYears implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYearsIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYearsIntegerRepository.java
deleted file mode 100644
index 7531f8fb1..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/repeating/modifier/DestinationRepeatingModifierYearsIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationRepeatingModifierYearsIntegerRepository extends DestinationIntegerRepository<DestinationRepeatingModifierYears, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumn.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumn.java
deleted file mode 100644
index c85efde7d..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumn.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.report;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.REPORT_COLUMN)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationReportColumn implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private boolean activated;
-
-	@Column(name = "localization_key")
-	private String localizationKey;
-
-	@Column(name = "column_position")
-	private Integer columnPosition;
-
-	@Column(name = "referring_settings_id")
-	private Integer referringSettingsID = 1;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumnIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumnIntegerRepository.java
deleted file mode 100644
index 45ec29d68..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportColumnIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.report;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationReportColumnIntegerRepository extends DestinationIntegerRepository<DestinationReportColumn, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettings.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettings.java
deleted file mode 100644
index 69e8626c8..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettings.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.report;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = TableNames.REPORT_SETTINGS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationReportSettings implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private LocalDate date;
-
-	@Column(name = "include_budget")
-	private boolean includeBudget;
-
-	@Column(name = "include_category_budgets")
-	private boolean includeCategoryBudgets;
-
-	@Column(name = "split_tables")
-	private boolean splitTables;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettingsIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettingsIntegerRepository.java
deleted file mode 100644
index f44226f29..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/report/DestinationReportSettingsIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.report;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationReportSettingsIntegerRepository extends DestinationIntegerRepository<DestinationReportSettings, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettings.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettings.java
deleted file mode 100644
index 2166bdb34..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettings.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.settings;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = TableNames.SETTINGS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationSettings implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private String currency;
-
-	@Column(name = "rest_activated")
-	private boolean restActivated;
-
-	private Integer language;
-
-	@Column(name = "use_dark_theme")
-	private boolean useDarkTheme;
-
-	@Column(name = "show_categories_as_circles")
-	private boolean showCategoriesAsCircles;
-
-	@Column(name = "auto_update_check_enabled")
-	private boolean autoUpdateCheckEnabled;
-
-	@Column(name = "backup_reminder_activated")
-	private boolean backupReminderActivated;
-
-	@Column(name = "last_backup_reminder_date")
-	private LocalDate lastBackupReminderDate;
-
-	@Column(name = "search_items_per_page")
-	private Integer searchItemsPerPage;
-
-	@Column(name = "auto_backup_strategy")
-	private Integer autoBackupStrategy;
-
-	@Column(name = "auto_backup_days")
-	private Integer autoBackupDays;
-
-	@Column(name = "auto_backup_time")
-	private Integer autoBackupTime;
-
-	@Column(name = "auto_backup_files_to_keep")
-	private Integer autoBackupFilesToKeep;
-
-	@Column(name = "auto_backup_git_url")
-	private String autoBackupGitUrl;
-
-	@Column(name = "auto_backup_git_branch_name")
-	private String autoBackupGitBranchName;
-
-	@Column(name = "auto_backup_git_user_name")
-	private String autoBackupGitUserName;
-
-	@Column(name = "auto_backup_git_token")
-	private String autoBackupGitToken;
-
-	@Column(name = "installed_version_code")
-	private Integer installedVersionCode;
-
-	@Column(name = "whats_new_shown_for_current_version")
-	private Boolean whatsNewShownForCurrentVersion;
-
-	@Column(name = "migration_declined")
-	private Boolean migrationDeclined = false;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettingsIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettingsIntegerRepository.java
deleted file mode 100644
index a8f0e0853..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/settings/DestinationSettingsIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.settings;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationSettingsIntegerRepository extends DestinationIntegerRepository<DestinationSettings, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTag.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTag.java
deleted file mode 100644
index 4745f3589..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTag.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.tag;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.TAG)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationTag implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private String name;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTagIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTagIntegerRepository.java
deleted file mode 100644
index 6c62aeff5..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTagIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.tag;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationTagIntegerRepository extends DestinationIntegerRepository<DestinationTag, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTag.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTag.java
deleted file mode 100644
index f5552fca2..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTag.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.tag;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-
-import javax.persistence.*;
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Objects;
-
-@Entity
-@Table(name = TableNames.TEMPLATE_TAGS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-@IdClass(DestinationTemplateTag.DestinationTemplateTagId.class)
-public class DestinationTemplateTag implements ProvidesID
-{
-	public static final class DestinationTemplateTagId implements Serializable
-	{
-		@Serial
-		private static final long serialVersionUID = 0L;
-		private Integer templateID;
-		private Integer tagsID;
-
-		public DestinationTemplateTagId(Integer templateID, Integer tagsID)
-		{
-			this.templateID = templateID;
-			this.tagsID = tagsID;
-		}
-
-		public DestinationTemplateTagId()
-		{
-		}
-
-		public Integer templateID()
-		{
-			return templateID;
-		}
-
-		public Integer tagsID()
-		{
-			return tagsID;
-		}
-
-		@Override
-		public boolean equals(Object obj)
-		{
-			if(obj == this) return true;
-			if(obj == null || obj.getClass() != this.getClass()) return false;
-			var that = (DestinationTemplateTagId) obj;
-			return Objects.equals(this.templateID, that.templateID) &&
-					Objects.equals(this.tagsID, that.tagsID);
-		}
-
-		@Override
-		public int hashCode()
-		{
-			return Objects.hash(templateID, tagsID);
-		}
-
-		@Override
-		public String toString()
-		{
-			return "DestinationTemplateTagId[" +
-					"templateID=" + templateID + ", " +
-					"tagsID=" + tagsID + ']';
-		}
-
-	}
-
-	@Id
-	@Column(name = "template_id")
-	private int templateID;
-
-	@Id
-	@Column(name = "tags_id")
-	private int tagsID;
-
-	@Override
-	public Integer getID()
-	{
-		return null;
-	}
-
-	@Override
-	public void setID(Integer ID)
-	{
-		// not allowed
-	}
-}
-
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTagIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTagIntegerRepository.java
deleted file mode 100644
index 327d8bfc4..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTemplateTagIntegerRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.tag;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationRepository;
-
-public interface DestinationTemplateTagIntegerRepository extends DestinationRepository<DestinationTemplateTag, DestinationTemplateTag.DestinationTemplateTagId>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTag.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTag.java
deleted file mode 100644
index 9c4215e4e..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTag.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.tag;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-
-import javax.persistence.*;
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Objects;
-
-@Entity
-@Table(name = TableNames.TRANSACTION_TAGS)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-@IdClass(DestinationTransactionTag.DestinationTransactionTagId.class)
-public class DestinationTransactionTag implements ProvidesID
-{
-	public static final class DestinationTransactionTagId implements Serializable
-	{
-		@Serial
-		private static final long serialVersionUID = 0L;
-		private Integer transactionID;
-		private Integer tagsID;
-
-		public DestinationTransactionTagId(Integer transactionID, Integer tagsID)
-		{
-			this.transactionID = transactionID;
-			this.tagsID = tagsID;
-		}
-
-		public DestinationTransactionTagId()
-		{
-		}
-
-		public Integer transactionID()
-		{
-			return transactionID;
-		}
-
-		public Integer tagsID()
-		{
-			return tagsID;
-		}
-
-		@Override
-		public boolean equals(Object obj)
-		{
-			if(obj == this) return true;
-			if(obj == null || obj.getClass() != this.getClass()) return false;
-			var that = (DestinationTransactionTagId) obj;
-			return Objects.equals(this.transactionID, that.transactionID) &&
-					Objects.equals(this.tagsID, that.tagsID);
-		}
-
-		@Override
-		public int hashCode()
-		{
-			return Objects.hash(transactionID, tagsID);
-		}
-
-		@Override
-		public String toString()
-		{
-			return "DestinationTransactionTagId[" +
-					"transactionID=" + transactionID + ", " +
-					"tagsID=" + tagsID + ']';
-		}
-
-	}
-
-	@Id
-	@Column(name = "transaction_id")
-	private int transactionID;
-
-	@Id
-	@Column(name = "tags_id")
-	private int tagsID;
-
-	@Override
-	public Integer getID()
-	{
-		return null;
-	}
-
-	@Override
-	public void setID(Integer ID)
-	{
-		// not allowed
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTagIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTagIntegerRepository.java
deleted file mode 100644
index 86454f068..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/tag/DestinationTransactionTagIntegerRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.tag;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationRepository;
-
-public interface DestinationTransactionTagIntegerRepository extends DestinationRepository<DestinationTransactionTag, DestinationTransactionTag.DestinationTransactionTagId>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplate.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplate.java
deleted file mode 100644
index 56c175f2b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplate.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.template;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.TEMPLATE)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationTemplate implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	@Column(name = "template_name")
-	private String templateName;
-
-	private Integer amount;
-
-	@Column(name = "is_expenditure")
-	private Boolean isExpenditure;
-
-	@Column(name = "account_id")
-	private Integer accountID;
-
-	@Column(name = "category_id")
-	private Integer categoryID;
-
-	private String name;
-
-	private String description;
-
-	@Column(name = "icon_reference_id")
-	private Integer iconReferenceID;
-
-	@Column(name = "transfer_account_id")
-	private Integer transferAccountID;
-
-	@Column(name = "template_group_id")
-	private Integer templateGroupID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplateIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplateIntegerRepository.java
deleted file mode 100644
index 2751c32b7..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/template/DestinationTemplateIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.template;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationTemplateIntegerRepository extends DestinationIntegerRepository<DestinationTemplate, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroup.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroup.java
deleted file mode 100644
index 7f66d18a8..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroup.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = TableNames.TEMPLATE_GROUP)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationTemplateGroup implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private String name;
-
-	private Integer type;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroupIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroupIntegerRepository.java
deleted file mode 100644
index 2bdab8fd4..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/templateGroup/DestinationTemplateGroupIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationTemplateGroupIntegerRepository extends DestinationIntegerRepository<DestinationTemplateGroup, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransaction.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransaction.java
deleted file mode 100644
index ecf13ba5b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransaction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.transaction;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-import java.time.LocalDate;
-
-@Entity
-@Table(name = TableNames.TRANSACTION)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationTransaction implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private Integer amount;
-
-	@Column(name = "is_expenditure")
-	private Boolean isExpenditure;
-
-	private LocalDate date;
-
-	@Column(name = "account_id")
-	private Integer accountID;
-
-	@Column(name = "category_id")
-	private Integer categoryID;
-
-	private String name;
-
-	private String description;
-
-	@Column(name = "repeating_option_id")
-	private Integer repeatingOptionID;
-
-	@Column(name = "transfer_account_id")
-	private Integer transferAccountID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransactionIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransactionIntegerRepository.java
deleted file mode 100644
index 7d3f67f0c..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/transaction/DestinationTransactionIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.transaction;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationTransactionIntegerRepository extends DestinationIntegerRepository<DestinationTransaction, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUser.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUser.java
deleted file mode 100644
index 720c88b41..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUser.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.user;
-
-
-import de.deadlocker8.budgetmaster.databasemigrator.CustomIdGenerator;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import lombok.*;
-import org.hibernate.annotations.GenericGenerator;
-
-import javax.persistence.*;
-
-@Entity
-@Table(name = TableNames.USER_DESTINATION)
-@AllArgsConstructor
-@NoArgsConstructor
-@Getter
-@Setter
-@EqualsAndHashCode
-@ToString
-public class DestinationUser implements ProvidesID
-{
-	@Id
-	@GeneratedValue(generator = "custom_generator")
-	@GenericGenerator(name = "custom_generator", strategy = CustomIdGenerator.GENERATOR)
-	private Integer ID;
-
-	private String name;
-
-	private String password;
-
-	@Column(name = "selected_account_id")
-	private Integer selectedAccountID;
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUserIntegerRepository.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUserIntegerRepository.java
deleted file mode 100644
index 6d7c86cb2..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/destination/user/DestinationUserIntegerRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.destination.user;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-
-public interface DestinationUserIntegerRepository extends DestinationIntegerRepository<DestinationUser, Integer>
-{
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericChunkListener.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericChunkListener.java
deleted file mode 100644
index c19b1ab08..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericChunkListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.listener;
-
-import de.deadlocker8.budgetmaster.databasemigrator.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.core.ChunkListener;
-import org.springframework.batch.core.scope.context.ChunkContext;
-
-public class GenericChunkListener implements ChunkListener
-{
-	private static final Logger LOGGER = LoggerFactory.getLogger(GenericChunkListener.class);
-
-	private final String itemName;
-
-	private int numberOfProcessedItems = 0;
-
-	public GenericChunkListener(String itemName)
-	{
-		this.itemName = itemName;
-	}
-
-	@Override
-	public void beforeChunk(ChunkContext context)
-	{
-		// nothing to do
-	}
-
-	@Override
-	public void afterChunk(ChunkContext context)
-	{
-		final int count = Utils.getCommitCount(context.getStepContext().getStepExecution());
-		if(count > numberOfProcessedItems)
-		{
-			numberOfProcessedItems++;
-			LOGGER.info("Migrating {} {}", itemName, count);
-		}
-	}
-
-	@Override
-	public void afterChunkError(ChunkContext context)
-	{
-		// nothing to do
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericJobListener.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericJobListener.java
deleted file mode 100644
index f39661929..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericJobListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.listener;
-
-import de.deadlocker8.budgetmaster.databasemigrator.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.core.BatchStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.JobExecutionListener;
-import org.springframework.batch.core.StepExecution;
-
-public class GenericJobListener implements JobExecutionListener
-{
-	private static final Logger LOGGER = LoggerFactory.getLogger(GenericJobListener.class);
-
-	@Override
-	public void beforeJob(JobExecution jobExecution)
-	{
-		// nothing to do
-	}
-
-	@Override
-	public void afterJob(JobExecution jobExecution)
-	{
-		LOGGER.info("\n");
-		LOGGER.info("==================================================");
-		LOGGER.info("### Migration results ###");
-		for(StepExecution stepExecution : jobExecution.getStepExecutions())
-		{
-			final BatchStatus status = stepExecution.getStatus();
-			final String name = stepExecution.getStepName();
-			final int commitCount = Utils.getCommitCount(stepExecution);
-			final int readCount = stepExecution.getReadCount();
-			LOGGER.info("[{}] {}: {}/{}", status, name, commitCount, readCount);
-		}
-		LOGGER.info("==================================================\n");
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java
deleted file mode 100644
index 270a657a7..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/listener/GenericStepListener.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.listener;
-
-import de.deadlocker8.budgetmaster.databasemigrator.DatabaseMigratorMain;
-import de.deadlocker8.budgetmaster.databasemigrator.DatabaseType;
-import de.deadlocker8.budgetmaster.databasemigrator.Utils;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationIntegerRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.DestinationRepository;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.ProvidesID;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.batch.core.StepExecutionListener;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import java.text.MessageFormat;
-import java.util.List;
-
-public class GenericStepListener<T extends ProvidesID, ID> implements StepExecutionListener
-{
-	private static final Logger LOGGER = LoggerFactory.getLogger(GenericStepListener.class);
-
-	private final String tableName;
-	private final DestinationRepository<T, ID> repository;
-	private final JdbcTemplate jdbcTemplate;
-	private final boolean adjustSequence;
-
-	public GenericStepListener(String tableName, DestinationRepository<T, ID> repository, JdbcTemplate jdbcTemplate, boolean adjustSequence)
-	{
-		this.tableName = tableName;
-		this.repository = repository;
-		this.jdbcTemplate = jdbcTemplate;
-		this.adjustSequence = adjustSequence;
-	}
-
-	@Override
-	public void beforeStep(StepExecution stepExecution)
-	{
-		LOGGER.info("\n");
-		LOGGER.info(">>> Migrate {}s...", tableName);
-
-		if(adjustSequence && DatabaseMigratorMain.databaseType.equals(DatabaseType.POSTGRESQL))
-		{
-			LOGGER.debug("Resetting sequence to 0");
-			jdbcTemplate.update(MessageFormat.format("ALTER SEQUENCE {0}_id_seq RESTART WITH 1", tableName));
-		}
-	}
-
-	@Override
-	public ExitStatus afterStep(StepExecution stepExecution)
-	{
-		final int count = Utils.getCommitCount(stepExecution);
-		LOGGER.info(">>> Successfully migrated {} {}s\n", count, tableName);
-
-		if(adjustSequence && DatabaseMigratorMain.databaseType.equals(DatabaseType.POSTGRESQL))
-		{
-			final int highestUsedID = getHighestUsedID();
-			final int newSequence = highestUsedID + 1;
-			LOGGER.debug("Adjusting sequence to {} (highest used id: {})", newSequence, highestUsedID);
-			jdbcTemplate.update(MessageFormat.format("ALTER SEQUENCE {0}_id_seq RESTART WITH {1}", tableName, String.valueOf(newSequence)));
-		}
-
-		return null;
-	}
-
-	public Integer getHighestUsedID()
-	{
-		if(repository instanceof DestinationIntegerRepository<T,ID> integerRepository)
-		{
-			final List<T> itemsOrderedByID = integerRepository.findAllByOrderByIDDesc();
-			if(itemsOrderedByID.isEmpty())
-			{
-				return 0;
-			}
-
-			return itemsOrderedByID.get(0).getID();
-		}
-
-		return null;
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/source/SourceDatabaseConfiguration.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/source/SourceDatabaseConfiguration.java
deleted file mode 100644
index 0e21a5a8d..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/source/SourceDatabaseConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.source;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-@Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(
-		entityManagerFactoryRef = "primaryEntityManagerFactory",
-		transactionManagerRef = "primaryTransactionManager",
-		basePackages = {"de.deadlocker8.budgetmaster.databasemigrator.source"}
-)
-public class SourceDatabaseConfiguration
-{
-	@Bean(name = "primaryDataSource")
-	@Primary
-	@ConfigurationProperties(prefix = "spring.datasource")
-	public DataSource primaryDataSource()
-	{
-		return DataSourceBuilder.create().build();
-	}
-
-	@Primary
-	@Bean(name = "primaryEntityManagerFactory")
-	public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(EntityManagerFactoryBuilder builder,
-																			  @Qualifier("primaryDataSource") DataSource primaryDataSource)
-	{
-		return builder
-				.dataSource(primaryDataSource)
-				.packages("de.deadlocker8.budgetmaster.databasemigrator.source")
-				.build();
-	}
-
-	@Bean(name = "primaryTransactionManager")
-	public PlatformTransactionManager primaryTransactionManager(
-			@Qualifier("primaryEntityManagerFactory") EntityManagerFactory primaryEntityManagerFactory)
-	{
-		return new JpaTransactionManager(primaryEntityManagerFactory);
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericDoNothingProcessor.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericDoNothingProcessor.java
deleted file mode 100644
index 32d5713fd..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericDoNothingProcessor.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.item.ItemProcessor;
-
-public class GenericDoNothingProcessor<T> implements ItemProcessor<T, T>
-{
-	private static final Logger LOGGER = LoggerFactory.getLogger(GenericDoNothingProcessor.class);
-
-	@Override
-	public T process(T item)
-	{
-		LOGGER.debug("GenericDoNothingProcessor: Processing item: {}", item);
-		return item;
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericWriter.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericWriter.java
deleted file mode 100644
index a0bd628d0..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/GenericWriter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.batch.item.ItemWriter;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import java.util.List;
-
-public class GenericWriter<T, ID> implements ItemWriter<T>
-{
-	private static final Logger LOGGER = LoggerFactory.getLogger(GenericWriter.class);
-
-	final JpaRepository<T, ID> repository;
-
-	public GenericWriter(JpaRepository<T, ID> repository)
-	{
-		this.repository = repository;
-	}
-
-	@Override
-	public void write(List<? extends T> list)
-	{
-		for(T data : list)
-		{
-			LOGGER.debug("GenericWriter: Writing: {}", data);
-			repository.save(data);
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/AccountReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/AccountReader.java
deleted file mode 100644
index 8d4ce0cb2..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/AccountReader.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.account.DestinationAccount;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class AccountReader extends BaseReader<DestinationAccount>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String NAME = "NAME";
-		public static final String IS_SELECTED = "IS_SELECTED";
-		public static final String IS_DEFAULT = "IS_DEFAULT";
-		public static final String ACCOUNT_STATE = "ACCOUNT_STATE";
-		public static final String ICON_REFERENCE_ID = "ICON_REFERENCE_ID";
-		public static final String TYPE = "TYPE";
-	}
-
-	public AccountReader(DataSource primaryDataSource)
-	{
-		super(TableNames.ACCOUNT, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationAccount> getRowMapper()
-	{
-		return new AccountRowMapper();
-	}
-
-	public static class AccountRowMapper implements RowMapper<DestinationAccount>
-	{
-		@Override
-		public DestinationAccount mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationAccount account = new DestinationAccount();
-			account.setID(rs.getInt(DatabaseColumns.ID));
-			account.setDefault(rs.getBoolean(DatabaseColumns.IS_DEFAULT));
-			account.setSelected(rs.getBoolean(DatabaseColumns.IS_SELECTED));
-			account.setName(rs.getString(DatabaseColumns.NAME));
-			account.setAccountState(rs.getInt(DatabaseColumns.ACCOUNT_STATE));
-			account.setType(rs.getInt(DatabaseColumns.TYPE));
-			account.setIconReferenceID(getIntOrNull(rs, DatabaseColumns.ICON_REFERENCE_ID));
-			return account;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/BaseReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/BaseReader.java
deleted file mode 100644
index f3c521750..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/BaseReader.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import org.springframework.batch.item.ItemReader;
-import org.springframework.batch.item.database.JdbcCursorItemReader;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.text.MessageFormat;
-
-public abstract class BaseReader<T> extends JdbcCursorItemReader<T> implements ItemReader<T>
-{
-	private static final int FETCH_SIZE = 100;
-
-	protected BaseReader(String tableName, @Autowired DataSource primaryDataSource)
-	{
-		setDataSource(primaryDataSource);
-		setSql(MessageFormat.format("SELECT * FROM {0}", tableName));
-		setFetchSize(FETCH_SIZE);
-		setRowMapper(getRowMapper());
-	}
-
-	protected abstract RowMapper<T> getRowMapper();
-
-	protected static Integer getIntOrNull(ResultSet resultSet, String columnName) throws SQLException
-	{
-		final Integer intFromDatabase = resultSet.getInt(columnName);
-		if(resultSet.wasNull())
-		{
-			return null;
-		}
-
-		return intFromDatabase;
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/CategoryReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/CategoryReader.java
deleted file mode 100644
index bf1f7593c..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/CategoryReader.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategory;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class CategoryReader extends BaseReader<DestinationCategory>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String NAME = "NAME";
-		public static final String COLOR = "COLOR";
-		public static final String TYPE = "TYPE";
-		public static final String ICON_REFERENCE_ID = "ICON_REFERENCE_ID";
-	}
-
-	public CategoryReader(DataSource primaryDataSource)
-	{
-		super(TableNames.CATEGORY, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationCategory> getRowMapper()
-	{
-		return new CategoryRowMapper();
-	}
-
-	public static class CategoryRowMapper implements RowMapper<DestinationCategory>
-	{
-		@Override
-		public DestinationCategory mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationCategory category = new DestinationCategory();
-			category.setID(rs.getInt(DatabaseColumns.ID));
-			category.setName(rs.getString(DatabaseColumns.NAME));
-			category.setColor(rs.getString(DatabaseColumns.COLOR));
-			category.setType(rs.getInt(DatabaseColumns.TYPE));
-			category.setIconReferenceID(getIntOrNull(rs, DatabaseColumns.ICON_REFERENCE_ID));
-			return category;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ChartReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ChartReader.java
deleted file mode 100644
index 8a93600c7..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ChartReader.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.chart.DestinationChart;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class ChartReader extends BaseReader<DestinationChart>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String NAME = "NAME";
-		public static final String SCRIPT = "SCRIPT";
-		public static final String TYPE = "TYPE";
-		public static final String VERSION = "VERSION";
-		public static final String DISPLAY_TYPE = "DISPLAY_TYPE";
-		public static final String GROUP_TYPE = "GROUP_TYPE";
-		public static final String PREVIEW_IMAGE_FILE_NAME = "PREVIEW_IMAGE_FILE_NAME";
-	}
-
-	public ChartReader(DataSource primaryDataSource)
-	{
-		super(TableNames.CHART, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationChart> getRowMapper()
-	{
-		return new ChartRowMapper();
-	}
-
-	public static class ChartRowMapper implements RowMapper<DestinationChart>
-	{
-		@Override
-		public DestinationChart mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationChart chart = new DestinationChart();
-			chart.setID(rs.getInt(DatabaseColumns.ID));
-			chart.setName(rs.getString(DatabaseColumns.NAME));
-			chart.setScript(rs.getString(DatabaseColumns.SCRIPT));
-			chart.setType(rs.getInt(DatabaseColumns.TYPE));
-			chart.setVersion(rs.getInt(DatabaseColumns.VERSION));
-			chart.setDisplayType(rs.getInt(DatabaseColumns.DISPLAY_TYPE));
-			chart.setGroupType(rs.getInt(DatabaseColumns.GROUP_TYPE));
-			chart.setPreviewImageFileName(rs.getString(DatabaseColumns.PREVIEW_IMAGE_FILE_NAME));
-			return chart;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/HintReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/HintReader.java
deleted file mode 100644
index 5ee0e969b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/HintReader.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.hint.DestinationHint;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class HintReader extends BaseReader<DestinationHint>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String LOCALIZATION_KEY = "LOCALIZATION_KEY";
-		public static final String IS_DISMISSED = "IS_DISMISSED";
-	}
-
-	public HintReader(DataSource primaryDataSource)
-	{
-		super(TableNames.HINT, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationHint> getRowMapper()
-	{
-		return new HintRowMapper();
-	}
-
-	public static class HintRowMapper implements RowMapper<DestinationHint>
-	{
-		@Override
-		public DestinationHint mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationHint hint = new DestinationHint();
-			hint.setID(rs.getInt(DatabaseColumns.ID));
-			hint.setLocalizationKey(rs.getString(DatabaseColumns.LOCALIZATION_KEY));
-			hint.setDismissed(rs.getBoolean(DatabaseColumns.IS_DISMISSED));
-			return hint;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/IconReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/IconReader.java
deleted file mode 100644
index e3c218818..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/IconReader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.icon.DestinationIcon;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class IconReader extends BaseReader<DestinationIcon>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String BUILTIN_IDENTIFIER = "BUILTIN_IDENTIFIER";
-		public static final String IMAGE_ID = "IMAGE_ID";
-		public static final String FONT_COLOR = "FONT_COLOR";
-	}
-
-	public IconReader(DataSource primaryDataSource)
-	{
-		super(TableNames.ICON, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationIcon> getRowMapper()
-	{
-		return new IconRowMapper();
-	}
-
-	public static class IconRowMapper implements RowMapper<DestinationIcon>
-	{
-		@Override
-		public DestinationIcon mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationIcon icon = new DestinationIcon();
-			icon.setID(rs.getInt(DatabaseColumns.ID));
-			icon.setBuiltinIdentifier(rs.getString(DatabaseColumns.BUILTIN_IDENTIFIER));
-			icon.setImageID(getIntOrNull(rs, DatabaseColumns.IMAGE_ID));
-			icon.setFontColor(rs.getString(DatabaseColumns.FONT_COLOR));
-			return icon;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ImageReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ImageReader.java
deleted file mode 100644
index 4cd4be19c..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/ImageReader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.image.DestinationImage;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class ImageReader extends BaseReader<DestinationImage>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String FILE_EXTENSION = "FILE_EXTENSION";
-		public static final String FILE_NAME = "FILE_NAME";
-		public static final String IMAGE = "IMAGE";
-	}
-
-	public ImageReader(DataSource primaryDataSource)
-	{
-		super(TableNames.IMAGE, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationImage> getRowMapper()
-	{
-		return new ImageRowMapper();
-	}
-
-	public static class ImageRowMapper implements RowMapper<DestinationImage>
-	{
-		@Override
-		public DestinationImage mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationImage image = new DestinationImage();
-			image.setID(rs.getInt(DatabaseColumns.ID));
-			image.setFileExtension(getIntOrNull(rs, DatabaseColumns.FILE_EXTENSION));
-			image.setFileName(rs.getString(DatabaseColumns.FILE_NAME));
-			image.setImage(rs.getBytes(DatabaseColumns.IMAGE));
-			return image;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/SettingsReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/SettingsReader.java
deleted file mode 100644
index 485b30ba9..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/SettingsReader.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.settings.DestinationSettings;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class SettingsReader extends BaseReader<DestinationSettings>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String CURRENCY = "CURRENCY";
-		public static final String LANGUAGE = "LANGUAGE";
-		public static final String USE_DARK_THEME = "USE_DARK_THEME";
-		public static final String SHOW_CATEGORIES_AS_CIRCLES = "SHOW_CATEGORIES_AS_CIRCLES";
-		public static final String AUTO_UPDATE_CHECK_ENABLED = "AUTO_UPDATE_CHECK_ENABLED";
-		public static final String BACKUP_REMINDER_ACTIVATED = "BACKUP_REMINDER_ACTIVATED";
-		public static final String LAST_BACKUP_REMINDER_DATE = "LAST_BACKUP_REMINDER_DATE";
-		public static final String SEARCH_ITEMS_PER_PAGE = "SEARCH_ITEMS_PER_PAGE";
-
-		public static final String AUTO_BACKUP_STRATEGY = "AUTO_BACKUP_STRATEGY";
-		public static final String AUTO_BACKUP_DAYS = "AUTO_BACKUP_DAYS";
-		public static final String AUTO_BACKUP_TIME = "AUTO_BACKUP_TIME";
-		public static final String AUTO_BACKUP_FILES_TO_KEEP = "AUTO_BACKUP_FILES_TO_KEEP";
-
-		public static final String AUTO_BACKUP_GIT_URL = "AUTO_BACKUP_GIT_URL";
-		public static final String AUTO_BACKUP_GIT_BRANCH_NAME = "AUTO_BACKUP_GIT_BRANCH_NAME";
-		public static final String AUTO_BACKUP_GIT_USER_NAME = "AUTO_BACKUP_GIT_USER_NAME";
-		public static final String AUTO_BACKUP_GIT_TOKEN = "AUTO_BACKUP_GIT_TOKEN";
-
-		public static final String INSTALLED_VERSION_CODE = "INSTALLED_VERSION_CODE";
-		public static final String WHATS_NEW_SHOWN_FOR_CURRENT_VERSION = "WHATS_NEW_SHOWN_FOR_CURRENT_VERSION";
-	}
-
-	public SettingsReader(DataSource primaryDataSource)
-	{
-		super(TableNames.SETTINGS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationSettings> getRowMapper()
-	{
-		return new SettingsRowMapper();
-	}
-
-	public static class SettingsRowMapper implements RowMapper<DestinationSettings>
-	{
-		@Override
-		public DestinationSettings mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationSettings settings = new DestinationSettings();
-			settings.setID(1);
-			settings.setCurrency(rs.getString(DatabaseColumns.CURRENCY));
-			settings.setLanguage(rs.getInt(DatabaseColumns.LANGUAGE));
-			settings.setUseDarkTheme(rs.getBoolean(DatabaseColumns.USE_DARK_THEME));
-			settings.setShowCategoriesAsCircles(rs.getBoolean(DatabaseColumns.SHOW_CATEGORIES_AS_CIRCLES));
-			settings.setAutoUpdateCheckEnabled(rs.getBoolean(DatabaseColumns.AUTO_UPDATE_CHECK_ENABLED));
-			settings.setBackupReminderActivated(rs.getBoolean(DatabaseColumns.BACKUP_REMINDER_ACTIVATED));
-			settings.setLastBackupReminderDate(rs.getDate(DatabaseColumns.LAST_BACKUP_REMINDER_DATE).toLocalDate());
-			settings.setSearchItemsPerPage(rs.getInt(DatabaseColumns.SEARCH_ITEMS_PER_PAGE));
-
-			settings.setAutoBackupStrategy(rs.getInt(DatabaseColumns.AUTO_BACKUP_STRATEGY));
-			settings.setAutoBackupDays(rs.getInt(DatabaseColumns.AUTO_BACKUP_DAYS));
-			settings.setAutoBackupTime(rs.getInt(DatabaseColumns.AUTO_BACKUP_TIME));
-			settings.setAutoBackupFilesToKeep(rs.getInt(DatabaseColumns.AUTO_BACKUP_FILES_TO_KEEP));
-
-			settings.setAutoBackupGitUrl(rs.getString(DatabaseColumns.AUTO_BACKUP_GIT_URL));
-			settings.setAutoBackupGitBranchName(rs.getString(DatabaseColumns.AUTO_BACKUP_GIT_BRANCH_NAME));
-			settings.setAutoBackupGitUserName(rs.getString(DatabaseColumns.AUTO_BACKUP_GIT_USER_NAME));
-			settings.setAutoBackupGitToken(rs.getString(DatabaseColumns.AUTO_BACKUP_GIT_TOKEN));
-
-			settings.setInstalledVersionCode(rs.getInt(DatabaseColumns.INSTALLED_VERSION_CODE));
-			settings.setWhatsNewShownForCurrentVersion(rs.getBoolean(DatabaseColumns.WHATS_NEW_SHOWN_FOR_CURRENT_VERSION));
-			return settings;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateGroupReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateGroupReader.java
deleted file mode 100644
index 5fb1330ce..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateGroupReader.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup.DestinationTemplateGroup;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class TemplateGroupReader extends BaseReader<DestinationTemplateGroup>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String NAME = "NAME";
-		public static final String TYPE = "TYPE";
-	}
-
-	public TemplateGroupReader(DataSource primaryDataSource)
-	{
-		super(TableNames.TEMPLATE_GROUP, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationTemplateGroup> getRowMapper()
-	{
-		return new TemplateGroupRowMapper();
-	}
-
-	public static class TemplateGroupRowMapper implements RowMapper<DestinationTemplateGroup>
-	{
-		@Override
-		public DestinationTemplateGroup mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationTemplateGroup templateGroup = new DestinationTemplateGroup();
-			templateGroup.setID(rs.getInt(DatabaseColumns.ID));
-			templateGroup.setName(rs.getString(DatabaseColumns.NAME));
-			templateGroup.setType(rs.getInt(DatabaseColumns.TYPE));
-			return templateGroup;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateReader.java
deleted file mode 100644
index f22ea8890..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TemplateReader.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.template.DestinationTemplate;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class TemplateReader extends BaseReader<DestinationTemplate>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String TEMPLATE_NAME = "TEMPLATE_NAME";
-		public static final String AMOUNT = "AMOUNT";
-		public static final String IS_EXPENDITURE = "IS_EXPENDITURE";
-		public static final String ACCOUNT_ID = "ACCOUNT_ID";
-		public static final String CATEGORY_ID = "CATEGORY_ID";
-		public static final String NAME = "NAME";
-		public static final String DESCRIPTION = "DESCRIPTION";
-		public static final String ICON_REFERENCE_ID = "ICON_REFERENCE_ID";
-		public static final String TRANSFER_ACCOUNT_ID = "TRANSFER_ACCOUNT_ID";
-		public static final String TEMPLATE_GROUP_ID = "TEMPLATE_GROUP_ID";
-	}
-
-	public TemplateReader(DataSource primaryDataSource)
-	{
-		super(TableNames.TEMPLATE, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationTemplate> getRowMapper()
-	{
-		return new TemplateRowMapper();
-	}
-
-	public static class TemplateRowMapper implements RowMapper<DestinationTemplate>
-	{
-		@Override
-		public DestinationTemplate mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationTemplate template = new DestinationTemplate();
-			template.setID(rs.getInt(DatabaseColumns.ID));
-			template.setTemplateName(rs.getString(DatabaseColumns.TEMPLATE_NAME));
-			template.setAmount(getIntOrNull(rs, DatabaseColumns.AMOUNT));
-			template.setIsExpenditure(rs.getBoolean(DatabaseColumns.IS_EXPENDITURE));
-			template.setAccountID(getIntOrNull(rs, DatabaseColumns.ACCOUNT_ID));
-			template.setCategoryID(getIntOrNull(rs, DatabaseColumns.CATEGORY_ID));
-			template.setName(rs.getString(DatabaseColumns.NAME));
-			template.setDescription(rs.getString(DatabaseColumns.DESCRIPTION));
-			template.setTransferAccountID(getIntOrNull(rs, DatabaseColumns.TRANSFER_ACCOUNT_ID));
-			template.setIconReferenceID(getIntOrNull(rs, DatabaseColumns.ICON_REFERENCE_ID));
-			template.setTemplateGroupID(getIntOrNull(rs, DatabaseColumns.TEMPLATE_GROUP_ID));
-			return template;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TransactionReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TransactionReader.java
deleted file mode 100644
index 6d1357927..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/TransactionReader.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.transaction.DestinationTransaction;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class TransactionReader extends BaseReader<DestinationTransaction>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String AMOUNT = "AMOUNT";
-		public static final String IS_EXPENDITURE = "IS_EXPENDITURE";
-		public static final String DATE = "DATE";
-		public static final String ACCOUNT_ID = "ACCOUNT_ID";
-		public static final String CATEGORY_ID = "CATEGORY_ID";
-		public static final String NAME = "NAME";
-		public static final String DESCRIPTION = "DESCRIPTION";
-		public static final String REPEATING_OPTION_ID = "REPEATING_OPTION_ID";
-		public static final String TRANSFER_ACCOUNT_ID = "TRANSFER_ACCOUNT_ID";
-	}
-
-	public TransactionReader(DataSource primaryDataSource)
-	{
-		super(TableNames.TRANSACTION, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationTransaction> getRowMapper()
-	{
-		return new TransactionRowMapper();
-	}
-
-	public static class TransactionRowMapper implements RowMapper<DestinationTransaction>
-	{
-		@Override
-		public DestinationTransaction mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationTransaction transaction = new DestinationTransaction();
-			transaction.setID(rs.getInt(DatabaseColumns.ID));
-			transaction.setAmount(rs.getInt(DatabaseColumns.AMOUNT));
-			transaction.setIsExpenditure(rs.getBoolean(DatabaseColumns.IS_EXPENDITURE));
-			transaction.setDate(rs.getDate(DatabaseColumns.DATE).toLocalDate());
-			transaction.setAccountID(rs.getInt(DatabaseColumns.ACCOUNT_ID));
-			transaction.setCategoryID(rs.getInt(DatabaseColumns.CATEGORY_ID));
-			transaction.setName(rs.getString(DatabaseColumns.NAME));
-			transaction.setDescription(rs.getString(DatabaseColumns.DESCRIPTION));
-			transaction.setRepeatingOptionID(getIntOrNull(rs, DatabaseColumns.REPEATING_OPTION_ID));
-			transaction.setTransferAccountID(getIntOrNull(rs, DatabaseColumns.TRANSFER_ACCOUNT_ID));
-			return transaction;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/UserReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/UserReader.java
deleted file mode 100644
index f75ede45c..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/UserReader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.user.DestinationUser;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class UserReader extends BaseReader<DestinationUser>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String NAME = "NAME";
-		public static final String PASSWORD = "PASSWORD";
-		public static final String SELECTED_ACCOUNT_ID = "SELECTED_ACCOUNT_ID";
-	}
-
-	public UserReader(DataSource primaryDataSource)
-	{
-		super(TableNames.USER_SOURCE, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationUser> getRowMapper()
-	{
-		return new UserRowMapper();
-	}
-
-	public static class UserRowMapper implements RowMapper<DestinationUser>
-	{
-		@Override
-		public DestinationUser mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationUser user = new DestinationUser();
-			user.setID(rs.getInt(DatabaseColumns.ID));
-			user.setName(rs.getString(DatabaseColumns.NAME));
-			user.setPassword(rs.getString(DatabaseColumns.PASSWORD));
-			user.setSelectedAccountID(rs.getInt(DatabaseColumns.SELECTED_ACCOUNT_ID));
-			return user;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/RepeatingOptionReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/RepeatingOptionReader.java
deleted file mode 100644
index 67f59cd55..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/RepeatingOptionReader.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.DestinationRepeatingOption;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingOptionReader extends BaseReader<DestinationRepeatingOption>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String START_DATE = "START_DATE";
-		public static final String END_OPTION_ID = "END_OPTION_ID";
-		public static final String MODIFIER_ID = "MODIFIER_ID";
-	}
-
-	public RepeatingOptionReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_OPTION, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingOption> getRowMapper()
-	{
-		return new RepeatingOptionRowMapper();
-	}
-
-	public static class RepeatingOptionRowMapper implements RowMapper<DestinationRepeatingOption>
-	{
-		@Override
-		public DestinationRepeatingOption mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingOption repeatingOption = new DestinationRepeatingOption();
-			repeatingOption.setID(rs.getInt(DatabaseColumns.ID));
-			repeatingOption.setStartDate(rs.getDate(DatabaseColumns.START_DATE).toLocalDate());
-			repeatingOption.setEndOptionID(rs.getInt(DatabaseColumns.END_OPTION_ID));
-			repeatingOption.setModifierID(rs.getInt(DatabaseColumns.MODIFIER_ID));
-			return repeatingOption;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndAfterXTimesReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndAfterXTimesReader.java
deleted file mode 100644
index b238431ee..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndAfterXTimesReader.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndAfterXTimes;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingEndAfterXTimesReader extends BaseReader<DestinationRepeatingEndAfterXTimes>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String TIMES = "TIMES";
-	}
-
-	public RepeatingEndAfterXTimesReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_END_AFTER_X_TIMES, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingEndAfterXTimes> getRowMapper()
-	{
-		return new DestinationRepeatingEndAfterXTimesRowMapper();
-	}
-
-	public static class DestinationRepeatingEndAfterXTimesRowMapper implements RowMapper<DestinationRepeatingEndAfterXTimes>
-	{
-		@Override
-		public DestinationRepeatingEndAfterXTimes mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingEndAfterXTimes repeatingEndAfterXTimes = new DestinationRepeatingEndAfterXTimes();
-			repeatingEndAfterXTimes.setID(rs.getInt(DatabaseColumns.ID));
-			repeatingEndAfterXTimes.setTimes(rs.getInt(DatabaseColumns.TIMES));
-			return repeatingEndAfterXTimes;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndDateReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndDateReader.java
deleted file mode 100644
index eacf03128..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndDateReader.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndDate;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingEndDateReader extends BaseReader<DestinationRepeatingEndDate>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String END_DATE = "END_DATE";
-	}
-
-	public RepeatingEndDateReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_END_DATE, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingEndDate> getRowMapper()
-	{
-		return new DestinationRepeatingEndDateRowMapper();
-	}
-
-	public static class DestinationRepeatingEndDateRowMapper implements RowMapper<DestinationRepeatingEndDate>
-	{
-		@Override
-		public DestinationRepeatingEndDate mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingEndDate repeatingEndDate = new DestinationRepeatingEndDate();
-			repeatingEndDate.setID(rs.getInt(DatabaseColumns.ID));
-			repeatingEndDate.setEndDate(rs.getDate(DatabaseColumns.END_DATE).toLocalDate());
-			return repeatingEndDate;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndNeverReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndNeverReader.java
deleted file mode 100644
index 1bdd766bb..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndNeverReader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndNever;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingEndNeverReader extends BaseReader<DestinationRepeatingEndNever>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-	}
-
-	public RepeatingEndNeverReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_END_NEVER, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingEndNever> getRowMapper()
-	{
-		return new DestinationRepeatingEndNeverRowMapper();
-	}
-
-	public static class DestinationRepeatingEndNeverRowMapper implements RowMapper<DestinationRepeatingEndNever>
-	{
-		@Override
-		public DestinationRepeatingEndNever mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingEndNever repeatingEndNever = new DestinationRepeatingEndNever();
-			repeatingEndNever.setID(rs.getInt(DatabaseColumns.ID));
-			return repeatingEndNever;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndReader.java
deleted file mode 100644
index d28c48b5e..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/end/RepeatingEndReader.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.end;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEnd;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingEndReader extends BaseReader<DestinationRepeatingEnd>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String LOCALIZATION_KEY = "LOCALIZATION_KEY";
-		public static final String TYPE = "TYPE";
-	}
-
-	public RepeatingEndReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_END, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingEnd> getRowMapper()
-	{
-		return new RepeatingEndRowMapper();
-	}
-
-	public static class RepeatingEndRowMapper implements RowMapper<DestinationRepeatingEnd>
-	{
-		@Override
-		public DestinationRepeatingEnd mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingEnd repeatingEnd = new DestinationRepeatingEnd();
-			repeatingEnd.setID(rs.getInt(DatabaseColumns.ID));
-			repeatingEnd.setLocalizationKey(rs.getString(DatabaseColumns.LOCALIZATION_KEY));
-			repeatingEnd.setType(rs.getString(DatabaseColumns.TYPE));
-			return repeatingEnd;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierDaysReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierDaysReader.java
deleted file mode 100644
index da5263349..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierDaysReader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierDays;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingModifierDaysReader extends BaseReader<DestinationRepeatingModifierDays>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-	}
-
-	public RepeatingModifierDaysReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_MODIFIER_DAYS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingModifierDays> getRowMapper()
-	{
-		return new DestinationRepeatingModifierRowMapper();
-	}
-
-	public static class DestinationRepeatingModifierRowMapper implements RowMapper<DestinationRepeatingModifierDays>
-	{
-		@Override
-		public DestinationRepeatingModifierDays mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingModifierDays repeatingModifier = new DestinationRepeatingModifierDays();
-			repeatingModifier.setID(rs.getInt(DatabaseColumns.ID));
-			return repeatingModifier;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierMonthsReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierMonthsReader.java
deleted file mode 100644
index c45b5907b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierMonthsReader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierMonths;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingModifierMonthsReader extends BaseReader<DestinationRepeatingModifierMonths>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-	}
-
-	public RepeatingModifierMonthsReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_MODIFIER_MONTHS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingModifierMonths> getRowMapper()
-	{
-		return new DestinationRepeatingModifierRowMapper();
-	}
-
-	public static class DestinationRepeatingModifierRowMapper implements RowMapper<DestinationRepeatingModifierMonths>
-	{
-		@Override
-		public DestinationRepeatingModifierMonths mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingModifierMonths repeatingModifier = new DestinationRepeatingModifierMonths();
-			repeatingModifier.setID(rs.getInt(DatabaseColumns.ID));
-			return repeatingModifier;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierReader.java
deleted file mode 100644
index d3416f7a2..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierReader.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifier;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingModifierReader extends BaseReader<DestinationRepeatingModifier>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String LOCALIZATION_KEY = "LOCALIZATION_KEY";
-		public static final String TYPE = "TYPE";
-		public static final String QUANTITY = "QUANTITY";
-	}
-
-	public RepeatingModifierReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_MODIFIER, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingModifier> getRowMapper()
-	{
-		return new RepeatingModifierRowMapper();
-	}
-
-	public static class RepeatingModifierRowMapper implements RowMapper<DestinationRepeatingModifier>
-	{
-		@Override
-		public DestinationRepeatingModifier mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingModifier repeatingModifier = new DestinationRepeatingModifier();
-			repeatingModifier.setID(rs.getInt(DatabaseColumns.ID));
-			repeatingModifier.setLocalizationKey(rs.getString(DatabaseColumns.LOCALIZATION_KEY));
-			repeatingModifier.setType(rs.getString(DatabaseColumns.TYPE));
-			repeatingModifier.setQuantity(rs.getInt(DatabaseColumns.QUANTITY));
-			return repeatingModifier;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierYearsReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierYearsReader.java
deleted file mode 100644
index f7a81fe95..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/repeating/modifier/RepeatingModifierYearsReader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.repeating.modifier;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierYears;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class RepeatingModifierYearsReader extends BaseReader<DestinationRepeatingModifierYears>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-	}
-
-	public RepeatingModifierYearsReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPEATING_MODIFIER_YEARS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationRepeatingModifierYears> getRowMapper()
-	{
-		return new DestinationRepeatingModifierRowMapper();
-	}
-
-	public static class DestinationRepeatingModifierRowMapper implements RowMapper<DestinationRepeatingModifierYears>
-	{
-		@Override
-		public DestinationRepeatingModifierYears mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationRepeatingModifierYears repeatingModifier = new DestinationRepeatingModifierYears();
-			repeatingModifier.setID(rs.getInt(DatabaseColumns.ID));
-			return repeatingModifier;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportColumnReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportColumnReader.java
deleted file mode 100644
index bfc7cf1ed..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportColumnReader.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.report;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportColumn;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class ReportColumnReader extends BaseReader<DestinationReportColumn>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String ACTIVATED = "ACTIVATED";
-		public static final String KEY = "KEY";
-		public static final String POSITION = "POSITION";
-	}
-
-	public ReportColumnReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPORT_COLUMN, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationReportColumn> getRowMapper()
-	{
-		return new ReportColumnRowMapper();
-	}
-
-	public static class ReportColumnRowMapper implements RowMapper<DestinationReportColumn>
-	{
-		@Override
-		public DestinationReportColumn mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationReportColumn column = new DestinationReportColumn();
-			column.setID(rs.getInt(DatabaseColumns.ID));
-			column.setActivated(rs.getBoolean(DatabaseColumns.ACTIVATED));
-			column.setLocalizationKey(rs.getString(DatabaseColumns.KEY));
-			column.setColumnPosition(rs.getInt(DatabaseColumns.POSITION));
-			return column;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportSettingsReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportSettingsReader.java
deleted file mode 100644
index ad2e9f9d4..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/report/ReportSettingsReader.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.report;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportSettings;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class ReportSettingsReader extends BaseReader<DestinationReportSettings>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String DATE = "DATE";
-		public static final String INCLUDE_BUDGET = "INCLUDE_BUDGET";
-		public static final String INCLUDE_CATEGORY_BUDGETS = "INCLUDE_CATEGORY_BUDGETS";
-		public static final String SPLIT_TABLES = "SPLIT_TABLES";
-	}
-
-	public ReportSettingsReader(DataSource primaryDataSource)
-	{
-		super(TableNames.REPORT_SETTINGS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationReportSettings> getRowMapper()
-	{
-		return new ReportSettingsRowMapper();
-	}
-
-	public static class ReportSettingsRowMapper implements RowMapper<DestinationReportSettings>
-	{
-		@Override
-		public DestinationReportSettings mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationReportSettings settings = new DestinationReportSettings();
-			settings.setID(1);
-			settings.setDate(rs.getDate(DatabaseColumns.DATE).toLocalDate());
-			settings.setIncludeBudget(rs.getBoolean(DatabaseColumns.INCLUDE_BUDGET));
-			settings.setIncludeCategoryBudgets(rs.getBoolean(DatabaseColumns.INCLUDE_CATEGORY_BUDGETS));
-			settings.setSplitTables(rs.getBoolean(DatabaseColumns.SPLIT_TABLES));
-			return settings;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TagReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TagReader.java
deleted file mode 100644
index eeb08d496..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TagReader.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.tag.DestinationTag;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class TagReader extends BaseReader<DestinationTag>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String NAME = "NAME";
-	}
-
-	public TagReader(DataSource primaryDataSource)
-	{
-		super(TableNames.TAG, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationTag> getRowMapper()
-	{
-		return new TagRowMapper();
-	}
-
-	public static class TagRowMapper implements RowMapper<DestinationTag>
-	{
-		@Override
-		public DestinationTag mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationTag tag = new DestinationTag();
-			tag.setID(rs.getInt(DatabaseColumns.ID));
-			tag.setName(rs.getString(DatabaseColumns.NAME));
-			return tag;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TemplateTagReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TemplateTagReader.java
deleted file mode 100644
index 0e1cfdc94..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TemplateTagReader.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.tag.DestinationTemplateTag;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class TemplateTagReader extends BaseReader<DestinationTemplateTag>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String TEMPLATE_ID = "TEMPLATE_ID";
-		public static final String TAGS_ID = "TAGS_ID";
-	}
-
-	public TemplateTagReader(DataSource primaryDataSource)
-	{
-		super(TableNames.TEMPLATE_TAGS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationTemplateTag> getRowMapper()
-	{
-		return new TagRowMapper();
-	}
-
-	public static class TagRowMapper implements RowMapper<DestinationTemplateTag>
-	{
-		@Override
-		public DestinationTemplateTag mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationTemplateTag tag = new DestinationTemplateTag();
-			tag.setID(rowNum);
-			tag.setTemplateID(rs.getInt(DatabaseColumns.TEMPLATE_ID));
-			tag.setTagsID(rs.getInt(DatabaseColumns.TAGS_ID));
-			return tag;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TransactionTagReader.java b/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TransactionTagReader.java
deleted file mode 100644
index 1d2596b04..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/java/de/deadlocker8/budgetmaster/databasemigrator/steps/reader/tag/TransactionTagReader.java
+++ /dev/null
@@ -1,45 +0,0 @@
-
-package de.deadlocker8.budgetmaster.databasemigrator.steps.reader.tag;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.TableNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.tag.DestinationTransactionTag;
-import de.deadlocker8.budgetmaster.databasemigrator.steps.reader.BaseReader;
-import org.springframework.jdbc.core.RowMapper;
-
-import javax.sql.DataSource;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-public class TransactionTagReader extends BaseReader<DestinationTransactionTag>
-{
-	private static class DatabaseColumns
-	{
-		public static final String ID = "ID";
-		public static final String TRANSACTION_ID = "TRANSACTION_ID";
-		public static final String TAGS_ID = "TAGS_ID";
-	}
-
-	public TransactionTagReader(DataSource primaryDataSource)
-	{
-		super(TableNames.TRANSACTION_TAGS, primaryDataSource);
-	}
-
-	@Override
-	protected RowMapper<DestinationTransactionTag> getRowMapper()
-	{
-		return new TagRowMapper();
-	}
-
-	public static class TagRowMapper implements RowMapper<DestinationTransactionTag>
-	{
-		@Override
-		public DestinationTransactionTag mapRow(ResultSet rs, int rowNum) throws SQLException
-		{
-			final DestinationTransactionTag tag = new DestinationTransactionTag();
-			tag.setID(rowNum);
-			tag.setTransactionID(rs.getInt(DatabaseColumns.TRANSACTION_ID));
-			tag.setTagsID(rs.getInt(DatabaseColumns.TAGS_ID));
-			return tag;
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/main/resources/application.properties b/BudgetMasterDatabaseMigrator/src/main/resources/application.properties
deleted file mode 100644
index 8c007825b..000000000
--- a/BudgetMasterDatabaseMigrator/src/main/resources/application.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# commented lines should be passed by command line and are only retained as example
-#spring.datasource.jdbc-url=
-spring.datasource.username=sa
-spring.datasource.password=
-spring.datasource.driver-class-name=org.h2.Driver
-
-#spring.seconddatasource.jdbc-url=
-#spring.seconddatasource.username=
-#spring.seconddatasource.password=
-#spring.seconddatasource.driver-class-name=
-
-spring.jpa.database=default
-spring.jpa.show-sql=false
-spring.jpa.generate-ddl=true
-spring.jpa.hibernate.ddl-auto=update
-
-spring.batch.jdbc.initialize-schema=always
-spring.batch.job.enabled=false
-
-logging.level.root=INFO
-logging.level.de.deadlocker8=DEBUG
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateAccountsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateAccountsTest.java
deleted file mode 100644
index 23dfd7ef4..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateAccountsTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.account.DestinationAccount;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.account.DestinationAccountIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateAccountsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateAccountsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:accounts.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationAccountIntegerRepository accountRepository;
-
-	@Test
-	void test_stepMigrateAccounts()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.ACCOUNTS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(7);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(8);
-
-		final DestinationAccount accountPlaceholder = new DestinationAccount(1, "Placeholder", false, false, 0, 1, 0);
-		final DestinationAccount accountDefault = new DestinationAccount(2, "Default Account", true, true, 0, 2, 1);
-		final DestinationAccount accountWithBuiltinIcon = new DestinationAccount(3, "Account with builtin icon", false, false, 0, 5, 1);
-		final DestinationAccount accountWithoutIcon = new DestinationAccount(4, "Account without icon", false, false, 0, 6, 1);
-		final DestinationAccount accountWithImage = new DestinationAccount(5, "Account with image", false, false, 0, 7, 1);
-		final DestinationAccount accountReadOnly = new DestinationAccount(6, "Read-only account", false, false, 1, 8, 1);
-		final DestinationAccount accountHidden = new DestinationAccount(7, "Hidden account", false, false, 2, 9, 1);
-
-
-		final List<DestinationAccount> accounts = accountRepository.findAll();
-		assertThat(accounts)
-				.hasSize(7)
-				.containsExactly(accountPlaceholder, accountDefault, accountWithBuiltinIcon, accountWithoutIcon, accountWithImage, accountReadOnly, accountHidden);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateCategoriesTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateCategoriesTest.java
deleted file mode 100644
index 4c1e665cc..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateCategoriesTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategory;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategoryIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateCategoriesTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateCategoriesTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:categories.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationCategoryIntegerRepository categoryRepository;
-
-	@Test
-	void test_stepMigraCategories()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.CATEGORIES, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(5);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(6);
-
-		final DestinationCategory categoryNoCategory = new DestinationCategory(1, "No Category", "#FFFFFF", 0, 3);
-		final DestinationCategory categoryRest = new DestinationCategory(2, "Rest", "#FFFF00", 1, 4);
-		final DestinationCategory categoryWithIcon = new DestinationCategory(3, "Awesome Category", "#ff9500", 2, 5);
-		final DestinationCategory categoryWithBuiltinIcon = new DestinationCategory(4, "Category with built in icon", "#4cd964", 2, 6);
-		final DestinationCategory categoryWithoutIcon = new DestinationCategory(5, "Category without icon", "#a90329", 2, 7);
-
-		final List<DestinationCategory> categories = categoryRepository.findAll();
-		assertThat(categories)
-				.hasSize(5)
-				.containsExactly(categoryNoCategory, categoryRest, categoryWithIcon, categoryWithBuiltinIcon, categoryWithoutIcon);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateChartsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateChartsTest.java
deleted file mode 100644
index 4facccd62..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateChartsTest.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.chart.DestinationChart;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.chart.DestinationChartIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateChartsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateChartsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:charts.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationChartIntegerRepository chartRepository;
-
-	private static final String DEFAULT_CHART_SCRIPT = """
-			/* This list will be dynamically filled with all the transactions between
-			 * the start and and date you select on the "Show Chart" page
-			 * and filtered according to your specified filter.
-			 * An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki:
-			 * https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts
-			 */
-			var transactionData = [];
-
-			// Note: All variables starting with "localized" are only available inside default charts.
-
-			// group transactions by date
-			var groups = transactionData.reverse().reduce((groups, transaction) =>
-			{
-			    var date = transaction.date;
-			    if(!groups[date])
-			    {
-			        groups[date] = [];
-			    }
-			    groups[date].push(transaction);
-			    return groups;
-			}, {});
-
-			var dates = Object.keys(groups);
-			var previousSum = 0;
-			var sums = [];
-
-			// calculate sum for each date
-			for(var key in groups)
-			{
-			    if(groups.hasOwnProperty(key))
-			    {
-			        var group = groups[key];
-
-			        // extract all amount values
-			        var amounts = group.map(transaction => transaction.amount);
-
-			        // sum up all amounts
-			        var currentSum = amounts.reduce((a, b) => a + b, 0);
-
-			        // add sum of current date to previous sum
-			        currentSum = previousSum + currentSum;
-
-			        // save current sum for next loop cycle
-			        previousSum = currentSum;
-
-			        // add sum to array
-			        sums.push(currentSum / 100);
-			    }
-			}
-
-			// Prepare your chart settings here (mandatory)
-			var plotlyData = [
-			    {
-			        x: dates,
-			        y: sums,
-			        type: 'line'
-			    }
-			];
-
-			// Add your Plotly layout settings here (optional)
-			var plotlyLayout = {
-			    title: {
-			        text: localizedTitle,
-			    },
-			    yaxis: {
-			        title: localizedData['axisY'] + localizedCurrency,
-			        rangemode: 'tozero',
-			        tickformat: '.2f',
-			        showline: true
-			    },
-			    xaxis: {
-			        tickformat: '%d.%m.%y'
-			    }
-			};
-
-			// Add your Plotly configuration settings here (optional)
-			var plotlyConfig = {
-			    showSendToCloud: false,
-			    displaylogo: false,
-			    showLink: false,
-			    responsive: true,
-			    displayModeBar: true,
-			    toImageButtonOptions: {
-			        format: 'png',
-			        filename: 'BudgetMaster_chart_export',
-			        height: 1080,
-			        width: 1920,
-			    }
-			};
-
-			// Don't touch this line
-			Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig);""";
-
-	private static final String CUSTOM_CHART_SCRIPT = """
-			/* This list will be dynamically filled with all the transactions between
-			* the start and and date you select on the "Show Chart" page
-			* and filtered according to your specified filter.
-			* An example entry for this list and tutorial about how to create custom charts ca be found in the BudgetMaster wiki:
-			* https://github.com/deadlocker8/BudgetMaster/wiki/How-to-create-custom-charts
-			*/
-			var transactionData = [];
-
-			// Prepare your chart settings here (mandatory)
-			var plotlyData = [{
-			    x: [],
-			    y: [],
-			    type: 'bar'
-			}];
-
-			// Add your Plotly layout settings here (optional)
-			var plotlyLayout = {};
-
-			// Add your Plotly configuration settings here (optional)
-			var plotlyConfig = {
-			    showSendToCloud: false,
-			    displaylogo: false,
-			    showLink: false,
-			    responsive: true
-			};
-
-			console.log("my custom chart");
-
-			// Don't touch this line
-			Plotly.newPlot("containerID", plotlyData, plotlyLayout, plotlyConfig);""";
-
-
-	@Test
-	void test_stepMigrateCharts()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.CHARTS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(13);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(14);
-
-		final List<DestinationChart> charts = chartRepository.findAll();
-		assertThat(charts).hasSize(13);
-
-		final DestinationChart migratedDefaultChart = charts.get(0);
-		assertThat(migratedDefaultChart)
-				.hasFieldOrPropertyWithValue("ID", 1)
-				.hasFieldOrPropertyWithValue("name", "charts.default.accountSumPerDay")
-				.hasFieldOrPropertyWithValue("type", 0)
-				.hasFieldOrPropertyWithValue("version", 11)
-				.hasFieldOrPropertyWithValue("displayType", 2)
-				.hasFieldOrPropertyWithValue("groupType", 0)
-				.hasFieldOrPropertyWithValue("previewImageFileName", "accountSumPerDay.png");
-
-		assertThat(migratedDefaultChart.getScript())
-				.isEqualTo(DEFAULT_CHART_SCRIPT.replace("\n", "\r\n"));
-
-		final DestinationChart migratedCustomChart = charts.get(12);
-		assertThat(migratedCustomChart)
-				.hasFieldOrPropertyWithValue("ID", 13)
-				.hasFieldOrPropertyWithValue("name", "Custom chart")
-				.hasFieldOrPropertyWithValue("type", 1)
-				.hasFieldOrPropertyWithValue("version", 0)
-				.hasFieldOrPropertyWithValue("displayType", 3)
-				.hasFieldOrPropertyWithValue("groupType", 0)
-				.hasFieldOrPropertyWithValue("previewImageFileName", null);
-
-		assertThat(migratedCustomChart.getScript())
-				.isEqualTo(CUSTOM_CHART_SCRIPT.replace("\n", "\r\n"));
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateDefaultDatabaseTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateDefaultDatabaseTest.java
deleted file mode 100644
index 2bb7b4c26..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateDefaultDatabaseTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateDefaultDatabaseTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateDefaultDatabaseTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:default_database_after_first_start.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Test
-	void test_jobMigrate() throws Exception
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchJob(DEFAULT_JOB_PARAMETERS);
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-	}
-
-	@Test
-	void test_stepMigrateImages_noImages()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.IMAGES, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isZero();
-		assertThat(stepExecution.getCommitCount()).isOne();
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateHintsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateHintsTest.java
deleted file mode 100644
index b81669be0..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateHintsTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.hint.DestinationHint;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.hint.DestinationHintIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateHintsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateHintsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:default_database_after_first_start.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationHintIntegerRepository hintRepository;
-
-	@Test
-	void test_stepMigrateHints()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.HINTS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(7);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(8);
-
-		final DestinationHint hint = new DestinationHint(1, "hint.first.use.teaser", false);
-
-		final List<DestinationHint> hints = hintRepository.findAll();
-		assertThat(hints)
-				.hasSize(7)
-				.contains(hint);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateIconsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateIconsTest.java
deleted file mode 100644
index 6e05b213a..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateIconsTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.icon.DestinationIcon;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.icon.DestinationIconIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateIconsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateIconsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:categories.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationIconIntegerRepository iconRepository;
-
-	@Test
-	void test_stepMigrateImages()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.ICONS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(7);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(8);
-
-		final DestinationIcon iconAllAccounts = new DestinationIcon(1, null, "fas fa-landmark", null);
-		final DestinationIcon iconEmpty1 = new DestinationIcon(2, null, null, null);
-		final DestinationIcon iconEmpty2 = new DestinationIcon(3, null, null, null);
-		final DestinationIcon iconEmpty3 = new DestinationIcon(4, null, null, null);
-		final DestinationIcon iconWithImage = new DestinationIcon(5, 1, null, null);
-		final DestinationIcon iconBuiltin = new DestinationIcon(6, null, "fas fa-apple-alt", null);
-		final DestinationIcon iconFontColor = new DestinationIcon(7, null, null, "#000000ff");
-
-		final List<DestinationIcon> icons = iconRepository.findAll();
-		assertThat(icons)
-				.hasSize(7)
-				.containsExactly(iconAllAccounts, iconEmpty1, iconEmpty2, iconEmpty3, iconWithImage, iconBuiltin, iconFontColor);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateImagesTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateImagesTest.java
deleted file mode 100644
index 0ec2d42c1..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateImagesTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.image.DestinationImage;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.image.DestinationImageIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateImagesTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateImagesTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:categories.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationImageIntegerRepository imageRepository;
-
-	@Test
-	void test_stepMigrateImages() throws IOException, URISyntaxException
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.IMAGES, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isOne();
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final byte[] imageBytes = Files.readAllBytes(Paths.get(this.getClass().getClassLoader().getResource("BudgetMaster.svg").toURI()));
-		final DestinationImage expectedImage = new DestinationImage(1, imageBytes, "BudgetMaster.svg", 2);
-
-		final List<DestinationImage> images = imageRepository.findAll();
-		assertThat(images)
-				.hasSize(1)
-				.containsExactly(expectedImage);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndAfterXTimesTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndAfterXTimesTest.java
deleted file mode 100644
index 643759068..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndAfterXTimesTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndAfterXTimes;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndAfterXTimesIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingEndAfterXTimesTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingEndAfterXTimesTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingEndAfterXTimesIntegerRepository repeatingEndAfterXTimesRepository;
-
-	@Test
-	void test_stepMigrateRepeatingEndAfterXTimes()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_END_AFTER_X_TIMES, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(4);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(5);
-
-		final DestinationRepeatingEndAfterXTimes endAfterXTimes = new DestinationRepeatingEndAfterXTimes(6, 2);
-
-		final List<DestinationRepeatingEndAfterXTimes> repeatingEndAfterXTimes = repeatingEndAfterXTimesRepository.findAll();
-		assertThat(repeatingEndAfterXTimes)
-				.hasSize(4)
-				.contains(endAfterXTimes);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndDateTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndDateTest.java
deleted file mode 100644
index 8afa57b01..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndDateTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndDate;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndDateIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingEndDateTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingEndDateTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingEndDateIntegerRepository repeatingEndDateRepository;
-
-	@Test
-	void test_stepMigrateRepeatingEndDates()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_END_DATE, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(1);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final DestinationRepeatingEndDate endDate = new DestinationRepeatingEndDate(4, LocalDate.of(2022, 3, 31));
-
-		final List<DestinationRepeatingEndDate> repeatingEndDates = repeatingEndDateRepository.findAll();
-		assertThat(repeatingEndDates)
-				.hasSize(1)
-				.containsExactly(endDate);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndNeverTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndNeverTest.java
deleted file mode 100644
index 0cf717c77..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndNeverTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndNever;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndNeverIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingEndNeverTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingEndNeverTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingEndNeverIntegerRepository repeatingEndNeverRepository;
-
-	@Test
-	void test_stepMigrateRepeatingEndNever()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_END_NEVER, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(1);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final DestinationRepeatingEndNever endNever = new DestinationRepeatingEndNever(5);
-
-		final List<DestinationRepeatingEndNever> repeatingEndNevers = repeatingEndNeverRepository.findAll();
-		assertThat(repeatingEndNevers)
-				.hasSize(1)
-				.containsExactly(endNever);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndsTest.java
deleted file mode 100644
index cc0de3d56..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingEndsTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEnd;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.end.DestinationRepeatingEndIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingEndsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingEndsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingEndIntegerRepository repeatingEndRepository;
-
-	@Test
-	void test_stepMigrateRepeatingEnds()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_ENDS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(6);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(7);
-
-		final DestinationRepeatingEnd repeatingEndDate = new DestinationRepeatingEnd(4, "repeating.end.key.date", "RepeatingEndDate");
-		final DestinationRepeatingEnd repeatingEndNever = new DestinationRepeatingEnd(5, "repeating.end.key.never", "RepeatingEndNever");
-		final DestinationRepeatingEnd repeatingEndAfterXTimes = new DestinationRepeatingEnd(6, "repeating.end.key.afterXTimes", "RepeatingEndAfterXTimes");
-
-		final List<DestinationRepeatingEnd> repeatingEnds = repeatingEndRepository.findAll();
-		assertThat(repeatingEnds)
-				.hasSize(6)
-				.contains(repeatingEndDate, repeatingEndNever, repeatingEndAfterXTimes);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierDaysTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierDaysTest.java
deleted file mode 100644
index daeafd0fa..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierDaysTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierDays;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierDaysIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingModifierDaysTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingModifierDaysTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingModifierDaysIntegerRepository modifierDaysRepository;
-
-	@Test
-	void test_stepMigrateRepeatingModifierDays()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_MODIFIER_DAYS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(2);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(3);
-
-		final DestinationRepeatingModifierDays modifierDays = new DestinationRepeatingModifierDays(7);
-
-		final List<DestinationRepeatingModifierDays> repeatingModifierDays = modifierDaysRepository.findAll();
-		assertThat(repeatingModifierDays)
-				.hasSize(2)
-				.contains(modifierDays);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierMonthsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierMonthsTest.java
deleted file mode 100644
index b231b73f5..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierMonthsTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierMonths;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierMonthsIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingModifierMonthsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingModifierMonthsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingModifierMonthsIntegerRepository modifierMonthsRepository;
-
-	@Test
-	void test_stepMigrateRepeatingModifierMonths()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_MODIFIER_MONTHS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(3);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(4);
-
-		final DestinationRepeatingModifierMonths modifierMonths = new DestinationRepeatingModifierMonths(4);
-
-		final List<DestinationRepeatingModifierMonths> repeatingModifierMonths = modifierMonthsRepository.findAll();
-		assertThat(repeatingModifierMonths)
-				.hasSize(3)
-				.contains(modifierMonths);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierYearsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierYearsTest.java
deleted file mode 100644
index 8989c464a..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifierYearsTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierYears;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierYearsIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingModifierYearsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingModifierYearsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingModifierYearsIntegerRepository modifierYearsRepository;
-
-	@Test
-	void test_stepMigrateRepeatingModifierYears()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_MODIFIER_YEARS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(1);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final DestinationRepeatingModifierYears modifierYears = new DestinationRepeatingModifierYears(8);
-
-		final List<DestinationRepeatingModifierYears> repeatingModifierYears = modifierYearsRepository.findAll();
-		assertThat(repeatingModifierYears)
-				.hasSize(1)
-				.contains(modifierYears);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifiersTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifiersTest.java
deleted file mode 100644
index 496455039..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingModifiersTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifier;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.modifier.DestinationRepeatingModifierIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingModifiersTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingModifiersTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingModifierIntegerRepository repeatingModifierRepository;
-
-	@Test
-	void test_stepMigrateRepeatingModifiers()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_MODIFIERS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(6);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(7);
-
-		final DestinationRepeatingModifier modifierDays = new DestinationRepeatingModifier(7, "repeating.modifier.days", "RepeatingModifierDays", 2);
-		final DestinationRepeatingModifier modifierMonths = new DestinationRepeatingModifier(4, "repeating.modifier.months", "RepeatingModifierMonths", 1);
-		final DestinationRepeatingModifier modifierYears = new DestinationRepeatingModifier(8, "repeating.modifier.years", "RepeatingModifierYears", 1);
-
-		final List<DestinationRepeatingModifier> repeatingModifiers = repeatingModifierRepository.findAll();
-		assertThat(repeatingModifiers)
-				.hasSize(6)
-				.contains(modifierDays, modifierMonths, modifierYears);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingOptionsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingOptionsTest.java
deleted file mode 100644
index 93a7a6edc..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateRepeatingOptionsTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.DestinationRepeatingOption;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.repeating.DestinationRepeatingOptionIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateRepeatingOptionsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateRepeatingOptionsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationRepeatingOptionIntegerRepository repeatingOptionRepository;
-
-	@Test
-	void test_stepMigrateRepeatingOptions()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPEATING_OPTIONS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(6);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(7);
-
-		final DestinationRepeatingOption repeatingOption = new DestinationRepeatingOption(4, LocalDate.of(2022, 3, 23), 4, 4);
-
-		final List<DestinationRepeatingOption> destinationRepeatingOptions = repeatingOptionRepository.findAll();
-		assertThat(destinationRepeatingOptions)
-				.hasSize(6)
-				.contains(repeatingOption);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportColumnsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportColumnsTest.java
deleted file mode 100644
index 695ec3958..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportColumnsTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportColumn;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportColumnIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateReportColumnsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateReportColumnsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:default_database_after_first_start.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationReportColumnIntegerRepository columnRepository;
-
-	@Test
-	void test_stepMigrateReportColumns()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPORT_COLUMNS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(11);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(12);
-
-		final DestinationReportColumn column1 = new DestinationReportColumn(1, true, "report.position", 0, 1);
-		final DestinationReportColumn column2 = new DestinationReportColumn(2, true, "report.date", 1, 1);
-		final DestinationReportColumn column3 = new DestinationReportColumn(3, true, "report.repeating", 2, 1);
-		final DestinationReportColumn column4 = new DestinationReportColumn(4, true, "report.transfer", 3, 1);
-		final DestinationReportColumn column5 = new DestinationReportColumn(5, true, "report.category", 4, 1);
-		final DestinationReportColumn column6 = new DestinationReportColumn(6, true, "report.name", 5, 1);
-		final DestinationReportColumn column7 = new DestinationReportColumn(7, true, "report.description", 6, 1);
-		final DestinationReportColumn column8 = new DestinationReportColumn(8, true, "report.tags", 7, 1);
-		final DestinationReportColumn column9 = new DestinationReportColumn(9, true, "report.account", 8, 1);
-		final DestinationReportColumn column10 = new DestinationReportColumn(10, true, "report.rating", 9, 1);
-		final DestinationReportColumn column11 = new DestinationReportColumn(11, true, "report.amount", 10, 1);
-
-		final List<DestinationReportColumn> reportColumns = columnRepository.findAll();
-		assertThat(reportColumns)
-				.hasSize(11)
-				.containsExactly(column1, column2, column3, column4, column5, column6, column7, column8, column9, column10, column11);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportSettingsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportSettingsTest.java
deleted file mode 100644
index dc7493ece..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateReportSettingsTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportSettings;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.report.DestinationReportSettingsIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateReportSettingsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateReportSettingsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:default_database_after_first_start.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationReportSettingsIntegerRepository settingsRepository;
-
-	@Test
-	void test_stepMigrateReportSettings()
-	{
-		assertThat(settingsRepository.findAll()).isEmpty();
-
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.REPORT_SETTINGS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(1);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final DestinationReportSettings settings = new DestinationReportSettings(1, LocalDate.of(2022, 3, 15), true, true, true);
-
-		final List<DestinationReportSettings> reportSettings = settingsRepository.findAll();
-		assertThat(reportSettings)
-				.hasSize(1)
-				.containsExactly(settings);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateSettingsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateSettingsTest.java
deleted file mode 100644
index 7eac72ef4..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateSettingsTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.settings.DestinationSettings;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.settings.DestinationSettingsIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateSettingsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateSettingsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:default_database_after_first_start.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationSettingsIntegerRepository settingsRepository;
-
-	@Test
-	void test_stepMigrateSettings()
-	{
-		assertThat(settingsRepository.findAll()).isEmpty();
-
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.SETTINGS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(1);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final DestinationSettings settings = new DestinationSettings(1, "€", false, 1, false, true, true, true, LocalDate.of(2022, 3, 15), 10, 0, 1, 0, 3, "", "", "", "", 35, false, false);
-
-		final List<DestinationSettings> settingsItems = settingsRepository.findAll();
-		assertThat(settingsItems)
-				.hasSize(1)
-				.contains(settings);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTagsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTagsTest.java
deleted file mode 100644
index 222ce4716..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTagsTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.tag.*;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateTagsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateTagsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:tags.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationTagIntegerRepository tagRepository;
-
-	@Autowired
-	private DestinationTemplateTagIntegerRepository templateTagRepository;
-
-	@Autowired
-	private DestinationTransactionTagIntegerRepository transactionTagRepository;
-
-	@Test
-	void test_stepMigrateTags()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.TAGS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(2);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(3);
-
-		final DestinationTag tag1 = new DestinationTag(1, "My Awesome Tag");
-		final DestinationTag tag2 = new DestinationTag(2, "ABC");
-
-		final List<DestinationTag> tags = tagRepository.findAll();
-		assertThat(tags)
-				.hasSize(2)
-				.containsExactly(tag1, tag2);
-	}
-
-	@Test
-	void test_stepMigrateTemplateTags()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.TEMPLATE_TAGS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(2);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(3);
-
-		final DestinationTemplateTag tag1 = new DestinationTemplateTag(1, 1);
-		final DestinationTemplateTag tag2 = new DestinationTemplateTag(1,2);
-
-		final List<DestinationTemplateTag> tags = templateTagRepository.findAll();
-		assertThat(tags)
-				.hasSize(2)
-				.containsExactly(tag1, tag2);
-	}
-
-	@Test
-	void test_stepMigrateTransactionTags()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.TRANSACTION_TAGS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(3);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(4);
-
-		final DestinationTransactionTag tag1 = new DestinationTransactionTag(1, 1);
-		final DestinationTransactionTag tag2 = new DestinationTransactionTag(2,1);
-		final DestinationTransactionTag tag3 = new DestinationTransactionTag(2,2);
-
-		final List<DestinationTransactionTag> tags = transactionTagRepository.findAll();
-		assertThat(tags)
-				.hasSize(3)
-				.containsExactly(tag1, tag2, tag3);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplateGroupsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplateGroupsTest.java
deleted file mode 100644
index b9482d798..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplateGroupsTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup.DestinationTemplateGroup;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.templateGroup.DestinationTemplateGroupIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateTemplateGroupsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateTemplateGroupsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:templates.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationTemplateGroupIntegerRepository templateGroupRepository;
-
-	@Test
-	void test_stepMigrateTemplateGroups()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.TEMPLATE_GROUPS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(2);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(3);
-
-		final DestinationTemplateGroup templateGroupDefault = new DestinationTemplateGroup(1, "Not grouped", 0);
-		final DestinationTemplateGroup templateGroup = new DestinationTemplateGroup(2, "Template Group", 1);
-
-		final List<DestinationTemplateGroup> templateGroups = templateGroupRepository.findAll();
-		assertThat(templateGroups)
-				.hasSize(2)
-				.contains(templateGroupDefault, templateGroup);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplatesTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplatesTest.java
deleted file mode 100644
index b4e4923cc..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTemplatesTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.template.DestinationTemplate;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.template.DestinationTemplateIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateTemplatesTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateTemplatesTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:templates.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationTemplateIntegerRepository templateRepository;
-
-	@Test
-	void test_stepMigrateTemplates()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.TEMPLATES, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(3);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(4);
-
-		final DestinationTemplate templateNormal = new DestinationTemplate(1, "Template normal", null, true, null, 1, "", "", 5, null, 1);
-		final DestinationTemplate templateTransfer = new DestinationTemplate(2, "Template transfer", null, true, 2, 1, "", "", 7, 3, 1);
-		final DestinationTemplate templateWithGroup = new DestinationTemplate(3, "Template with group", 1200, false, null, 1, "", "", 8, null, 2);
-
-		final List<DestinationTemplate> templates = templateRepository.findAll();
-		assertThat(templates)
-				.hasSize(3)
-				.contains(templateNormal, templateTransfer, templateWithGroup);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTransactionsTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTransactionsTest.java
deleted file mode 100644
index 095327a19..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateTransactionsTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.transaction.DestinationTransaction;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.transaction.DestinationTransactionIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateTransactionsTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateTransactionsTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:transactions.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationTransactionIntegerRepository transactionRepository;
-
-	@Test
-	void test_stepMigrateTransactions()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.TRANSACTIONS, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(12);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(13);
-
-		final DestinationTransaction transactionNormal = new DestinationTransaction(1, -1500, true, LocalDate.of(2022, 3, 23), 2, 3, "Normal transaction", "", null, null);
-		final DestinationTransaction transactionRepeating = new DestinationTransaction(5, -100, true, LocalDate.of(2022, 3, 23), 2, 1, "Repeating month end date", "", 4, null);
-		final DestinationTransaction transactionTransfer = new DestinationTransaction(12, -1000, true, LocalDate.of(2022, 3, 27), 2, 1, "Transfer", "", null, 3);
-		final DestinationTransaction transactionTransferRepeating = new DestinationTransaction(13, -200, true, LocalDate.of(2022, 3, 27), 2, 1, "Repeating Transfer", "", 9, 3);
-
-		final List<DestinationTransaction> transactions = transactionRepository.findAll();
-		assertThat(transactions)
-				.hasSize(12)
-				.contains(transactionNormal, transactionRepeating, transactionTransfer, transactionTransferRepeating);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateUsersTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateUsersTest.java
deleted file mode 100644
index 06b9f5cd7..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigrateUsersTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.user.DestinationUser;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.user.DestinationUserIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(MigrateUsersTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class MigrateUsersTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:default_database_after_first_start.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationUserIntegerRepository userRepository;
-
-	@Test
-	void test_stepMigrateUsers()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.USER, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(1);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(2);
-
-		final DestinationUser user = new DestinationUser(1, "Default", "$2a$10$dbMjXS1WOp40fpbIa4uyV./JnMsw3tQBNmTqhhgRPm.I3C1HnQLSS", 2);
-
-		final List<DestinationUser> users = userRepository.findAll();
-		assertThat(users)
-				.hasSize(1)
-				.contains(user);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigratorTestBase.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigratorTestBase.java
deleted file mode 100644
index f5cd1d800..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/MigratorTestBase.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.springframework.batch.core.JobParameters;
-import org.springframework.batch.core.JobParametersBuilder;
-import org.springframework.batch.test.JobLauncherTestUtils;
-import org.springframework.batch.test.JobRepositoryTestUtils;
-import org.springframework.batch.test.context.SpringBatchTest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
-import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.DynamicPropertyRegistry;
-import org.springframework.test.context.DynamicPropertySource;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.testcontainers.containers.PostgreSQLContainer;
-import org.testcontainers.junit.jupiter.Container;
-import org.testcontainers.junit.jupiter.Testcontainers;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-
-@SpringBatchTest
-@SpringBootTest
-@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
-@Testcontainers
-@ContextConfiguration(classes = {BatchConfiguration.class})
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
-@EnableJpaRepositories(
-		entityManagerFactoryRef = "secondaryEntityManagerFactory",
-		transactionManagerRef = "secondaryTransactionManager",
-		basePackages = {"de.deadlocker8.budgetmaster.databasemigrator.destination"}
-)
-@Import(MigratorTestBase.DestinationTestDatabaseConfiguration.class)
-public abstract class MigratorTestBase
-{
-	protected static final JobParameters DEFAULT_JOB_PARAMETERS = new JobParametersBuilder().toJobParameters();
-
-	@Autowired
-	protected JobLauncherTestUtils jobLauncherTestUtils;
-
-	@Autowired
-	protected JobRepositoryTestUtils jobRepositoryTestUtils;
-
-	@AfterEach
-	public void afterEach()
-	{
-		jobRepositoryTestUtils.removeJobExecutions();
-	}
-
-	@Container
-	static PostgreSQLContainer<?> postgresDB = new PostgreSQLContainer<>("postgres:14.5")
-			.withDatabaseName("budgetmaster-tests-db")
-			.withUsername("budgetmaster")
-			.withPassword("BudgetMaster");
-
-	@DynamicPropertySource
-	static void properties(DynamicPropertyRegistry registry)
-	{
-		registry.add("spring.seconddatasource.url", postgresDB::getJdbcUrl);
-		registry.add("spring.seconddatasource.username", postgresDB::getUsername);
-		registry.add("spring.seconddatasource.password", postgresDB::getPassword);
-	}
-
-	@BeforeAll
-	public static void beforeAll()
-	{
-		DatabaseMigratorMain.databaseType = DatabaseType.POSTGRESQL;
-	}
-
-	@TestConfiguration
-	static class DestinationTestDatabaseConfiguration
-	{
-		@Primary
-		@Bean(name = "primaryEntityManagerFactory")
-		public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(EntityManagerFactoryBuilder builder,
-																				  @Qualifier("primaryDataSource") DataSource primaryDataSource)
-		{
-			return builder
-					.dataSource(primaryDataSource)
-					.packages("de.deadlocker8.budgetmaster.databasemigrator.source")
-					.build();
-		}
-
-		@Bean(name = "primaryTransactionManager")
-		public PlatformTransactionManager primaryTransactionManager(
-				@Qualifier("primaryEntityManagerFactory") EntityManagerFactory primaryEntityManagerFactory)
-		{
-			return new JpaTransactionManager(primaryEntityManagerFactory);
-		}
-
-		@Bean(name = "secondaryDataSource")
-		public DataSource secondaryDataSource()
-		{
-			return DataSourceBuilder.create().username(postgresDB.getUsername()).password(postgresDB.getPassword())
-					.url(postgresDB.getJdbcUrl()).driverClassName(postgresDB.getDriverClassName()).build();
-		}
-
-		@Bean(name = "secondaryEntityManagerFactory")
-		public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(EntityManagerFactoryBuilder builder,
-																					@Qualifier("secondaryDataSource") DataSource secondaryDataSource)
-		{
-			return builder
-					.dataSource(secondaryDataSource)
-					.packages("de.deadlocker8.budgetmaster.databasemigrator.destination")
-					.build();
-		}
-
-		@Bean(name = "secondaryTransactionManager")
-		public PlatformTransactionManager secondaryTransactionManager(
-				@Qualifier("secondaryEntityManagerFactory") EntityManagerFactory secondaryEntityManagerFactory)
-		{
-			return new JpaTransactionManager(secondaryEntityManagerFactory);
-		}
-	}
-}
diff --git a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/UpdateSequencesTest.java b/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/UpdateSequencesTest.java
deleted file mode 100644
index 30c69187e..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/java/de/deadlocker8/budgetmaster/databasemigrator/UpdateSequencesTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package de.deadlocker8.budgetmaster.databasemigrator;
-
-import de.deadlocker8.budgetmaster.databasemigrator.destination.StepNames;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategory;
-import de.deadlocker8.budgetmaster.databasemigrator.destination.category.DestinationCategoryIntegerRepository;
-import org.junit.jupiter.api.Test;
-import org.springframework.batch.core.ExitStatus;
-import org.springframework.batch.core.JobExecution;
-import org.springframework.batch.core.StepExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.test.context.TestConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.io.Resource;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Import(UpdateSequencesTest.TestDatabaseConfiguration.class)
-@EnableAutoConfiguration
-class UpdateSequencesTest extends MigratorTestBase
-{
-	@TestConfiguration
-	static class TestDatabaseConfiguration
-	{
-		@Value("classpath:categories.mv.db")
-		private Resource databaseResource;
-
-		@Bean(name = "primaryDataSource")
-		@Primary
-		public DataSource dataSource() throws IOException
-		{
-			final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", "");
-			String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE";
-			return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build();
-		}
-	}
-
-	@Autowired
-	private DestinationCategoryIntegerRepository categoryRepository;
-
-	@Test
-	void test_updateSequences()
-	{
-		final JobExecution jobExecution = jobLauncherTestUtils.launchStep(StepNames.CATEGORIES, DEFAULT_JOB_PARAMETERS);
-		final List<StepExecution> stepExecutions = new ArrayList<>(jobExecution.getStepExecutions());
-
-		assertThat(jobExecution.getExitStatus()).isEqualTo(ExitStatus.COMPLETED);
-
-		assertThat(stepExecutions).hasSize(1);
-		final StepExecution stepExecution = stepExecutions.get(0);
-		assertThat(stepExecution.getReadCount()).isEqualTo(5);
-		assertThat(stepExecution.getCommitCount()).isEqualTo(6);
-
-		final List<DestinationCategory> categoriesOrderedById = categoryRepository.findAllByOrderByIDDesc();
-		final DestinationCategory savedCategory = categoryRepository.save(new DestinationCategory(null, "New One", "#ffffff", 0, null));
-		assertThat(savedCategory.getID()).isEqualTo(categoriesOrderedById.get(0).getID() + 1);
-
-		final DestinationCategory savedCategory2 = categoryRepository.save(new DestinationCategory(null, "New Two", "#ffffff", 0, null));
-		assertThat(savedCategory2.getID()).isEqualTo(categoriesOrderedById.get(0).getID() + 2);
-	}
-}
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/BudgetMaster.svg b/BudgetMasterDatabaseMigrator/src/test/resources/BudgetMaster.svg
deleted file mode 100644
index 1f64835cc..000000000
--- a/BudgetMasterDatabaseMigrator/src/test/resources/BudgetMaster.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 1218 1218" width="1218pt" height="1218pt"><defs><clipPath id="_clipPath_rWtj0rtuYbDYO4GkwsTvP2oNwd4oCylR"><rect width="1218" height="1218"/></clipPath></defs><g clip-path="url(#_clipPath_rWtj0rtuYbDYO4GkwsTvP2oNwd4oCylR)"><path d="M 245.75 80 L 972.25 80 C 999.294 80 1021.25 101.956 1021.25 129 L 1021.25 1165 C 1021.25 1192.044 999.294 1214 972.25 1214 L 245.75 1214 C 218.706 1214 196.75 1192.044 196.75 1165 L 196.75 129 C 196.75 101.956 218.706 80 245.75 80 Z" style="stroke:none;fill:#2E79B9;stroke-miterlimit:10;"/><rect x="270" y="168" width="678" height="958" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,255,255)"/><path d=" M 378.5 197 L 839.5 197 Q 820.716 81.878 661.5 57 C 656.929 56.286 660.595 7 608.5 7 C 556.143 7 557.406 56.676 555.5 57 Q 378.643 87.071 378.5 197 Z " fill="rgb(105,105,105)"/><g><rect x="569.086" y="122.453" width="402.735" height="935.051" transform="matrix(0.839,-0.544,0.544,0.839,-197.013,514.592)" fill="rgb(139,175,90)"/><rect x="628.931" y="197.261" width="283.83" height="785.261" transform="matrix(0.839,-0.544,0.544,0.839,-196.902,514.791)" fill="rgb(179,226,116)"/><path d=" M 694.002 635.907 C 637.162 548.381 624.763 455.405 666.332 428.41 C 707.9 401.416 787.795 450.56 844.635 538.086 C 901.475 625.612 913.874 718.588 872.306 745.583 C 830.737 772.577 750.842 723.433 694.002 635.907 Z " fill="rgb(139,175,90)"/><rect x="568.628" y="473.172" width="405.742" height="234.553" transform="matrix(0.839,-0.544,0.544,0.839,-197.1,515.237)" fill="rgb(207,207,207)"/></g><g><circle vector-effect="non-scaling-stroke" cx="557" cy="929" r="103" fill="rgb(255,215,11)"/><circle vector-effect="non-scaling-stroke" cx="333" cy="760.0000000000001" r="103" fill="rgb(255,215,11)"/></g></g></svg>
\ No newline at end of file
diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/accounts.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/accounts.mv.db
deleted file mode 100644
index 8b6e4cd28d0589aeb2683b8f76702b99a3739dd6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 98304
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
Az5oCK

diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/categories.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/categories.mv.db
deleted file mode 100644
index 969f8d0520b74646047b99076f15a476a3ef1a3a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 98304
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

diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/charts.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/charts.mv.db
deleted file mode 100644
index 46bbc4fd95ad405feae04633be9dbca7b9a3c368..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 98304
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
H9d9lGNPIes

diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/default_database_after_first_start.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/default_database_after_first_start.mv.db
deleted file mode 100644
index 36ca61ae144e56adb8d0d616095a9c96a576d8df..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 94208
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
Lkf^RRX^OZ2fy`U3

diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/tags.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/tags.mv.db
deleted file mode 100644
index 4da999fd57030cf2e32dc930e307362256c0b149..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 98304
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
Pm||j?N=b(rt6nYu$@ue9

diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/templates.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/templates.mv.db
deleted file mode 100644
index e24aa14aa03cf56d6d7c6f7e56a2ad85f57b0eae..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 94208
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

diff --git a/BudgetMasterDatabaseMigrator/src/test/resources/transactions.mv.db b/BudgetMasterDatabaseMigrator/src/test/resources/transactions.mv.db
deleted file mode 100644
index 93435af3eeceb9d2c7e495edc68a75992fc210c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 98304
zcmeaUGSW%P$xqI<GBkrQf-|d9tqcte40Mt+O7pU<j8k=zi&7IyQd6u9&C`-B%u>vg
zjEr>B@{4j4ORNla%2JDpGxPI6>e6yjOOi8Ei>%TNjSWo<5-qtHM!{$ZjE2By2#kin
zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz`%#VX#aoU<6zVUqaiRF0;3@?8UmvsFd71*
zAut*OqaiRF0;3@?8UmvsK<f~I&haNh=KigWbaGPjtPD+bax%+OeG@CJ49!g}48XjA
z#Prl+D`R7w+{6Ma6APVOuxw(gfldKL##E;$KflB(&A`CGz{Jwf(!gA&Br`YF%FsB~
z*uugv6|qtvS%D}3T0P*&@Pe6@k%57qfq}tt9++kcoCBuW>*T;R_hlI{&0iY>riHrY
zBqSsxge6!dSq)h|Srb_+85jf-1a>h?Fc=yco0yuJvvRO<vU0I<v+}U=vhuO=vkI^Z
zvI?;Zvx=~avWl^avq~@svM4I3MFhKsC^!eXI)=E$JB51sxF{G}S_-l#DJb!_Fhax?
zLW5m{6g=G&{QN@{Tq8V#LxL5Qf*q9<f*pNA6x1y&EfXzF&5crwO${sz&5YF*JRE~P
z6x5B)4K0$5j8jt#Q;dyM(oB=hjVw})l2TGljZ;&M49t=f%~DcLOpFXI3=@r#OjC_a
zEK&`P4AYE_)6&c=6O+{y99?`p{RCN*6%=^qF+<(r?C9*_>Y@<h=;Y(7pcD}5<m2hA
zq^IQQ?Cc-v7ow!W1qyd1PZuQxPrndXch?{V7gsmOP@fP54L{e25QQ*DpHNo?H~%0c
z&B2kuA+Emh!LEU!u71w0@y?Fs&ZfqW2JueD&ZhAuZca||md>Uw@h+}z&Zd?|E>0#E
zhDw^?;P4Ce@lgN~@ge>od9Y0|gDAB^2jUs1-{ONq979~;{(?$+2E(jXQgHJ3_i=Uf
zL&yZX`nWoWxVoTA`8oQ!Dk+3H2042;25A_Xnj$;{)f^HTfN7Ppzh8WitD9>OIFyjW
zm`hWTMMXiGHy0X7)CvHF;1I{45QT8h5Dx_t1t(V@e?RwNP)LKLUywyrL6O%TYG*)@
zr>|pBq=L6=BvQCTMdQ6)Bja6_6#V^=<e=fIqyb7Unu0893aY$ijy@r-K{%6_f}@Lz
zg0sJ0a7d7&r(Xz?VF*ExJy2^wj)9o2;OXb$8iAx9ssidTK^Aod1>WaOP`}_v<j#&E
zuI~Opk<>}$uI8pLW~LUV@h*<0&haMZX3p`BmgWZWmaa~2&c>DoMh3=a6sB^btbnFC
zXMZ36Ak;(&m7zsy)gUdk66Fy>sZ~=!k=Fwn!_eplB@i5m!Wb>JA|fA}T(uNbdCRdU
zSGZcD(yOtO0+MrxNUz39f-Kq!3cNjp(yNDK5Y{3YRFQxRO=twWcm@afI7Y@}D|Fn0
z{6hn<$`DQ#0YR=|p045Xp1zLmuJLZ3KCbbYnxJk7b`J6k2vJf9ag7Lp3So0jm}^k5
zr@tS(6oyv<pdwI5L6O&u_y~4Ek6}n~L8Dg}cWDGFwL_GMi(40xBiBVqkVQ{Hfp-sq
z*!A$FR()&i>}Y6aVPX<*;ArL&Z{lod7;kCl<Q8x4>||i(X71|jYT-y>Nko(t(0B(`
zsh+{Up25LLH77ixp^AL`ogIBVqZ~s#{ry0NIBLlSN)7s?6){A)5V?r4z)~Ty2q-A>
zx)7ZNjnGmcBub$PkVQ~ImA4ps0RvV@R01?2HT@YW39_&VDJbyHXMy?yM{OA5>Kot#
zY7tST&1Y(AY+~kW;u>$^<YXRi;%00Z?_}WW6mRBiY;5A{V&G!wYD8fgB+3eC@^bVA
zH)mmuSg5FrE2NkLmq5tPH>kX4aJ*|ofUBR2XGmy}E8$ijR2wWLahHzJrcyjon-8iN
zR@GpU^2FI*gz60ma`X#!a}A2eZ9Lp*ka_^geoz);5hg8<xfz=qm>9ZR#Jf2exy75f
zIhw{h8M!#e8ygxpn;MuH8arD!D<S7Gb8LA`L_v|)6Ph-WDoz~rxS2CrCWCni-tJ@(
zRZ!)vz@E|Iiiyf>Bp3E(&Y;{Trl7!khd^l$u0yHQ@H8|uH?nYXbcuI#bheB)F?Di^
zcXV=ejyJP#Gct8Db~H9~Godi65oHB56@uFZt`Q-we%NbvWM!Dm2lRRY5>5(EKK@Q{
zDR5F1CoQQG<pboTYKSeVN+>Aux)PmKP0&&*#4nHrAp--?CfO6r5)7=8tWvDftTL>!
zta7aKtO~4(tV*oPtSYRktZJ<4tQxGEtXizvtU9c^ta_~atOg8%EG&`=s=OuG6F9^U
zqEfdBsa1&yC~-?EDDWO6khp_f16&<LJpJ6`UHx2Oi5$}WgO#$zh8TThq{4`dK?YM(
zBPUl27w33K69dC|6H^1zcnbq(<9Gv87js85V`E1%LsJTK0Z~>!lQ-e^42!gaGH)I<
zF%i+jC(3q|6l{Pk3Ck!b^7=t-C0yDXqc>^Lq88S+kyTLTt;3!oQFRcNGC{T?xebzI
z@OJr)!Oa{w1qI$>sNZn3a!_0o@8}ld8Wa)Y>FXK{Po`iFtf2rebD+_RoJL{2E^u)q
zub{{q3AGx@={PDeOSF;!kE>uIte~LE+rdag5TkgCsNl9FwIHwr6$FY33cMLm9}^YW
zE=Y|_S3j3{Fkb;2_#uwI0fa(WNkNe}2x=eU5O%{G!eFZ*$x4ugMOi_Ww~?rz1?wX!
zOx;KgQ#VkUswgP%`a}IlRG9j?hPej8k}l4~2^!Z6h8jya=*;j29n?lxvIGtCH4znd
z5RF6yo*AiuX9fy9(2(CfqH88!e-}?TPekC+xOy@(Ff_KXa5j&3H8(eiH!(GIjdwIO
zaf`Qba&dBXaWykCbEdRUPLvhUT!z1Tf+`9Ob@U7I42gt~&VWlg&`=)<)fQ2%B3x~O
z2Kz`z!lpRWFe2VzNf<Qn*Gw=8!}SrDf=x+I!ls}!3>pT6d6QrP0CQ5ji(@3b{=!)Z
zfJW0Ih%N+N(HpObDhkb7STKSH*a%lpsG5liOOR8LN-apSjkh)63T~-_2HirT9wt64
zef|AHJP3!TzJele6x47e$Kk5)(MO-LgeJ^lSa=#JsPc9Zoh;*_+KCELOOl7EEsd2J
z7z9IjCV+Y@hO9=c#;hi+rmSYH=ByU1maJB+)~q(Hwybun_N)%9j;v0s&a5u1uB>jX
z?yMf59*d!Z0&fU3xQLI7NLR-o!ck$QpvX&n!geB9GQ>lzg++w1f+}x2@eu*hO;kKM
zky=PNfyxLI1qI$qMAviv0iYpOY)u5xCvshl+>D(Joh{>CP0fwtP0S1|;w_DxjN{GC
z%#F+p%$y93&CDt6V-aNqw0;85X5wf@f*P0*uVWcWgBL<bg(bLdGbOD{MwDX-*KKAB
zioAi)%t5#;akIdgf*~G841}2z)v$%?A}Ym#EJt!85oNKP1t`s0C@Ap$CY)ydgF@n+
z{e41x{iu^*UEEw;-HeP3;~gDcoZ?MfO`YPM49(o)O^qzgP0XBJ&CCp(DNL|LSpiM3
zj?N*TVUEZP2+;eN-ma0TGapc$0sg_B;Czg$V+vkJ5Cj@>33d$u4ZQ>-r+aYXwj?ca
z6Xh|K#BHR2xuk%_ilp%dHv`PXjhrZ8WwJHi@dhLv#HDHjQVU`?15m2AQBdH$2V2#H
zyIKP|2No;X(lu-#0UFnkP9{db*w5J~)CIJt$i>|?1U?smo`5`|%HZ<|PN5+6!8kPp
z2l#k~#Df=rU{M54IJOFkyaB|QPgq)xs38E0L^}ml-Ui$iD~cxK;*sPbO*e2$(OyA;
zcM}`bhdAPqga~vD4e^h6a&-0%4S+PwVVM>h!N~HU(Q@z-9B)_G0C-0Wi$ZtLka(vc
zM?Yr|Jkv@@7K7A>_<OthVJ%OPod8l98stNqx?tBJ;_MF&2?8yzL3AFm_z9H8vHCeQ
z0F(*hojqKgz2jZ|K#S85i>}a<JT#<(Tzx@{f<Uuh=%p;wYUj`(&{8YxC9J1kaEPOi
zkE=^ObWK9Mv%d?*nk^qkKle~acP!$;A+RWiI|SqhC5!>CAlKlKc)~S7uq$XeS-fY6
zt8Z|8fNM~E02XV5J^aJtp;_J2H8|ceINsSa$l1pgk(Hr-4-IyWcX15zjt}v01ua&C
zu5CjP%Wx0Jkl=Vf*YJ3d(SGr6{z37OU<-kT3%n!&mkkaiEy6)>x*#$YtW0pky$T1e
zn5eSAg47}%+)i;)P~e?Rpq&!p=#H%vC%rjs?riR4YHDH>Z)#*}9&h4gViNCYYHks4
zX5ebz=ICr`WMWC_#2ryqK$8fb$vALSJCio!MwHbk?FVel2NwlJUT0{@jMVVN(a$zS
zYdwIY3YN576;yePun(Yv)De}c3`tE@hM;zWn}P!GN<yg$y8I#@JTp(71m<XD;^O9L
zW)bgZW^NX5;%aFa?_}cU7H{NYWMXb+?rQ32;6!2bmnbW6CNQW3Wb75Xz!;p?+(}Do
zL@fm&nASW<vy>>WBU_5uK4xIxTd8;xG^XOo>c#5K>ci^G>c{HO8o(OJ8pImR8p0aN
z8payV8o?UL8pRsT8p9gP8pj&XngAM8@l;TRPZki)8fNC`c>^uM!Lo^$f&y<5G{@m+
z3&B=V#D_S#!^daff=Hce^y&qq9=Trvmj_3>w}JxicLEF3!E0PVwWmLox`@t3W(LNt
z=Em`Ej^^f|JYo{>=<4Va@8aZQW@+qZ<Yew@L17*t$_i*!z_CyXG<Am2lAzJ@CETlr
zpe>C^<S2x?8!?~>8BV~W1RQlZmM4MZ--omgDpA3Toc|2Xu+=cW3W~fw(DY6?8@ZuR
zEP{OnOOUWU<fov@TZ5yj0WH#kswb+-0ojP;E@FmUz;lWI3JSaxP=Ddd#|XEeW@RLC
zvU78Qf&%Yd0+k+UCk%C}Iu}E8GiM89qj*a<(3)2>GthD<Q?qyj3pZCsb2mdva|24V
zF;P}Pvjd*C6jVikV{mY|e~=4mw+mh%LRG<boM2nh2hKBrq}5qO`2ji4VAffJEG$7J
zErT*buX!M`4$CXS3aY%N*z*clAyJtGWCv-P#K;`fG7C{q<V}QTl2AX-z))9=iKS5Q
zcqb=IpCI4x;PAjO59dh3NE2fNZ%+dQ&!Bivk23<aLj}i97;rk!6l7ruRZ!)fg=4G(
zTHxYYfsW4&N(vB%YbZf1BhLeZEG%IPioCG|!@@A!B_P<<#nju+(J0c`!o$zWJ;=|)
z)6@wX7TBBM5T^;Uu!Jk9@=n7M4)|N)q2BR0?ItD+aB7A-T#$t&LP3!?j$jzLdl|V!
z8oM}qMwkb9n0s58S(vzcJDM0cLybaTGzCt_u=o*VVTn{w<(-Zr5Ws42r}<Ftc$~Hq
z6ACyr!<{b3!V;yR$eRWY1#k*S>TbDtdmEdCdwKd8yLg8=xq5m9TLwCsIXOl|L_m$e
zvo8!|1v4mXL@OxrCg8NqD8xA2G|bR7INT}7(Jdmx+0e)@(#Ocz1Zo@lY86;BR7nH2
zi4oKk0ofCypvaq!(;iP}_h2`74?oukLnD9p0Ov3dV@p#%&oE1<J?JyIu(l9rwgs!V
zVii<*FW`t|xFc~#w3|0hpDTg(Te^C>`+>GQp?VV|^W!lF>M=7V1@PnnXcJ;EQbfZ_
zC1``g&mTM*C&<DQhg4=_rVcl6S7Q?&XAkp0H<Jj@h(NzcFJliwBVTibbtq*eJSa4j
zU_lCtuy_Sk-b<8(AWpZSg&>N>Sb`9zIS4;t4MLc?pfutF?nJ=CFhN0;cNGq=A)3;l
zNlfG=iuh8CrE!>}g=wT~m_@itc$lMqps{;EgqxYMF`8dJK@P#{S`>THoXo($V{Z75
zS(t$}ku`}mnKgwql{Jkuoi&3slQoMqn>B|umo<;IkhO%hl(met0@OWCR8ZwzOq3TP
z<D@vZg1UJ-TZVWWx&{ZB`?`h&xf*!6h6NdfhFG|JQ^jwBEG$V1s=P~xax0-#Y;N98
zo@Q>I9s!ZAu1-FY9!{agCSk#bzTWN;)N*XHf-3J?f{umHaf25J;Y&H@hE9QzewL=5
zzTRE|PNuHm&hAb=9)3Y?WH=aRD_ZgqWMN5BP~}}uysHT=XL0j3_w)5J4l?j}4{?oj
za*K!v^$ZU+bTbYyqpG`86;yfG5$|q7t3TYl-A&!xLd`?HEh8NRyj*;p%_BU0{KEWA
z4XNtvGzCT8Y@C&yZ+JwIQ>b%9kgrdGWk`gpkBg<7v$3f=tg=Jz<RXd&Nbg=rLkUzi
zK{&ADI$c4P_aVWMg6P51)^+p7={mF!LURI^f*Yqv(1P0yN8N|;FL(n3xT~Uor~xw+
z6nQgo2CikOb5KM`kfp1eW0-%0g_)6YkW-kcv6CCZQj{7HVHq@RG?ZZ32o|)N3aY$M
zs1dX{-G&ylC=S39usF>@_>n*z1G53Mq{vcG<SoD%x&cO}o)*UDP8LStVIi)DL8czY
zMy?)?!4?Rc(L)zBkqlc^q6Bsp#zF~D`!HKUmG=eiKt?hJUulZdeP|(!!yQ<{8mEZ}
zAA=1;Z@>k)27ufQpEkp2$mJ-g^44STdBa*|(Afyw9!5H+0W`u)S|8jD+y~Fa+b(zU
zG<NqiH!?Fe3k?r5iwp>LH+J_7H3>9^`W}7PH_YWq8cHxG#1pW*l&7G|dk;r6!*t*+
zo^ZMdErwx+Az6<lc5#}9@E_LLMKv8W7Zu_yqfDGEeS=NI%+14%%smbK{Vgs1A|f1p
zEDfQy;^|d^2RzY+aY5Oq1aG&%$RN}x$kNN##XG>*%+ue%#V_34BG3mmf`Yy(6Ye|E
zi~%Sr9o@kTnm`tnDyZ_FArOI(;Y{4g*3BE2gU}-pW-*qi!({|C44ss)cdS6e92j}A
z3~!g)D8kh-B*-Z&FvKk^!adY9%*4gSGThY{mI(+3A8f7%)cO}>VX071<W0s|#G1Jq
z8MrwI89R9dnK^lSxJMe91O*xf8N!Bm&|3%K6agL5M(vI=FbKLwhlA#~Dp{*ot66JU
zYgy}9>scEZSsNKyn;2P}8ChExSz8%d+Zb8f8Cg3RSvwh7yBJx!8CiQ6S^F4S`x#j$
zFtSc$1obE?6;ydI<BE91kTu@Si_>pt@eb|%f(s2SQIFFYXx!s!SU`=%%&t`mio7W}
zW5nIl+dL>V($^x$(9a~o&ppW5$Jxx=)6)ZC9ZIE#8Y8f7DA+TCEG*Rus=QYz3`d+U
zLJLO}yRif$PIC}G!&>~o%*71J8U;n(9GoHPZR#E9XJ+E%6X|Ff5$x(>78Ggj6<`_W
zj<63;NTN5@U?EzopvwD{!VtyjGPDrI>IN(!i_<)WPqBt9y7`zPT!%M=L%fVk!@>>y
zL(E+KJUpG<J$?PW98C-&JrVZe31M)`#ZtS}E2#3`p)iDTx(qFZvAO|E2;(#l;Zv+3
zjI$7EU{p}#O~sjZ%}q@$Bm9gbOaly@j7`E!ox@!W{N0?*&7k(74^e{s0V$Uu^`V9m
zs5*ru+D1kNRo;t)!xW+yUtNmRVdw#ir!vK92Eub#0~2d)+5`$n+=YNkkh6D)e~@vo
znTd~kxVMwPv9F1_qmvhGOqrN~MASF1@N5Q!=L2elCr<aFhbNjNu%uC(MiB~DgwdD<
zKno~%ai>#9rw|uce*+hv2m@C~KUWv`2-DCAA1Ct=sGT^bN3hLxg4%nnpm4=iUlEut
zar4IM7__j&YCDzy#c3YGb6C?U&P?CNsGz`mfxtvL=<FBjOq3IKW((qM267H#B+3ft
z1UKl6%n(n%cuyBszYxfVT$F<pp~}F=T7WVd+EQvae?Rb!5%i<(z;om6pkzw?=}qX<
z)Q~U-kNpU;uylY@A+AF=oIyvJ;T*t5>LVMGe0~$Si`)sa99Pp9ma_1b&^YJp&~gFD
z&!}foYGTO)I8B4*0aqM7ACT#orAZgab60SboA7oXKHuS-yCchYI8B54&X^?Mb%PQi
zY^NyZbeUO*rN3K*zf*8vm{FjYm!F}jfrXi`g})cnGF*ugd;}k~H`fCSz!NwE5FF<C
z0uQGP&;t){C6*L{(-4F=u$GG8e2tkT`anLqiNi;*u>rjOJe&g@Xublsk<i<lSUiZ+
zJg5gro<;2kdGR^{FA{Eg;T#!2_b2iQ02cq@GzaQGoP!xqb1~y^0x03*o^LmC@^v>c
z@-Z_q_jNJza&mGFGzvEHjqvq_T8L)^3Y4VL3MoMrmWiMM#Z`<DnPzY}2`wzK*pDSd
ziSQuyECH%aP{)TD7#Ma(e_`Qa2nu86VC7>KU=?MRW|e1EW>sZXXVv86V98-zDa7E-
zx>Cpi%;^<n@@DN7g>bq>nY~%Np`4ilY~HLh1t2o7MA*GqUx`3C_vJafS?|k3I9oM2
zy;-+vLO34{xx86F8bUbl47t5o-$6OQ<axYVe?j&9mErYf{VM}e_EnM3oAs-r0|Ns?
zcg##y9tJ)RrX0p@QD#;SFsoOTDGbb*DZs|c2WG7lVh92=wrX;+N`qPV<vCbI!K_yz
z?5qM{);mLPR%I~jqahcoJec)Wkq;CMOgW6d<at<C!D4@9cv;m!r&q%;0|SFm%yu?r
z$l2iHRu8~uf6HBjoC&U6wgk*Ky0?s(iJ2vom4lU=fk7_PsgI4BAs{H2k8!1tzLr8r
zMrN@>PG)h5LV0FRjzUtZLP}*`Vs2(~Vopw_LRw}{PHKumd1gt5LSjyiLP<udLP=3#
zUU6b_NoIatu|iU6NqK5&9+!d^SgyDvv8Y5LF)sy-QxZ#36)N*f6^c`HQj<#*^7Fuo
zl!7zz%N3k65{pWd6hJ4ZgLH%Rq-Exmq!y*7C?qB)=NF}9=A|o?<bw<-QYbD+P0mcq
zOickfsU)>X52VL2Pa(A;F}ENmRUtL6q^MFMEx$;i1nwb_ktL-i`9+zDISPqM`K2Wa
zAd5@#6(F~{D<qc|m*nRvB!gU1tdN`t@_kx<X<mv#Cd8#qr77vDCBBKpC8<RU<(b);
zRv>FLN=gcft@QQNGfOf`lk}4FbM;eF6H`D}$fp)r=p$>=2Wisx$S>C|$=8M0std7I
z7h)@yf|fp4Sz-}#sJbMUBr4b{M8{flap~(T_~n<RS}8c@<S3LS7G)+T<)juXfWsLS
zKH!*9%E?bo%*m`uO;J)vEJ{_#&&#P)NGwat%mJxZ$jmFwOi5KpNli;E%_)I;R}XA<
zdQpC90kYl23Q3g;pm+m23M^f$V2i8*<T|~gRM4IGsT!JkMX4#J$*CF|5T!Z_NU1|p
z!Pbte8hl1M$cG?PQH|0A30Z>`WTt5-LX3z83C3!IMIo9&=^a@P8a5!|TCg%?Nxg#7
z;tUOBS3oQ%N-ZfZ%2R+SwdShTQK+ufwB`bP6J#UEm;OmvsmUdJ*{PMqQ2%IJgB27M
zrIuypmlg+?<|^1K7(fJzOLIY*V9}JEn3G(Z14{A5rMcjgn3|ZJ0SU{r{2~od5M-xT
zf|3@*5t`7j$xMS<rk9ae>|dT2P?TSgT2xZ0k)2wpi5?ChQ^494Y@vRM&Q7far4&$b
zfUv&4LTW`xQDSllIL9XD=9lJ`D3m4Ul%^JgLkpw`WDG<G<OQ&Sdbx=O$l<17Ylj?}
zdJyHHAOjfy!ut9OAg`7dAX$WJMRI9TQEFZZB-kJZ6vI<YqK-lmD2XT}DrhSt=_nYW
znVp!D0yaNCO#x~SI50s)0xUj2@^C*v6+tY6sQ~e`VfuqhbFI1H>Osy=EK7w+g3JO(
zTV85Ki9$|(et|-AWpYj`Ts^XpwlG~7M#5ZOlCO|hRFqf=*A7Z9ki?1PP<;hM1CYN#
z!CA{y3(k`PMX3d#TwIx7S_H|g3dN}<C7F5Y#R?gzMX3rJxruoxi6!|(m70*$nUi0V
zQwhqKpqv4=5Rq{ztiYjG4C!}*?5VT@c@;^Zq_QB@N<lp*GcQ#gth<&Al%VwW6&zDi
zAjNM0*b0T5#7a;pisqdB0#IF$n1k#ZABaj@1&B*ZGD~t&t)Lu`BT7;$N~{#%<yHtt
z9^%AW2vwO_ky(tQ1Ed5=3&_9G>L68->ahyi2(z5Qi7vSkVh+f%qQt!P)ZF|OkS|N}
zt5S>d)e({<naSB{`9-;jB~}XRdPZqTQpFkh<)BcpQYa}Zg(L*1>ncF@qPh;r6x9?x
z)m%N*N?2&tLJD&9&`i$HOUq0zElLChA9@^P3sh&Y1_fB4f}9tenwJui@0^ognqsAp
zmY7qV3h`M=W^qAIVr5Q#dOnIcNRLluUN(wgQEG8PeqM2ASt`V*C`S0^r=&V179q=&
z<a_2Orl&fUmXze@`GaF0C92@TS&)~G6r5?9IjMPxxu94;t|Q~YHDP>eML~X136k=R
z)XemZ5-SBm0}BI)i$HN%o|#gTVWnVbX#^Fl<$?yUOMaeui9$(!X>tav5s;V41xdMj
zd8y?fmWEPteqKppW?pKMr;Cz~LIF5kgOU=A4N15#9wfvyt@#*xMMoP;Be=1Yo1dGS
zSE2_luu?U^6sW!B18R7sf+{XhjS6c=fSLp#er8^Ber_tLhJ}fwRurV>rDT?r7QuzN
zklHGsgoxTi0*N46Th?4$u%<*NxFMpDsbGU#OM{i?q~@iUWLPU?YHP#V7$Dam*@J0E
zbS9|C2W2pQeOU82FSQ(8Qz&GnDdgtom1HPn7AxfCgW45Esfj7zrVOa(0IoAYHh}!E
zV5<NLE9ABWxS^-12X3|cr)j8zO;gv@gA^1R>b}0d3XzfOnvkX%s4WOGs#q^GFFB_)
zCAC-s#KmX}fdq>oRVs)H)eZ6kG~gj}u=*7wfgJv*vbB(gfxf;1s0J^|SAdwIkYA*L
zqzM!raPLAIG^k+-Z6?7z0##$DV1TV9my=jr;+dC{TA^SIwXawY5_<}|3Wg9vK+cA^
zr8pX{J{F+?Sx{R6Vjn~&q;Z^@Qw*uPAT=?_I8a={jZ&~h_8@lqkwO5?5x8Wu6?_v*
zGV~IYiZvikg2oQ4k&~RCSC$IuD(2)seGUrRVo>8QB{exSH!+6`>S<6SaZOCl&`2xI
z19v(#z-?I_g-lSu!4f#A*B1>I0R;_Mg#x&71#ap?jRNIUQ1V8y8_E3`4nUGCriLq!
z&4W6H4sAWC-w`z^a&r$M3aOak1skX!iB<=7BU1emb5jk~W5LND+WbKzC9KU$WRD_j
zAje)Kn7sqjB1QJ|XoD2gOhs+wLz+jU4bp*VkamwYNJsMM9i)*p+8`ZmkmiDGDNvgZ
z($X4jkivRcs7>S11}S>87`dG`@D0+W#3H28AG)<iNwIdcIXXH%T2zWU#5y`YnyzWh
zz#ud&^Bo%#Ls&Q;<4l3kq0-TzQt(g$(L<$0sl_F*fzr_tQR<I~g2NZ<h$pDwh&&hw
zQHeeZ2^K|ePuVJ92x%jaM8gL{A(NWO<9(o+P~?F=utC%qU;`UOzlIFhI*joxM0=uE
zXUL3N<s>Gh<`|C7qmIs_>MPK89`%*TXyahCaX?z*06K*MTHO*0S$l=tbA<|z#8yLP
zYGM)6G-_nz=p-t5#(i`Wb#xMyste|zB@mv*9%x>Dbj%8KQ6G448aiz}M5a(7PKGTj
z8(p<GWLNDmFxW2G;Ks(xz{<hO$;!pYcwe4sjZa?CP5{t$2=JmN@OB5#egn`#B+!ys
zLR%id+Cdsf+4BI_Gyt0(!1hve*8|8veO~b5Wu#SUpfx9u#vCsfFAaA-fJ_ICdL$>7
zq^9Q=Re~0{K*ydSZc5J2$uB|?ftLR;*MW3nHbFt=lDIsNm#dl=T-<<6L<$PjIXqCn
zfEMV1ECAIrAjQazM^&u{lhOm#N7fMYLCc<sQbD^D@>0tcU@AZ>`_LBjrDP_TK(v6C
z;lUJwg9x!44_R1K6QUgI5s>?krJ)P-kcBj%ZUQR>2Q_413d#QnKY-%`SqC&KAX*HN
zWsqY8O}Z8qbo%-VDXAr?MY)-IsgM<93ZVT3NGSodK?Ag^Q6VWcIkB`j6})8$$!W#l
zEjFM~%P&d+?^a5xL<A@(OBd(orou!rQ;Q+NqpuI&V3nI$TnyT~lbTtQky-@aa{%!a
z+G0bfPEc%vSGFnG!c2uESv|0*f0_n*;KFSrw3HE|5M%+qsbh$$%rxjqJ_XQXMu-?v
zoI`w2j97z*CIDZW2+>&!p+JihAuJ@LkmC_y9yU>J%vFXE(`tFSz)=oL_V9f<CHW<Z
zIp9@(kZca-d&1Y~8dxI<yP_`C1<COeSdpj+&&((WYuiFL-&pf<)q+whFBh^;a148*
znT6sSOasA%B`He@As$66eutH7yzu44S&-$$Sqe62X$~?lY^{)`t&MObC<Q@xwSY<r
z^n@Cn6>AO4fFPv>sYS`Dc_oSIsgTfDuvO47G%!%mS3nLqO$9CJ($Hdv0if~%RXb9+
zpqYUrQw%Z)Im{uZK@tkcJkVYgxI+pcyKg-5%TkL%QY%U{ko={ifbMe8DpYWfGde34
z6uB@bf{a9Rf`Y9AvF0M_(m`363$+2_Z0IuOBybS~D#eqbC71%ZyaX-OF3-p;Nrk8e
zc@m;D9JG4^9JLUc%rp(K22cp=mE?yO6r>h8Cl-S?_JP|q#o?JH85-)!ZeXB}rL0Fa
z*AQB?gEJo}Fc4`BQX(T|^9n14Xhe9T_!}V%iI-R%h;u<ER$3`UgNKhm>+iueqdIK#
zS_iQS2uZ?7Jr-Gieo-bU?SU3ES}CY!s3RE-U7-pd!ADq_0ZIy)d1?7p3hJPEMb-h9
z0|{CwM1v?4Uw{NK-4Cjitzg^7K)D6U0lA4q*{MZV3P_;@@-jGztRPVfiYXlh1$})5
zSltARdi7$63WUo+dLjFl&<q4gKn+z_HZlZ3WM6@#K^VH%1}TbB&4w1@Af-?yxP${o
zKDbOm?>iCLKZaZ^LH6N*mX<>7gzX@M@IY3Af){B&7<daAM79<hq_ACD5K)jG(DtYF
zqD=T+DO4HIRxof{Du!;4f=I)RgLPjaq9Efy8WQu;L0j7_4WO37#MAQgN-$zFEipGU
zr_xG6y*M$iShqN}C^HQ`;EOY>QmqsWO^}QO83~K7q@2X$Y;}YaV2*>)Nr^?!oo>Y?
zAeB&KzzG#9k(`rXoLXF>4oXCz08s!-Diq`wlomkt4ukelg9TGl6f#Rvb9uRH!38*$
zErG;sVndEu#G+w{FF;PfvW*QQiDe%fL;|D>c_SM{6k{hFL>Ouc>QW7e6pp=Y5J^zL
zL-wdxDX4=tvmuESwVMs09%VZlLKvFI!28)CqM)`5EVQxC#qd&TQyZvC=H-HItH4r2
zLF*K7A%#@+=|CDZ$kl&NX{rLWodex=0r3lT*EOt&0-2<st)Q-;uAq%%pk7J7TV_RS
ziiV*kNLE!r10)Y#t%fEA)(9{CVLLrRnl#lx4J<y!t(v1<e8>p{kiEl1o@)T=kt+<Z
zF226LLOysye=)d=m6}+bnOdZfk(if~1L}Ptx_z0c#gG#&lJkoo1xN}=0ce>5FIRF-
zVsWv8Gc+p%m*&D-`N{ct#U(|h$tC$kC_OM8NHvVvEe7pTf_H4eSpl^}2W>ln3LS`2
zP~RBTmIl%2lJE{2sA~e!0<LvIjKq`_Xip7?6QEkPZDG5`AbAy3?(lLU`Bbl<D8D2h
z)F{#`$qz0m0tJe#0<65y(5!~$Zir){Aq4i9wt|v^j)IbcHh3d0Y$*t&4#5ae4^WJx
z7GVun96kU=4Xn=s@-p1->8T}7l`t=WoPrWFn5H570A#3MT4r8~Mt)Kj==1}$MiW$R
zeo_`%B-)}zBP2Az&VqFb;O+y(4XiK>F3rVs5I8KsE&-oofvgsq0^nw)r<R0(dbGi%
zxf+-Tf!h4w-V{=6ALJ&41!?(3sQc=Q;SK^RMDsnwENxp*{}~pcSbPf72@NQ)4s=Hs
zmn4>CCMy)@7nS&x<|d^UX@HM`fS812CDe>Ws8tHO3Q15Vx{2wjpz|e)gY%0@Qd4jQ
z1Smiu3P3|;8JWd;AQ3&t*ehaVA*iXNiR1_*&w!+$4p30E1)Tu`aWY5=xY3K?LY)q>
z0b-{f$hR7>R2f{F3r+E0aY!g2B@}S{f?^LcfC5#kV5<NcxWhC=1EdwC9I1y(lpaK1
zpUADm@C*vF4QW6O6r_kFfxsQFOw|59EER(?B&uq7PNICQ5+%6w2owYgwzjqkrFki-
zX_<McDVVtj)i6-5MGJkDas}no8-$m@O?FLC{D4ylsJR7VWTt6g#ucRw#$qCMT@8wK
zXvKkY91t{9KyxKggM`rJNyy83AP+#SL<&Pt2of4KB*g;sT_H$Tfpen1z5<0KYl$f-
z!Kp==sl^&7sS14H4KEjBfCMy11V4^KFF8LiIk7|op&2uVbrcN2scSHFwZXkbwEm?I
zDIH8uyh3{B)kXQ`#a0T2;C57LZeFpKf)T8Do0ylE52``(L88%!G8e7T#@hD=*#PNW
z8yO&Uf<$4agV-QkQIwiyrJz)hSddzz1noeB#6h?ck6cA!UUEi$k(GiHXm}HgUbuWo
zegV3{pbl+fQBi(5bnF4mUbN8;a4`!R_%c#Q9^L}EvBFBhK+nh&&4fxT1tfnX`*|dX
zo+0+oGba#wkOTw@cu1>ubYuh)BB10)+&Mo8^@Dz71W^bV!y9j~(g}GKqzLIeAz1eW
z;!RNP32qN7fE&<A6%?Wg53NE$N<nQ$43)v9x$sslczg&H)*#j3ffCSkHAoxy7&lOB
z71V<P(a;JSR<D6HfEy;bHGrj&)kDTaAr30Wv;etzhpY`;CxGTqP^{7bISMpyl9E~h
zKK?C%mrJD@Vg+=zuhu51$POe5IqCy8si+S+D~+fDAshz4CYThoz{jp38C9#w%as6f
zJ0iLuquwY^2e}*+tVrc$W*XQ(df+f4VFm>hcSy#7xX^wBYzhS=1RYfeF`=^X-af*y
zh!zCK6bmF}SV6|?ijnFANN`&zKxiZhP;VbJ)|r`#JT48Xd=T-8qya35V|E0j4JwtF
zpNC>1zL}0<*i;9SHJ~7%+EfN~VjW~A2qT3ua;=z>pPQJOhcSc?uAz|!`$0w|=jW8>
z=7HT^nwy8@ZkT~ceMD$XBBBj4aQV@2bl`Gy;1bkHMCx0Ent7-_W{?QdfnXr@s7FDl
zr=+Sw3J352r2^=ta_ATkM8MhK$3IBHRsmGdKtw$Koc(=W6>JrZta-U0Laq@3u6{0_
zA)!Gaabs|O1FkxdhWS8cV>GCzk1XK~8mxrNP&UW_oq7*Jj4oh?1!P?mC=cRWuLM34
zvINN>L@ymQAB$yP8@W=0tzjZ$3bY0XIR>U35*(0%8PhumSAgpeP_%(GLq=jDb7r6g
zh4A161vI2gM>H?!w&D!r63R|@gH*1dcmkP)al9Ku8mU%<r~(g!f|#)20R<5x6d>V>
z)DHwn!Gaz%+EfhggMzXE#Bh*22*cDsq6e%9oGnmQfyR6sL5H}ajP}5eNYez3ALeKn
zXo9sv@(@}2!L#{D84h6xd`$^>C<5eg{Oi{gK#3W)fDK{{D9Ipi?}P>%WEl_mlsQll
z0x}w;5*99?utUvjh@=X#1Deu7%d3h=UsVWk1JZ8NXiyBr61~0<mws?cLG}V>ib1v%
z9OJQ&G=x;<B7BOHDIq}wIz<`T3`n#?4MACri0MeAC`Q*nZ2V^C!B&nafFc#zutUT&
zcts#=CKmaqK6nVHq*e@)6@!=o1Px4RF954I(3Fs{su0sU<oLj6CpLB3gjODcauc}6
z2U!6G>b$|qY`7HCY9VBK@OU2LIB~EkplKJ#JSONEe(?F3#aJs>P(cYRp&&<qqK?~x
zW{e<C0@W(8?gTa`!Q^473!L;bW22!_fP3X4D5oHm;$Zi~tVCM82vUaBEQZEUW^6Qa
zc#~!eQh*jK;I<0MMWAqpmH<d011mSc3Xu#&Q;j534AKJ5#gq>i!`oDlE&?@HLcv!B
zDS=l7!NwlJoi|EHZ84WcVLNXdl8Qia4q7w?UsR)KfU*DzBv)LTmX=w8w6Y7f%mb-g
z1sW`cbO%8vb3@DqwVJ@~R79<mpO*@{Dj_*LHANvQ5qYU~F?h!YNFKD-DHVCOFIb=~
zwWtz$=q+eTcRJ*rgpAZ&(ESMD>_=+ugSFF;R@NetJf!}ERLZcmwV<#<%0{3p3T;7#
zfe-UXl#k%)Hjr`<Mp6f@#Zh!YDgxvsuxOefITdULXzc-{%?suh!?Hd^H%K1{gDgZ}
zu!*)B7h)zT_e5vLf|lb#odgjF8xCzzzzhTp9YAD3(;_6U$;C7slsh4*1ZDwL4N?{c
zI|IYZ$b}I;e<K-$=6NI;%n(451lx}#7?6~Z5Ee+fbYN`;Br&jMsG&mInqpWuLWarE
z*A;_gL2HXqQV*oP6`d7J**F=hji6pE$TkoLm%kte2tx`_aCaHpE=0;oAZgI*WB5Wc
zkg90JYzo$8#D=KLh(Tt6mLfyb5hSgGLlv?BPR{^mu)`F9W)DEdz%X>|4Q=@`NETd9
zLr2m;IRklY4lWOpfG$IZxJE|-B!m>{=oW%n^0<~FgN%i)pH;5_EyvTyRM1v1)P$@(
z29=TEG7+>U2r{h+DN&J1QgDfz1T94onGa+zygE_`S4ZgH0hjKn>8W`sRtlNmse1JB
zwj8i5*ai4JfMb*q<OFcr9<CQ0amCT_6bkVraVxArra|f=v?K<S0AZ+A_*PnjltEX5
zA|-FsKm(~k8mdI&f?HBhF^E1;ey#wW*bZK21G@zXx&*tlIJH<IQ6VKWEiDyvMT<f*
z=$aTvY$_z@=N2RuWfp_(YsyyurvlLJL791(pjGpr{v|wfA?+{#U5No%%>p`{9F$m~
zg&Am!91@F|3oTGIse{&VqWb~S5H2oF0@(|y(LpDN=cOp5=A|eU<QGGnrBRfclUR~j
zmI}L+O2GhJ$s0m#ElUL5;gnL60UG;K(1%=$0zD}J>Qayr@V*DI5404(QGz4~vd>ll
zniCWd@{j-rIWDIX(p-yH2L~G{;~=~UI+`3Qjlc$&qrq0{fP90TLt&G}knD#r1*sVX
zT@(*)^G9dGG=myKpicehoFpV(Kq+e2%}HYJCqf#TMc$}1h*xVfFnClq+p@7RuyV8V
zu=29<@iD#|odqH1TDoDld>d&*4%9qD9gPHujLw2UE@1?P#po;u^oBi}uVn?*wM5N=
zU_YA)QX`E{fk1{j;8Q50Qy`FWnb9c_a7w^)L<6Yz0qt{-PJyIWfNnm7tdWLxQ=mOW
ztV^V!<Bg!1Bk-+Ls6*|eQy`Gz2apC#MyEh9f&?^#i8Nt?99W>?MDP&Y=oE;;=oARz
z4np_@<meO#DEEv`fuM!}QV{|khJ{vSpivvpcpTao_UIIdf`S6l7%^xt6Dh>N<u54c
zKo~M03F;q0N^GRDN09XB6o>+N!4!NJ05o5UG`b27Bha|3l>%f87CP_?nH(6M0zn0%
zQy@hOpu{pd1u{AXf_m{fWXuONsX2OJ4Mn%GgC@0x-GMc~M$e=jo$=5EC2de^HyLRb
z4>bA!UkeCcM1Ud!U3L)wI<XIOkS+28Q>29$#aNVJUA=}j<pP@<2VW!)@5F&ziKGy7
zUIsE30V(uAijlp9sv5D<8nhAx+KNT2-UBVahiL|#aR@qdH8BT%_54sdsTL{pA<gh;
z__BUb3kpX>p(}+q?D6ja05xGjL!_f8*n*a-K=-~vQx;K&Qy^y+=!hsJDj=h*pfN5`
ztbs6&m_yM8-x7dtToyAYV>g3XOHrK)TMhzVR!-qr7U1FtQFb7$Wrbx_Py$4(Kd0oB
zSV*WimZcUYrh`tGgD(Vv3PF$4K#4HaQ&^EA2&xCPyc2dFFjNTnFcvIkLCUejloXc$
z_~9HHh>kUABQxj#Sg2v}HGiOB0B;e`F9My|2}?G3%)xXlF2i&b(h_ruQ$c2eO9gPm
z4yvOzVY^;2mxe=EEMZ%D3Aug@ayB4b9?RNqQifJR*OfwI5R`X7O>jsz6=~Htw8M{B
zk_cNy23wT~UVMqRNS>6FO-2uh81_eJViZk~nKsn3A&N_Lq5E(_X%V7==<O{a&Db`y
zfQ*7}DAxd~(T8pcgSOo?A#066JIp~XOxW3d3V6z)L`Z=P9*WgLIs6-1p6Mun@{tdC
z1unvepw*@+DbSHgP-_iVAwW(;B>6;Y64r<#4QpZ_7zLM-ppZh8+mJdPNhfG6H?r4Z
zizz|cKm(;P?|=$+WI5F1q|0E121pzB_1xg%1jkx#upDT>8+0@_#-<0Pu7QpMvRgHg
z9RzAhTcO4qq69=;H;rr{LJcT(A?mD<Vj5aZg8YSJRW-PW0zLvEzX&o!O5FNsNQsOT
z6(Bo67-}HCb<^Mlx>nFs2i}B$@CV2UXsZi}30@}+P7v_SKwv2)IHw{KIyAQ-rw7pa
zv*43y!Ag;i6@g1&)Mt<!$;bFtX7tpD(NiCIxlqq=fF~E9{N%(Oa7zzz8UScf8Ok64
zQcoPzc#TX=EP{;!fC_vhY0xwfYWEu?g0_fKUta;dsRH>X-(t{~H?YNshCfZ0*`baA
zfDSbR)h8eqfNBx6Q2<a!7n0{eV+|Cq&Vv{QTAv59kMI!%5LMs}Mj*REZE{dy1HwpQ
z4~rT|t%K<QgUcb1T9Dged$%D*f_eUF8Zc8K4#Q$5N>>p{9^@3T`H+-@(wl<02bNSI
z)+6;}iakJ=9>C6S0{8krYB2jK*i6Er3ez}9TFOZ+0qyWnFtAq0RIpKicpb7f5X<Ie
zkhFp=L=|L|2^Mxp{x0@UgXRKc!GP2vkSIhKBrHK5f`m#iTFa~m`Qi<PBt#o%5d+BC
zNPS;qiy*c`n_q;tav~i`f|@y@-oV^)2;O{(Sb+*%3x{Nm9yrP9fj5=-r)j8zH6Yy*
z>Z`7aa_$2x3?ZWipdK=0*B-Kw5IN{L3P=OCu@sOvS~ZRwz6dtju6>X`q>37`bPXhd
zW*}19f<z3OfHtmu`5?2PmVk2wh!08u(C~xon1lA>K^r&`uGI%076xiagO0}m>4V5Y
z6~l4>ByVFg4wMrywIQ+uL?>n|1QHD>E(0A@14)KRZbw=`0d*6|184z*=?f$UP;FSf
zf@wO;KUfSP)>Bvv)kIv`MCl+EB!rMsPK6bu&_HU$R$4(X7eezpl9H0jf>bL7b+rAM
zkoGmah6Yul(ds2diOH#;t^w+Ck{O^<lyF-gH9aB15b74#XbM3OVTllExd$}~lnTl5
z73vYAMEVMgYcRdW%LO_>YA}po5j$1|n&XdD2d%pusG%zG&O-3HbdZD&8sLQ;e1JX-
zIC?#cg1S>_N_uLEZ(?ytYEgW0Mq*J(d}>8Oeo+Z>XMNBgLW)s8fIFKQ{Zg<f(OpnJ
z#;=N_9njGZDA65IaAOjs2bzpDii9eGauOh@y#lG{K&=eeJqE}f5TyD7n-WNe0c;F-
z7!}-MKx%n|Dq?uEI}`nOLL`N#?QD=X^j-njlZYlZl3s#sYhPc5$Vl+{i=es|)Q<!k
zhSZS+^Fi%6kOHJC9V`w#X%NhYHM3Bgt4N`Z>XFgObOi<Eej9Qcg0!%)^t(qV(^K<O
zGD}K}Qb7ldL7EewEC%WCp(QYgAhZ*RtpkXZnlZCF$~XnYC|C*y<pdnLA4S*bWICd{
z2gMS!vkB^VfV%BSMFVKg8QdfU1uaM^BtD>h9kAk@<kFnPl2oV=_Q`Y|$Prku`FvP>
zfeb{7FQ^gNOhr<KoFAjJVzC$vNq%^yrcgYAYjzywNId2sxeDrbT!xKKwWp^-r@l+_
zt5S>dk(<n*!`cuBxs6V>SLWoW=cC@<0h&u2UGz)MMZb8mHS(0`=*%^!<X0G-xz0;L
z8v7b<GuJrQo#-g!fzSN%PxH;sE6FHEZ8d<Fi6Abp1CJLJ(_kG6niCYj1JICZZ{pYR
zgI$MkKK16_85kG>glDibGZ-2fGYGOPDmXa!2jnCsr)K2mq@)%pC<?MGDL6U?yQHQi
zmgbZwI3|M+NK;f2WLH*ja0m)cP0r6tfeWiKFfe$E7;-?(V^#EqUYYLimk+-@R6#|M
zRS6<tVBisyT3n*2D#)trt(=x-X=-5L?&##Kq|Cs;swX&?lLzE56H_yDRt{E9RxZ#1
zNeqG<ib@K}-~p^+y%dPU^b#Qs3ogwKNG)<ntc*Yx&@0GG7x?@C|9^gNrj<ep+JYQP
ziVD0&XvRRAR>h8aDM&-}#fZB!of3<9)rnAqWSi)Hc?AtY4rL`pUPGd63rH;jr&piM
zyi{H_?3N*`L9&ajR}|zk6-7l}1Cs0l`AZeQRZfXTNH%eFgKbh(AUzBNGE)hMVL)ao
zl5NskH9=vhrl`nkNt(Z4x1eUG7W0Bm70J&{MUP!rSi)mDGqo7WZuyUf3M}G+9O{aS
zkWo`aqAN-*E`jL|LFOQ7=bI^@pf1Rvp{T^GPps2HQ?#HMQNbA_P!&k_2)q(eP!r_P
zR8-=%Ajux&5YokOA(B!go0Z=gDkuwbXkp1t(548|6slt`=zv9}y#T!GL?}YCP4$<&
zf~FvcwxSZREt)@}27xnAP9<c*5KCl3!;aU8H1$YsQ2#3fa)XYd0<R-^Zh#H^fnwQ=
zNOvIVL2`@cS49Oy1_p*(lF?l3u+ox2kXg|oG9xpuL@zC~sJKM0v^Z6-BsH-(wMdXz
z$srspQ<MrC{0Cjx1iD>NkXhLw1}t8Znp*(s66=Al;nT}btt=K~R)HFaJP25vSe7ct
ztm=>m)|Q@=pOl#6l30=&keQsFTBMheUjosq<`557k(r#Ir&n5#lb@KPmzkTGo~j4B
zhft7N-60k%54X5Dzo<kHya1<|fq~Ia`YA6P1FRBY5M&MsN-aoDEXmAEcg;%yS*Q|K
z1QXFq%}W6}89YKM$Q+8S)GxIxwMaD@Q*9ndLXbHcS+QeUNor9<NM>$ov05UgmPCX!
zZjI{XYSbWCqb7ch3=9kk(m(lF7$6lYgCLWVnjn*sx*(IHh9HxYCIbV5h>R{jBZCQp
zAQSih8TJeeDhvz^d@|Ysj0~m>f{dyR42(Xq;eyEV!GZ`k-~5!!v`lFIRjd+=2)A6Q
zj2?JQw^&gSr!G~pbgALh6$y`7m<wGJD~r{Uk^<a)DT$TEN`fp=7&<`3MzKZ=7B7L;
z<A8jG-4;z;wt#Z2uxyMF6N5P`CxalPx*#Jc0>ot32{VI|JA)vjiXfw^AS0+%#V@;3
zgpq-jgF%o{gMon|ME0;KN*t(ge+S2wiXe+BgsG}3$f5>es;LRGs6&|Q>Vhm95T=HP
zAd4pVZ;&=kkj4LGZN<1@B?zp&#URM4=okzwD&S|#DhRSFIr>9ILF;T36$Dw89YdfZ
z@Gw$R5M)(>YX_GdX{klZ3WBVva8cOAiHd?Cs~X%;(DDLR1wmGI$1td&DXGQDMVSSl
z{Y+{Kf~*>Fr6q~!#p()zteTENP^HkepN4`UtCnLRRImtKVrVJ|vTDP{AmguE3JeSk
zQgXM&85s;11X&e8!E<`vYb6FpM@I$*1}%9;39yWaf}*mEi;Ihbf}^ABBPJad6-AIz
z1_nnhM+Zj+2FB}ht7Lc>3{je^pz}Og`56Sc6rJvHLzKHXhWX_e<tFAJFE0c&c?G#t
zol;<GV&EwdGWrNQ7gqrk)=G*h41!#0PHUK8N@KAp1s7^cimD8PT<T6I7-4F86|pG>
z7iS6;3MHWOPDxRXL6A!W;gmpxmXyRwB}H`xK`u?F6z-p(wBzE4O<Kz-1(LL|OKUrQ
zVTQRV7-2d%k0~i?FbHz#IK5zpncxF%K%}J>DJe223v%g#yaP_RE{<Uc%?L%B%7R>a
zAVq&54#cTQAEf9nUPTNH455nka*Pay41z3*-q4N^uZ@aPqKct`igA>`fsa|KNkFzs
zp?h&~n2~XaNn)v|p_!X$Rd!x_PLZRlhj)f)K&oY`Z-}FdcUnoQU#1cR1B0WYfIKsU
zAQO7m%1Dq2xd&z_$b{C(GG>4PF~v4TMg~D9n3D{_!jg*5l|aTS8VWKg83{6}!IVoX
z{!j)<C>skhsTc|}sTzURGcaf=K2l|45M)v@5oA&|6=YH~6J%017i7|4<q%}jWaWe^
z17!py4mILbx+)o}b2A7sDHsYeDHsVdDHsbfDVPW{DVPc}DVPZ|DVPf~DS*sZVC4j{
zxIhFq!X_}wPwB5752%U)dBs$aNy$u*Ny%K0NeQG;38Ybpl?%k>1`#|Uf)_;afe3!E
z5lDoe(t3T6X^N(TOp0cLOp4}$Oo||r6hS5_f=p6m<pzoIfCyd?!3QGv1(}o~VT){<
za-;#sGzLRKCI(g>K_(SbK_*o*K_)eGK_+#OvFadW)j`H;fQ;2-<pqT%ABezon=-c{
z+%!``CI&M>CI)km$s8bp6GU)<2yQ_pWsq&kAk&mt`9NF@)A*IYn1B+762#R$%1bQR
zpv5{U2?wVo7AvGB>gFWorGN&47#IXuKnYTiMVSG_237ciEUI9(8Uur`vQetJWs+rD
z8Uq7^hKh+LC<TDMZ6wIVU@XYQU?RxG0CqGYe56(K9l$w;S<&AwzXY<FIyD7U&c>;*
zGq5l+Fz_=lcp6Lt(_WLVfobo#m%y}-<^>2nIYdfMT2hBCH?cs^$cz<4CG&u42ECm8
zB+!gCFPKx3n3R*MXKuj2z}l%;#vsMOk(^PQm#t@P3}aZp7?v<bB8-s)Hr5bqhoJ$4
zg7S<YJYxuD0-;PHlo^CFhfo#}$`V2)L8xR1l>(tsAygWeGJ;rS1hL2nVv!NVA|um6
zu=A~qjdhZ8@{_ZzjC68R^Q;U_baFDwQhgIEtPH@cfW-9FVk-lk+{6Ma6EmIM#0o1z
zbIVi%odU3gv8hf`etwBna<YMefr&-3iHW%msCc(BG)^^2Gfy<rDN8LX&dkrVGBz%U
z+Gqi_(a;iNCD<MuHkw0hG&C{L$xE#$u`*1AT5JxnH`M?PObwF}_8J?S8JHmKwJ3wy
zYYDSAkyv|E%wX0gL9K;)H`N4eZL%ebwH5{j2x~1Xpw=eBtW5%2Yl_di7GUq18o|74
z1Pf<F6R3YJKo%#bnju?kZh~xaA}pMfpcWe$fGsv6Y_XwfD%8V9Mo<r1LhS{`uYo~o
zk^xdUo13OtAUvET3d$!|`30$Y;7Ss5U~;i6SQL_bjLmeC!B^OYK@)``imW9*SrcQt
zvUp84!E3Uq5k8Ym@tSOAfKRU(UN@WJHQC$*pULK?cxCbW*8+!|!Mh;zEO6KhmBry^
zsH_EcS3zVg@!D&N5estQlmpRgXn-Njz`&xT7sVjQ04eMsWu+0MtTciYi$;)Q(Fjs3
z8l{0tVMqaJ3@IFqA%&wcq;NEb%0WtDV@QE(3@LDpAqB26#AIWL$;J?qjUgsOw3$Fm
zHi4LI0&$Ru1=wy=FbSz-%)xAkxFwjKi0WgEh(MLbhzS&FLjuwmF@>Vr2qUUcr7<D{
zTwz*4a=8JjTKwKH!tYKa{O&Zy?@nV3cglm)6vUl|#u!dZg2+SDoH0f=N`iO|svpB`
zP-%#EOGEU`fGSPEazl)=1J!XRnEJWFp3BKk@=Yv2cBnZ<D4`l<fZ@+%NH~<{rR4kM
zr|Y5n#Mlf~9zB?iE#XcHN=<{L4QOLZ2JA*i0AlzMS<)Om^pL9xLv$CRR3wHNLBqhn
zWS~>UAk6^IXUSkP1x%)b$uvHYv-BVlXJ}xA$~8gdnxS$nQMiW2s9aRVh88HYMh2){
zRC|q3?KMI*$_UjcV^pJzQH?T2b)<<2q)iL)uLUa43`NcYnP+K$!ZSqS8KLk@kfX~8
zJ%OM^7iJNFtQRwjqsU^UAtobJCL=Q@BXcGbLnh-?CZl8~qZB5iR3@V|CSwC8V?!om
zBPL^GCSwyOV@oFEG$z9|CL;qTBSR)5BPQcyCL?1e;}ix4#$|>!43Z4sv<vG9fD<){
z<C|CjX9uOGfg3)0=nWr;R!B;Rh8u)qXb6dQD9;!g{7^0`4;uUsIU{HgLwRP%HW))f
zA0lOpVxKXp95jBRDlL)qnV_gNK~ZUfqS6$_DW)hY%}{JNLow3~#nI-BW{f6`ri_M+
z#*CIs#uki;OvXu!$&4wC=8UO~X-tL&OooO`hDJ<=#!QALOopaRhGtBL=1hhbOoo<>
z77Pr`(T3U#It<8uFh{Z793?o-O;J>$_{aj9f#78xB$8lUBX&?fN6*jzN*h9Hn7A>N
zZvv%Fp|ly4Hiyy{P&ye(r$Xs82yFy4*9dB^5!75GsCh<E^NgV88A0_MrLlqC2UTti
zb*3@YIAf@@jG@*WTSAmWg-r|~TvG^T2BFL$lm&!>>PUp}QXo_+gi2#FF<>%GVlqr-
zGE8AIOl2}LXEL$iPBQ>?3e6473=H6GON&$(+cen%E^cOMf?%5^BiM-+W-#^UX%@*a
zc2XL`%w$swBba!Kfgwz<g^6i0Os|D$k^!7;mISxU!rTCEmxZ}G+)NAe6cd=478d5o
zaJHq93EZ4SW4PNalFVV|8yFawo0vo0W08z-zeP$aOpS>}njzfp7HOt%Gc64)VD=iC
zr6eaOLd~%>G=jO=(A*%&0xE83Zj@?b3RPp0mI61&)X)&YHZrz^x!KGt%>WjLW{IZo
zxG+nzg!|pxz|g<|G0HN^8V!Nb5Eu=C(GVC7fzc2c4S~@R7|J04os&q0O${K1?~`@X
za#Bl@Gg6DJQWA|!lhRVm!K>P-N^n8#PleiVXa=5|FoaAmL1sV9;FB)q&^ZVr$Q(o(
zc<uw-yoS#)8CzHw86!NAN{MT^7#JAh82&;g4jUL4>>v|{cqR_TNt-xiVPZMXAP%26
zOoq)4LPnw><Hdtyb`UmahDa!AvxA1_CKkvugvQ3macF3sh%rS7=?z*MS|U#&Sy&jR
zBBC!j51Kwwpy|Veh^abAsxdKxO_jk?3uKB8)EPrbEk+3IQosW@qcc{Zu}|pO{pgGp
zWONZSGD_tcD+Q&1P$wTxXC*zQ;K<+*SKs(x*T7I$KWEo?S94PrGgAxGco#=g=Xeuy
zGv|0mOLK#GOIIg1XJbnPBLibIB~1lC{}2VgP#+&K5g+0o@8as_80r(E05gbED|EO(
zC8(0KzmI>Al0ukckh6zlkcN?|sU}p$&(YTvRRZoPsEUxt09PdiPrndXch?}On5VP9
zUwn|On`;o*x1KI=1zehfEE)>Ryt&Rnu8twDRP%^JaEN12h(fq$h=+oSf|IL{zn^<B
zD8xb>oqSvcSu_<Cc|D+Z1_XKfItE25c)La-g&$Nj-rF@Y-dIV&-w#R7*)hb`-9IQ&
zNkhrgMM+bTMN2`Ix7^Vu#5G6(Yymd43XU!=3eNt1!68A8o_-<7O5lPZo1hkhoC7gl
z!PC#hH3CUJR0Y&&f-Kq!3cNi`P~SK^I(xXfU^>IYF(^by0}{VT5r7_jE}p>wK8}&`
z*rL%r$Uigys|?{}5fJ1W=II(9@9FF4?i%mr>EjxYsR^1~f}Mjr145J(LR=$4phDQ3
z6XqHe?CI|ZPfKvGfD)CCf+DXQG)SP~1qxAIq3D7h!;s*DMz5}dDsLH%=mjezE^b|v
z6p)-kOys&K39{%ZDDdtf5W60pepn+HRz7I>xkiL2ggN?zx+=K&2O)(5dP!vL>}Y6a
zVPX<*;ArL&Z{lod7;kCl<Q8x4>||i(X71|jYT-y>Nko(t(0KO@j(714_Vo-7c6Cuw
zaPs%}adq^AM>JHCkH52{k7tx)h^N0FC{v&oP@vSHPg)T}lnarI7z->#42yt*BCiY4
zNze!_1wx_}ngCe@6;yePv8O<=LZT9&5vl3VNJ)@|MMyz`cRmZ$A2>>v5Le#-AIA_^
zYy}MIY0%Wv*u>1$#5LZ+$;mw4#Ld_+-pRn#Dc;Q4*x1C?#lXeV)ri70NR$=O<mKq=
zAL<tZFJ_>kF0PPb3S0tVsVO~!<6R>HT>V@;LqdaG;b|AD8)w-E3rXCiqocDk$UX5$
zg*enuSha*j3U>_*)f*Dz=ojqf8WfM)c(~Ib^#GFnpe)8BOj;guGd4FcF?6+vcXKjw
zi#Ks|G>vyMa&e9~HZ*WHH83$WcD8U<Le696*z%Z&f+DXcG;Jc4tw;qNR1{P$#G5&z
zWiptT;1xNGsDdhQ1@?>vS4>o9Be}3Qa|Y!$F$D$QI|NF5a2-lkR)hAhkow>7^_i)N
z0RW4n6tfibGz(B$kg6Eg|4)PV?+nfH_5Ur<`u~tMh!{OOQ$&w0jS|;F`u~3*{r>~B
z=>K!EoWs`thpa&v?f)Am!-gG@(kFP_f$-8*ibjn_#{u&5tWehEjE)1)a2#N?|3BLQ
zAMO8-_W!|sJN$z?qy7KU{y%7ZakT$G+W&_Q!Q<|rkM{owjN^~?|3Q0Jt&EZS-|+r_
W8lwMiX_#u1Vv&|eNpBjfUM>I<rGeN0

diff --git a/pom.xml b/pom.xml
index 8d4674193..b4c1b5f29 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,6 @@
     <name>BudgetMaster</name>
 
     <modules>
-        <module>BudgetMasterDatabaseMigrator</module>
         <module>BudgetMasterServer</module>
     </modules>
 
-- 
GitLab