diff --git a/pom.xml b/pom.xml
index d46c6644a47ccd130fc0b384e1cfe163f6b29c23..935366a3ccd1f75db7dfeb8ec60f8986ddfd3388 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,6 +86,11 @@
 			<version>${jsr305.version}</version>
 		</dependency>
 
+		<dependency>
+			<groupId>org.mapstruct</groupId>
+			<artifactId>mapstruct</artifactId>
+		</dependency>
+
 		<!-- Test -->
 		<dependency>
 			<groupId>org.projectlombok</groupId>
diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClient.java b/src/main/java/de/ozgcloud/xta/client/XtaClient.java
index d9cb84096901d40e5dfb12726ade4af37d056184..6cee6c9c4a4bc1df12b79fe1a0adfbdf2f32be59 100644
--- a/src/main/java/de/ozgcloud/xta/client/XtaClient.java
+++ b/src/main/java/de/ozgcloud/xta/client/XtaClient.java
@@ -3,10 +3,11 @@ package de.ozgcloud.xta.client;
 import org.apache.commons.lang3.NotImplementedException;
 
 import de.ozgcloud.xta.client.config.XtaClientConfig;
+import de.ozgcloud.xta.client.core.WrappedXtaService;
+import de.ozgcloud.xta.client.exception.ClientException;
 import de.ozgcloud.xta.client.model.XtaMessage;
 import de.ozgcloud.xta.client.model.XtaMessageId;
 import de.ozgcloud.xta.client.model.XtaMessageMetaDatasAndHeader;
-import genv3.de.xoev.transport.xta.x211.XTAService;
 import lombok.AccessLevel;
 import lombok.Builder;
 import lombok.Getter;
@@ -17,11 +18,12 @@ import lombok.RequiredArgsConstructor;
 @Getter(AccessLevel.PROTECTED)
 public class XtaClient {
 
-	private final XTAService service;
+	private final WrappedXtaService service;
 	private final XtaClientConfig config;
 
-	public XtaMessageMetaDatasAndHeader getMessagesMetadata(String xtaIdentifier) {
-		throw new NotImplementedException("");
+	public XtaMessageMetaDatasAndHeader getMessagesMetadata(String xtaIdentifier) throws ClientException {
+		service.checkAccountActive(xtaIdentifier);
+		return null;
 	}
 
 	public XtaMessageMetaDatasAndHeader getNextMessagesMetadata(String xtaIdentifier, String msgBoxRequestId) {
diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java b/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java
index fbdb70d3db717b4907d9353cd6977e510b801c83..a28ef539f289fc5f291209c2ede55c4336fb4f7e 100644
--- a/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java
+++ b/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java
@@ -2,6 +2,7 @@ package de.ozgcloud.xta.client;
 
 import de.ozgcloud.xta.client.config.XtaClientConfig;
 import de.ozgcloud.xta.client.config.XtaConfigValidator;
+import de.ozgcloud.xta.client.core.WrappedXtaService;
 import de.ozgcloud.xta.client.core.XTAServiceFactory;
 import de.ozgcloud.xta.client.exception.ClientInitializationException;
 import lombok.Builder;
@@ -26,7 +27,9 @@ public class XtaClientFactory {
 		configValidator.validate(config);
 		return XtaClient.builder()
 				.config(config)
-				.service(xtaServiceFactory.create())
+				.service(WrappedXtaService.builder()
+						.service(xtaServiceFactory.create())
+						.build())
 				.build();
 	}
 }
diff --git a/src/main/java/de/ozgcloud/xta/client/core/WebServiceTypeMapper.java b/src/main/java/de/ozgcloud/xta/client/core/WebServiceTypeMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a2c29812a943ed6b22073229c295b1e9da3fe20
--- /dev/null
+++ b/src/main/java/de/ozgcloud/xta/client/core/WebServiceTypeMapper.java
@@ -0,0 +1,14 @@
+package de.ozgcloud.xta.client.core;
+
+import org.mapstruct.Mapper;
+
+import genv3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType;
+import genv3.eu.osci.ws.x2014.x10.transport.PartyType;
+
+@Mapper
+public interface WebServiceTypeMapper {
+
+	PartyType mapPartyTypeFromIdentifierString(String identifier);
+
+	PartyIdentifierType mapPartyIdentifierTypeFromIdentifierString(String value);
+}
diff --git a/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaService.java b/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaService.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a078be9fbbb9e1b19fb87a029bde0f8963c1e9c
--- /dev/null
+++ b/src/main/java/de/ozgcloud/xta/client/core/WrappedXtaService.java
@@ -0,0 +1,27 @@
+package de.ozgcloud.xta.client.core;
+
+import de.ozgcloud.xta.client.exception.ClientException;
+import genv3.de.xoev.transport.xta.x211.PermissionDeniedException;
+import genv3.de.xoev.transport.xta.x211.XTAService;
+import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+@Builder
+@Getter
+public class WrappedXtaService {
+
+	private final XTAService service;
+	private final WebServiceTypeMapper typeMapper;
+
+	public void checkAccountActive(String clientIdentifier) throws ClientException {
+		try {
+			service.getManagementPort().checkAccountActive(typeMapper.mapPartyTypeFromIdentifierString(clientIdentifier));
+		} catch (XTAWSTechnicalProblemException | PermissionDeniedException e) {
+			throw new ClientException("checkAccountActive call failed due to: " + e.getMessage(), e);
+		}
+	}
+
+}
diff --git a/src/main/java/de/ozgcloud/xta/client/core/XTAServiceFactory.java b/src/main/java/de/ozgcloud/xta/client/core/XTAServiceFactory.java
index fbc3ae38a8e99b5e6e17a42cefa98dc2720ea62c..3c1edc781fc5fccf6d8be5d170eb9cba1fd6c0b4 100644
--- a/src/main/java/de/ozgcloud/xta/client/core/XTAServiceFactory.java
+++ b/src/main/java/de/ozgcloud/xta/client/core/XTAServiceFactory.java
@@ -13,7 +13,6 @@ import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.transport.http.HTTPConduit;
 
-import de.ozgcloud.xta.client.XtaClient;
 import de.ozgcloud.xta.client.config.XtaClientConfig;
 import de.ozgcloud.xta.client.exception.ClientInitializationException;
 import genv3.de.xoev.transport.xta.x211.XTAService;
@@ -42,7 +41,7 @@ public class XTAServiceFactory {
 
 	public XTAService create() throws ClientInitializationException {
 		log.debug("[createXtaService] Using config: {}", config);
-		var service = new XTAService(XtaClient.class.getResource("wsdl/XTA.wsdl"));
+		var service = new XTAService();
 		configureServiceBindings(service);
 		return service;
 	}
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java b/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java
index 24c8421446a971642ad9cad746a90db74efae951..feceef55fbf2162712f7d04a89c3ddd743a8bb72 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientConfigTestFactory.java
@@ -20,7 +20,7 @@ import lombok.SneakyThrows;
 
 public class XtaClientConfigTestFactory {
 
-	static final String SELF_IDENTIFIER = "selfIdentifier";
+	public static final String SELF_IDENTIFIER = "selfIdentifier";
 	static final String SELF_IDENTIFIER2 = "selfIdentifier2";
 
 	public static final String KEYSTORE_ALIAS = "selfSigned";
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java b/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java
index 2c2965178ecd48076639928420e78fdb53b33bf0..4ddc2fbfab6f9d6dd3a0fb5c5ac64479a1461e43 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java
@@ -50,7 +50,7 @@ class XtaClientFactoryTest {
 		void shouldHaveService() {
 			var client = factory.create();
 
-			assertThat(client.getService()).isEqualTo(service);
+			assertThat(client.getService().getService()).isEqualTo(service);
 		}
 
 		@DisplayName("should have config")
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java
index f61eb01fc704b6b277fc4037af57ec9a73e9c5d0..abac4619bcbfbe7c28f3c4422ff76dd19d708e9a 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java
@@ -1,8 +1,8 @@
 package de.ozgcloud.xta.client;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static de.ozgcloud.xta.client.XtaClientConfigTestFactory.*;
+import static org.mockito.Mockito.*;
 
-import org.apache.commons.lang3.NotImplementedException;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -12,15 +12,14 @@ import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
 import de.ozgcloud.xta.client.config.XtaClientConfig;
-import genv3.de.xoev.transport.xta.x211.XTAService;
-import genv3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType;
-import genv3.eu.osci.ws.x2014.x10.transport.PartyType;
+import de.ozgcloud.xta.client.core.WrappedXtaService;
+import lombok.SneakyThrows;
 
 @ExtendWith(MockitoExtension.class)
 class XtaClientTest {
 
 	@Mock
-	private XTAService service;
+	private WrappedXtaService service;
 
 	@Mock
 	private XtaClientConfig config;
@@ -31,15 +30,14 @@ class XtaClientTest {
 	@DisplayName("get messages metadata")
 	@Nested
 	class TestGetMessagesMetadata {
-		@DisplayName("should something")
+
+		@DisplayName("should call checkAccountActive")
 		@Test
-		void shouldSomething() {
-			var p = new PartyType();
-			var selfIdentifier = new PartyIdentifierType();
-			selfIdentifier.setValue("selfIdentifier");
-			p.setIdentifier(selfIdentifier);
+		@SneakyThrows
+		void shouldCallCheckAccountActive() {
+			client.getMessagesMetadata(SELF_IDENTIFIER);
 
-			assertThrows(NotImplementedException.class, () -> client.getMessagesMetadata("selfIdentifier"));
+			verify(service).checkAccountActive(SELF_IDENTIFIER);
 		}
 
 	}
diff --git a/src/test/java/de/ozgcloud/xta/client/core/WebServiceTypeMapperTest.java b/src/test/java/de/ozgcloud/xta/client/core/WebServiceTypeMapperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..064e8e953f7ba0d9cd57c63b5f90e880a774de37
--- /dev/null
+++ b/src/test/java/de/ozgcloud/xta/client/core/WebServiceTypeMapperTest.java
@@ -0,0 +1,32 @@
+package de.ozgcloud.xta.client.core;
+
+import static de.ozgcloud.xta.client.XtaClientConfigTestFactory.*;
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+@ExtendWith(MockitoExtension.class)
+class WebServiceTypeMapperTest {
+
+	@InjectMocks
+	private WebServiceTypeMapperImpl mapper;
+
+	@DisplayName("map party type from identifier string")
+	@Nested
+	class TestMapPartyTypeFromIdentifierString {
+
+		@DisplayName("should map party type from identifier string")
+		@Test
+		void shouldMapPartyTypeFromIdentifierString() {
+			var result = mapper.mapPartyTypeFromIdentifierString(SELF_IDENTIFIER);
+
+			assertThat(result.getIdentifier().getValue()).isEqualTo(SELF_IDENTIFIER);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceTest.java b/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..a2bd9eae053ac1c47a98df8ad32a8b30e405d03e
--- /dev/null
+++ b/src/test/java/de/ozgcloud/xta/client/core/WrappedXtaServiceTest.java
@@ -0,0 +1,73 @@
+package de.ozgcloud.xta.client.core;
+
+import static de.ozgcloud.xta.client.XtaClientConfigTestFactory.*;
+import static org.assertj.core.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import de.ozgcloud.xta.client.exception.ClientException;
+import genv3.de.xoev.transport.xta.x211.ManagementPortType;
+import genv3.de.xoev.transport.xta.x211.XTAService;
+import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException;
+import genv3.eu.osci.ws.x2014.x10.transport.PartyType;
+import lombok.SneakyThrows;
+
+@ExtendWith(MockitoExtension.class)
+class WrappedXtaServiceTest {
+
+	@Mock
+	private XTAService rawService;
+
+	@Mock
+	private WebServiceTypeMapper typeMapper;
+
+	@InjectMocks
+	private WrappedXtaService service;
+
+	@DisplayName("check account active")
+	@Nested
+	class TestCheckAccountActive {
+
+		@Mock
+		private PartyType partyType;
+
+		@Mock
+		private ManagementPortType managementPortType;
+
+		@BeforeEach
+		void mock() {
+			when(rawService.getManagementPort()).thenReturn(managementPortType);
+			when(typeMapper.mapPartyTypeFromIdentifierString(SELF_IDENTIFIER)).thenReturn(partyType);
+		}
+
+		@DisplayName("should call raw service method")
+		@Test
+		@SneakyThrows
+		void shouldCallRawServiceMethod() {
+			service.checkAccountActive(SELF_IDENTIFIER);
+
+			verify(managementPortType).checkAccountActive(partyType);
+		}
+
+		@DisplayName("should throw client exception on technical problem")
+		@Test
+		@SneakyThrows
+		void shouldThrowClientExceptionOnTechnicalProblem() {
+			var message = "technical problem";
+			doThrow(new XTAWSTechnicalProblemException(message)).when(managementPortType).checkAccountActive(partyType);
+
+			assertThatThrownBy(() -> service.checkAccountActive(SELF_IDENTIFIER))
+					.isInstanceOf(ClientException.class)
+					.hasMessageContaining(message);
+		}
+	}
+
+}
\ No newline at end of file