diff --git a/CHANGELOG.md b/CHANGELOG.md
index f680e74be9e41f8e46bcb09c71f645e5dd856ed1..71d51edc00f72af71ee798226afac0b805714ff4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Changed
 - Queue feedback rating link replaced with actual rating. @dsavvidi
+- Job offer applications are sorted based on the time of application @dsavvidi
 
 ### Fixed
 
diff --git a/build.gradle.kts b/build.gradle.kts
index 68a3120bc1ff2d495d91c24b3dd6e58e6d1974e9..2b4f3500be47e032bb3700d36339665c31cbea49 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -4,12 +4,12 @@ import nl.javadude.gradle.plugins.license.DownloadLicensesExtension
 import nl.javadude.gradle.plugins.license.LicenseExtension
 
 group = "nl.tudelft.tam"
-version = "2.1.7"
+version = "2.2.1"
 
 val javaVersion = JavaVersion.VERSION_17
 
-val labradoorVersion = "1.4.1-SNAPSHOT"
-val libradorVersion = "1.2.1"
+val labradoorVersion = "1.4.1"
+val libradorVersion = "1.3.0"
 val chihuahUIVersion = "1.0.0"
 val guavaVersion = "32.1.1-jre"
 val modelMapperVersion = "3.1.0"
@@ -59,11 +59,11 @@ plugins {
 
     // Spring plugins for managing dependencies and creating
     // a nice Spring Boot application.
-    id("org.springframework.boot").version("2.7.14")
-    id("io.spring.dependency-management").version("1.1.3")
+    id("org.springframework.boot").version("2.7.18")
+    id("io.spring.dependency-management").version("1.1.4")
 
     // Spotless plugin for checking style of Java code.
-    id("com.diffplug.spotless").version("6.21.0")
+    id("com.diffplug.spotless").version("6.23.3")
 
     // Plugin for checking license headers within our code and files.
     id("com.github.hierynomus.license").version("0.16.1")
@@ -71,7 +71,7 @@ plugins {
 
     // Plugin to provide task to check the current versions of
     // dependencies and of Gradle to see if updates are available.
-    id("com.github.ben-manes.versions").version("0.47.0")
+    id("com.github.ben-manes.versions").version("0.50.0")
 
 	id("com.unclezs.gradle.sass").version("1.0.10")
 }
@@ -252,7 +252,6 @@ dependencies {
     // Other Spring dependencies
     implementation("org.springframework:spring-web")
     implementation("org.springframework.security:spring-security-messaging")
-    implementation("org.springdoc:springdoc-openapi-ui:$springDocVersion")
 
     // Thymeleaf layout dialect
     implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect")
diff --git a/src/main/java/nl/tudelft/tam/cache/EditionRolesCacheManager.java b/src/main/java/nl/tudelft/tam/cache/EditionRolesCacheManager.java
index 4ef46ea26f70844a75f153e2ccb314203c5fdfb6..0d83321f8503d9ed52e639b44d9328cb5f3b5af5 100644
--- a/src/main/java/nl/tudelft/tam/cache/EditionRolesCacheManager.java
+++ b/src/main/java/nl/tudelft/tam/cache/EditionRolesCacheManager.java
@@ -18,6 +18,7 @@
 package nl.tudelft.tam.cache;
 
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,10 +64,10 @@ public class EditionRolesCacheManager extends CoreCacheManager<Long, EditionRole
 	}
 
 	@Override
-	protected List<RoleHolder> fetch(List<Long> ids) {
+	protected Set<RoleHolder> fetch(Set<Long> ids) {
 		return ids.stream()
 				.map(id -> new RoleHolder(id, eApi.getEditionParticipants(id).collectList().block()))
-				.collect(Collectors.toList());
+				.collect(Collectors.toSet());
 	}
 
 	@Override
diff --git a/src/main/java/nl/tudelft/tam/dto/view/summary/ApplicationSummaryDTO.java b/src/main/java/nl/tudelft/tam/dto/view/summary/ApplicationSummaryDTO.java
index 6d02cdee508acbdfbaa8f27e47fb133ab75fb72d..62a3115bc07ec28620ba041c3b49a1cb5ca19f5e 100644
--- a/src/main/java/nl/tudelft/tam/dto/view/summary/ApplicationSummaryDTO.java
+++ b/src/main/java/nl/tudelft/tam/dto/view/summary/ApplicationSummaryDTO.java
@@ -17,7 +17,7 @@
  */
 package nl.tudelft.tam.dto.view.summary;
 
-import java.time.LocalDate;
+import java.time.LocalDateTime;
 
 import lombok.*;
 import lombok.experimental.SuperBuilder;
@@ -38,7 +38,7 @@ public class ApplicationSummaryDTO extends View<Application> {
 
 	private String content;
 
-	private LocalDate createdDate;
+	private LocalDateTime createdDate;
 
 	@Builder.Default
 	private Status status = Status.SUBMITTED;
diff --git a/src/main/java/nl/tudelft/tam/model/Application.java b/src/main/java/nl/tudelft/tam/model/Application.java
index f6619c41fe7a1fd727544f3cfc720332d4b7a934..d968861500015c8b891f69767d8da6ea000b3bfa 100644
--- a/src/main/java/nl/tudelft/tam/model/Application.java
+++ b/src/main/java/nl/tudelft/tam/model/Application.java
@@ -18,7 +18,7 @@
 package nl.tudelft.tam.model;
 
 import java.io.Serializable;
-import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -76,21 +76,21 @@ public class Application {
 	@NotNull
 	@Builder.Default
 	@Column(columnDefinition = "DATE")
-	private LocalDate createdDate = LocalDate.now();
+	private LocalDateTime createdDate = LocalDateTime.now();
 
 	@NotNull
 	@Builder.Default
 	@Column(columnDefinition = "DATE")
-	private LocalDate lastModifiedDate = LocalDate.now();
+	private LocalDateTime lastModifiedDate = LocalDateTime.now();
 
 	@PreUpdate
 	public void setLastModifiedDate() {
-		this.lastModifiedDate = LocalDate.now();
+		this.lastModifiedDate = LocalDateTime.now();
 	}
 
 	@PrePersist
 	public void setCreatedDate() {
-		this.createdDate = LocalDate.now();
+		this.createdDate = LocalDateTime.now();
 	}
 
 }
diff --git a/src/test/java/nl/tudelft/tam/controller/JobOfferControllerTest.java b/src/test/java/nl/tudelft/tam/controller/JobOfferControllerTest.java
index 98c445bf7ab178f3f2e28e7c0b1aee894407acf7..0bfdcc602d441ca8f3c504cb96431c0309fbd5a0 100644
--- a/src/test/java/nl/tudelft/tam/controller/JobOfferControllerTest.java
+++ b/src/test/java/nl/tudelft/tam/controller/JobOfferControllerTest.java
@@ -153,11 +153,11 @@ class JobOfferControllerTest {
 				.deadline(LocalDate.now().plusDays(1)).build();
 
 		app1a = ApplicationSummaryDTO.builder().personId(PERSON_ID_1).jobOfferId(JOFFER_ID_1)
-				.status(Status.SUBMITTED).createdDate(LocalDate.now()).build();
+				.status(Status.SUBMITTED).createdDate(LocalDateTime.now()).build();
 		app1b = ApplicationSummaryDTO.builder().personId(PERSON_ID_2).jobOfferId(JOFFER_ID_1)
-				.status(Status.OFFERED).createdDate(LocalDate.now()).build();
+				.status(Status.OFFERED).createdDate(LocalDateTime.now()).build();
 		app2a = ApplicationSummaryDTO.builder().personId(PERSON_ID_1).jobOfferId(JOFFER_ID_2)
-				.status(Status.REJECTED_BY_STUDENT).createdDate(LocalDate.now()).build();
+				.status(Status.REJECTED_BY_STUDENT).createdDate(LocalDateTime.now()).build();
 
 		JobOfferDefault joDefault = JobOfferDefault.builder().contractName("TEST JO")
 				.contractBaanCode("TEST BAAN JO").contractStartDate(LocalDate.now())