diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index e3d9341..c1ef7fb 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -99,7 +99,8 @@
 		OCT4		teic_remote,
 		OCT1		ratType optional,
 		UserLocationInformation uli optional,
-		OCT2 charging_char optional
+		OCT2 charging_char optional,
+		OCT8 imeisv optional
 	}
 
 	type component GT_CT {
@@ -332,6 +333,11 @@
 		return int2oct(f_rnd_int(4294967296), 4);
 	}
 
+	/* return random IMEI(SV) */
+	function f_rnd_imeisv() return OCT8 {
+		return hex2oct(f_rnd_hexstring(16, 10));
+	}
+
 	/* define an (internal) representation of a PDP context */
 	template PdpContext t_DefinePDP(hexstring imsi, octetstring msisdn, octetstring apn,
 					EndUserAddress eua, OCT1 ratType := '02'O /* GERAN */) := {
@@ -352,7 +358,8 @@
 				geographicLocationCGI := ts_GeographicLocationCGI('262'H, '42F'H, '0001'O, '0002'O)
 			}
 		},
-		charging_char := '0000'O
+		charging_char := '0000'O,
+		imeisv := f_rnd_imeisv()
 	}
 
 	/* send GTP-C for a given context and increment sequence number */
@@ -513,7 +520,7 @@
 		f_send_gtpc(ts_GTPC_CreatePDP(g_peer_c, g_c_seq_nr, ctx.imsi, g_restart_ctr,
 						  ctx.teid, ctx.teic, ctx.nsapi, ctx.eua, ctx.apn,
 						  g_sgsn_ip_c, g_sgsn_ip_u, ctx.msisdn, ctx.pco_req, ctx.ratType,
-						  ctx.uli, ctx.charging_char));
+						  ctx.uli, ctx.charging_char, ctx.imeisv));
 		T_default.start;
 		d := activate(pingpong());
 		if (Gx_PROC.checkstate("Connected")) {
@@ -2009,7 +2016,7 @@
 							  ctx[next_req_ctx].teid, ctx[next_req_ctx].teic, ctx[next_req_ctx].nsapi,
 							  ctx[next_req_ctx].eua, ctx[next_req_ctx].apn,  g_sgsn_ip_c, g_sgsn_ip_u,
 							  ctx[next_req_ctx].msisdn, ctx[next_req_ctx].pco_req, ctx[next_req_ctx].ratType,
-							  ctx[next_req_ctx].uli, ctx[next_req_ctx].charging_char));
+							  ctx[next_req_ctx].uli, ctx[next_req_ctx].charging_char, ctx[next_req_ctx].imeisv));
 			next_req_ctx := next_req_ctx + 1;
 			if (next_req_ctx < num_ctx) {
 				T_next.start;
@@ -2123,7 +2130,7 @@
 									  ctx.teid, ctx.teic, ctx.nsapi,
 									  ctx.eua, ctx.apn,  g_sgsn_ip_c, g_sgsn_ip_u,
 									  ctx.msisdn, ctx.pco_req, ctx.ratType,
-									  ctx.uli, ctx.charging_char));
+									  ctx.uli, ctx.charging_char, ctx.imeisv));
 					next_req_ctx := next_req_ctx + 1;
 				}
 				T_next.start;
diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn
index 0c5c003..22d8632 100644
--- a/library/GTP_Templates.ttcn
+++ b/library/GTP_Templates.ttcn
@@ -119,6 +119,26 @@
 		restartCounter := restart_counter
 	}
 
+	/* IMEI(SV) IE TS 29.060 7.7.53 */
+	template IMEISV_gtpc ts_IMEISV(template (value) OCT8 imeisv) := {
+		type_gtpc := '9A'O,
+		lengthf := 8,
+		imeisv := imeisv
+	}
+	private function f_ts_IMEISV(template (omit) OCT8 imeisv)
+	return template (omit) IMEISV_gtpc {
+		if (istemplatekind(imeisv, "omit")) {
+			return omit;
+		}
+		return ts_IMEISV(imeisv);
+	}
+
+	template IMEISV_gtpc tr_IMEISV(template (present) OCT8 imeisv) := {
+		type_gtpc := '9A'O,
+		lengthf := 8,
+		imeisv := imeisv
+	}
+
 	/* Charging Characteristics IE TS 29.060 7.7.23 */
 	template ChargingCharacteristics_GTPC ts_ChargingCharacteristics(template (value) OCT2 chargingChar) := {
 		type_gtpc := '1A'O,
@@ -379,7 +399,8 @@
 					   octetstring msisdn, template ProtConfigOptions pco := omit,
 					   template (omit) OCT1 ratType := omit,
 					   template (omit) UserLocationInformation uli := omit,
-					   template (omit) OCT2 charging_char := omit) := {
+					   template (omit) OCT2 charging_char := omit,
+					   template (omit) OCT8 imeisv := omit) := {
 		createPDPContextRequest := {
 			imsi := ts_Imsi(imsi),
 			rai := omit,
@@ -421,7 +442,7 @@
 			ratType := f_ts_RATType(ratType),
 			userLocationInformation := uli,
 			mS_TimeZone := omit,
-			imeisv := omit,
+			imeisv := f_ts_IMEISV(imeisv),
 			camelChargingInformationContainer := omit,
 			additionalTraceInfo := omit,
 			correlationID := omit,
@@ -443,12 +464,14 @@
 						 template ProtConfigOptions pco := omit,
 						 template (omit) OCT1 ratType := omit,
 						 template (omit) UserLocationInformation uli := omit,
-						 template (omit) OCT2 charging_char := omit) := {
+						 template (omit) OCT2 charging_char := omit,
+						 template (omit) OCT8 imeisv := omit) := {
 		peer := peer,
 		gtpc := ts_GTP1C_PDU(createPDPContextRequest, '00000000'O,
 					valueof(ts_CreatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl,
 								nsapi, eua, apn, sgsn_ip_sign,
-								sgsn_ip_data, msisdn, pco, ratType, uli, charging_char)), seq)
+								sgsn_ip_data, msisdn, pco, ratType, uli,
+								charging_char, imeisv)), seq)
 	}
 
 
