diff --git a/src/main/java/de/ozgcloud/admin/keycloak/AddGroupData.java b/src/main/java/de/ozgcloud/admin/keycloak/AddGroupData.java
index 2845e10babe0bed5eaf22a1b5d5bb043d0532a6b..bfef1afa5a70b06618372fcb6e7c1eb035f3e872 100644
--- a/src/main/java/de/ozgcloud/admin/keycloak/AddGroupData.java
+++ b/src/main/java/de/ozgcloud/admin/keycloak/AddGroupData.java
@@ -9,7 +9,6 @@ import lombok.ToString;
 @ToString
 public class AddGroupData {
 
-	private String parentId;
 	private String name;
 	private String organisationsEinheitId;
 }
diff --git a/src/main/java/de/ozgcloud/admin/keycloak/KeycloakApiService.java b/src/main/java/de/ozgcloud/admin/keycloak/KeycloakApiService.java
index 09b865543a58b34c7a89233f6f75ee0253bc8d6c..057d0ab9622b949f7214008b131e956d76b70629 100644
--- a/src/main/java/de/ozgcloud/admin/keycloak/KeycloakApiService.java
+++ b/src/main/java/de/ozgcloud/admin/keycloak/KeycloakApiService.java
@@ -20,17 +20,11 @@ class KeycloakApiService {
 	}
 
 	public String addGroup(GroupRepresentation groupRepresentation) {
-		try (var response = addParentOrChildGroup(groupRepresentation)) {
+		try (var response = groupsResource.add(groupRepresentation)) {
 			return getAddedResourceIdFromResponse(response);
 		}
 	}
 
-	Response addParentOrChildGroup(GroupRepresentation groupRepresentation) {
-		return groupRepresentation.getParentId() == null ?
-				groupsResource.add(groupRepresentation) :
-				groupsResource.group(groupRepresentation.getParentId()).subGroup(groupRepresentation);
-	}
-
 	String getAddedResourceIdFromResponse(Response response) {
 		if (response.getStatus() == Response.Status.CREATED.getStatusCode()) {
 			return extractResourceIdFromLocationHeader(response.getHeaderString("Location"));
diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapper.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapper.java
index 193a6f05d8410e8733aad684fc8a4fb6761825f5..da1634ec80bf9a5169022184c50bba014dd735a4 100644
--- a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapper.java
+++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapper.java
@@ -13,6 +13,5 @@ interface OrganisationsEinheitMapper {
 	@Mapping(target = "zufiId", source = "id")
 	OrganisationsEinheit fromGrpc(GrpcOrganisationsEinheit grpcOrganisationsEinheit);
 
-	@Mapping(target = "parentId", source = "parentKeycloakId")
-	AddGroupData toAddGroupData(OrganisationsEinheit organisationsEinheit, String parentKeycloakId);
+	AddGroupData toAddGroupData(OrganisationsEinheit organisationsEinheit);
 }
diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc431ca257e3c6b6acc109c09154e128709694df
--- /dev/null
+++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitSynchronizationException.java
@@ -0,0 +1,8 @@
+package de.ozgcloud.admin.organisationseinheit;
+
+public class OrganisationsEinheitSynchronizationException extends RuntimeException {
+
+	public OrganisationsEinheitSynchronizationException(String message) {
+		super(message);
+	}
+}
diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java
index 751d4767ff3075d6b5b8f2e06c2be4810365c2e4..85200b0b659b65f05d63047280b81dd62c383570 100644
--- a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java
+++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncService.java
@@ -2,7 +2,6 @@ package de.ozgcloud.admin.organisationseinheit;
 
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Stream;
 
 import org.springframework.stereotype.Service;
 
@@ -90,46 +89,20 @@ class SyncService {
 	}
 
 	public void syncAddedOrganisationsEinheiten(long syncTimestamp) {
-		sortInAdditionOrder(repository.findAllWithoutSyncResult()).forEach(
+		repository.findAllWithoutSyncResult().forEach(
 				organisationsEinheit -> syncAddedOrganisationsEinheit(syncTimestamp, organisationsEinheit));
 	}
 
-	Stream<OrganisationsEinheit> sortInAdditionOrder(Stream<OrganisationsEinheit> organisationsEinheiten) {
-		return organisationsEinheiten.sorted((org1, org2) -> {
-			if (org1.getParentId() == null && org2.getParentId() == null) {
-				return 0;
-			}
-			if (org1.getParentId() == null) {
-				return -1;
-			}
-			if (org2.getParentId() == null) {
-				return 1;
-			}
-			if (org1.getId().equals(org2.getParentId())) {
-				return -1;
-			}
-			if (org1.getParentId().equals(org2.getId())) {
-				return 1;
-			}
-			return 0;
-		});
-	}
-
 	void syncAddedOrganisationsEinheit(long syncTimestamp, OrganisationsEinheit organisationsEinheit) {
-		var parent = findParent(organisationsEinheit);
-		if (parent.isEmpty() || parent.get().getKeycloakId() != null) {
-			var parentKeycloakId = parent.map(OrganisationsEinheit::getKeycloakId).orElse(null);
-			addAsGroupInKeycloak(organisationsEinheit, parentKeycloakId).ifPresent(
-					addedGroupId -> updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId));
-		}
+		addAsGroupInKeycloak(organisationsEinheit).ifPresent(
+				addedGroupId -> updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId));
 	}
 
-	Optional<OrganisationsEinheit> findParent(OrganisationsEinheit organisationsEinheit) {
-		return Optional.ofNullable(organisationsEinheit.getParentId()).flatMap(repository::findById);
-	}
-
-	Optional<String> addAsGroupInKeycloak(OrganisationsEinheit organisationsEinheit, String parentKeycloakId) {
-		var addGroupData = organisationsEinheitMapper.toAddGroupData(organisationsEinheit, parentKeycloakId);
+	Optional<String> addAsGroupInKeycloak(OrganisationsEinheit organisationsEinheit) {
+		if (organisationsEinheit.getParentId() != null) {
+			throw new OrganisationsEinheitSynchronizationException("Organisationseinheit %s has parent".formatted(organisationsEinheit.getOrganisationsEinheitId()));
+		}
+		var addGroupData = organisationsEinheitMapper.toAddGroupData(organisationsEinheit);
 		return addGroupInKeycloak(addGroupData);
 	}
 
diff --git a/src/test/java/de/ozgcloud/admin/keycloak/AddGroupDataTestFactory.java b/src/test/java/de/ozgcloud/admin/keycloak/AddGroupDataTestFactory.java
index b53d872617b553a2c708e6b653905231889af445..cea95944ffe15491d5a60ead097db8a8a29c4989 100644
--- a/src/test/java/de/ozgcloud/admin/keycloak/AddGroupDataTestFactory.java
+++ b/src/test/java/de/ozgcloud/admin/keycloak/AddGroupDataTestFactory.java
@@ -2,7 +2,6 @@ package de.ozgcloud.admin.keycloak;
 
 public class AddGroupDataTestFactory {
 
-	public static final String PARENT_ID = GroupRepresentationTestFactory.ID;
 	public static final String NAME = GroupRepresentationTestFactory.NAME;
 	public static final String ORGANISATIONS_EINHEIT_ID = GroupRepresentationTestFactory.ORGANISATIONS_EINHEIT_ID;
 
@@ -12,7 +11,6 @@ public class AddGroupDataTestFactory {
 
 	public static AddGroupData.AddGroupDataBuilder createBuilder() {
 		return new AddGroupData.AddGroupDataBuilder()
-				.parentId(PARENT_ID)
 				.name(NAME)
 				.organisationsEinheitId(ORGANISATIONS_EINHEIT_ID);
 	}
diff --git a/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java b/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java
index adaddc58f2a88a674a6e66e2fba85c698ba81570..790451bfb93c34eec09fe0168cbb0eee2d84c73b 100644
--- a/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java
+++ b/src/test/java/de/ozgcloud/admin/keycloak/GroupMapperTest.java
@@ -180,13 +180,6 @@ class GroupMapperTest {
 			doReturn(ATTRIBUTES).when(mapper).getAttributes(addGroupData);
 		}
 
-		@Test
-		void shouldSetParentId() {
-			var groupRepresentation = callMapper();
-
-			assertThat(groupRepresentation.getParentId()).isEqualTo(addGroupData.getParentId());
-		}
-
 		@Test
 		void shouldSetName() {
 			var groupRepresentation = callMapper();
diff --git a/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceITCase.java b/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceITCase.java
index f4bbd5036da9a34a15704c19209e2d4571eb9705..f2c7dd6c83ee9651cca09c17ad7eda8927ac94eb 100644
--- a/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceITCase.java
+++ b/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceITCase.java
@@ -8,7 +8,6 @@ import java.util.Optional;
 
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.keycloak.admin.client.resource.GroupsResource;
 import org.keycloak.representations.idm.GroupRepresentation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
@@ -26,8 +25,6 @@ class KeycloakApiServiceITCase {
 	private KeycloakApiService service;
 	@Autowired
 	private KeycloakApiProperties properties;
-	@Autowired
-	private GroupsResource groupsResource;
 
 	@Nested
 	class TestGetAllGroups {
@@ -158,20 +155,6 @@ class KeycloakApiServiceITCase {
 					.asList().isEmpty();
 		}
 
-		@Test
-		void shouldAddSubgroupToParent() {
-			var parentToAdd = createUniqueGroupRepresentation("shouldAddSubgroupToParent-parent");
-			var parentId = service.addGroup(parentToAdd);
-			var childToAdd = createUniqueGroupRepresentation("shouldAddSubgroupToParent-child");
-			childToAdd.setParentId(parentId);
-
-			var childId = service.addGroup(childToAdd);
-
-			var subgroupsInKc = groupsResource.group(parentId).getSubGroups(0, Integer.MAX_VALUE, true);
-			assertThat(subgroupsInKc).hasSize(1).first().extracting(GroupRepresentation::getId, GroupRepresentation::getParentId)
-					.contains(childId, parentId);
-		}
-
 		private GroupRepresentation createUniqueGroupRepresentation(String nameSuffix) {
 			// LoremIpsum does not guarantee unique results when called repeatedly
 			var groupName = "%s (%s)".formatted(LoremIpsum.getInstance().getName(), nameSuffix);
diff --git a/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceTest.java b/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceTest.java
index f04a47581dc3c2d7c67a79edb6f4ec3f1c69572b..ffded7cebae2a78c00c622ba341eb840eec4f760 100644
--- a/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceTest.java
+++ b/src/test/java/de/ozgcloud/admin/keycloak/KeycloakApiServiceTest.java
@@ -6,7 +6,6 @@ import static org.mockito.Mockito.*;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
-import org.keycloak.admin.client.resource.GroupResource;
 import org.keycloak.admin.client.resource.GroupsResource;
 import org.keycloak.representations.idm.GroupRepresentation;
 import org.mockito.InjectMocks;
@@ -35,15 +34,15 @@ class KeycloakApiServiceTest {
 
 		@BeforeEach
 		void init() {
-			doReturn(response).when(service).addParentOrChildGroup(groupRepresentation);
+			when(groupsResource.add(groupRepresentation)).thenReturn(response);
 			doReturn(RESOURCE_ID).when(service).getAddedResourceIdFromResponse(response);
 		}
 
 		@Test
-		void shouldAddParentOrChildGroup() {
+		void shouldCallGroupsResource() {
 			callService();
 
-			verify(service).addParentOrChildGroup(groupRepresentation);
+			verify(groupsResource).add(groupRepresentation);
 		}
 
 		@Test
@@ -65,69 +64,6 @@ class KeycloakApiServiceTest {
 		}
 	}
 
-	@Nested
-	class TestAddParentOrChildGroup {
-
-		private GroupRepresentation groupRepresentation;
-
-		@Nested
-		class OnParentGroup {
-
-			@BeforeEach
-			void init() {
-				groupRepresentation = GroupRepresentationTestFactory.create();
-				groupRepresentation.setParentId(null);
-				when(groupsResource.add(groupRepresentation)).thenReturn(response);
-			}
-
-			@Test
-			void shouldCallGroupsResource() {
-				callService();
-
-				verify(groupsResource).add(groupRepresentation);
-			}
-
-			@Test
-			void shouldReturnResponse() {
-				var serviceResponse = callService();
-
-				assertThat(serviceResponse).isEqualTo(response);
-			}
-		}
-
-		@Nested
-		class OnChildGroup {
-
-			@Mock
-			private GroupResource groupResource;
-
-			@BeforeEach
-			void init() {
-				groupRepresentation = GroupRepresentationTestFactory.create();
-				when(groupsResource.group(GroupRepresentationTestFactory.PARENT_ID)).thenReturn(groupResource);
-				when(groupResource.subGroup(groupRepresentation)).thenReturn(response);
-			}
-
-			@Test
-			void shouldCallGroupResource() {
-				callService();
-
-				verify(groupResource).subGroup(groupRepresentation);
-			}
-
-			@Test
-			void shouldReturnResponse() {
-				var serviceResponse = callService();
-
-				assertThat(serviceResponse).isEqualTo(response);
-			}
-		}
-
-		private Response callService() {
-			return service.addParentOrChildGroup(groupRepresentation);
-		}
-	}
-
 	@Nested
 	class TestGetAddedResourceIdFromResponse {
 
diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapperTest.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapperTest.java
index 9192df6b2e1ac6545099bec61c84006758dadde3..53ec27998c68c86ce3dcdb7b91a1a8ba77fb8c20 100644
--- a/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapperTest.java
+++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/OrganisationsEinheitMapperTest.java
@@ -4,7 +4,6 @@ import static org.assertj.core.api.Assertions.*;
 
 import java.util.Collections;
 import java.util.Objects;
-import java.util.UUID;
 
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -46,18 +45,14 @@ class OrganisationsEinheitMapperTest {
 	@Nested
 	class TestToAddGroupData {
 
-		public static final String PARENT_KEYCLOAK_ID = UUID.randomUUID().toString();
-
 		@Test
 		void shouldMap() {
-			var mapped = mapper.toAddGroupData(OrganisationsEinheitTestFactory.create(), PARENT_KEYCLOAK_ID);
+			var mapped = mapper.toAddGroupData(OrganisationsEinheitTestFactory.create());
 
 			assertThat(mapped).extracting(
-					AddGroupData::getParentId,
 					AddGroupData::getName,
 					AddGroupData::getOrganisationsEinheitId
 			).containsExactly(
-					PARENT_KEYCLOAK_ID,
 					OrganisationsEinheitTestFactory.NAME,
 					OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID
 			);
diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncAddedOrganisationsEinheitenITCase.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncAddedOrganisationsEinheitenITCase.java
index ca1b0366500f5ea25e29cef7ebdaee5deff22484..1af0cf1617c485ebb64936aba8e653cdafa83ed1 100644
--- a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncAddedOrganisationsEinheitenITCase.java
+++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncAddedOrganisationsEinheitenITCase.java
@@ -2,11 +2,9 @@ package de.ozgcloud.admin.organisationseinheit;
 
 import static org.assertj.core.api.Assertions.*;
 import static org.assertj.core.groups.Tuple.tuple;
-import static org.mockito.Mockito.*;
 
 import java.time.Instant;
 import java.util.List;
-import java.util.Optional;
 import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -19,7 +17,6 @@ import org.springframework.test.context.ContextConfiguration;
 import de.ozgcloud.admin.common.KeycloakInitializer;
 import de.ozgcloud.admin.keycloak.Group;
 import de.ozgcloud.admin.keycloak.KeycloakRemoteService;
-import de.ozgcloud.admin.keycloak.ResourceCreationException;
 import de.ozgcloud.common.test.DbInitializer;
 import de.ozgcloud.common.test.ITCase;
 
@@ -53,48 +50,6 @@ class SyncAddedOrganisationsEinheitenITCase {
 				.contains(tuple(topLevel.getName(), topLevel.getOrganisationsEinheitId(), List.of()));
 	}
 
-	@Test
-	void shouldSynchronizeAddedTopLevelGroupWithChild() {
-		var topLevel = topLevel("shouldSynchronizeAddedTopLevelGroupWithChild");
-		var childLevel1 = childLevel("shouldSynchronizeAddedTopLevelGroupWithChild", topLevel);
-		operations.save(topLevel);
-		operations.save(childLevel1);
-
-		service.syncAddedOrganisationsEinheiten(syncTimestamp);
-
-		assertThat(findGroupInKeycloak(topLevel.getName())).isPresent().get()
-				.extracting(Group::getSubGroups).asList().extracting("name")
-				.containsExactly(childLevel1.getName());
-	}
-
-	@Test
-	void shouldSynchronizeChildAddedToAlreadySynchronizedParent() {
-		var parent = topLevel("shouldSynchronizeChildAddedToAlreadySynchronizedParent");
-		syncOrganisationsEinheitToKeycloak(parent);
-		var childLevel1 = childLevel("shouldSynchronizeChildAddedToAlreadySynchronizedParent", parent);
-		operations.save(childLevel1);
-
-		service.syncAddedOrganisationsEinheiten(syncTimestamp);
-
-		assertThat(findGroupInKeycloak(parent.getName())).isPresent().get()
-				.extracting(Group::getSubGroups).asList().extracting("name")
-				.containsExactly(childLevel1.getName());
-	}
-
-	@Test
-	void shouldNotAddChildIfParentWasNotSynchronized() {
-		var topLevel = topLevel("shouldNotAddChildIfParentWasNotSynchronized");
-		var childLevel1 = childLevel("shouldNotAddChildIfParentWasNotSynchronized", topLevel);
-		operations.save(topLevel);
-		operations.save(childLevel1);
-		doThrow(new ResourceCreationException("OMG!")).when(keycloakRemoteService)
-				.addGroup(argThat(addGroupData -> addGroupData.getName().equals(topLevel.getName())));
-
-		service.syncAddedOrganisationsEinheiten(syncTimestamp);
-
-		assertThat(findGroupInKeycloak(childLevel1.getName())).isEmpty();
-	}
-
 	private static OrganisationsEinheit topLevel(String nameSuffix) {
 		return OrganisationsEinheitTestFactory.createBuilder()
 				.id(UUID.randomUUID().toString())
@@ -104,25 +59,4 @@ class SyncAddedOrganisationsEinheitenITCase {
 				.name("topLevel (%s)".formatted(nameSuffix))
 				.build();
 	}
-
-	private static OrganisationsEinheit childLevel(String nameSuffix, OrganisationsEinheit parent) {
-		return OrganisationsEinheitTestFactory.createBuilder()
-				.id(UUID.randomUUID().toString())
-				.parentId(parent.getId())
-				.keycloakId(null)
-				.syncResult(null)
-				.name("childLevel1 (%s)".formatted(nameSuffix))
-				.build();
-	}
-
-	private Optional<Group> findGroupInKeycloak(String groupName) {
-		return keycloakRemoteService.getGroupsWithOrganisationsEinheitId()
-				.filter(group -> groupName.equals(group.getName()))
-				.findFirst();
-	}
-
-	private void syncOrganisationsEinheitToKeycloak(OrganisationsEinheit organisationsEinheit) {
-		operations.save(organisationsEinheit);
-		service.syncAddedOrganisationsEinheiten(syncTimestamp);
-	}
 }
diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java
index c448edf7fc37374623679fb861e5cc062bc6058f..52660504a334711babe2579bd5e7c4612bd2f763 100644
--- a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java
+++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncServiceTest.java
@@ -5,7 +5,6 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.time.Instant;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
@@ -422,16 +421,14 @@ class SyncServiceTest {
 		private final long syncTimestamp = Instant.now().toEpochMilli();
 		private final OrganisationsEinheit withoutSyncResult1 = OrganisationsEinheitTestFactory.createBuilder().id("A").build();
 		private final OrganisationsEinheit withoutSyncResult2 = OrganisationsEinheitTestFactory.createBuilder().id("B").build();
-		private final OrganisationsEinheit[] unsortedOrganisationsEinheiten = new OrganisationsEinheit[] { withoutSyncResult2, withoutSyncResult1 };
-		private final OrganisationsEinheit[] sortedOrganisationsEinheiten = new OrganisationsEinheit[] { withoutSyncResult1, withoutSyncResult2 };
+		private final OrganisationsEinheit[] organisationsEinheiten = new OrganisationsEinheit[] { withoutSyncResult2, withoutSyncResult1 };
 
 		@Captor
 		private ArgumentCaptor<Stream<OrganisationsEinheit>> streamArgumentCaptor;
 
 		@BeforeEach
 		void setUp() {
-			when(repository.findAllWithoutSyncResult()).thenReturn(Stream.of(unsortedOrganisationsEinheiten));
-			doReturn(Stream.of(sortedOrganisationsEinheiten)).when(service).sortInAdditionOrder(any());
+			when(repository.findAllWithoutSyncResult()).thenReturn(Stream.of(organisationsEinheiten));
 			doNothing().when(service).syncAddedOrganisationsEinheit(anyLong(), any());
 		}
 
@@ -442,14 +439,6 @@ class SyncServiceTest {
 			verify(repository).findAllWithoutSyncResult();
 		}
 
-		@Test
-		void shouldSortInAdditionOrder() {
-			callService();
-
-			verify(service).sortInAdditionOrder(streamArgumentCaptor.capture());
-			assertThat(streamArgumentCaptor.getValue()).containsExactly(unsortedOrganisationsEinheiten);
-		}
-
 		@Test
 		void shouldSynchronizeFirstOrganisationsEinheit() {
 			callService();
@@ -464,55 +453,11 @@ class SyncServiceTest {
 			verify(service).syncAddedOrganisationsEinheit(syncTimestamp, withoutSyncResult2);
 		}
 
-		@Test
-		void shouldSynchronizeInOrder() {
-			var inOrder = inOrder(service);
-
-			callService();
-
-			Arrays.stream(sortedOrganisationsEinheiten).forEach(organisationsEinheit ->
-					inOrder.verify(service).syncAddedOrganisationsEinheit(syncTimestamp, organisationsEinheit));
-		}
-
 		private void callService() {
 			service.syncAddedOrganisationsEinheiten(syncTimestamp);
 		}
 	}
 
-	@Nested
-	class TestSortInAdditionOrder {
-
-		@Test
-		void shouldTopLevelOrgComeFirst() {
-			var orgWithParent = OrganisationsEinheitTestFactory.create();
-			var orgWithoutParent = OrganisationsEinheitTestFactory.createBuilder().parentId(null).build();
-
-			var sorted = service.sortInAdditionOrder(Stream.of(orgWithParent, orgWithoutParent));
-
-			assertThat(sorted).containsExactly(orgWithoutParent, orgWithParent);
-		}
-
-		@Test
-		void shouldParentComeBeforeChild() {
-			var parent = OrganisationsEinheitTestFactory.create();
-			var child = OrganisationsEinheitTestFactory.createBuilder().parentId(parent.getId()).build();
-
-			var sorted = service.sortInAdditionOrder(Stream.of(child, parent));
-
-			assertThat(sorted).containsExactly(parent, child);
-		}
-
-		@Test
-		void shouldPreserveOrderForTopLevelGroups() {
-			var orgWithoutParent1 = OrganisationsEinheitTestFactory.createBuilder().parentId(null).build();
-			var orgWithoutParent2 = OrganisationsEinheitTestFactory.createBuilder().parentId(null).build();
-
-			var sorted = service.sortInAdditionOrder(Stream.of(orgWithoutParent1, orgWithoutParent2));
-
-			assertThat(sorted).containsExactly(orgWithoutParent1, orgWithoutParent2);
-		}
-	}
-
 	@Nested
 	class TestSyncAddedOrganisationsEinheit {
 
@@ -520,106 +465,33 @@ class SyncServiceTest {
 		private final String addedGroupId = UUID.randomUUID().toString();
 		private final String parentKeycloakId = UUID.randomUUID().toString();
 		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-		private final OrganisationsEinheit parentWithoutKeycloakId = OrganisationsEinheitTestFactory.createBuilder().keycloakId(null).build();
-		private final OrganisationsEinheit parentWithKeycloakId = OrganisationsEinheitTestFactory.createBuilder().keycloakId(parentKeycloakId).build();
 
 		@Test
-		void shouldFindParentKeycloakId() {
-			doReturn(Optional.of(parentWithoutKeycloakId)).when(service).findParent(organisationsEinheit);
+		void shouldAddAsGroupInKeycloak() {
+			doReturn(Optional.empty()).when(service).addAsGroupInKeycloak(organisationsEinheit);
 
 			callService();
 
-			verify(service).findParent(organisationsEinheit);
+			verify(service).addAsGroupInKeycloak(organisationsEinheit);
 		}
 
-		@Nested
-		class OnParentHasNoKeycloakId {
-
-			@BeforeEach
-			void init() {
-				doReturn(Optional.of(parentWithoutKeycloakId)).when(service).findParent(organisationsEinheit);
-			}
-
-			@Test
-			void shouldNotAddAsGroupInKeycloak() {
-				callService();
-
-				verify(service, never()).addAsGroupInKeycloak(any(), any());
-			}
-		}
-
-		@Nested
-		class OnOrganisationsEinheitIsTopLevel {
-
-			@BeforeEach
-			void init() {
-				doReturn(Optional.empty()).when(service).findParent(organisationsEinheit);
-			}
-
-			@Test
-			void shouldAddAsGroupInKeycloakWithNullParent() {
-				doReturn(Optional.empty()).when(service).addAsGroupInKeycloak(organisationsEinheit, null);
-
-				callService();
-
-				verify(service).addAsGroupInKeycloak(organisationsEinheit, null);
-			}
-
-			@Test
-			void shouldUpdateAfterSuccessfulGroupCreation() {
-				doReturn(Optional.of(addedGroupId)).when(service).addAsGroupInKeycloak(organisationsEinheit, null);
-				doNothing().when(service).updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId);
-
-				callService();
-
-				verify(service).updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId);
-			}
-
-			@Test
-			void shouldNotUpdate() {
-				doReturn(Optional.empty()).when(service).addAsGroupInKeycloak(organisationsEinheit, null);
+		@Test
+		void shouldUpdateAfterSuccessfulGroupCreation() {
+			doReturn(Optional.of(addedGroupId)).when(service).addAsGroupInKeycloak(organisationsEinheit);
+			doNothing().when(service).updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId);
 
-				callService();
+			callService();
 
-				verify(service, never()).updateAfterSuccessfulGroupCreation(any(), anyLong(), any());
-			}
+			verify(service).updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId);
 		}
 
-		@Nested
-		class OnParentHasKeycloakId {
-
-			@BeforeEach
-			void init() {
-				doReturn(Optional.of(parentWithKeycloakId)).when(service).findParent(organisationsEinheit);
-			}
-
-			@Test
-			void shouldAddAsGroupInKeycloakWithNullParent() {
-				doReturn(Optional.empty()).when(service).addAsGroupInKeycloak(organisationsEinheit, parentKeycloakId);
-
-				callService();
-
-				verify(service).addAsGroupInKeycloak(organisationsEinheit, parentKeycloakId);
-			}
-
-			@Test
-			void shouldUpdateAfterSuccessfulGroupCreation() {
-				doReturn(Optional.of(addedGroupId)).when(service).addAsGroupInKeycloak(organisationsEinheit, parentKeycloakId);
-				doNothing().when(service).updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId);
-
-				callService();
-
-				verify(service).updateAfterSuccessfulGroupCreation(organisationsEinheit, syncTimestamp, addedGroupId);
-			}
-
-			@Test
-			void shouldNotUpdate() {
-				doReturn(Optional.empty()).when(service).addAsGroupInKeycloak(organisationsEinheit, parentKeycloakId);
+		@Test
+		void shouldNotUpdate() {
+			doReturn(Optional.empty()).when(service).addAsGroupInKeycloak(organisationsEinheit);
 
-				callService();
+			callService();
 
-				verify(service, never()).updateAfterSuccessfulGroupCreation(any(), anyLong(), any());
-			}
+			verify(service, never()).updateAfterSuccessfulGroupCreation(any(), anyLong(), any());
 		}
 
 		private void callService() {
@@ -628,87 +500,57 @@ class SyncServiceTest {
 	}
 
 	@Nested
-	class TestFindParent {
-
-		@Nested
-		class OnParentIdIsNull {
-			@Test
-			void shouldReturnEmpty() {
-				var parent = service.findParent(OrganisationsEinheitTestFactory.createBuilder().parentId(null).build());
-
-				assertThat(parent).isEmpty();
-			}
-		}
+	class TestAddAsGroupInKeycloak {
 
 		@Nested
-		class OnParentIdIsNotNull {
+		class OnParentIdIsNotSet {
 
-			private final String PARENT_KEYCLOAK_ID = UUID.randomUUID().toString();
-			private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-			private final OrganisationsEinheit parent = OrganisationsEinheitTestFactory.createBuilder().keycloakId(PARENT_KEYCLOAK_ID).build();
+			private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.createBuilder().parentId(null).build();
+			private final AddGroupData addGroupData = AddGroupDataTestFactory.create();
+			private final String addedGroupId = UUID.randomUUID().toString();
 
 			@BeforeEach
 			void init() {
-				when(repository.findById(OrganisationsEinheitTestFactory.PARENT_ID)).thenReturn(Optional.of(parent));
+				when(organisationsEinheitMapper.toAddGroupData(organisationsEinheit)).thenReturn(addGroupData);
+				doReturn(Optional.of(addedGroupId)).when(service).addGroupInKeycloak(addGroupData);
 			}
 
 			@Test
-			void shouldFindById() {
+			void shouldCreateAddGroupData() {
 				callService();
 
-				verify(repository).findById(OrganisationsEinheitTestFactory.PARENT_ID);
+				verify(organisationsEinheitMapper).toAddGroupData(organisationsEinheit);
 			}
 
 			@Test
-			void shouldReturnParent() {
-				var found = callService();
-
-				assertThat(found).isPresent().get().isEqualTo(parent);
-			}
+			void shouldAddGroupInKeycloak() {
+				callService();
 
-			private Optional<OrganisationsEinheit> callService() {
-				return service.findParent(organisationsEinheit);
+				verify(service).addGroupInKeycloak(addGroupData);
 			}
-		}
-	}
-
-	@Nested
-	class TestAddAsGroupInKeycloak {
-
-		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-		private final String parentKeycloakId = UUID.randomUUID().toString();
-		private final AddGroupData addGroupData = AddGroupDataTestFactory.create();
-		private final String addedGroupId = UUID.randomUUID().toString();
 
-		@BeforeEach
-		void init() {
-			when(organisationsEinheitMapper.toAddGroupData(organisationsEinheit, parentKeycloakId)).thenReturn(addGroupData);
-			doReturn(Optional.of(addedGroupId)).when(service).addGroupInKeycloak(addGroupData);
-		}
-
-		@Test
-		void shouldCreateAddGroupData() {
-			callService();
-
-			verify(organisationsEinheitMapper).toAddGroupData(organisationsEinheit, parentKeycloakId);
-		}
+			@Test
+			void shouldReturnAddedGroupId() {
+				var returnedGroupId = callService();
 
-		@Test
-		void shouldAddGroupInKeycloak() {
-			callService();
+				assertThat(returnedGroupId).get().isEqualTo(addedGroupId);
+			}
 
-			verify(service).addGroupInKeycloak(addGroupData);
+			private Optional<String> callService() {
+				return service.addAsGroupInKeycloak(organisationsEinheit);
+			}
 		}
 
-		@Test
-		void shouldReturnAddedGroupId() {
-			var returnedGroupId = callService();
-
-			assertThat(returnedGroupId).get().isEqualTo(addedGroupId);
-		}
+		@Nested
+		class OnParentIdIsSet {
 
-		private Optional<String> callService() {
-			return service.addAsGroupInKeycloak(organisationsEinheit, parentKeycloakId);
+			@Test
+			void shouldThrowException() {
+				var withParentId = OrganisationsEinheitTestFactory.create();
+				assertThatExceptionOfType(OrganisationsEinheitSynchronizationException.class)
+						.isThrownBy(() -> service.addAsGroupInKeycloak(withParentId))
+						.withMessage("Organisationseinheit " + withParentId.getOrganisationsEinheitId() + " has parent");
+			}
 		}
 	}