diff --git a/core/pom.xml b/core/pom.xml
index 2b99d712fa..c79fe8e906 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -12,14 +12,6 @@
     <artifactId>core</artifactId>
 
     <dependencies>
-        <dependency>
-            <groupId>com.google.inject</groupId>
-            <artifactId>guice</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.inject.extensions</groupId>
-            <artifactId>guice-persist</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
diff --git a/core/src/main/java/modules/CoreModule.java b/core/src/main/java/modules/CoreModule.java
deleted file mode 100644
index cb2c500685..0000000000
--- a/core/src/main/java/modules/CoreModule.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package modules;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.multibindings.OptionalBinder;
-import se.su.dsv.scipro.activityplan.*;
-import se.su.dsv.scipro.checklist.*;
-import se.su.dsv.scipro.date.DateService;
-import se.su.dsv.scipro.date.DateServiceImpl;
-import se.su.dsv.scipro.events.EventModule;
-import se.su.dsv.scipro.finalseminar.*;
-import se.su.dsv.scipro.finalthesis.FinalThesisService;
-import se.su.dsv.scipro.finalthesis.FinalThesisServiceImpl;
-import se.su.dsv.scipro.finalthesis.PublishingConsentService;
-import se.su.dsv.scipro.finalthesis.PublishingConsentUnavailable;
-import se.su.dsv.scipro.firstmeeting.FirstMeetingService;
-import se.su.dsv.scipro.firstmeeting.FirstMeetingServiceImpl;
-import se.su.dsv.scipro.forum.ForumModule;
-import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
-import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsServiceImpl;
-import se.su.dsv.scipro.group.GroupFacade;
-import se.su.dsv.scipro.group.GroupFacadeImpl;
-import se.su.dsv.scipro.group.GroupService;
-import se.su.dsv.scipro.group.GroupServiceImpl;
-import se.su.dsv.scipro.integration.activityfinalseminar.ActivityFinalSeminarRepository;
-import se.su.dsv.scipro.integration.activityfinalseminar.ActivityFinalSeminarRepositoryImpl;
-import se.su.dsv.scipro.integration.activityforum.ActivityThreadRepository;
-import se.su.dsv.scipro.integration.activityforum.ActivityThreadRepositoryImpl;
-import se.su.dsv.scipro.mail.MailModule;
-import se.su.dsv.scipro.match.ApplicationPeriodFacade;
-import se.su.dsv.scipro.match.ApplicationPeriodFacadeImpl;
-import se.su.dsv.scipro.match.MatchModule;
-import se.su.dsv.scipro.milestones.service.*;
-import se.su.dsv.scipro.milestones.service.impl.MilestoneActivityTemplateServiceImpl;
-import se.su.dsv.scipro.milestones.service.impl.MilestonePhaseTemplateServiceImpl;
-import se.su.dsv.scipro.milestones.service.impl.MilestoneServiceImpl;
-import se.su.dsv.scipro.milestones.service.impl.MilestoneStatisticsServiceImpl;
-import se.su.dsv.scipro.misc.DaysService;
-import se.su.dsv.scipro.misc.DaysServiceImpl;
-import se.su.dsv.scipro.nonworkperiod.NonWorkDayPeriodService;
-import se.su.dsv.scipro.nonworkperiod.NonWorkDayPeriodServiceImpl;
-import se.su.dsv.scipro.notes.NoteService;
-import se.su.dsv.scipro.notes.NoteServiceImpl;
-import se.su.dsv.scipro.notifications.NotificationModule;
-import se.su.dsv.scipro.notifications.settings.service.DeliveryConfigurationService;
-import se.su.dsv.scipro.notifications.settings.service.DeliveryConfigurationServiceImpl;
-import se.su.dsv.scipro.notifications.settings.service.ReceiverConfigurationService;
-import se.su.dsv.scipro.notifications.settings.service.ReceiverConfigurationServiceImpl;
-import se.su.dsv.scipro.peer.*;
-import se.su.dsv.scipro.plagiarism.*;
-import se.su.dsv.scipro.project.ProjectPeopleStatisticsService;
-import se.su.dsv.scipro.project.ProjectPeopleStatisticsServiceImpl;
-import se.su.dsv.scipro.project.ProjectService;
-import se.su.dsv.scipro.project.ProjectServiceImpl;
-import se.su.dsv.scipro.projectpartner.ProjectPartnerRepository;
-import se.su.dsv.scipro.projectpartner.ProjectPartnerRepositoryImpl;
-import se.su.dsv.scipro.projectpartner.ProjectPartnerService;
-import se.su.dsv.scipro.projectpartner.ProjectPartnerServiceImpl;
-import se.su.dsv.scipro.reflection.ReflectionModule;
-import se.su.dsv.scipro.report.*;
-import se.su.dsv.scipro.reviewing.ProjectFinalSeminarStatisticsService;
-import se.su.dsv.scipro.reviewing.ProjectFinalSeminarStatisticsServiceImpl;
-import se.su.dsv.scipro.springdata.serviceimpls.SupervisorServiceImpl;
-import se.su.dsv.scipro.springdata.serviceimpls.UnitServiceImpl;
-import se.su.dsv.scipro.springdata.serviceimpls.UserProfileServiceImpl;
-import se.su.dsv.scipro.springdata.services.SupervisorService;
-import se.su.dsv.scipro.springdata.services.UnitService;
-import se.su.dsv.scipro.springdata.services.UserProfileService;
-import se.su.dsv.scipro.system.*;
-import se.su.dsv.scipro.thesislink.ExternalLinkService;
-import se.su.dsv.scipro.thesislink.ExternalLinkServiceImpl;
-
-public class CoreModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        install(new RepositoryModule());
-        bind(FooterLinkService.class).to(FooterLinkServiceImpl.class);
-        bind(ActivityThreadRepository.class).to(ActivityThreadRepositoryImpl.class);
-        bind(ActivityFinalSeminarRepository.class).to(ActivityFinalSeminarRepositoryImpl.class);
-        bind(UserService.class).to(UserServiceImpl.class);
-        bind(MergeService.class).to(MergeServiceImpl.class);
-        bind(PasswordService.class).to(PasswordServiceImpl.class);
-        bind(GeneralSystemSettingsService.class).to(GeneralSystemSettingsServiceImpl.class);
-        bind(ProjectTypeService.class).to(ProjectTypeServiceImpl.class);
-        bind(UnitService.class).to(UnitServiceImpl.class);
-        bind(ResearchAreaService.class).to(ResearchAreaServiceImpl.class);
-        bind(DateService.class).to(DateServiceImpl.class);
-        bind(ActivityPlanFacade.class).to(ActivityPlanFacadeImpl.class);
-        bind(ProjectService.class).to(ProjectServiceImpl.class);
-        bind(ProjectFinalSeminarStatisticsService.class).to(ProjectFinalSeminarStatisticsServiceImpl.class);
-        bind(ProjectPeopleStatisticsService.class).to(ProjectPeopleStatisticsServiceImpl.class);
-        bind(DeliveryConfigurationService.class).to(DeliveryConfigurationServiceImpl.class);
-        bind(ReceiverConfigurationService.class).to(ReceiverConfigurationServiceImpl.class);
-        bind(ActivityService.class).to(ActivityServiceImpl.class);
-        bind(ActivityPlanService.class).to(ActivityPlanServiceImpl.class);
-        bind(ActivityPlanTemplateService.class).to(ActivityPlanTemplateServiceImpl.class);
-        bind(ChecklistService.class).to(ChecklistServiceImpl.class);
-        bind(UserProfileService.class).to(UserProfileServiceImpl.class);
-        bind(FinalSeminarService.class).to(FinalSeminarServiceImpl.class);
-        bind(FinalSeminarSettingsService.class).to(FinalSeminarSettingsServiceImpl.class);
-        bind(SupervisorService.class).to(SupervisorServiceImpl.class);
-        bind(DaysService.class).to(DaysServiceImpl.class);
-        bind(NonWorkDayPeriodService.class).to(NonWorkDayPeriodServiceImpl.class);
-        bind(FinalSeminarOppositionService.class).to(FinalSeminarOppositionServiceImpl.class);
-        bind(AuthorRepository.class).to(AuthorRepositoryImpl.class);
-        bind(OppositionReportService.class).to(OppositionReportServiceImpl.class);
-        bind(ApplicationPeriodFacade.class).to(ApplicationPeriodFacadeImpl.class);
-        bind(GroupFacade.class).to(GroupFacadeImpl.class);
-        bind(ExternalLinkService.class).to(ExternalLinkServiceImpl.class);
-        bind(PeerRequestService.class).to(PeerRequestServiceImpl.class);
-        bind(PeerReviewService.class).to(PeerReviewServiceImpl.class);
-        bind(MilestoneActivityTemplateService.class).to(MilestoneActivityTemplateServiceImpl.class);
-        bind(FinalThesisService.class).to(FinalThesisServiceImpl.class);
-        OptionalBinder.newOptionalBinder(binder(), PublishingConsentService.class)
-                        .setDefault().to(PublishingConsentUnavailable.class);
-        bind(ChecklistTemplateService.class).to(ChecklistTemplateServiceImpl.class);
-        bind(PeerPortal.class).to(PeerPortalImpl.class);
-        bind(FinalSeminarRespondentService.class).to(FinalSeminarRespondentServiceImpl.class);
-        bind(ProjectPartnerService.class).to(ProjectPartnerServiceImpl.class);
-        bind(GradingReportService.class).to(GradingReportServiceImpl.class);
-        bind(GradeCalculatorService.class).to(GradeCalculatorServiceImpl.class);
-        bind(UserNameService.class).to(UserNameServiceImpl.class);
-        bind(MileStoneService.class).to(MilestoneServiceImpl.class);
-        bind(MilestoneStatisticsService.class).to(MilestoneStatisticsServiceImpl.class);
-        bind(MilestonePhaseTemplateService.class).to(MilestonePhaseTemplateServiceImpl.class);
-        bind(ReportService.class).to(ReportServiceImpl.class);
-        bind(CommentThreadService.class).to(CommentThreadServiceImpl.class);
-        bind(CommentService.class).to(CommentServiceImpl.class);
-        bind(PerformReviewService.class).to(PeerPortalImpl.class);
-        bind(EventService.class).to(EventServiceImpl.class);
-        bind(ChecklistAnswerService.class).to(ChecklistAnswerServiceImpl.class);
-        bind(FinalSeminarUploadController.class).to(FinalSeminarUploadControllerImpl.class);
-        bind(FinalSeminarActiveParticipationService.class).to(FinalSeminarActiveParticipationServiceImpl.class);
-        bind(ExternalResourceService.class).to(ExternalResourceServiceImpl.class);
-        bind(GroupService.class).to(GroupServiceImpl.class);
-        bind(NoteService.class).to(NoteServiceImpl.class);
-        bind(MilestoneActivator.class).asEagerSingleton();
-        bind(ActivateCompletedMilestonesOnNewProjects.class).asEagerSingleton();
-        bind(FirstMeetingService.class).to(FirstMeetingServiceImpl.class);
-        bind(FinalSeminarCreationSubscribers.class).asEagerSingleton();
-        bind(ProjectPartnerRepository.class).to(ProjectPartnerRepositoryImpl.class);
-
-        install(new PlagiarismModule());
-        install(new NotificationModule());
-        install(new ProfileModule());
-        install(new EventModule());
-        install(new MatchModule());
-        install(new MailModule());
-        install(new ForumModule());
-        install(new ReflectionModule());
-
-        Multibinder.newSetBinder(binder(), UserImportService.class);
-        bind(UserSearchService.class).to(AggregateUserSearch.class);
-        Multibinder.newSetBinder(binder(), UserSearchProvider.class)
-                .addBinding().to(LocalUserSearch.class);
-
-    }
-}
diff --git a/core/src/main/java/modules/ProfileModule.java b/core/src/main/java/modules/ProfileModule.java
deleted file mode 100644
index 16d276dba8..0000000000
--- a/core/src/main/java/modules/ProfileModule.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package modules;
-
-import com.google.inject.Key;
-import com.google.inject.PrivateModule;
-import com.google.inject.name.Names;
-import se.su.dsv.scipro.profiles.CurrentProfile;
-
-public class ProfileModule extends PrivateModule {
-    @Override
-    protected void configure() {
-        requireBinding(Key.get(String.class, Names.named("profile")));
-        bind(CurrentProfile.class).asEagerSingleton();
-        expose(CurrentProfile.class);
-    }
-}
diff --git a/core/src/main/java/modules/RepositoryModule.java b/core/src/main/java/modules/RepositoryModule.java
deleted file mode 100644
index 83f7f4539b..0000000000
--- a/core/src/main/java/modules/RepositoryModule.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package modules;
-
-import com.google.inject.AbstractModule;
-import se.su.dsv.scipro.checklist.ChecklistCategoryRepo;
-import se.su.dsv.scipro.checklist.ChecklistCategoryRepoImpl;
-import se.su.dsv.scipro.checklist.ChecklistQuestionRepo;
-import se.su.dsv.scipro.checklist.ChecklistQuestionRepoImpl;
-import se.su.dsv.scipro.finalseminar.FinalSeminarActiveParticipationRepository;
-import se.su.dsv.scipro.finalseminar.FinalSeminarActiveParticipationRepositoryImpl;
-import se.su.dsv.scipro.finalseminar.FinalSeminarOppositionRepo;
-import se.su.dsv.scipro.finalseminar.FinalSeminarOppositionRepoImpl;
-import se.su.dsv.scipro.finalseminar.FinalSeminarRepository;
-import se.su.dsv.scipro.finalseminar.FinalSeminarRepositoryImpl;
-import se.su.dsv.scipro.milestones.MilestoneActivityTemplateRepository;
-import se.su.dsv.scipro.milestones.MilestoneActivityTemplateRepositoryImpl;
-import se.su.dsv.scipro.peer.CommentThreadRepo;
-import se.su.dsv.scipro.peer.CommentThreadRepoImpl;
-import se.su.dsv.scipro.peer.PeerRequestRepository;
-import se.su.dsv.scipro.peer.PeerRequestRepositoryImpl;
-import se.su.dsv.scipro.peer.PeerReviewRepository;
-import se.su.dsv.scipro.peer.PeerReviewRepositoryImpl;
-import se.su.dsv.scipro.project.ProjectRepo;
-import se.su.dsv.scipro.project.ProjectRepoImpl;
-import se.su.dsv.scipro.report.GradingReportTemplateRepo;
-import se.su.dsv.scipro.report.GradingReportTemplateRepoImpl;
-import se.su.dsv.scipro.report.OppositionReportRepo;
-import se.su.dsv.scipro.report.OppositionReportRepoImpl;
-import se.su.dsv.scipro.reviewing.DecisionRepository;
-import se.su.dsv.scipro.reviewing.DecisionRepositoryImpl;
-import se.su.dsv.scipro.reviewing.ReviewerTargetRepository;
-import se.su.dsv.scipro.reviewing.ReviewerTargetRepositoryImpl;
-import se.su.dsv.scipro.system.FooterAddressRepo;
-import se.su.dsv.scipro.system.FooterAddressRepoImpl;
-import se.su.dsv.scipro.system.FooterLinkRepo;
-import se.su.dsv.scipro.system.FooterLinkRepoImpl;
-import se.su.dsv.scipro.system.PasswordRepo;
-import se.su.dsv.scipro.system.PasswordRepoImpl;
-import se.su.dsv.scipro.system.UserRepo;
-import se.su.dsv.scipro.system.UserRepoImpl;
-
-public class RepositoryModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(ChecklistQuestionRepo.class).to(ChecklistQuestionRepoImpl.class);
-        bind(FinalSeminarOppositionRepo.class).to(FinalSeminarOppositionRepoImpl.class);
-        bind(FinalSeminarActiveParticipationRepository.class).to(FinalSeminarActiveParticipationRepositoryImpl.class);
-        bind(GradingReportTemplateRepo.class).to(GradingReportTemplateRepoImpl.class);
-        bind(MilestoneActivityTemplateRepository.class).to(MilestoneActivityTemplateRepositoryImpl.class);
-        bind(OppositionReportRepo.class).to(OppositionReportRepoImpl.class);
-        bind(PasswordRepo.class).to(PasswordRepoImpl.class);
-        bind(ProjectRepo.class).to(ProjectRepoImpl.class);
-        bind(UserRepo.class).to(UserRepoImpl.class);
-        bind(PeerReviewRepository.class).to(PeerReviewRepositoryImpl.class);
-        bind(PeerRequestRepository.class).to(PeerRequestRepositoryImpl.class);
-        bind(ChecklistCategoryRepo.class).to(ChecklistCategoryRepoImpl.class);
-        bind(CommentThreadRepo.class).to(CommentThreadRepoImpl.class);
-        bind(FooterLinkRepo.class).to(FooterLinkRepoImpl.class);
-        bind(FooterAddressRepo.class).to(FooterAddressRepoImpl.class);
-        bind(FinalSeminarRepository.class).to(FinalSeminarRepositoryImpl.class);
-        bind(ReviewerTargetRepository.class).to(ReviewerTargetRepositoryImpl.class);
-        bind(DecisionRepository.class).to(DecisionRepositoryImpl.class);
-    }
-}
\ No newline at end of file
diff --git a/core/src/main/java/se/su/dsv/scipro/daisyExternal/DaisyExternalModule.java b/core/src/main/java/se/su/dsv/scipro/daisyExternal/DaisyExternalModule.java
deleted file mode 100644
index 63de05fdfb..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/daisyExternal/DaisyExternalModule.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package se.su.dsv.scipro.daisyExternal;
-
-import com.google.inject.Key;
-import com.google.inject.PrivateModule;
-import com.google.inject.Scopes;
-import com.google.inject.name.Names;
-import se.su.dsv.scipro.daisyExternal.http.DaisyAPI;
-import se.su.dsv.scipro.daisyExternal.http.DaisyAPIImpl;
-
-public class DaisyExternalModule extends PrivateModule {
-    @Override
-    protected void configure() {
-        requireBinding(Key.get(String.class, Names.named("daisy.api.url")));
-        requireBinding(Key.get(String.class, Names.named("daisy.api.username")));
-        requireBinding(Key.get(String.class, Names.named("daisy.api.password")));
-
-        bind(DaisyAPI.class).to(DaisyAPIImpl.class).in(Scopes.SINGLETON);
-        expose(DaisyAPI.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/events/EventModule.java b/core/src/main/java/se/su/dsv/scipro/events/EventModule.java
deleted file mode 100644
index 61fb042f87..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/events/EventModule.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package se.su.dsv.scipro.events;
-
-import com.google.common.eventbus.EventBus;
-import com.google.inject.AbstractModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class EventModule extends AbstractModule {
-    private static final Logger LOGGER = LoggerFactory.getLogger(EventModule.class);
-
-    @Override
-    protected void configure() {
-        bind(EventBus.class).toInstance(new EventBus((throwable, context) -> LOGGER.error("Could not dispatch event: " + context.getSubscriber() + " to " + context.getSubscriberMethod(), throwable)));
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/file/FileModule.java b/core/src/main/java/se/su/dsv/scipro/file/FileModule.java
deleted file mode 100644
index 82cc9172ea..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/file/FileModule.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package se.su.dsv.scipro.file;
-
-import com.google.inject.AbstractModule;
-
-public class FileModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(FileService.class).to(FileServiceImpl.class);
-        bind(ProjectFileService.class).to(ProjectFileServiceImpl.class);
-        bind(ProjectFileRepository.class).to(ProjectFileRepositoryImpl.class);
-        bind(FileReferenceRepository.class).to(FileReferenceRepositoryImpl.class);
-        bind(FileDescriptionRepo.class).to(FileDescriptionRepoImpl.class);
-
-        requireBinding(FileStore.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingModule.java b/core/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingModule.java
deleted file mode 100644
index e567605a8d..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingModule.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package se.su.dsv.scipro.firstmeeting;
-
-import com.google.inject.AbstractModule;
-import se.su.dsv.scipro.firstmeeting.FirstMeetingReminderWorker.FirstMeetingReminderWorkerSchedule;
-
-public class FirstMeetingModule extends AbstractModule {
-    @Override
-    public void configure() {
-        bind(FirstMeetingReminderWorkerSchedule.class).asEagerSingleton();
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/forum/ForumModule.java b/core/src/main/java/se/su/dsv/scipro/forum/ForumModule.java
deleted file mode 100644
index 7346fd1166..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/forum/ForumModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package se.su.dsv.scipro.forum;
-
-import com.google.inject.PrivateModule;
-
-public class ForumModule extends PrivateModule {
-    @Override
-    protected void configure() {
-        bind(AbstractThreadRepository.class).to(AbstractThreadRepositoryImpl.class);
-        bind(ForumPostReadStateRepository.class).to(ForumPostReadStateRepositoryImpl.class);
-        bind(ForumPostRepository.class).to(ForumPostRepositoryImpl.class);
-        bind(ProjectThreadRepository.class).to(ProjectThreadRepositoryImpl.class);
-        bind(GroupThreadRepository.class).to(GroupThreadRepositoryImpl.class);
-
-        expose(ProjectThreadRepository.class);
-        expose(GroupThreadRepository.class);
-
-        bind(ProjectForumService.class).to(ProjectForumServiceImpl.class);
-        bind(GroupForumService.class).to(GroupForumServiceImpl.class);
-
-        expose(ProjectForumService.class);
-        expose(GroupForumService.class);
-
-        bind(BasicForumService.class).to(BasicForumServiceImpl.class);
-        expose(BasicForumService.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/forum/notifications/ForumNotificationsModule.java b/core/src/main/java/se/su/dsv/scipro/forum/notifications/ForumNotificationsModule.java
deleted file mode 100644
index 2a77013615..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/forum/notifications/ForumNotificationsModule.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package se.su.dsv.scipro.forum.notifications;
-
-import com.google.inject.AbstractModule;
-
-public class ForumNotificationsModule extends AbstractModule {
-    @Override
-    public void configure() {
-        bind(ForumNotificationRepository.class).to(ForumNotificationRepositoryImpl.class);
-        bind(ForumNotifications.class).asEagerSingleton();
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/gdpr/GDPRModule.java b/core/src/main/java/se/su/dsv/scipro/gdpr/GDPRModule.java
deleted file mode 100644
index 65a3f3ae8f..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/gdpr/GDPRModule.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package se.su.dsv.scipro.gdpr;
-
-import com.google.inject.PrivateModule;
-
-public class GDPRModule extends PrivateModule {
-    @Override
-    protected void configure() {
-        bind(Reporter.class).to(ZipReporter.class);
-
-        expose(Reporter.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/grading/GradingModule.java b/core/src/main/java/se/su/dsv/scipro/grading/GradingModule.java
deleted file mode 100644
index 7f0448f149..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/grading/GradingModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package se.su.dsv.scipro.grading;
-
-import com.google.inject.Key;
-import com.google.inject.PrivateModule;
-import com.google.inject.name.Names;
-
-public class GradingModule extends PrivateModule {
-    @Override
-    protected void configure() {
-        requireBinding(Key.get(String.class, Names.named("service.grading.url")));
-        bind(GradingService.class).to(GradingServiceImpl.class);
-
-        expose(GradingService.class);
-
-        bind(PublicationMetadataRepository.class).to(PublicationMetadataRepositoryImpl.class);
-        bind(PublicationMetadataService.class).to(PublicationMetadataServiceImpl.class);
-        expose(PublicationMetadataService.class);
-
-        bind(ExaminerTimelineService.class).to(GradingHistory.class);
-        expose(ExaminerTimelineService.class);
-        bind(GradingHistoryEventRepository.class).to(GradingHistoryEventRepositoryImpl.class);
-        bind(ThesisRejectionHistoryService.class).to(GradingHistory.class);
-        expose(ThesisRejectionHistoryService.class);
-        bind(ThesisApprovedHistoryService.class).to(GradingHistory.class);
-        expose(ThesisApprovedHistoryService.class);
-        bind(ThesisSubmissionHistoryService.class).to(GradingHistory.class);
-        expose(ThesisSubmissionHistoryService.class);
-
-        bind(NationalSubjectCategoryRepository.class).to(NationalSubjectCategoryRepositoryImpl.class);
-        bind(NationalSubjectCategoryService.class).to(NationalSubjectCategoryServiceImpl.class);
-        expose(NationalSubjectCategoryService.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/integration/activityfinalseminar/ActivityFinalSeminarModule.java b/core/src/main/java/se/su/dsv/scipro/integration/activityfinalseminar/ActivityFinalSeminarModule.java
deleted file mode 100644
index 0d5d8bf9a4..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/integration/activityfinalseminar/ActivityFinalSeminarModule.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package se.su.dsv.scipro.integration.activityfinalseminar;
-
-import com.google.inject.AbstractModule;
-
-public class ActivityFinalSeminarModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(FinalSeminarActivityHandler.class).asEagerSingleton();
-        bind(ActivityFinalSeminarRepository.class).to(ActivityFinalSeminarRepositoryImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/integration/activityforum/ActivityForumModule.java b/core/src/main/java/se/su/dsv/scipro/integration/activityforum/ActivityForumModule.java
deleted file mode 100644
index c14a655f13..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/integration/activityforum/ActivityForumModule.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package se.su.dsv.scipro.integration.activityforum;
-
-import com.google.inject.AbstractModule;
-
-public class ActivityForumModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(PostActivityUploadToForum.class).asEagerSingleton();
-        bind(ActivityThreadRepository.class).to(ActivityThreadRepositoryImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/mail/MailModule.java b/core/src/main/java/se/su/dsv/scipro/mail/MailModule.java
deleted file mode 100644
index c23bc66811..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/mail/MailModule.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package se.su.dsv.scipro.mail;
-
-import com.google.inject.Exposed;
-import com.google.inject.PrivateModule;
-import com.google.inject.Provides;
-import se.su.dsv.scipro.file.FileService;
-import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
-import se.su.dsv.scipro.profiles.CurrentProfile;
-
-import jakarta.mail.Session;
-import java.util.Properties;
-
-public class MailModule extends PrivateModule {
-
-    private static final String TEST_MAIL_SINK = "scipro-mailtest@dsv.su.se";
-
-    @Override
-    protected void configure() {
-        requireBinding(CurrentProfile.class);
-        requireBinding(GeneralSystemSettingsService.class);
-        bind(MailEventService.class).to(MailEventServiceImpl.class);
-        expose(MailEventService.class);
-    }
-
-    @Provides
-    @Exposed
-    public Mailer mailer(CurrentProfile currentProfile, Session session, FileService fileDescriptionService) {
-        return switch (currentProfile.getCurrentProfile()) {
-            case DEV -> new PrintingMailer();
-            case PROD -> new Mail(session, fileDescriptionService);
-            case TEST -> new RedirectingMailer(session, TEST_MAIL_SINK, fileDescriptionService);
-        };
-    }
-
-    @Provides
-    public Session session(GeneralSystemSettingsService generalSystemSettings) {
-        String smtpHost = generalSystemSettings.getGeneralSystemSettingsInstance().getSmtpServer();
-        Properties properties = new Properties();
-        properties.setProperty("mail.smtp.host", smtpHost);
-        properties.setProperty("mail.smtp.sendpartial", Boolean.toString(true));
-        return Session.getDefaultInstance(properties);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/match/MatchModule.java b/core/src/main/java/se/su/dsv/scipro/match/MatchModule.java
deleted file mode 100644
index 28e19d2295..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/match/MatchModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package se.su.dsv.scipro.match;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.multibindings.OptionalBinder;
-
-public class MatchModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        OptionalBinder.newOptionalBinder(binder(), IdeaCreationJudge.class)
-                .setDefault().to(AllowAllIdeaCreationJudge.class);
-        bind(ProjectStartNotifier.class).asEagerSingleton();
-        bind(AddActivityPlanOnProjectStart.class).asEagerSingleton();
-        bind(ApplicationPeriodService.class).to(ApplicationPeriodServiceImpl.class);
-        bind(IdeaService.class).to(IdeaServiceImpl.class);
-        bind(FirstMeetingRepository.class).to(FirstMeetingRepositoryImpl.class);
-        bind(KeywordService.class).to(KeywordServiceImpl.class);
-        bind(MatchService.class).to(MatchServiceImpl.class);
-        bind(ProgramService.class).to(ProgramServiceImpl.class);
-        bind(MatchFollowUpService.class).to(MatchFollowUpServiceImpl.class);
-        bind(TargetService.class).to(TargetServiceImpl.class);
-        bind(ApplicationPeriodProjectTypeService.class).to(ApplicationPeriodProjectTypeServiceImpl.class);
-        bind(PreliminaryMatchService.class).to(PreliminaryMatchServiceImpl.class);
-        bind(IdeaRepository.class).to(IdeaRepositoryImpl.class);
-        bind(TargetRepository.class).to(TargetRepositoryImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/NotificationControllerImpl.java b/core/src/main/java/se/su/dsv/scipro/notifications/NotificationControllerImpl.java
index 8bd1a88a13..0a4a6e08f4 100755
--- a/core/src/main/java/se/su/dsv/scipro/notifications/NotificationControllerImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/NotificationControllerImpl.java
@@ -1,6 +1,5 @@
 package se.su.dsv.scipro.notifications;
 
-import com.google.inject.ProvisionException;
 import se.su.dsv.scipro.data.dataobjects.Member;
 import se.su.dsv.scipro.finalseminar.FinalSeminar;
 import se.su.dsv.scipro.group.Group;
@@ -94,7 +93,7 @@ public class NotificationControllerImpl implements NotificationController {
         try {
             return currentUserProvider.get().get();
         }
-        catch (ProvisionException ignored) {
+        catch (RuntimeException ignored) {
             return null;
         }
     }
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/NotificationModule.java b/core/src/main/java/se/su/dsv/scipro/notifications/NotificationModule.java
deleted file mode 100644
index 507ca4bcab..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/notifications/NotificationModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package se.su.dsv.scipro.notifications;
-
-import com.google.inject.PrivateModule;
-import se.su.dsv.scipro.notifications.interfaces.NotificationMailFormatter;
-import se.su.dsv.scipro.notifications.interfaces.impl.NotificationMailFormatterImpl;
-
-public class NotificationModule extends PrivateModule {
-
-    public static final String NOTIFICATION_RELATIVE_PAGE_URL = "notification";
-
-    @Override
-    protected void configure() {
-        bind(Notifications.class).asEagerSingleton();
-
-        bind(NotificationService.class).to(NotificationServiceImpl.class);
-        expose(NotificationService.class);
-
-        bind(NotificationEventRepository.class).to(NotificationEventRepositoryImpl.class);
-        bind(NotificationEventService.class).to(NotificationEventServiceImpl.class);
-        expose(NotificationEventService.class);
-
-        bind(NotificationMailFormatter.class).to(NotificationMailFormatterImpl.class);
-        expose(NotificationMailFormatter.class);
-        bind(NotificationController.class).to(NotificationControllerImpl.class);
-        expose(NotificationController.class);
-    }
-
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/notifications/interfaces/impl/NotificationMailFormatterImpl.java b/core/src/main/java/se/su/dsv/scipro/notifications/interfaces/impl/NotificationMailFormatterImpl.java
index cdf67a52d4..b8aeadcb99 100755
--- a/core/src/main/java/se/su/dsv/scipro/notifications/interfaces/impl/NotificationMailFormatterImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/notifications/interfaces/impl/NotificationMailFormatterImpl.java
@@ -8,7 +8,6 @@ import se.su.dsv.scipro.finalseminar.FinalSeminar;
 import se.su.dsv.scipro.finalseminar.FinalSeminarService;
 import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettings;
 import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
-import se.su.dsv.scipro.notifications.NotificationModule;
 import se.su.dsv.scipro.notifications.dataobject.*;
 import se.su.dsv.scipro.notifications.interfaces.NotificationMailFormatter;
 import se.su.dsv.scipro.project.Project;
@@ -158,7 +157,7 @@ public class NotificationMailFormatterImpl implements NotificationMailFormatter
     private String getAbsoluteURL(final Notification notification) {
         final String baseUrl = systemSettingsService.getGeneralSystemSettingsInstance().getSciproURL();
         long id = notification.getNotificationEvent().getId();
-        return baseUrl + "/" + NotificationModule.NOTIFICATION_RELATIVE_PAGE_URL + "?id=" + id;
+        return baseUrl + "/" + "notification" + "?id=" + id;
     }
 
     String makeProperty(Object... parts) {
diff --git a/core/src/main/java/se/su/dsv/scipro/oauth/OAuthModule.java b/core/src/main/java/se/su/dsv/scipro/oauth/OAuthModule.java
deleted file mode 100644
index bce825afe1..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/oauth/OAuthModule.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package se.su.dsv.scipro.oauth;
-
-import com.google.inject.PrivateModule;
-import com.google.inject.Provides;
-
-import jakarta.inject.Named;
-
-public class OAuthModule extends PrivateModule {
-    @Override
-    protected void configure() {
-        bind(OAuthService.class).to(OAuthServiceImpl.class);
-
-        expose(OAuthService.class);
-    }
-
-    @Provides
-    OAuthSettings settings(
-        @Named("oauth.uri") String uri,
-        @Named("oauth.redirectUri") String redirectUri,
-        @Named("oauth.clientId") String clientId,
-        @Named("oauth.clientSecret") String clientSecret)
-    {
-        return new OAuthSettings(uri, redirectUri, clientId, clientSecret);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/peer/PeerModule.java b/core/src/main/java/se/su/dsv/scipro/peer/PeerModule.java
deleted file mode 100644
index 0fdd05980c..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/peer/PeerModule.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package se.su.dsv.scipro.peer;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.multibindings.Multibinder;
-import se.su.dsv.scipro.system.Lifecycle;
-
-public class PeerModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        Multibinder.newSetBinder(binder(), Lifecycle.class)
-                .addBinding().to(PeerWorkerSchedules.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismModule.java b/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismModule.java
deleted file mode 100644
index 3f862ea21c..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismModule.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package se.su.dsv.scipro.plagiarism;
-
-import com.google.inject.AbstractModule;
-
-public class PlagiarismModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(PlagiarismControl.class).to(PlagiarismControlImpl.class);
-        bind(PlagiarismRequestRepository.class).to(PlagiarismRequestRepositoryImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundModule.java b/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundModule.java
deleted file mode 100644
index 573a3a5559..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package se.su.dsv.scipro.plagiarism.urkund;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.Scopes;
-import se.su.dsv.scipro.sukat.Sukat;
-
-import jakarta.persistence.EntityManager;
-
-public class UrkundModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(UrkundService.class).to(UrkundServiceImpl.class);
-        bind(UrkundSubmissionRepository.class).to(UrkundSubmissionRepositoryImpl.class);
-        bind(UrkundApi.class).to(UrkundApiImpl.class).in(Scopes.SINGLETON);
-        bind(UrkundSettingsRepository.class).to(UrkundSettingsRepositoryImpl.class);
-
-        requireBinding(EntityManager.class);
-        requireBinding(Sukat.class);
-    }
-
-    @Provides
-    public UrkundSettings urkundSettings(UrkundSettingsRepository urkundSettingsRepository) {
-        return urkundSettingsRepository.getSettings();
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/reflection/ReflectionModule.java b/core/src/main/java/se/su/dsv/scipro/reflection/ReflectionModule.java
deleted file mode 100644
index 872fd7d8dd..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/reflection/ReflectionModule.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package se.su.dsv.scipro.reflection;
-
-import com.google.inject.AbstractModule;
-import se.su.dsv.scipro.finalseminar.AuthorRepository;
-
-public class ReflectionModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        requireBinding(AuthorRepository.class);
-
-        bind(ReflectionService.class).to(ReflectionServiceImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/reviewing/ReviewingModule.java b/core/src/main/java/se/su/dsv/scipro/reviewing/ReviewingModule.java
deleted file mode 100644
index 9a0d1d53f7..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/reviewing/ReviewingModule.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package se.su.dsv.scipro.reviewing;
-
-import com.google.inject.AbstractModule;
-import se.su.dsv.scipro.file.FileService;
-
-import jakarta.persistence.EntityManager;
-
-public class ReviewingModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        requireBinding(FileService.class);
-        requireBinding(EntityManager.class);
-        bind(ReviewerThreadRepository.class).to(ReviewerThreadRepositoryImpl.class);
-        bind(ReviewerInteractionService.class).to(ReviewerInteractionServiceImpl.class);
-        bind(FinalSeminarApprovalService.class).to(FinalSeminarApprovalServiceImpl.class);
-        bind(MyReviewService.class).to(ReviewingServiceImpl.class);
-        bind(ReviewerDecisionService.class).to(ReviewingServiceImpl.class);
-        bind(RoughDraftApprovalService.class).to(RoughDraftApprovalServiceImpl.class);
-        bind(ReviewerDeadlineSettingsService.class).to(ReviewerDeadlineSettingsServiceImpl.class);
-        bind(ReviewerDeadlineSettingsRepository.class).to(ReviewerDeadlineSettingsRepositoryImpl.class);
-        bind(ReviewerDeadlineFollowupService.class).to(ReviewerDeadlineFollowupServiceImpl.class);
-        bind(ReviewerCapacityService.class).to(ReviewerCapacityServiceImpl.class);
-        bind(ReviewerAssignmentService.class).to(ReviewerCapacityServiceImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/security/auth/AuthenticationModule.java b/core/src/main/java/se/su/dsv/scipro/security/auth/AuthenticationModule.java
deleted file mode 100644
index 3598358043..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/security/auth/AuthenticationModule.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package se.su.dsv.scipro.security.auth;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.multibindings.Multibinder;
-
-public class AuthenticationModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(AuthenticationService.class).to(AuthenticationServiceImpl.class);
-
-        Multibinder<AuthenticationProvider> authenticationProviders
-                = Multibinder.newSetBinder(binder(), AuthenticationProvider.class);
-        authenticationProviders.addBinding().to(LocalAuthentication.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/sukat/SukatModule.java b/core/src/main/java/se/su/dsv/scipro/sukat/SukatModule.java
deleted file mode 100644
index 544a17ec39..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/sukat/SukatModule.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package se.su.dsv.scipro.sukat;
-
-import com.google.inject.AbstractModule;
-
-public class SukatModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        bind(Sukat.class).to(LDAP.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/survey/SurveyModule.java b/core/src/main/java/se/su/dsv/scipro/survey/SurveyModule.java
deleted file mode 100644
index 54a6c83c92..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/survey/SurveyModule.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package se.su.dsv.scipro.survey;
-
-import com.google.inject.AbstractModule;
-import se.su.dsv.scipro.finalthesis.FinalThesisService;
-
-import jakarta.persistence.EntityManager;
-
-public class SurveyModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        requireBinding(EntityManager.class);
-        requireBinding(FinalThesisService.class);
-        bind(SurveyRepository.class).to(SurveyRepositoryImpl.class);
-        bind(QuestionRepository.class).to(QuestionRepositoryImpl.class);
-        bind(SurveyService.class).to(SurveyServiceImpl.class);
-    }
-}
diff --git a/core/src/main/java/se/su/dsv/scipro/workerthreads/WorkerModule.java b/core/src/main/java/se/su/dsv/scipro/workerthreads/WorkerModule.java
deleted file mode 100644
index db17d05aec..0000000000
--- a/core/src/main/java/se/su/dsv/scipro/workerthreads/WorkerModule.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package se.su.dsv.scipro.workerthreads;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
-import com.google.inject.multibindings.Multibinder;
-import se.su.dsv.scipro.mail.MailEventWorker;
-import se.su.dsv.scipro.projectpartner.RemoveFulfilledPartnerAdsWorker;
-import se.su.dsv.scipro.system.Lifecycle;
-
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-
-public class WorkerModule extends AbstractModule {
-    private static final int NUMBER_OF_WORKER_THREADS = 4;
-
-    @Override
-    protected void configure() {
-        //Multibinder.newSetBinder(binder(), Lifecycle.class).addBinding().to(SchedulerImpl.class);
-        bind(ScheduledExecutorService.class).toInstance(Executors.newScheduledThreadPool(NUMBER_OF_WORKER_THREADS));
-        //bind(Scheduler.class).to(SchedulerImpl.class).in(Scopes.SINGLETON);
-        bind(TemporaryWorkerScheduler.class).asEagerSingleton();
-        bind(WorkerDataService.class).to(WorkerDataServiceImpl.class);
-        bind(ThesisUploadDeadlineWorker.class);
-        bind(ManualMatchRemindWorker.class);
-        bind(MailEventWorker.class);
-        bind(NotificationCompilationWorker.class);
-        bind(ThesisUploadReminderWorker.class);
-        bind(IdeaExportWorker.class);
-        bind(RemoveFulfilledPartnerAdsWorker.class);
-    }
-}
diff --git a/core/src/test/java/se/su/dsv/scipro/forum/ForumModuleTest.java b/core/src/test/java/se/su/dsv/scipro/forum/ForumModuleTest.java
index 4c0f37379d..90cc242e77 100644
--- a/core/src/test/java/se/su/dsv/scipro/forum/ForumModuleTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/forum/ForumModuleTest.java
@@ -1,20 +1,15 @@
 package se.su.dsv.scipro.forum;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import se.su.dsv.scipro.date.DateService;
-import se.su.dsv.scipro.file.FileModule;
-import se.su.dsv.scipro.file.FileStore;
 import se.su.dsv.scipro.notifications.NotificationController;
 import se.su.dsv.scipro.notifications.NotificationService;
-import se.su.dsv.scipro.test.GuiceTest;
-import se.su.dsv.scipro.test.InMemoryFileStore;
+import se.su.dsv.scipro.test.SpringTest;
 
 @ExtendWith(MockitoExtension.class)
-public abstract class ForumModuleTest extends GuiceTest {
+public abstract class ForumModuleTest extends SpringTest {
     // TODO: Work towards removing these dependencies.
     @Mock
     private DateService dateService;
@@ -23,18 +18,4 @@ public abstract class ForumModuleTest extends GuiceTest {
     @Mock
     private NotificationService notificationService;
 
-    @Override
-    protected Module moduleUnderTest() {
-        return new AbstractModule() {
-            @Override
-            protected void configure() {
-                install(new ForumModule());
-                install(new FileModule());
-                bind(FileStore.class).to(InMemoryFileStore.class);
-                bind(DateService.class).toInstance(dateService);
-                bind(NotificationController.class).toInstance(notificationController);
-                bind(NotificationService.class).toInstance(notificationService);
-            }
-        };
-    }
 }
diff --git a/core/src/test/java/se/su/dsv/scipro/match/MatchModuleTest.java b/core/src/test/java/se/su/dsv/scipro/match/MatchModuleTest.java
index 63417a754b..7a189d32f4 100644
--- a/core/src/test/java/se/su/dsv/scipro/match/MatchModuleTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/match/MatchModuleTest.java
@@ -1,9 +1,6 @@
 package se.su.dsv.scipro.match;
 
 import com.google.common.eventbus.EventBus;
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
-import com.google.inject.name.Names;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
@@ -13,10 +10,10 @@ import se.su.dsv.scipro.generalsystemsettings.GeneralSystemSettingsService;
 import se.su.dsv.scipro.mail.MailEventService;
 import se.su.dsv.scipro.notifications.NotificationController;
 import se.su.dsv.scipro.project.ProjectService;
-import se.su.dsv.scipro.test.GuiceTest;
+import se.su.dsv.scipro.test.SpringTest;
 
 @ExtendWith(MockitoExtension.class)
-public abstract class MatchModuleTest extends GuiceTest {
+public abstract class MatchModuleTest extends SpringTest {
     // ToDo:The system services should be move to a system module that other modules can depend on
     @Mock
     protected DateService dateService;
@@ -34,28 +31,4 @@ public abstract class MatchModuleTest extends GuiceTest {
     @Mock
     protected ProjectService projectService;
 
-    @Override
-    protected Module moduleUnderTest() {
-        return new AbstractModule() {
-            @Override
-            protected void configure() {
-                install(new MatchModule());
-                bind(GeneralSystemSettingsService.class).toInstance(generalSystemSettingsService);
-                bind(NotificationController.class).toInstance(notificationController);
-                bind(DateService.class).toInstance(dateService);
-                bind(MailEventService.class).toInstance(mailEventService);
-                bind(ActivityPlanFacade.class).toInstance(activityPlanFacade);
-                bind(EventBus.class).toInstance(eventBus);
-                bind(ProjectService.class).toInstance(projectService);
-
-                // Work towards removing the dependency on NotificationSourceURL
-                bindConstant().annotatedWith(Names.named("source.export.fail.supervisor")).to("");
-                bindConstant().annotatedWith(Names.named("source.export.fail.user")).to("");
-                bindConstant().annotatedWith(Names.named("source.export.success.supervisor")).to("");
-                bindConstant().annotatedWith(Names.named("source.export.success.user")).to("");
-                bindConstant().annotatedWith(Names.named("source.project.supervisor")).to("");
-                bindConstant().annotatedWith(Names.named("source.project.student")).to("");
-            }
-        };
-    }
 }
diff --git a/core/src/test/java/se/su/dsv/scipro/notifications/NotificationControllerImplTest.java b/core/src/test/java/se/su/dsv/scipro/notifications/NotificationControllerImplTest.java
index 6453a0f537..6c770e1a9d 100755
--- a/core/src/test/java/se/su/dsv/scipro/notifications/NotificationControllerImplTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/notifications/NotificationControllerImplTest.java
@@ -1,6 +1,5 @@
 package se.su.dsv.scipro.notifications;
 
-import com.google.inject.util.Providers;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
@@ -55,7 +54,7 @@ public class NotificationControllerImplTest {
                 notificationService,
                 mailFormatter,
                 mailEventService,
-                receiverConfiguration, deliveryConfiguration, Providers.of(currentUser));
+                receiverConfiguration, deliveryConfiguration, () -> currentUser);
 
         when(mailFormatter.format(isA(Notification.class))).thenReturn(new NotificationMail("Subject", "Body"));
         when(deliveryConfiguration.isDelivery(isA(Notification.Type.class), isA(Enum.class), isA(DeliveryMethod.class), isA(Optional.class))).thenReturn(true);
diff --git a/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSettingsRepositoryTest.java b/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSettingsRepositoryTest.java
index a2eb62c871..8b113e1524 100644
--- a/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSettingsRepositoryTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSettingsRepositoryTest.java
@@ -1,35 +1,16 @@
 package se.su.dsv.scipro.plagiarism.urkund;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
 import org.junit.jupiter.api.Test;
-import se.su.dsv.scipro.file.FileModule;
-import se.su.dsv.scipro.file.FileStore;
-import se.su.dsv.scipro.sukat.SukatModule;
-import se.su.dsv.scipro.test.GuiceTest;
-import se.su.dsv.scipro.test.InMemoryFileStore;
+import se.su.dsv.scipro.test.SpringTest;
 
 import jakarta.inject.Inject;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-public class UrkundSettingsRepositoryTest extends GuiceTest {
+public class UrkundSettingsRepositoryTest extends SpringTest {
     @Inject
     private UrkundSettingsRepository urkundSettingsRepository;
 
-    @Override
-    protected Module moduleUnderTest() {
-        return new AbstractModule() {
-            @Override
-            protected void configure() {
-                install(new SukatModule());
-                install(new UrkundModule());
-                install(new FileModule());
-                bind(FileStore.class).to(InMemoryFileStore.class);
-            }
-        };
-    }
-
     @Test
     public void change_settings() {
         final UrkundSettings settings = urkundSettingsRepository.getSettings();
diff --git a/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmissionRepositoryTest.java b/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmissionRepositoryTest.java
index 0d2599f5fd..6120fe3468 100644
--- a/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmissionRepositoryTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmissionRepositoryTest.java
@@ -1,18 +1,12 @@
 package se.su.dsv.scipro.plagiarism.urkund;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
 import org.junit.jupiter.api.Test;
 import se.su.dsv.scipro.file.FileDescription;
-import se.su.dsv.scipro.file.FileModule;
 import se.su.dsv.scipro.file.FileReference;
-import se.su.dsv.scipro.file.FileStore;
-import se.su.dsv.scipro.sukat.Sukat;
-import se.su.dsv.scipro.test.GuiceTest;
-import se.su.dsv.scipro.test.InMemoryFileStore;
+import se.su.dsv.scipro.test.SpringTest;
 
 import jakarta.inject.Inject;
 import java.time.Instant;
@@ -22,23 +16,10 @@ import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-public class UrkundSubmissionRepositoryTest extends GuiceTest {
+public class UrkundSubmissionRepositoryTest extends SpringTest {
 
     @Inject
     private UrkundSubmissionRepository submissionRepository;
-    
-    @Override
-    protected Module moduleUnderTest() {
-        return new AbstractModule() {
-            @Override
-            protected void configure() {
-                install(new UrkundModule());
-                bind(Sukat.class).toInstance((username) -> Optional.empty());
-                install(new FileModule());
-                bind(FileStore.class).to(InMemoryFileStore.class);
-            }
-        };
-    }
 
     @Test
     public void save() {
diff --git a/core/src/test/java/se/su/dsv/scipro/test/IntegrationTest.java b/core/src/test/java/se/su/dsv/scipro/test/IntegrationTest.java
index 4833f0e4bd..837f58dc90 100644
--- a/core/src/test/java/se/su/dsv/scipro/test/IntegrationTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/test/IntegrationTest.java
@@ -1,57 +1,5 @@
 package se.su.dsv.scipro.test;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Module;
-import com.google.inject.name.Names;
-import modules.CoreModule;
-import se.su.dsv.scipro.file.FileModule;
-import se.su.dsv.scipro.file.FileStore;
-import se.su.dsv.scipro.grading.GradingHistory;
-import se.su.dsv.scipro.grading.GradingHistoryEventRepository;
-import se.su.dsv.scipro.grading.GradingHistoryEventRepositoryImpl;
-import se.su.dsv.scipro.grading.GradingModule;
-import se.su.dsv.scipro.grading.ThesisSubmissionHistoryService;
-import se.su.dsv.scipro.plagiarism.urkund.UrkundModule;
-import se.su.dsv.scipro.reviewing.ReviewingModule;
-import se.su.dsv.scipro.sukat.SukatModule;
-import se.su.dsv.scipro.system.CurrentUser;
-import se.su.dsv.scipro.system.User;
+public abstract class IntegrationTest extends SpringTest {
 
-import jakarta.inject.Singleton;
-
-public abstract class IntegrationTest extends GuiceTest {
-
-    @Override
-    protected Module moduleUnderTest() {
-        return new AbstractModule() {
-            @Override
-            protected void configure() {
-                bindConstant().annotatedWith(Names.named("profile")).to("TEST");
-                install(new CoreModule());
-                install(new FileModule());
-                install(new ReviewingModule());
-                install(new SukatModule());
-                install(new UrkundModule());
-                bind(ThesisSubmissionHistoryService.class).to(GradingHistory.class);
-                bind(GradingHistoryEventRepository.class).to(GradingHistoryEventRepositoryImpl.class);
-                bind(CurrentUser.class).to(TestUser.class);
-                bind(FileStore.class).to(InMemoryFileStore.class);
-            }
-        };
-    }
-
-    @Singleton
-    private static class TestUser implements CurrentUser {
-
-        private User user;
-
-        public void set(User user) {
-            this.user = user;
-        }
-
-        @Override
-        public User get() {
-            return user;
-        }
-    }
 }
diff --git a/core/src/test/java/se/su/dsv/scipro/test/GuiceTest.java b/core/src/test/java/se/su/dsv/scipro/test/SpringTest.java
similarity index 96%
rename from core/src/test/java/se/su/dsv/scipro/test/GuiceTest.java
rename to core/src/test/java/se/su/dsv/scipro/test/SpringTest.java
index d10ba07747..3ee673c390 100644
--- a/core/src/test/java/se/su/dsv/scipro/test/GuiceTest.java
+++ b/core/src/test/java/se/su/dsv/scipro/test/SpringTest.java
@@ -1,7 +1,6 @@
 package se.su.dsv.scipro.test;
 
 import com.google.common.eventbus.EventBus;
-import com.google.inject.Module;
 import jakarta.inject.Provider;
 import jakarta.persistence.EntityManager;
 import jakarta.persistence.EntityManagerFactory;
@@ -30,12 +29,12 @@ import java.util.Optional;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 
-public abstract class GuiceTest {
+public abstract class SpringTest {
     private EntityManager entityManager;
     private EntityManagerFactory entityManagerFactory;
 
     @BeforeEach
-    public final void prepareGuice() {
+    public final void prepareSpring() {
         entityManagerFactory = Persistence.createEntityManagerFactory("testPersistenceUnit");
         this.entityManager = entityManagerFactory.createEntityManager();
         EntityTransaction transaction = entityManager.getTransaction();
@@ -51,8 +50,6 @@ public abstract class GuiceTest {
                 .autowireBean(this);
     }
 
-    protected abstract Module moduleUnderTest();
-
     @AfterEach
     public final void shutDownPersistence() {
         entityManager.getTransaction().rollback();
diff --git a/daisy-integration/pom.xml b/daisy-integration/pom.xml
index 7c31d026ff..3d94bb165c 100644
--- a/daisy-integration/pom.xml
+++ b/daisy-integration/pom.xml
@@ -20,10 +20,6 @@
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.inject.extensions</groupId>
-            <artifactId>guice-servlet</artifactId>
-        </dependency>
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
diff --git a/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/DaisyModule.java b/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/DaisyModule.java
deleted file mode 100644
index ffedb6c3c1..0000000000
--- a/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/DaisyModule.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package se.su.dsv.scipro.integration.daisy;
-
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.multibindings.OptionalBinder;
-import com.google.inject.servlet.ServletModule;
-import se.su.dsv.scipro.daisyExternal.ExternalImporter;
-import se.su.dsv.scipro.daisyExternal.ImporterTransactions;
-import se.su.dsv.scipro.daisyExternal.impl.ExternalImporterDaisyImpl;
-import se.su.dsv.scipro.daisyExternal.impl.ImporterTransactionsImpl;
-import se.su.dsv.scipro.finalthesis.PublishingConsentService;
-import se.su.dsv.scipro.integration.daisy.workers.ProjectExporter;
-import se.su.dsv.scipro.integration.daisy.workers.UserImportWorker;
-import se.su.dsv.scipro.io.ExternalExporter;
-import se.su.dsv.scipro.io.impl.ExternalExporterDaisyImpl;
-import se.su.dsv.scipro.match.IdeaCreationJudge;
-import se.su.dsv.scipro.system.UserImportService;
-import se.su.dsv.scipro.system.UserSearchProvider;
-
-public class DaisyModule extends ServletModule {
-    @Override
-    protected void configureServlets() {
-        bind(ExternalImporter.class).to(ExternalImporterDaisyImpl.class);
-        bind(ImporterTransactions.class).to(ImporterTransactionsImpl.class);
-
-        OptionalBinder.newOptionalBinder(binder(), IdeaCreationJudge.class)
-                .setBinding().to(Daisy.class);
-
-        bind(ExternalExporter.class).to(ExternalExporterDaisyImpl.class);
-        bind(UserImportWorker.class);
-        bind(ProjectExporter.class);
-        bind(DaisyWorkerInitialization.class).asEagerSingleton();
-        bind(SyncReviewerWithDaisy.class).asEagerSingleton();
-
-        Multibinder.newSetBinder(binder(), UserImportService.class)
-                .addBinding().to(ExternalImporterDaisyImpl.class);
-
-        Multibinder.newSetBinder(binder(), UserSearchProvider.class)
-                .addBinding().to(DaisyUserSearchService.class);
-
-        OptionalBinder.newOptionalBinder(binder(), PublishingConsentService.class)
-                .setBinding().to(DaisyConsentService.class);
-    }
-
-}
diff --git a/daisy-integration/src/main/resources/META-INF/services/com.google.inject.Module b/daisy-integration/src/main/resources/META-INF/services/com.google.inject.Module
deleted file mode 100644
index f216e38b02..0000000000
--- a/daisy-integration/src/main/resources/META-INF/services/com.google.inject.Module
+++ /dev/null
@@ -1 +0,0 @@
-se.su.dsv.scipro.integration.daisy.DaisyModule
diff --git a/pom.xml b/pom.xml
index 2a0ddec0e3..26d33b22e7 100755
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,6 @@
         <mockito.version>5.3.1</mockito.version>
         <flyway.version>9.19.1</flyway.version>
         <jersey.version>3.1.6</jersey.version>
-        <guice.version>7.0.0</guice.version>
         <poi.version>5.2.5</poi.version>
         <jackson.version>2.17.0</jackson.version>
 
@@ -90,7 +89,7 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.wicket</groupId>
-                <artifactId>wicket-guice</artifactId>
+                <artifactId>wicket-ioc</artifactId>
                 <version>${wicket.version}</version>
             </dependency>
             <dependency>
@@ -204,13 +203,6 @@
                 <artifactId>guava</artifactId>
                 <version>32.0.1-jre</version>
             </dependency>
-            <dependency>
-                <groupId>com.google.inject</groupId>
-                <artifactId>guice-bom</artifactId>
-                <version>${guice.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
 
             <dependency>
                 <groupId>jakarta.mail</groupId>
diff --git a/view/pom.xml b/view/pom.xml
index b05f59bd56..9cdd26f28b 100644
--- a/view/pom.xml
+++ b/view/pom.xml
@@ -13,15 +13,6 @@
     <packaging>war</packaging>
 
     <dependencies>
-        <dependency>
-            <groupId>com.google.inject.extensions</groupId>
-            <artifactId>guice-servlet</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.inject.extensions</groupId>
-            <artifactId>guice-persist</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>se.su.dsv.scipro</groupId>
             <artifactId>core</artifactId>
@@ -44,7 +35,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.wicket</groupId>
-            <artifactId>wicket-guice</artifactId>
+            <artifactId>wicket-ioc</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.wicket</groupId>
diff --git a/view/src/main/java/se/su/dsv/scipro/SciProApplication.java b/view/src/main/java/se/su/dsv/scipro/SciProApplication.java
index 896faee0f4..2f9a987e5d 100755
--- a/view/src/main/java/se/su/dsv/scipro/SciProApplication.java
+++ b/view/src/main/java/se/su/dsv/scipro/SciProApplication.java
@@ -33,7 +33,6 @@ import se.su.dsv.scipro.forum.pages.ProjectForumBasePage;
 import se.su.dsv.scipro.forum.pages.SupervisorForumBasePage;
 import se.su.dsv.scipro.forum.pages.threaded.*;
 import se.su.dsv.scipro.gdpr.AdminGDPRPage;
-import se.su.dsv.scipro.gdpr.GDPRReportResourceReference;
 import se.su.dsv.scipro.generalsystemsettings.AdminGeneralSettingsPage;
 import se.su.dsv.scipro.grading.SupervisorGradingPage;
 import se.su.dsv.scipro.grading.SupervisorGradingReportPage;
@@ -49,7 +48,6 @@ import se.su.dsv.scipro.milestones.pages.SupervisorMileStonePage;
 import se.su.dsv.scipro.nonworkdays.NonWorkDaysPage;
 import se.su.dsv.scipro.notes.NotesPage;
 import se.su.dsv.scipro.notifications.NotificationLoader;
-import se.su.dsv.scipro.notifications.NotificationModule;
 import se.su.dsv.scipro.notifications.pages.NotificationLandingPage;
 import se.su.dsv.scipro.notifications.pages.NotificationsPage;
 import se.su.dsv.scipro.notifications.pages.SupervisorNotificationSettingsPage;
@@ -339,7 +337,7 @@ public class SciProApplication extends LifecycleManagedWebApplication {
 
     private void mountNotificationAndSettingsPages() {
         mountPage("notes", NotesPage.class);
-        mountPage(NotificationModule.NOTIFICATION_RELATIVE_PAGE_URL, NotificationLandingPage.class);
+        mountPage("notification", NotificationLandingPage.class);
         mountPage("notifications", NotificationsPage.class);
         mountPage("settings", BasicProfilePage.class);
         mountPage("settings/supervisorprofile", SupervisorProfilePage.class);
diff --git a/view/src/main/java/se/su/dsv/scipro/SciProModule.java b/view/src/main/java/se/su/dsv/scipro/SciProModule.java
deleted file mode 100644
index 26e7f0a6ba..0000000000
--- a/view/src/main/java/se/su/dsv/scipro/SciProModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package se.su.dsv.scipro;
-
-import com.google.inject.Singleton;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.persist.jpa.JpaPersistModule;
-import com.google.inject.servlet.ServletModule;
-import com.google.inject.servlet.SessionScoped;
-import modules.CoreModule;
-import org.apache.wicket.protocol.http.WebApplication;
-import se.su.dsv.scipro.file.FileModule;
-import se.su.dsv.scipro.file.FileStore;
-import se.su.dsv.scipro.security.auth.AuthenticationModule;
-import se.su.dsv.scipro.system.CurrentUser;
-import se.su.dsv.scipro.system.Lifecycle;
-import se.su.dsv.scipro.workerthreads.WorkerModule;
-
-public class SciProModule extends ServletModule {
-    @Override
-    protected void configureServlets() {
-        install(new JpaPersistModule("defaultPersistenceUnit"));
-        install(new CoreModule());
-        install(new FileModule());
-        bind(FileStore.class).to(FileSystemStore.class);
-        install(new WorkerModule());
-        install(new AuthenticationModule());
-
-        bind(WebApplication.class).to(SciProApplication.class).in(Singleton.class);
-
-        bind(CurrentUser.class).to(CurrentUserFromWicketSession.class).in(SessionScoped.class);
-        Multibinder<Lifecycle> lifecycles = Multibinder.newSetBinder(binder(), Lifecycle.class);
-        lifecycles.addBinding().to(DataInitializer.class);
-    }
-}
diff --git a/view/src/main/java/se/su/dsv/scipro/crosscutting/CrosscuttingModule.java b/view/src/main/java/se/su/dsv/scipro/crosscutting/CrosscuttingModule.java
deleted file mode 100644
index 9f583db6d6..0000000000
--- a/view/src/main/java/se/su/dsv/scipro/crosscutting/CrosscuttingModule.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package se.su.dsv.scipro.crosscutting;
-
-import com.google.common.eventbus.EventBus;
-import com.google.inject.AbstractModule;
-
-public class CrosscuttingModule extends AbstractModule {
-    @Override
-    protected void configure() {
-        requireBinding(EventBus.class);
-        bind(ReviewingNotifications.class).asEagerSingleton();
-        bind(ReviewerSupportMailer.class).asEagerSingleton();
-        bind(ReviewerAssignedNotifications.class).asEagerSingleton();
-        bind(ReviewerAssignedDeadline.class).asEagerSingleton();
-        bind(ForwardPhase2Feedback.class).asEagerSingleton();
-    }
-}
diff --git a/view/src/main/resources/META-INF/services/com.google.inject.Module b/view/src/main/resources/META-INF/services/com.google.inject.Module
deleted file mode 100644
index c0c493be41..0000000000
--- a/view/src/main/resources/META-INF/services/com.google.inject.Module
+++ /dev/null
@@ -1,15 +0,0 @@
-se.su.dsv.scipro.SciProModule
-se.su.dsv.scipro.reviewing.ReviewingModule
-se.su.dsv.scipro.crosscutting.CrosscuttingModule
-se.su.dsv.scipro.integration.activityfinalseminar.ActivityFinalSeminarModule
-se.su.dsv.scipro.integration.activityforum.ActivityForumModule
-se.su.dsv.scipro.peer.PeerModule
-se.su.dsv.scipro.firstmeeting.FirstMeetingModule
-se.su.dsv.scipro.forum.notifications.ForumNotificationsModule
-se.su.dsv.scipro.daisyExternal.DaisyExternalModule
-se.su.dsv.scipro.plagiarism.urkund.UrkundModule
-se.su.dsv.scipro.sukat.SukatModule
-se.su.dsv.scipro.oauth.OAuthModule
-se.su.dsv.scipro.grading.GradingModule
-se.su.dsv.scipro.gdpr.GDPRModule
-se.su.dsv.scipro.survey.SurveyModule
diff --git a/view/src/test/java/se/su/dsv/scipro/SciProTest.java b/view/src/test/java/se/su/dsv/scipro/SciProTest.java
index c8240ce767..af6c912281 100755
--- a/view/src/test/java/se/su/dsv/scipro/SciProTest.java
+++ b/view/src/test/java/se/su/dsv/scipro/SciProTest.java
@@ -1,15 +1,9 @@
 package se.su.dsv.scipro;
 
 import com.google.common.eventbus.EventBus;
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.Session;
-import org.apache.wicket.guice.GuiceComponentInjector;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
diff --git a/war/src/test/java/se/su/dsv/scipro/workerthreads/SchedulerImplTest.java b/war/src/test/java/se/su/dsv/scipro/workerthreads/SchedulerImplTest.java
index a3283bc1a6..f79a05cd26 100644
--- a/war/src/test/java/se/su/dsv/scipro/workerthreads/SchedulerImplTest.java
+++ b/war/src/test/java/se/su/dsv/scipro/workerthreads/SchedulerImplTest.java
@@ -1,8 +1,10 @@
 package se.su.dsv.scipro.workerthreads;
 
-import com.google.inject.util.Providers;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Answers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
@@ -33,7 +35,7 @@ public class SchedulerImplTest {
     public void schedules_correctly() {
         long period = 1;
         TimeUnit timeUnit = TimeUnit.SECONDS;
-        scheduler.schedule("My worker").runBy(Providers.of(abstractWorker)).every(period, timeUnit);
+        scheduler.schedule("My worker").runBy(() -> abstractWorker).every(period, timeUnit);
         verify(scheduledExecutorService).scheduleAtFixedRate(any(Runnable.class), eq(period), eq(period), eq(timeUnit));
     }