diff --git a/asn1/RSPRO.asn b/asn1/RSPRO.asn
index 75a36c7..8772ee7 100644
--- a/asn1/RSPRO.asn
+++ b/asn1/RSPRO.asn
@@ -151,7 +151,7 @@
 ConnectClientReq ::= SEQUENCE {
 	-- identity of the client that is connecting to the server/bankd
 	identity	ComponentIdentity,
-	clientId	ClientId OPTIONAL, -- old identity, if any
+	clientSlot	ClientSlot OPTIONAL, -- old identity, if any
 	...
 }
 ConnectClientRes ::= SEQUENCE {
@@ -186,7 +186,7 @@
 -- SERVER->CLIENT: set configuration (client ID and BANK IP/Port)
 ConfigClientReq ::= SEQUENCE {
 	-- server-allocated assignment of a client ID
-	clientId	ClientId,
+	clientSlot	ClientSlot,
 	-- bank to which the client shall connect
 	bankd		IpPort,
 	...
diff --git a/include/osmocom/rspro/ConfigClientReq.h b/include/osmocom/rspro/ConfigClientReq.h
index 670fb68..73a6768 100644
--- a/include/osmocom/rspro/ConfigClientReq.h
+++ b/include/osmocom/rspro/ConfigClientReq.h
@@ -11,7 +11,7 @@
 #include <asn_application.h>
 
 /* Including external dependencies */
-#include <osmocom/rspro/ClientId.h>
+#include <osmocom/rspro/ClientSlot.h>
 #include <osmocom/rspro/IpPort.h>
 #include <constr_SEQUENCE.h>
 
@@ -21,7 +21,7 @@
 
 /* ConfigClientReq */
 typedef struct ConfigClientReq {
-	ClientId_t	 clientId;
+	ClientSlot_t	 clientSlot;
 	IpPort_t	 bankd;
 	/*
 	 * This type is extensible,
diff --git a/include/osmocom/rspro/ConnectClientReq.h b/include/osmocom/rspro/ConnectClientReq.h
index 46c2d0e..2087d1c 100644
--- a/include/osmocom/rspro/ConnectClientReq.h
+++ b/include/osmocom/rspro/ConnectClientReq.h
@@ -12,17 +12,19 @@
 
 /* Including external dependencies */
 #include <osmocom/rspro/ComponentIdentity.h>
-#include <osmocom/rspro/ClientId.h>
 #include <constr_SEQUENCE.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* Forward declarations */
+struct ClientSlot;
+
 /* ConnectClientReq */
 typedef struct ConnectClientReq {
 	ComponentIdentity_t	 identity;
-	ClientId_t	*clientId	/* OPTIONAL */;
+	struct ClientSlot	*clientSlot	/* OPTIONAL */;
 	/*
 	 * This type is extensible,
 	 * possible extensions are below.
@@ -39,5 +41,8 @@
 }
 #endif
 
+/* Referred external types */
+#include <osmocom/rspro/ClientSlot.h>
+
 #endif	/* _ConnectClientReq_H_ */
 #include <asn_internal.h>
diff --git a/src/bankd.h b/src/bankd.h
index e97b702..9d17389 100644
--- a/src/bankd.h
+++ b/src/bankd.h
@@ -103,7 +103,7 @@
 		int fd;
 		struct sockaddr_storage peer_addr;
 		socklen_t peer_addr_len;
-		unsigned int id;
+		struct client_slot clslot;
 	} client;
 
 	struct {
diff --git a/src/bankd_main.c b/src/bankd_main.c
index cbe33c1..76a8d6c 100644
--- a/src/bankd_main.c
+++ b/src/bankd_main.c
@@ -215,11 +215,12 @@
 		return -102;
 	}
 
-	if (!pdu->msg.choice.connectClientReq.clientId) {
+	if (!pdu->msg.choice.connectClientReq.clientSlot) {
 		LOGW(worker, "missing clientID, aborting\n");
 		return -103;
 	}
-	worker->client.id = *pdu->msg.choice.connectClientReq.clientId;
+	worker->client.clslot.client_id = pdu->msg.choice.connectClientReq.clientSlot->clientId;
+	worker->client.clslot.slot_nr = pdu->msg.choice.connectClientReq.clientSlot->slotNr;
 	worker_set_state(worker, BW_ST_CONN_CLIENT);
 
 	/* FIXME: resolve mapping */
@@ -367,6 +368,7 @@
 			close(worker->client.fd);
 		memset(&worker->client.peer_addr, 0, sizeof(worker->client.peer_addr));
 		worker->client.fd = -1;
+		worker->client.clslot.client_id = worker->client.clslot.slot_nr = 0;
 	}
 
 	pthread_cleanup_pop(1);
diff --git a/src/rspro/ConfigClientReq.c b/src/rspro/ConfigClientReq.c
index 1221b4a..586ac41 100644
--- a/src/rspro/ConfigClientReq.c
+++ b/src/rspro/ConfigClientReq.c
@@ -7,14 +7,14 @@
 #include <osmocom/rspro/ConfigClientReq.h>
 
 static asn_TYPE_member_t asn_MBR_ConfigClientReq_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, clientId),
-		(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, clientSlot),
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		0,
-		&asn_DEF_ClientId,
+		&asn_DEF_ClientSlot,
 		0,	/* Defer constraints checking to the member type */
 		0,	/* PER is not compiled, use -gen-PER */
 		0,
-		"clientId"
+		"clientSlot"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, bankd),
 		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
@@ -30,8 +30,8 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_ConfigClientReq_tag2el_1[] = {
-    { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* clientId */
-    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* bankd */
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* clientSlot */
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* bankd */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientReq_specs_1 = {
 	sizeof(struct ConfigClientReq),
diff --git a/src/rspro/ConnectClientReq.c b/src/rspro/ConnectClientReq.c
index 7b83b19..16cc091 100644
--- a/src/rspro/ConnectClientReq.c
+++ b/src/rspro/ConnectClientReq.c
@@ -16,22 +16,22 @@
 		0,
 		"identity"
 		},
-	{ ATF_POINTER, 1, offsetof(struct ConnectClientReq, clientId),
-		(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+	{ ATF_POINTER, 1, offsetof(struct ConnectClientReq, clientSlot),
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		0,
-		&asn_DEF_ClientId,
+		&asn_DEF_ClientSlot,
 		0,	/* Defer constraints checking to the member type */
 		0,	/* PER is not compiled, use -gen-PER */
 		0,
-		"clientId"
+		"clientSlot"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_ConnectClientReq_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_ConnectClientReq_tag2el_1[] = {
-    { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* clientId */
-    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* identity */
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* identity */
+    { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* clientSlot */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_ConnectClientReq_specs_1 = {
 	sizeof(struct ConnectClientReq),
diff --git a/src/rspro_util.c b/src/rspro_util.c
index 7ff93c3..9f8c3d5 100644
--- a/src/rspro_util.c
+++ b/src/rspro_util.c
@@ -127,13 +127,13 @@
 	return pdu;
 }
 
-RsproPDU_t *rspro_gen_ConfigClientReq(uint16_t client_id, uint32_t ip, uint16_t port)
+RsproPDU_t *rspro_gen_ConfigClientReq(const ClientSlot_t *client, uint32_t ip, uint16_t port)
 {
 	RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
 	if (!pdu)
 		return NULL;
 	pdu->msg.present = RsproPDUchoice_PR_configClientReq;
-	pdu->msg.choice.configClientReq.clientId = client_id;
+	pdu->msg.choice.configClientReq.clientSlot = *client;
 	fill_ip4_port(&pdu->msg.choice.configClientReq.bankd, ip, port);
 
 	return pdu;
