diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml
index 7cf30964ab0a24cd32a74044361bd717425dc98e..9fa63c0d2232f8dfd35aa54bd7bc16066fdaff51 100644
--- a/pluto-server/pom.xml
+++ b/pluto-server/pom.xml
@@ -26,11 +26,11 @@
 		<lorem.version>2.1</lorem.version>
 		<faker.version>1.0.2</faker.version>
 		<spring-admin.version>2.3.1</spring-admin.version>
-		
+
 		<commons-io.version>2.8.0</commons-io.version>
 
 		<spring-boot.build-image.imageName>docker.ozg-sh.de/pluto:build-latest</spring-boot.build-image.imageName>
-		
+
 		<zip.version>2.7.0</zip.version>
 	</properties>
 
@@ -158,9 +158,16 @@
 			<artifactId>junit-jupiter-params</artifactId>
 			<scope>test</scope>
 		</dependency>
+<!-- 		<dependency> -->
+<!-- 			<groupId>de.flapdoodle.embed</groupId> -->
+<!-- 			<artifactId>de.flapdoodle.embed.mongo</artifactId> -->
+<!-- 			<scope>test</scope> -->
+<!-- 		</dependency> -->
+
 		<dependency>
-			<groupId>de.flapdoodle.embed</groupId>
-			<artifactId>de.flapdoodle.embed.mongo</artifactId>
+			<groupId>org.testcontainers</groupId>
+			<artifactId>mongodb</artifactId>
+			<version>1.15.3</version>
 			<scope>test</scope>
 		</dependency>
 	</dependencies>
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java
index 52fef53990ef14e198055d0acc9a2a9392ec03a2..63d284cc76dc7edbe80230cdbfe203ad527ce558 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java
@@ -21,6 +21,7 @@ public class Vorgang {
 	public static final String MONGODB_FIELDNAME_ID = "id";
 	static final String MONGODB_FIELDNAME_VERSION = "version";
 	static final String MONGODB_FIELDNAME_STATUS = "status";
+	static final String MONGODB_FIELDNAME_CREATED_AT = "createdAt";
 
 	public enum Status {
 		NEU, ANGENOMMEN, VERWORFEN, IN_BEARBEITUNG, BESCHIEDEN, ABGESCHLOSSEN, WEITERGELEITET;
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java
index 5362fe1b285f37d58fd993fb8f38c67a796dd479..14770d8263b19a703932aeda884ce836a8468f87 100644
--- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java
@@ -1,7 +1,11 @@
 package de.itvsh.ozg.pluto.vorgang;
 
+import java.util.List;
+
 import org.springframework.data.mongodb.repository.MongoRepository;
 
 interface VorgangHeaderRepository extends MongoRepository<VorgangHeader, String> {
 
+	@Override
+	List<VorgangHeader> findAll();
 }
\ No newline at end of file
diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..29bf96819b8274e8d8c1150f4f0b451ec738358c
--- /dev/null
+++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java
@@ -0,0 +1,39 @@
+package de.itvsh.ozg.pluto.vorgang;
+
+import static de.itvsh.ozg.pluto.vorgang.Vorgang.*;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationPipeline;
+import org.springframework.data.mongodb.core.aggregation.UnionWithOperation;
+import org.springframework.data.mongodb.core.query.Criteria;
+
+import de.itvsh.ozg.pluto.vorgang.Vorgang.Status;
+
+class VorgangHeaderRepositoryImpl {
+
+	@Autowired
+	private MongoTemplate template;
+
+	public List<VorgangHeader> findAll() {
+		var aggregation = Aggregation.newAggregation(
+				Aggregation.match(new Criteria(MONGODB_FIELDNAME_STATUS).is(Status.IN_BEARBEITUNG)),
+				Aggregation.sort(Sort.by(MONGODB_FIELDNAME_CREATED_AT)),
+				UnionWithOperation.unionWith(Vorgang.COLLECTION_NAME).pipeline(buildZuBearbeitendePipeline()));
+
+		var result = template.aggregate(aggregation, VorgangHeader.class, VorgangHeader.class);
+		return result.getMappedResults();
+	}
+
+	private AggregationPipeline buildZuBearbeitendePipeline() {
+		var aggregation = Aggregation.newAggregation(
+				Aggregation.match(new Criteria(MONGODB_FIELDNAME_STATUS).in(Status.NEU, Status.ANGENOMMEN, Status.VERWORFEN)),
+				Aggregation.sort(Sort.by(MONGODB_FIELDNAME_CREATED_AT)));
+		return aggregation.getPipeline();
+	}
+
+}
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/DbInitializer.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/DbInitializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d8366fd465f55fd45ee4dd79e479d13ee97e5f0
--- /dev/null
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/DbInitializer.java
@@ -0,0 +1,29 @@
+package de.itvsh.ozg.pluto;
+
+import org.springframework.boot.test.util.TestPropertyValues;
+import org.springframework.context.ApplicationContextInitializer;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.utility.DockerImageName;
+
+import lombok.extern.log4j.Log4j2;
+
+@Log4j2
+public class DbInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
+	@Override
+	public void initialize(ConfigurableApplicationContext applicationContext) {
+//	@Bean
+//	public MongoDBContainer mongodb(ConfigurableApplicationContext applicationContext) {
+		MongoDBContainer mongoDbContainer = new MongoDBContainer(DockerImageName.parse("mongo").withTag("4.4"));
+		LOG.info("Starting mongoDB ...");
+		mongoDbContainer.start();
+		LOG.info("mongoDB started.");
+
+		TestPropertyValues.of(
+				"spring.data.mongodb.host=" + mongoDbContainer.getHost(),
+				"spring.data.mongodb.port=" + mongoDbContainer.getFirstMappedPort()).applyTo(applicationContext.getEnvironment());
+
+//		return mongoDbContainer;
+
+	}
+}
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/TestConfiguration.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/TestConfiguration.java
index c89c480d7c5df70b610d1b178a492a56c2b34060..0f8d90a5348522dab11479557e8035beb181eadc 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/TestConfiguration.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/TestConfiguration.java
@@ -6,11 +6,15 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.mail.javamail.JavaMailSender;
 
+import lombok.extern.log4j.Log4j2;
+
 @Configuration
+@Log4j2
 public class TestConfiguration {
 
 	@Bean
 	public JavaMailSender mockMailSender() {
 		return mock(JavaMailSender.class);
 	}
-}
+
+}
\ No newline at end of file
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/test/DataITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/test/DataITCase.java
index 5614b918c59d96eb8e026ec7b84e28d7856fb082..b73ee77a8d667fb93f99b2ba3b38c6b0d98d8bbb 100644
--- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/test/DataITCase.java
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/common/test/DataITCase.java
@@ -7,12 +7,16 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+
+import de.itvsh.ozg.pluto.DbInitializer;
 
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.TYPE)
 @Inherited
 
 @ITCase
+@ContextConfiguration(initializers = { DbInitializer.class })
 @ActiveProfiles({ "itcase", "with_db" })
 public @interface DataITCase {
 
diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..cd3ff9c10b1ec12063292b7cec81e3a4bad2e5ab
--- /dev/null
+++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java
@@ -0,0 +1,86 @@
+package de.itvsh.ozg.pluto.vorgang;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.time.ZonedDateTime;
+import java.time.temporal.ChronoUnit;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+import org.junit.jupiter.params.provider.EnumSource.Mode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+
+import de.itvsh.ozg.pluto.common.test.DataITCase;
+import de.itvsh.ozg.pluto.vorgang.Vorgang.Status;
+
+@DataITCase
+class VorgangHeaderRepositoryITCase {
+
+	@Autowired
+	private VorgangHeaderRepository repository;
+	@Autowired
+	private MongoOperations mongoOperations;
+
+//	@ClassRule
+//	public static MongoDBContainer mongoDbContainer = new MongoDBContainer(DockerImageName.parse("mongo").withTag("4.4"));
+
+//	@BeforeAll
+//	static void startDB() {
+//		mongoDbContainer.start();
+//	}
+
+	@Nested
+	class TestSortForEA {
+
+		@BeforeEach
+		void persistVorgang() {
+			mongoOperations.dropCollection(Vorgang.class);
+		}
+
+		@Test
+		void shouldSortInBearbeitungByCreatedAt() {
+			mongoOperations.save(VorgangTestFactory.createBuilder().id("3").status(Status.IN_BEARBEITUNG)
+					.createdAt(ZonedDateTime.now().minus(2, ChronoUnit.DAYS)).build());
+			mongoOperations.save(VorgangTestFactory.createBuilder().id("2").status(Status.IN_BEARBEITUNG)
+					.createdAt(ZonedDateTime.now().minus(3, ChronoUnit.DAYS)).build());
+			mongoOperations.save(VorgangTestFactory.createBuilder().id("1").status(Status.IN_BEARBEITUNG)
+					.createdAt(ZonedDateTime.now().minus(4, ChronoUnit.DAYS)).build());
+
+			var vorgaenge = repository.findAll();
+
+			assertThat(vorgaenge.get(0).getId()).isEqualTo("1");
+			assertThat(vorgaenge.get(1).getId()).isEqualTo("2");
+			assertThat(vorgaenge.get(2).getId()).isEqualTo("3");
+		}
+
+		@ParameterizedTest
+		@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "VERWORFEN" })
+		void shouldSortAbzuarbeitendeAfterInBearbeitung(Status status) {
+			mongoOperations.save(VorgangTestFactory.createBuilder().id("2").status(status)
+					.createdAt(ZonedDateTime.now().minus(4, ChronoUnit.DAYS)).build());
+			mongoOperations.save(VorgangTestFactory.createBuilder().id("1").status(Status.IN_BEARBEITUNG)
+					.createdAt(ZonedDateTime.now().minus(4, ChronoUnit.DAYS)).build());
+
+			var vorgaenge = repository.findAll();
+
+			assertThat(vorgaenge.get(0).getId()).isEqualTo("1");
+			assertThat(vorgaenge.get(1).getId()).isEqualTo("2");
+		}
+	}
+
+//	static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
+//
+//		@Override
+//		public void initialize(ConfigurableApplicationContext applicationContext) {
+//			TestPropertyValues.of(
+//					"spring.data.mongodb.host=" + mongoDbContainer.getHost(),
+//					"spring.data.mongodb.port=" + mongoDbContainer.getFirstMappedPort()).applyTo(applicationContext.getEnvironment());
+//
+//		}
+//
+//	}
+}
diff --git a/pluto-server/src/test/resources/application-with_db.yml b/pluto-server/src/test/resources/application-with_db.yml
index b8ef7d838d2b70616f29b1408469dbcd92e921f6..fa1211c29d84766d5838a7ef176a05267cf5ac67 100644
--- a/pluto-server/src/test/resources/application-with_db.yml
+++ b/pluto-server/src/test/resources/application-with_db.yml
@@ -1,6 +1,6 @@
 logging:
   level:
-    '[org.springframework.data.mongodb]': DEBUG
+    '[org.springframework.data.mongodb]': INFO
 
 spring:
   data: