diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClient.java b/src/main/java/de/ozgcloud/xta/client/XtaClient.java
index 369597a7ba494599e604e4d116c3ad49541d798e..a0a1893a707753b573ba7527df85e717344fc946 100644
--- a/src/main/java/de/ozgcloud/xta/client/XtaClient.java
+++ b/src/main/java/de/ozgcloud/xta/client/XtaClient.java
@@ -41,7 +41,10 @@ public class XtaClient {
 	}
 
 	Identifier deriveIdentifier(String xtaIdentifier) {
-		return Identifier.builder().value(xtaIdentifier).build();
+		return config.getClientIdentifiers().stream()
+				.filter(id -> id.value().equals(xtaIdentifier))
+				.findFirst()
+				.orElseThrow(() -> new IllegalArgumentException("Unknown identifier: " + xtaIdentifier));
 	}
 
 	public XtaMessage getMessage(String messageId) {
diff --git a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java
index 96ee5fde82dd75cec63e94ddde95eb0c01792d8d..4f7241ed0bcf6f84b03d1e48079fb2a4e84d2925 100644
--- a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java
+++ b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java
@@ -19,6 +19,7 @@ import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 
+import de.ozgcloud.xta.client.model.Identifier;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
@@ -31,7 +32,7 @@ import lombok.ToString;
 public class XtaClientConfig {
 
 	@NotEmpty(message = "at least one client identifier is required")
-	private final List<@NotBlank String> clientIdentifiers;
+	private final List<@Valid Identifier> clientIdentifiers;
 
 	@NotBlank
 	private final String managementServiceUrl;
diff --git a/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java b/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java
index f368ba2cf8305b55ecda1f91bc51bd447b74f40a..636b3485715f36bc07664b7f3beb231b94358e60 100644
--- a/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java
+++ b/src/main/java/de/ozgcloud/xta/client/core/ModelMapper.java
@@ -69,7 +69,7 @@ public interface ModelMapper {
 	@Mapping(target = "originators.author.identifier", source = "authorIdentifier")
 	@Mapping(target = "destinations.reader.identifier", source = "readerIdentifier")
 	@Mapping(target = "msgSize", source = "messageSize")
-	@Mapping(target = "testMsg", constant = "false")
+	@Mapping(target = "testMsg", ignore = true)
 	@Mapping(target = "deliveryAttributes", ignore = true)
 	@Mapping(target = "messageProperties", ignore = true)
 	MessageMetaData mapMessageMetaDataFromXtaMessageMetaData(XtaMessageMetaData xtaMessageMetaData);
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java b/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java
index e63cbc8c5e1dbf5d411fa4b6ccd67a622f8108b4..1fb4ec73b4082b1d430fba8ef101a960b3a88456 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java
@@ -21,14 +21,18 @@ import lombok.SneakyThrows;
 
 public class XtaClientConfigTestFactory {
 
-	public static final String SELF_IDENTIFIER_VALUE = "selfIdentifier";
+	public static final String SELF_IDENTIFIER_VALUE = "dp:selfIdentifier";
 	public static final Identifier SELF_IDENTIFIER = Identifier.builder()
 			.value(SELF_IDENTIFIER_VALUE)
 			.category("Generic category")
 			.name("Generic Name")
 			.build();
 	public static final int MAX_LIST_ITEMS = 10;
-	static final String SELF_IDENTIFIER2 = "selfIdentifier2";
+	static final Identifier SELF_IDENTIFIER2 = Identifier.builder()
+			.value("dp:selfIdentifier2")
+			.category("Generic category")
+			.name("Generic Name")
+			.build();
 
 	public static final String KEYSTORE_ALIAS = "selfSigned";
 
@@ -51,7 +55,7 @@ public class XtaClientConfigTestFactory {
 				.managementServiceUrl(MANAGEMENT_PORT_SVC)
 				.sendServiceUrl(SEND_PORT_SVC)
 				.msgBoxServiceUrl(MSG_BOX_PORT_SVC)
-				.clientIdentifiers(List.of(SELF_IDENTIFIER_VALUE, SELF_IDENTIFIER2))
+				.clientIdentifiers(List.of(SELF_IDENTIFIER, SELF_IDENTIFIER2))
 				.maxListItems(MAX_LIST_ITEMS)
 				.logSoapRequests(true)
 				.logSoapResponses(true)
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
index 2682f857154c70639645a99193026ef439fefed3..bef49205d8dccad105fee8706950d838986e162b 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
@@ -9,8 +9,6 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 import org.junit.jupiter.api.extension.RegisterExtension;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
 
 import lombok.SneakyThrows;
 
@@ -42,11 +40,10 @@ class XtaClientITCase {
 		class TestWithNoMessages {
 
 			@DisplayName("should return zero pending messages")
-			@ParameterizedTest
-			@ValueSource(strings = { CLIENT_IDENTIFIER1, CLIENT_IDENTIFIER2 })
+			@Test
 			@SneakyThrows
-			void shouldReturnZeroPendingMessages(String clientIdentifiers) {
-				var result = client.getMessagesMetadata(clientIdentifiers);
+			void shouldReturnZeroPendingMessages() {
+				var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2.value());
 
 				assertThat(result.pendingMessageCount()).isZero();
 			}
@@ -65,7 +62,7 @@ class XtaClientITCase {
 			@Test
 			@SneakyThrows
 			void shouldReturnOnePendingMessageClient2() {
-				var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2);
+				var result = client.getMessagesMetadata(CLIENT_IDENTIFIER2.value());
 
 				assertThat(result.pendingMessageCount()).isOne();
 
@@ -75,7 +72,7 @@ class XtaClientITCase {
 			@Test
 			@SneakyThrows
 			void shouldReturnNoPendingMessageForClient1() {
-				var result = client.getMessagesMetadata(CLIENT_IDENTIFIER1);
+				var result = client.getMessagesMetadata(CLIENT_IDENTIFIER1.value());
 
 				assertThat(result.pendingMessageCount()).isZero();
 			}
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java
index 9ff22db19e463b2e91d2f20cb098bb41dff3a39a..20369560f82684738a89004e73e0c870fe40b157 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java
@@ -4,6 +4,8 @@ import static de.ozgcloud.xta.client.XtaClientConfigTestFactory.*;
 import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
+import java.util.List;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -77,7 +79,6 @@ class XtaClientTest {
 		@BeforeEach
 		@SneakyThrows
 		void mock() {
-			doReturn(SELF_IDENTIFIER).when(client).deriveIdentifier(SELF_IDENTIFIER_VALUE);
 			when(service.getStatusList(SELF_IDENTIFIER, MAX_LIST_ITEMS)).thenReturn(xtaMessageMetaDataListing);
 			when(config.getMaxListItems()).thenReturn(MAX_LIST_ITEMS);
 		}
@@ -99,10 +100,22 @@ class XtaClientTest {
 		@DisplayName("should use value")
 		@Test
 		void shouldUseValue() {
+			when(config.getClientIdentifiers()).thenReturn(List.of(SELF_IDENTIFIER2, SELF_IDENTIFIER));
+
 			var result = client.deriveIdentifier(SELF_IDENTIFIER_VALUE);
 
 			assertThat(result.value()).isEqualTo(SELF_IDENTIFIER_VALUE);
 		}
+
+		@DisplayName("should throw when unknown")
+		@Test
+		void shouldThrowWhenUnknown() {
+			when(config.getClientIdentifiers()).thenReturn(List.of(SELF_IDENTIFIER2));
+
+			assertThatThrownBy(() -> client.deriveIdentifier(SELF_IDENTIFIER_VALUE))
+					.isInstanceOf(IllegalArgumentException.class)
+					.hasMessage("Unknown identifier: " + SELF_IDENTIFIER_VALUE);
+		}
 	}
 
 }
\ No newline at end of file
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java b/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java
index a8601578e20be631acfba92ca5ae8789b25764a2..4894964246ac0db3b251714c23e4c0835358b9f8 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaDevServerSetupExtension.java
@@ -33,8 +33,22 @@ public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEach
 
 	static final String BASE_URL = "https://li33-0005.dp.dsecurecloud.de/MB_XTA-WS/XTA210";
 	// static final String CLIENT_IDENTIFIER1 = "dp:012345678910_XtaClientITCase1";
-	static final String CLIENT_IDENTIFIER1 = "ehp:010100100000";
-	static final String CLIENT_IDENTIFIER2 = "vbe:010550120100";
+	static final Identifier CLIENT_IDENTIFIER1 = Identifier.builder()
+			.value("gad:010103000000")
+			.category("DMS Schleswig-Holstein")
+			.name("Generischer Antragsdienst")
+			.build();
+	//	static final Identifier CLIENT_IDENTIFIER1 = Identifier.builder()
+	//			.value("gae:test-environment@ozg-cloud.de")
+	//			.category("Generischer Antragsempfänger")
+	//			.name("Test-Umgebung")
+	//			.build();
+	//	static final String CLIENT_IDENTIFIER2 = "vbe:010550120100";
+	static final Identifier CLIENT_IDENTIFIER2 = Identifier.builder()
+			.value("gae:test-environment@ozg-cloud.de")
+			.category("Generischer Antragsempfänger")
+			.name("Test-Umgebung")
+			.build();
 
 	@Override
 	@SneakyThrows
@@ -73,12 +87,12 @@ public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEach
 	@Override
 	@SneakyThrows
 	public void beforeEach(ExtensionContext context) {
-		closeAllMessages(clientId2());
+		closeAllMessages(CLIENT_IDENTIFIER2);
 	}
 
 	@SneakyThrows
 	public void sendTestMessageToClient2() {
-		sendTestMessageToClient2(clientId(), clientId2());
+		sendTestMessageToClient2(CLIENT_IDENTIFIER1, CLIENT_IDENTIFIER2);
 	}
 
 	@SneakyThrows
@@ -121,12 +135,4 @@ public class XtaDevServerSetupExtension implements BeforeAllCallback, BeforeEach
 		return Files.toByteArray(new File(path));
 	}
 
-	private Identifier clientId() {
-		return client.deriveIdentifier(CLIENT_IDENTIFIER1);
-	}
-
-	private Identifier clientId2() {
-		return client.deriveIdentifier(CLIENT_IDENTIFIER2);
-	}
-
 }