diff --git a/hnodeb/HNB_Tests.ttcn b/hnodeb/HNB_Tests.ttcn
index ca42e5c..c801ee6 100644
--- a/hnodeb/HNB_Tests.ttcn
+++ b/hnodeb/HNB_Tests.ttcn
@@ -296,6 +296,7 @@
 	var HostName hnodeb_rtp_addr;
 	var PortNumber hnodeb_rtp_port;
 	timer Tu;
+	var uint32_t audio_conn_id;
 
 	f_handle_hnbap_hnb_register_req();
 
@@ -317,8 +318,9 @@
 	/* Now LLSK provides the remote TransportLayerAddress from RabAssReq and asks SUT to provide a local address: */
 	LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_ESTABLISH_REQ(context_id, g_pars.hnbgw_rtp_port, HNBLL_IF_ADDR_TYPE_IPV4,
 								f_HNBLLIF_Addr(HNBLL_IF_ADDR_TYPE_IPV4, g_pars.hnbgw_addr))));
-	LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(context_id, 0, ?, HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
+	LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(context_id, ?, 0, ?, HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
 
+	audio_conn_id := sd.data.u.audio.u.conn_establish.u.cnf.audio_conn_id;
 	hnodeb_rtp_addr := f_inet_ntoa(sd.data.u.audio.u.conn_establish.u.cnf.local_addr);
 	if (not match(g_pars.hnodeb_addr, hnodeb_rtp_addr)) {
 		Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "hnodeb RTP local address doesn't match expectations");
@@ -328,7 +330,7 @@
 	f_HNBGW_rtpem_activate(rtp_payload, hnodeb_rtp_addr, hnodeb_rtp_port);
 	/* Make sure that Uplink frames are received at the HNBGW */
 	RTPEM_DATA.clear;
-	LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_DATA_REQ(context_id, rtp_payload)));
+	LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_DATA_REQ(audio_conn_id, rtp_payload)));
 	Tu.start(2.0);
 	alt {
 	[] RTPEM_DATA.receive(PDU_RTP:?) -> value rtp_pdu {
@@ -344,11 +346,11 @@
 	}
 	Tu.stop;
 	/* We should also have received some RTP from the HNBGW: */
-	LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_DATA_IND(context_id, rtp_payload)));
+	LLSK.receive(f_llsk_rx(tr_HNBLLIF_AUDIO_CONN_DATA_IND(audio_conn_id, rtp_payload)));
 
 	f_rtpem_mode(RTPEM_CTRL, RTPEM_MODE_NONE);
 
-	LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(context_id)));
+	LLSK.send(f_llsk_tx(ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(audio_conn_id)));
 
 	/* UE sends Iu Release Complete to release the conn */
 	LLSK.send(f_llsk_tx(ts_HNBLLIF_IUH_CONN_RELEASE_REQ(context_id, 0, 0, 0, hex2oct(iu_release_compl))));
@@ -371,6 +373,7 @@
 	var uint32_t local_tei;
 	var octetstring gtp_payload := f_rnd_octstring(40);
 	var HNBLLIF_send_data sd;
+	var uint32_t gtp_conn_id;
 
 	f_gtp_register_teid(int2oct(remote_tei, 4));
 
@@ -394,18 +397,19 @@
 	/* Now LLSK provides the remote TransportLayerAddress from RabAssReq and asks SUT to provide a local address: */
 	LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_ESTABLISH_REQ(context_id, remote_tei, HNBLL_IF_ADDR_TYPE_IPV4,
 							      f_HNBLLIF_Addr(HNBLL_IF_ADDR_TYPE_IPV4, g_pars.hnbgw_addr))));
-	LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(context_id, ?, 0,
+	LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(context_id, ?, ?, 0,
 								 HNBLL_IF_ADDR_TYPE_IPV4, ?))) -> value sd;
+	gtp_conn_id := sd.data.u.gtp.u.conn_establish.u.cnf.gtp_conn_id;
 	local_tei := sd.data.u.gtp.u.conn_establish.u.cnf.local_tei;
 
 	/* Forward GTP data in both directions */
-	LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_DATA_REQ(context_id, remote_tei, gtp_payload)));
+	LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_DATA_REQ(gtp_conn_id, gtp_payload)));
 	GTP.receive(tr_GTPU_GPDU(ts_GtpPeerU(g_pars.hnodeb_addr), int2oct(remote_tei, 4), gtp_payload));
 	f_gtpu_send(local_tei, gtp_payload);
-	LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_DATA_IND(context_id, local_tei, gtp_payload)));
+	LLSK.receive(f_llsk_rx(tr_HNBLLIF_GTP_CONN_DATA_IND(gtp_conn_id, gtp_payload)));
 
 	/* Done, release GTP conn */
-	LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_RELEASE_REQ(context_id, remote_tei)));
+	LLSK.send(f_llsk_tx(ts_HNBLLIF_GTP_CONN_RELEASE_REQ(gtp_conn_id)));
 
 	/* UE sends Iu Release Complete to release the conn */
 	LLSK.send(f_llsk_tx(ts_HNBLLIF_IUH_CONN_RELEASE_REQ(context_id, 1, 0, 0, hex2oct(iu_release_compl))));
diff --git a/library/HNBLLIF_Templates.ttcn b/library/HNBLLIF_Templates.ttcn
index 78cf89a..fc82a72 100644
--- a/library/HNBLLIF_Templates.ttcn
+++ b/library/HNBLLIF_Templates.ttcn
@@ -279,6 +279,7 @@
 }
 
 template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
+								     template (present) uint32_t audio_conn_id := ?,
 								     template (present) uint8_t error_code := ?,
 								     template (present) uint16_t local_rtp_port:= ?,
 								     template (present) HNBLLIF_AddrType local_rtp_address_type := ?,
@@ -293,6 +294,7 @@
 					u := {
 						cnf := {
 							context_id := context_id,
+							audio_conn_id := audio_conn_id,
 							local_rtp_port := local_rtp_port,
 							error_code := error_code,
 							local_rtp_address_type := local_rtp_address_type,
@@ -305,7 +307,7 @@
 	}
 }
 
-template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t context_id) := {
+template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_RELEASE_REQ(template (value) uint32_t audio_conn_id) := {
 	sapi := HNBLL_IF_SAPI_AUDIO,
 	u := {
 		audio := {
@@ -315,7 +317,7 @@
 					op := HNBLL_IF_OP_REQUEST,
 					u := {
 						req := {
-							context_id := context_id
+							audio_conn_id := audio_conn_id
 						}
 					}
 				}
@@ -324,7 +326,7 @@
 	}
 }
 
-template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t context_id := ?,
+template (present) HNBLLIF_Message tr_HNBLLIF_AUDIO_CONN_DATA_IND(template (present) uint32_t audio_conn_id := ?,
 							        template (present) octetstring data := ?) := {
 	sapi := HNBLL_IF_SAPI_AUDIO,
 	u := {
@@ -335,7 +337,7 @@
 					op := HNBLL_IF_OP_INDICATION,
 					u := {
 						ind := {
-							context_id := context_id,
+							audio_conn_id := audio_conn_id,
 							data_len := ?,
 							data := data
 						}
@@ -346,7 +348,7 @@
 	}
 }
 
-template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t context_id,
+template (value) HNBLLIF_Message ts_HNBLLIF_AUDIO_CONN_DATA_REQ(template (value) uint32_t audio_conn_id,
 							      template (value) octetstring data) := {
 	sapi := HNBLL_IF_SAPI_AUDIO,
 	u := {
@@ -357,7 +359,7 @@
 					op := HNBLL_IF_OP_REQUEST,
 					u := {
 						req := {
-							context_id := context_id,
+							audio_conn_id := audio_conn_id,
 							data_len := lengthof(data),
 							data := data
 						}
@@ -399,6 +401,7 @@
 }
 
 template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_ESTABLISH_CNF(template (present) uint32_t context_id := ?,
+								     template (present) uint32_t gtp_conn_id := ?,
 								     template (present) uint32_t local_tei := ?,
 								     template (present) uint8_t error_code := ?,
 								     template (present) HNBLLIF_AddrType local_gtpu_address_type := ?,
@@ -413,6 +416,7 @@
 					u := {
 						cnf := {
 							context_id := context_id,
+							gtp_conn_id := gtp_conn_id,
 							local_tei := local_tei,
 							error_code := error_code,
 							local_gtpu_address_type := local_gtpu_address_type,
@@ -425,8 +429,7 @@
 	}
 }
 
-template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t context_id,
-								 template (value) uint32_t remote_tei) := {
+template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_RELEASE_REQ(template (value) uint32_t gtp_conn_id) := {
 	sapi := HNBLL_IF_SAPI_GTP,
 	u := {
 		gtp := {
@@ -436,8 +439,7 @@
 					op := HNBLL_IF_OP_REQUEST,
 					u := {
 						req := {
-							context_id := context_id,
-							remote_tei := remote_tei
+							gtp_conn_id := gtp_conn_id
 						}
 					}
 				}
@@ -446,8 +448,7 @@
 	}
 }
 
-template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (present) uint32_t context_id := ?,
-							        template (present) uint32_t local_tei := ?,
+template (present) HNBLLIF_Message tr_HNBLLIF_GTP_CONN_DATA_IND(template (present) uint32_t gtp_conn_id,
 							        template (present) octetstring data := ?) := {
 	sapi := HNBLL_IF_SAPI_GTP,
 	u := {
@@ -458,8 +459,7 @@
 					op := HNBLL_IF_OP_INDICATION,
 					u := {
 						ind := {
-							context_id := context_id,
-							local_tei := local_tei,
+							gtp_conn_id := gtp_conn_id,
 							data_len := ?,
 							data := data
 						}
@@ -470,8 +470,7 @@
 	}
 }
 
-template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) uint32_t context_id,
-							      template (value) uint32_t remote_tei,
+template (value) HNBLLIF_Message ts_HNBLLIF_GTP_CONN_DATA_REQ(template (value) uint32_t gtp_conn_id,
 							      template (value) octetstring data) := {
 	sapi := HNBLL_IF_SAPI_GTP,
 	u := {
@@ -482,8 +481,7 @@
 					op := HNBLL_IF_OP_REQUEST,
 					u := {
 						req := {
-							context_id := context_id,
-							remote_tei := remote_tei,
+							gtp_conn_id := gtp_conn_id,
 							data_len := lengthof(data),
 							data := data
 						}
diff --git a/library/HNBLLIF_Types.ttcn b/library/HNBLLIF_Types.ttcn
index 95f91fc..a3a6c4c 100644
--- a/library/HNBLLIF_Types.ttcn
+++ b/library/HNBLLIF_Types.ttcn
@@ -252,6 +252,7 @@
 
 type record HNBLLIF_AUDIO_conn_establish_cnf {
 	uint32_t context_id,
+	uint32_t audio_conn_id,
 	uint16_t local_rtp_port,
 	uint8_t error_code,
 	HNBLLIF_AddrType local_rtp_address_type,
@@ -273,7 +274,7 @@
 
 /* CONN_RELEASE */
 type record HNBLLIF_AUDIO_conn_release_req {
-	uint32_t context_id
+	uint32_t audio_conn_id
 } with { variant "" };
 
 
@@ -290,13 +291,13 @@
 
 /* CONN_DATA */
 type record HNBLLIF_AUDIO_conn_data_ind {
-	uint32_t context_id,
+	uint32_t audio_conn_id,
 	uint32_t data_len,
 	octetstring data /* RANAP message */
 } with { variant (data_len) "LENGTHTO (data)" };
 
 type record HNBLLIF_AUDIO_conn_data_req {
-	uint32_t context_id,
+	uint32_t audio_conn_id,
 	uint32_t data_len,
 	octetstring data /* RANAP message */
 } with { variant (data_len) "LENGTHTO (data)" };
@@ -350,6 +351,7 @@
 
 type record HNBLLIF_GTP_conn_establish_cnf {
 	uint32_t context_id,
+	uint32_t gtp_conn_id,
 	uint32_t local_tei,
 	uint8_t error_code,
 	HNBLLIF_AddrType local_gtpu_address_type,
@@ -371,8 +373,7 @@
 
 /* CONN_RELEASE */
 type record HNBLLIF_GTP_conn_release_req {
-	uint32_t context_id,
-	uint32_t remote_tei
+	uint32_t gtp_conn_id
 } with { variant "" };
 
 type union HNBLLIF_GTP_PrimOpUnion_conn_release {
@@ -388,15 +389,13 @@
 
 /* CONN_DATA */
 type record HNBLLIF_GTP_conn_data_req {
-	uint32_t context_id,
-	uint32_t remote_tei,
+	uint32_t gtp_conn_id,
 	uint32_t data_len,
 	octetstring data /* RANAP message */
 } with { variant (data_len) "LENGTHTO (data)" };
 
 type record HNBLLIF_GTP_conn_data_ind {
-	uint32_t context_id,
-	uint32_t local_tei,
+	uint32_t gtp_conn_id,
 	uint32_t data_len,
 	octetstring data /* RANAP message */
 } with { variant (data_len) "LENGTHTO (data)" };
