diff --git a/dia2gsup/DIA2GSUP_Tests.ttcn b/dia2gsup/DIA2GSUP_Tests.ttcn
index e12f17b..6e59460 100644
--- a/dia2gsup/DIA2GSUP_Tests.ttcn
+++ b/dia2gsup/DIA2GSUP_Tests.ttcn
@@ -11,6 +11,7 @@
 
 import from DIAMETER_Types all;
 import from DIAMETER_Templates all;
+import from DIAMETER_ts29_272_Templates all;
 import from DIAMETER_Emulation all;
 
 type component MTC_CT {
diff --git a/dia2gsup/gen_links.sh b/dia2gsup/gen_links.sh
index d0002eb..52939f6 100755
--- a/dia2gsup/gen_links.sh
+++ b/dia2gsup/gen_links.sh
@@ -36,7 +36,8 @@
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
 FILES+="Osmocom_CTRL_Types.ttcn "
 FILES+="L3_Common.ttcn "
-FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
+FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn "
+FILES+="DIAMETER_Templates.ttcn DIAMETER_ts29_272_Templates.ttcn "
 FILES+="IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc
 IPA_Emulation.ttcnpp "
 FILES+="GSUP_Types.ttcn GSUP_Emulation.ttcn "
diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index 435f71d..a1aab9b 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -34,6 +34,7 @@
 
 	import from DIAMETER_Types all;
 	import from DIAMETER_Templates all;
+	import from DIAMETER_ts29_272_Templates all;
 	import from DIAMETER_Emulation all;
 
 	const integer GTP0_PORT := 3386;
diff --git a/ggsn_tests/gen_links.sh b/ggsn_tests/gen_links.sh
index c30e3da..b51620e 100755
--- a/ggsn_tests/gen_links.sh
+++ b/ggsn_tests/gen_links.sh
@@ -60,7 +60,8 @@
 DIR=../library
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc IPCP_Types.ttcn PAP_Types.ttcn "
 FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Templates.ttcn Osmocom_Gb_Types.ttcn "
-FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
+FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn "
+FILES+="DIAMETER_Templates.ttcn DIAMETER_ts29_272_Templates.ttcn "
 FILES+="Osmocom_VTY_Functions.ttcn "
 gen_links $DIR $FILES
 
diff --git a/hss/HSS_Tests.ttcn b/hss/HSS_Tests.ttcn
index bd493c4..a5503a7 100644
--- a/hss/HSS_Tests.ttcn
+++ b/hss/HSS_Tests.ttcn
@@ -7,6 +7,7 @@
 
 import from DIAMETER_Types all;
 import from DIAMETER_Templates all;
+import from DIAMETER_ts29_272_Templates all;
 import from DIAMETER_Emulation all;
 
 type record of hexstring SubscriberConfigs;
diff --git a/hss/gen_links.sh b/hss/gen_links.sh
index b97d53f..7160832 100755
--- a/hss/gen_links.sh
+++ b/hss/gen_links.sh
@@ -23,7 +23,8 @@
 
 DIR=../library
 FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_Types.ttcn Native_Functions.ttcn Native_FunctionDefs.cc "
-FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
+FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn "
+FILES+="DIAMETER_Templates.ttcn DIAMETER_ts29_272_Templates.ttcn "
 gen_links $DIR $FILES
 
 ignore_pp_results
diff --git a/library/DIAMETER_Templates.ttcn b/library/DIAMETER_Templates.ttcn
index 9a3e739..05a6ea7 100644
--- a/library/DIAMETER_Templates.ttcn
+++ b/library/DIAMETER_Templates.ttcn
@@ -102,28 +102,10 @@
 	DIAMETER_ERROR_EAP_CODE_UNKNOWN			(5048)
 };
 
-/* 3GPP TS 29.272 section 7.4. Errors in Experimental-Result-Code */
-type enumerated DIAMETER_ExperimentalResultcode {
-	/* transient */
-	DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE 	(4181),
-	DIAMETER_ERROR_CAMEL_SUBSCRIPTION_PRESENT 	(4182),
-	/* permanent */
-	DIAMETER_ERROR_USER_UNKNOWN			(5001),
-	DIAMETER_AUTHORIZATION_REJECTED			(5003),
-	DIAMETER_ERROR_ROAMING_NOT_ALLOWED		(5004),
-	DIAMETER_MISSING_AVP				(5005),
-	DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION		(5420),
-	DIAMETER_ERROR_RAT_NOT_ALLOWED			(5421),
-	DIAMETER_ERROR_EQUIPMENT_UNKNOWN		(5422),
-	DIAMETER_ERROR_UNKOWN_SERVING_NODE		(5423)
-}
-
 /* Gy : 3GPP TS 32.299 7.1.6, RFC4006 3.1 */
 const uint32_t c_DIAMETER_CREDIT_CONTROL_AID := 4;
-/* 3GPP TS 29.272 Section 7.1.8 */
+
 const uint32_t c_DIAMETER_3GPP_Gx_AID := 16777238;
-const uint32_t c_DIAMETER_3GPP_S6_AID := 16777251;
-const uint32_t c_DIAMETER_3GPP_S13_AID := 16777252;
 const uint32_t c_DIAMETER_3GPP_S7_AID := 16777308;
 
 const octetstring c_def_sess_id := char2oct("ttcn3.session");
@@ -667,196 +649,6 @@
 template (present) GenericAVP tr_AVP_UserNameImsi(template (present) hexstring imsi := ?) := tr_AVP_UserName(char2oct_tmpl(hex2str_tmpl(imsi)));
 
 
-
-/* TS 29.272 7.3.53 RAND */
-template (value) GenericAVP ts_AVP_RAND(template (value) octetstring rand) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_RAND),
-		avp_data := {
-			avp_AAA_3GPP_RAND := rand
-		}
-	}
-}
-
-/* TS 29.272 7.3.54 XRES */
-template (value) GenericAVP ts_AVP_XRES(template (value) octetstring xres) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_XRES),
-		avp_data := {
-			avp_AAA_3GPP_XRES := xres
-		}
-	}
-}
-
-/* TS 29.272 7.3.55 XRES */
-template (value) GenericAVP ts_AVP_AUTN(template (value) octetstring autn) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_AUTN),
-		avp_data := {
-			avp_AAA_3GPP_AUTN := autn
-		}
-	}
-}
-
-/* TS 29.272 7.3.56 KASME */
-template (value) GenericAVP ts_AVP_KASME(template (value) octetstring kasme) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_KASME),
-		avp_data := {
-			avp_AAA_3GPP_KASME := kasme
-		}
-	}
-}
-
-/* TS 29.272 7.3.23 Item-Number */
-template (value) GenericAVP ts_AVP_ItemNumber(uint32_t num) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_KASME),
-		avp_data := {
-			avp_AAA_3GPP_Item_Number := int2oct(num, 4)
-		}
-	}
-}
-
-/* TS 29.272 7.3.18 E-UTRAN Vector */
-template (value) GenericAVP ts_AVP_EutranVec(uint32_t item_num, octetstring rand, octetstring xres,
-					     octetstring autn, octetstring kasme) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_E_UTRAN_Vector),
-		avp_data := {
-			avp_AAA_3GPP_E_UTRAN_Vector := {
-				ts_AVP_ItemNumber(item_num),
-				ts_AVP_RAND(rand),
-				ts_AVP_XRES(xres),
-				ts_AVP_AUTN(autn),
-				ts_AVP_KASME(kasme)
-			}
-		}
-	}
-}
-
-/* TS 29.272 7.3.2 Subscription-Data */
-template (value) GenericAVP ts_AVP_3GPP_SubscriptionData(template (value) AVP_list content) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscription_Data),
-		avp_data := {
-			avp_AAA_3GPP_Subscription_Data := content
-		}
-	}
-}
-template (present) GenericAVP
-tr_AVP_3GPP_SubscriptionData(template (present) AVP_list content := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscription_Data),
-		avp_data := {
-			avp_AAA_3GPP_Subscription_Data := content
-		}
-	}
-}
-
-
-/* TS 29.272 7.3.17 Authentication-Info */
-template (value) GenericAVP ts_AVP_3GPP_AuthInfo(template (value) AVP_list content) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Authentication_Info),
-		avp_data := {
-			avp_AAA_3GPP_Authentication_Info := content
-		}
-	}
-}
-template (present) GenericAVP
-tr_AVP_3GPP_AuthInfo(template (present) AVP_list content := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Authentication_Info),
-		avp_data := {
-			avp_AAA_3GPP_Authentication_Info := content
-		}
-	}
-}
-
-/* TS 29.272 7.3.9 Visited-PLMN-Id */
-template (value) GenericAVP ts_AVP_3GPP_VisitedPlmnId(template (value) octetstring id) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Visited_PLMN_Id),
-		avp_data := {
-			avp_AAA_3GPP_Visited_PLMN_Id := id
-		}
-	}
-}
-template (present) GenericAVP tr_AVP_3GPP_VisitedPlmnId(template (present) octetstring id := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Visited_PLMN_Id),
-		avp_data := {
-			avp_AAA_3GPP_Visited_PLMN_Id := id
-		}
-	}
-}
-
-/* TS 29.272 7.3.13 RAT-Type */
-template (value) GenericAVP ts_AVP_PCC_3GPP_RatType(template (value) PCC_3GPP_RAT_Type rat_type) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_RAT_Type),
-		avp_data := {
-			avp_PCC_3GPP_RAT_Type := rat_type
-		}
-	}
-}
-template (present) GenericAVP tr_AVP_PCC_3GPP_RatType(template (present) PCC_3GPP_RAT_Type rat_type := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_RAT_Type),
-		avp_data := {
-			avp_PCC_3GPP_RAT_Type := rat_type
-		}
-	}
-}
-
-template (present) GenericAVP tr_AVP_GI_3GPP_RatType(template (present) GI_3GPP_3GPP_RAT_Type rat_type := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_RAT_Type),
-		avp_data := {
-			avp_GI_3GPP_3GPP_RAT_Type := rat_type
-		}
-	}
-}
-
-/* TS 29.272 7.3.7 ULR-Flags */
-template (value) GenericAVP ts_AVP_3GPP_UlrFlags(template (value) UINT32 flags) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULR_Flags),
-		avp_data := {
-			avp_AAA_3GPP_ULR_Flags := flags
-		}
-	}
-}
-template (present) GenericAVP tr_AVP_3GPP_UlrFlags(template (present) UINT32 flags := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULR_Flags),
-		avp_data := {
-			avp_AAA_3GPP_ULR_Flags := flags
-		}
-	}
-}
-
-/* TS 29.272 7.3.8 ULA-Flags */
-template (value) GenericAVP ts_AVP_3GPP_UlaFlags(template (value) UINT32 flags) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULA_Flags),
-		avp_data := {
-			avp_AAA_3GPP_ULA_Flags := flags
-		}
-	}
-}
-template (present) GenericAVP tr_AVP_3GPP_UlaFlags(template (present) UINT32 flags := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULA_Flags),
-		avp_data := {
-			avp_AAA_3GPP_ULA_Flags := flags
-		}
-	}
-}
-
-
-
 template (value) GenericAVP ts_AVP_NumOfReqVectors(template (value) UINT32 num_req := '00000004'O) := {
 	avp := {
 		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Number_Of_Requested_Vectors),
@@ -889,61 +681,6 @@
 	}
 }
 
-
-/* TS 29.272 7.3.27 Context-Identifier */
-template (present) GenericAVP tr_AVP_3GPP_ContextId(template (present) uint32_t ctx := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Context_Identifier),
-		avp_data := {
-			avp_AAA_3GPP_Context_Identifier := int2oct_tmpl(ctx, 4)
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_ContextId(uint32_t ctx) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Context_Identifier),
-		avp_data := {
-			avp_AAA_3GPP_Context_Identifier := int2oct(ctx, 4)
-		}
-	}
-}
-
-/* Ts 29.272 7.3.29 Subscriber-Status */
-template (present) GenericAVP tr_AVP_3GPP_SubscriberStatus(template (present) AAA_3GPP_Subscriber_Status sts) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscriber_Status),
-		avp_data := {
-			avp_AAA_3GPP_Subscriber_Status := sts
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_SubscriberStatus(template (value) AAA_3GPP_Subscriber_Status sts) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscriber_Status),
-		avp_data := {
-			avp_AAA_3GPP_Subscriber_Status := sts
-		}
-	}
-}
-
-/* Ts 29.272 7.3.30 Operator-Determined-Barring */
-template (present) GenericAVP tr_AVP_3GPP_OperatorDeterminedBarring(template (present) uint32_t val := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Operator_Determined_Barring),
-		avp_data := {
-			avp_AAA_3GPP_Operator_Determined_Barring := int2oct_tmpl(val, 4)
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_OperatorDeterminedBarring(uint32_t val) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Operator_Determined_Barring),
-		avp_data := {
-			avp_AAA_3GPP_Operator_Determined_Barring := int2oct(val, 4)
-		}
-	}
-}
-
 template (present) GenericAVP tr_AVP_3GPP_SubscrRauTauTmr(template (present) uint32_t tmr := ?) := {
 	avp := {
 		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscribed_Periodic_RAU_TAU_Timer),
@@ -962,73 +699,6 @@
 	}
 }
 
-/* TS 29.272 7.3.33 All-APN-Configurations-Included-Indicator */
-template (present) GenericAVP tr_AVP_3GPP_AllApnConfigsIncl(template (present) AAA_3GPP_All_APN_Configurations_Included_Indicator ind := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_All_APN_Configurations_Included_Indicator),
-		avp_data := {
-			avp_AAA_3GPP_All_APN_Configurations_Included_Indicator := ind
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_AllApnConfigsIncl(template (value) AAA_3GPP_All_APN_Configurations_Included_Indicator ind := All_APN_CONFIGURATIONS_INCLUDED) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_All_APN_Configurations_Included_Indicator),
-		avp_data := {
-			avp_AAA_3GPP_All_APN_Configurations_Included_Indicator := ind
-		}
-	}
-}
-
-/* TS 29.272 7.3.34 APN-Configuration-Profile */
-template (present) GenericAVP tr_AVP_3GPP_ApnConfigProfile(template (present) AVP_list content := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration_Profile),
-		avp_data := {
-			avp_AAA_3GPP_APN_Configuration_Profile := content
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_ApnConfigProfile(template (value) AVP_list content) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration_Profile),
-		avp_data := {
-			avp_AAA_3GPP_APN_Configuration_Profile := content
-		}
-	}
-}
-
-/* TS 29.272 7.3.35 APN-Configuration */
-template (present) GenericAVP tr_AVP_3GPP_ApnConfig(template (present) uint32_t ctx := ?,
-						    template (present) AAA_3GPP_PDN_Type pdn_type := ?,
-						    template (present) charstring apn := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration),
-		avp_data := {
-			avp_AAA_3GPP_APN_Configuration := superset(
-				tr_AVP_3GPP_ContextId(ctx),
-				tr_AVP_3GPP_PdnType(pdn_type),
-				tr_AVP_ServiceSelection(apn),
-				tr_AVP_3GPP_EpsSubscrQosProfile(?, ?)
-			)
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_ApnConfig(uint32_t ctx, AAA_3GPP_PDN_Type pdn_type,
-						  charstring apn) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration),
-		avp_data := {
-			avp_AAA_3GPP_APN_Configuration := {
-				ts_AVP_3GPP_ContextId(ctx),
-				ts_AVP_3GPP_PdnType(pdn_type),
-				ts_AVP_ServiceSelection(apn),
-				ts_AVP_3GPP_EpsSubscrQosProfile(1, 1)
-			}
-		}
-	}
-}
-
 /* Service-Selection, TS 29.272 7.3.36, TS 29.273 5.2.3.5, (RFC 5778) */
 template (present) GenericAVP tr_AVP_ServiceSelection(template (present) charstring apn := ?) := {
 	avp := {
@@ -1179,67 +849,6 @@
 	}
 }
 
-
-/* TS 29.272 7.3.41 AMBR */
-template (present) GenericAVP tr_AVP_3GPP_AMBR(template (present) uint32_t ul := ?, template (present) uint32_t dl := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_AMBR),
-		avp_data := {
-			avp_AAA_3GPP_AMBR := {
-				tr_AVP_3GPP_MaxReqBwUL(ul),
-				tr_AVP_3GPP_MaxReqBwDL(dl)
-			}
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_AMBR(uint32_t ul, uint32_t dl) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_AMBR),
-		avp_data := {
-			avp_AAA_3GPP_AMBR := {
-				ts_AVP_3GPP_MaxReqBwUL(ul),
-				ts_AVP_3GPP_MaxReqBwDL(dl)
-			}
-		}
-	}
-}
-
-template (present) GenericAVP tr_AVP_3GPP_MaxReqBwUL(template (present) uint32_t bw := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_UL),
-		avp_data := {
-			avp_RX_3GPP_Max_Requested_Bandwidth_UL := int2oct_tmpl(bw, 4)
-		}
-	}
-}
-
-template (value) GenericAVP ts_AVP_3GPP_MaxReqBwUL(uint32_t bw) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_UL),
-		avp_data := {
-			avp_RX_3GPP_Max_Requested_Bandwidth_UL := int2oct(bw, 4)
-		}
-	}
-}
-
-template (present) GenericAVP tr_AVP_3GPP_MaxReqBwDL(template (present) uint32_t bw := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_DL),
-		avp_data := {
-			avp_RX_3GPP_Max_Requested_Bandwidth_DL := int2oct_tmpl(bw, 4)
-		}
-	}
-}
-
-template (value) GenericAVP ts_AVP_3GPP_MaxReqBwDL(uint32_t bw) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_DL),
-		avp_data := {
-			avp_RX_3GPP_Max_Requested_Bandwidth_DL := int2oct(bw, 4)
-		}
-	}
-}
-
 template (present) GenericAVP tr_AVP_3GPP_Reporting_Reason(template (present) DCA_3GPP_Reporting_Reason r := ?) := {
 	avp := {
 		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_DCA_3GPP_Reporting_Reason),
@@ -1402,24 +1011,6 @@
 	}
 }
 
-/* TS 29.272 7.3.62 PDN-Type */
-template (present) GenericAVP tr_AVP_3GPP_PdnType(template (present) AAA_3GPP_PDN_Type pdn_type := ?) := {
-	avp := {
-		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_PDN_Type),
-		avp_data := {
-			avp_AAA_3GPP_PDN_Type := pdn_type
-		}
-	}
-}
-template (value) GenericAVP ts_AVP_3GPP_PdnType(template (value) AAA_3GPP_PDN_Type pdn_type) := {
-	avp := {
-		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_PDN_Type),
-		avp_data := {
-			avp_AAA_3GPP_PDN_Type := pdn_type
-		}
-	}
-}
-
 /* RFC4006 8.16 Multiple-Services-Credit-Control AVP */
 template (value) GenericAVP ts_AVP_Multiple_Services_Credit_Control(template (value) AVP_list content) := {
 	avp := {
@@ -1616,207 +1207,6 @@
 	return diam_pdu;
 }
 
-
-template (value) PDU_DIAMETER
-ts_DIA_AIR(/* template (value) */ hexstring imsi,
-	   template (value) octetstring mcc_mnc := '111F11'O,
-	   template (value) octetstring sess_id := c_def_sess_id,
-	   template (value) charstring orig_host := "ttcn3.localdomain",
-	   template (value) charstring orig_realm := "localdomain",
-	   template (value) charstring dest_realm := "localdomain",
-	   template (value) UINT32 hbh_id := '00000000'O,
-	   template (value) UINT32 ete_id := '00000000'O) :=
-	ts_DIAMETER(flags := '11000000'B,
-		    cmd_code := Authentication_Information,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := {
-			ts_AVP_SessionId(sess_id),
-			ts_AVP_DestinationRealm(dest_realm),
-			ts_AVP_OriginHost(orig_host),
-			ts_AVP_OriginRealm(orig_realm),
-			ts_AVP_UserNameImsi(imsi),
-			/* Requested EUTRAN Auth Info */
-			ts_AVP_RequestedEutranAuthInfo,
-			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
-			ts_AVP_3GPP_VisitedPlmnId(mcc_mnc)
-	});
-template (present) PDU_DIAMETER
-tr_DIA_AIR(/* template (present) */ hexstring imsi,
-	   template (present) octetstring sess_id := ?,
-	   template (present) charstring dest_realm := ?,
-	   template (present) UINT32 hbh_id := ?,
-	   template (present) UINT32 ete_id := ?) :=
-	tr_DIAMETER(flags := '1???????'B,
-		    cmd_code := Authentication_Information,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id, ete_id := ete_id,
-		    avps := superset(
-			tr_AVP_SessionId(sess_id),
-			tr_AVP_DestinationRealm(dest_realm),
-			tr_AVP_UserNameImsi(imsi),
-			tr_AVP_3GPP_VisitedPlmnId
-	));
-
-/* TS 29.272 5.2.3.1 + 7.2.6 Authentication Information Answer */
-template (value) PDU_DIAMETER
-ts_DIA_AIA(template (value) AVP_list auth_info_contents,
-	   template (value) octetstring sess_id := c_def_sess_id,
-	   template (value) charstring orig_host := "hss.localdomain",
-	   template (value) charstring orig_realm := "localdomain",
-	   template (value) UINT32 hbh_id := '00000000'O,
-	   template (value) UINT32 ete_id := '00000000'O) :=
-	ts_DIAMETER(flags := '01000000'B,
-		    cmd_code := Authentication_Information,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := {
-			ts_AVP_SessionId(sess_id),
-			ts_AVP_ResultCode(DIAMETER_SUCCESS),
-			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
-			ts_AVP_OriginHost(orig_host),
-			ts_AVP_OriginRealm(orig_realm),
-			ts_AVP_3GPP_AuthInfo(auth_info_contents)
-	});
-template (present) PDU_DIAMETER
-tr_DIA_AIA(template (present) AVP_list auth_info_contents := ?,
-	   template (present) octetstring sess_id := ?,
-	   template (present) charstring orig_host := ?,
-	   template (present) charstring orig_realm := ?,
-	   template (present) UINT32 hbh_id := ?,
-	   template (present) UINT32 ete_id := ?) :=
-	tr_DIAMETER(flags := '0???????'B,
-		    cmd_code := Authentication_Information,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := superset(
-			tr_AVP_SessionId(sess_id),
-			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
-			tr_AVP_OriginHost(orig_host),
-			tr_AVP_OriginRealm(orig_realm),
-			tr_AVP_ResultCode(DIAMETER_SUCCESS),
-			tr_AVP_3GPP_AuthInfo(auth_info_contents)
-	));
-template (present) PDU_DIAMETER
-tr_DIA_AIA_ERR(template (present) GenericAVP err_avp := ?,
-	   template (present) octetstring sess_id := ?,
-	   template (present) charstring orig_host := ?,
-	   template (present) charstring orig_realm := ?,
-	   template (present) UINT32 hbh_id := ?,
-	   template (present) UINT32 ete_id := ?) :=
-	tr_DIAMETER(flags := '0???????'B,
-		    cmd_code := Authentication_Information,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := superset(
-			tr_AVP_SessionId(sess_id),
-			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
-			tr_AVP_OriginHost(orig_host),
-			tr_AVP_OriginRealm(orig_realm),
-			err_avp
-	));
-
-
-/* TS 29.272 7.2.3 Update Location Request */
-template (value) PDU_DIAMETER
-ts_DIA_ULR(/* template (value) */ hexstring imsi,
-	   template (value) octetstring mcc_mnc := '111F11'O,
-	   template (value) octetstring sess_id := c_def_sess_id,
-	   template (value) charstring orig_host := "ttcn3.localdomain",
-	   template (value) charstring orig_realm := "localdomain",
-	   template (value) charstring dest_realm := "localdomain",
-	   template (value) UINT32 hbh_id := '00000000'O,
-	   template (value) UINT32 ete_id := '00000000'O) :=
-	ts_DIAMETER(flags := '11000000'B,
-		    cmd_code := Update_Location,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := {
-			ts_AVP_SessionId(sess_id),
-			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
-			ts_AVP_UserNameImsi(imsi),
-			ts_AVP_3GPP_UlrFlags('00000000'O),
-			ts_AVP_3GPP_VisitedPlmnId(mcc_mnc),
-			ts_AVP_PCC_3GPP_RatType(EUTRAN),
-			ts_AVP_OriginHost(orig_host),
-			ts_AVP_OriginRealm(orig_realm),
-			ts_AVP_DestinationRealm(dest_realm)
-	});
-template (present) PDU_DIAMETER
-tr_DIA_ULR(/* template (present) */ hexstring imsi,
-	   template (present) octetstring sess_id := ?,
-	   template (present) charstring orig_host := ?,
-	   template (present) charstring orig_realm := ?,
-	   template (present) charstring dest_realm := ?,
-	   template (present) UINT32 hbh_id := ?,
-	   template (present) UINT32 ete_id := ?) :=
-	tr_DIAMETER(flags := '11000000'B,
-		    cmd_code := Update_Location,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := superset(
-			tr_AVP_SessionId(sess_id),
-			tr_AVP_AuthSessionState,
-			tr_AVP_OriginHost(orig_host),
-			tr_AVP_OriginRealm(orig_realm),
-			tr_AVP_DestinationRealm(dest_realm),
-			tr_AVP_UserNameImsi(imsi),
-			tr_AVP_PCC_3GPP_RatType,
-			tr_AVP_3GPP_UlrFlags,
-			tr_AVP_3GPP_VisitedPlmnId
-	));
-
-template (value) PDU_DIAMETER
-ts_DIA_ULA(template (value) AVP_list sub_data,
-	   template (value) octetstring sess_id := c_def_sess_id,
-	   template (value) charstring orig_host := "hss.localdomain",
-	   template (value) charstring orig_realm := "localdomain",
-	   template (value) UINT32 hbh_id := '00000000'O,
-	   template (value) UINT32 ete_id := '00000000'O) :=
-	ts_DIAMETER(flags:='01000000'B,
-		    cmd_code := Update_Location,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := {
-			ts_AVP_SessionId(sess_id),
-			ts_AVP_ResultCode(DIAMETER_SUCCESS), /* optional */
-			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
-			ts_AVP_OriginHost(orig_host),
-			ts_AVP_OriginRealm(orig_realm),
-			ts_AVP_3GPP_UlaFlags('00000002'O),
-			ts_AVP_3GPP_SubscriptionData(sub_data)
-	});
-template (present) PDU_DIAMETER
-tr_DIA_ULA(template (present) AVP_list sub_data := ?,
-	   template (present) octetstring sess_id := ?,
-	   template (present) charstring orig_host := ?,
-	   template (present) charstring orig_realm := ?,
-	   template (present) UINT32 hbh_id := ?,
-	   template (present) UINT32 ete_id := ?) :=
-	tr_DIAMETER(flags := '0???????'B,
-		    cmd_code := Update_Location,
-		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
-		    hbh_id := hbh_id,
-		    ete_id := ete_id,
-		    avps := superset(
-			tr_AVP_SessionId(sess_id),
-			tr_AVP_ResultCode(DIAMETER_SUCCESS),
-			tr_AVP_AuthSessionState,
-			tr_AVP_OriginHost(orig_host),
-			tr_AVP_OriginRealm(orig_realm),
-			tr_AVP_3GPP_UlaFlags,
-			tr_AVP_3GPP_SubscriptionData(sub_data)
-	));
-
-
-
 /* RFC 4006 3.1.  Credit-Control-Request (CCR) Command */
 template (present) PDU_DIAMETER
 tr_DIA_Gx_CCR(template (present) DCC_NONE_CC_Request_Type req_type := INITIAL_REQUEST)
diff --git a/library/DIAMETER_ts29_272_Templates.ttcn b/library/DIAMETER_ts29_272_Templates.ttcn
new file mode 100644
index 0000000..443e372
--- /dev/null
+++ b/library/DIAMETER_ts29_272_Templates.ttcn
@@ -0,0 +1,632 @@
+module DIAMETER_ts29_272_Templates {
+
+/* (C) 2023 by sysmocom s.f.m.c. GmbH <info@sysmocom.de
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * Templates for AVPs and messages for TS 29.272
+ */
+
+import from General_Types all;
+import from DIAMETER_Types all;
+import from DIAMETER_Templates all;
+import from Osmocom_Types all;
+import from Misc_Helpers all;
+
+/*******************************
+ * S6a 3GPP TS 29.272 section 7
+ *******************************/
+
+/* 3GPP TS 29.272 Section 7.1.8 */
+const uint32_t c_DIAMETER_3GPP_S6_AID := 16777251; /* S6a/S6d */
+const uint32_t c_DIAMETER_3GPP_S13_AID := 16777252;
+
+/* 3GPP TS 29.272 section 7.4. Errors in Experimental-Result-Code */
+type enumerated DIAMETER_ExperimentalResultcode {
+	/* transient */
+	DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE 	(4181),
+	DIAMETER_ERROR_CAMEL_SUBSCRIPTION_PRESENT 	(4182),
+	/* permanent */
+	DIAMETER_ERROR_USER_UNKNOWN			(5001),
+	DIAMETER_AUTHORIZATION_REJECTED			(5003),
+	DIAMETER_ERROR_ROAMING_NOT_ALLOWED		(5004),
+	DIAMETER_MISSING_AVP				(5005),
+	DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION		(5420),
+	DIAMETER_ERROR_RAT_NOT_ALLOWED			(5421),
+	DIAMETER_ERROR_EQUIPMENT_UNKNOWN		(5422),
+	DIAMETER_ERROR_UNKOWN_SERVING_NODE		(5423)
+}
+
+/* TS 29.272 7.3.53 RAND */
+template (value) GenericAVP ts_AVP_RAND(template (value) octetstring rand) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_RAND),
+		avp_data := {
+			avp_AAA_3GPP_RAND := rand
+		}
+	}
+}
+
+/* TS 29.272 7.3.54 XRES */
+template (value) GenericAVP ts_AVP_XRES(template (value) octetstring xres) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_XRES),
+		avp_data := {
+			avp_AAA_3GPP_XRES := xres
+		}
+	}
+}
+
+/* TS 29.272 7.3.55 XRES */
+template (value) GenericAVP ts_AVP_AUTN(template (value) octetstring autn) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_AUTN),
+		avp_data := {
+			avp_AAA_3GPP_AUTN := autn
+		}
+	}
+}
+
+/* TS 29.272 7.3.56 KASME */
+template (value) GenericAVP ts_AVP_KASME(template (value) octetstring kasme) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_KASME),
+		avp_data := {
+			avp_AAA_3GPP_KASME := kasme
+		}
+	}
+}
+
+/* TS 29.272 7.3.23 Item-Number */
+template (value) GenericAVP ts_AVP_ItemNumber(uint32_t num) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_KASME),
+		avp_data := {
+			avp_AAA_3GPP_Item_Number := int2oct(num, 4)
+		}
+	}
+}
+
+/* TS 29.272 7.3.18 E-UTRAN Vector */
+template (value) GenericAVP ts_AVP_EutranVec(uint32_t item_num, octetstring rand, octetstring xres,
+					     octetstring autn, octetstring kasme) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_E_UTRAN_Vector),
+		avp_data := {
+			avp_AAA_3GPP_E_UTRAN_Vector := {
+				ts_AVP_ItemNumber(item_num),
+				ts_AVP_RAND(rand),
+				ts_AVP_XRES(xres),
+				ts_AVP_AUTN(autn),
+				ts_AVP_KASME(kasme)
+			}
+		}
+	}
+}
+
+/* TS 29.272 7.3.2 Subscription-Data */
+template (value) GenericAVP ts_AVP_3GPP_SubscriptionData(template (value) AVP_list content) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscription_Data),
+		avp_data := {
+			avp_AAA_3GPP_Subscription_Data := content
+		}
+	}
+}
+template (present) GenericAVP
+tr_AVP_3GPP_SubscriptionData(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscription_Data),
+		avp_data := {
+			avp_AAA_3GPP_Subscription_Data := content
+		}
+	}
+}
+
+
+/* TS 29.272 7.3.17 Authentication-Info */
+template (value) GenericAVP ts_AVP_3GPP_AuthInfo(template (value) AVP_list content) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Authentication_Info),
+		avp_data := {
+			avp_AAA_3GPP_Authentication_Info := content
+		}
+	}
+}
+template (present) GenericAVP
+tr_AVP_3GPP_AuthInfo(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Authentication_Info),
+		avp_data := {
+			avp_AAA_3GPP_Authentication_Info := content
+		}
+	}
+}
+
+/* TS 29.272 7.3.9 Visited-PLMN-Id */
+template (value) GenericAVP ts_AVP_3GPP_VisitedPlmnId(template (value) octetstring id) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Visited_PLMN_Id),
+		avp_data := {
+			avp_AAA_3GPP_Visited_PLMN_Id := id
+		}
+	}
+}
+template (present) GenericAVP tr_AVP_3GPP_VisitedPlmnId(template (present) octetstring id := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Visited_PLMN_Id),
+		avp_data := {
+			avp_AAA_3GPP_Visited_PLMN_Id := id
+		}
+	}
+}
+
+/* TS 29.272 7.3.13 RAT-Type */
+template (value) GenericAVP ts_AVP_PCC_3GPP_RatType(template (value) PCC_3GPP_RAT_Type rat_type) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_RAT_Type),
+		avp_data := {
+			avp_PCC_3GPP_RAT_Type := rat_type
+		}
+	}
+}
+template (present) GenericAVP tr_AVP_PCC_3GPP_RatType(template (present) PCC_3GPP_RAT_Type rat_type := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_PCC_3GPP_RAT_Type),
+		avp_data := {
+			avp_PCC_3GPP_RAT_Type := rat_type
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_GI_3GPP_RatType(template (present) GI_3GPP_3GPP_RAT_Type rat_type := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_GI_3GPP_3GPP_RAT_Type),
+		avp_data := {
+			avp_GI_3GPP_3GPP_RAT_Type := rat_type
+		}
+	}
+}
+
+/* TS 29.272 7.3.7 ULR-Flags */
+template (value) GenericAVP ts_AVP_3GPP_UlrFlags(template (value) UINT32 flags) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULR_Flags),
+		avp_data := {
+			avp_AAA_3GPP_ULR_Flags := flags
+		}
+	}
+}
+template (present) GenericAVP tr_AVP_3GPP_UlrFlags(template (present) UINT32 flags := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULR_Flags),
+		avp_data := {
+			avp_AAA_3GPP_ULR_Flags := flags
+		}
+	}
+}
+
+/* TS 29.272 7.3.8 ULA-Flags */
+template (value) GenericAVP ts_AVP_3GPP_UlaFlags(template (value) UINT32 flags) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULA_Flags),
+		avp_data := {
+			avp_AAA_3GPP_ULA_Flags := flags
+		}
+	}
+}
+template (present) GenericAVP tr_AVP_3GPP_UlaFlags(template (present) UINT32 flags := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_ULA_Flags),
+		avp_data := {
+			avp_AAA_3GPP_ULA_Flags := flags
+		}
+	}
+}
+
+
+/* TS 29.272 7.3.27 Context-Identifier */
+template (present) GenericAVP tr_AVP_3GPP_ContextId(template (present) uint32_t ctx := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Context_Identifier),
+		avp_data := {
+			avp_AAA_3GPP_Context_Identifier := int2oct_tmpl(ctx, 4)
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_ContextId(uint32_t ctx) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Context_Identifier),
+		avp_data := {
+			avp_AAA_3GPP_Context_Identifier := int2oct(ctx, 4)
+		}
+	}
+}
+
+/* Ts 29.272 7.3.29 Subscriber-Status */
+template (present) GenericAVP tr_AVP_3GPP_SubscriberStatus(template (present) AAA_3GPP_Subscriber_Status sts) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscriber_Status),
+		avp_data := {
+			avp_AAA_3GPP_Subscriber_Status := sts
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_SubscriberStatus(template (value) AAA_3GPP_Subscriber_Status sts) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Subscriber_Status),
+		avp_data := {
+			avp_AAA_3GPP_Subscriber_Status := sts
+		}
+	}
+}
+
+/* Ts 29.272 7.3.30 Operator-Determined-Barring */
+template (present) GenericAVP tr_AVP_3GPP_OperatorDeterminedBarring(template (present) uint32_t val := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Operator_Determined_Barring),
+		avp_data := {
+			avp_AAA_3GPP_Operator_Determined_Barring := int2oct_tmpl(val, 4)
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_OperatorDeterminedBarring(uint32_t val) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_Operator_Determined_Barring),
+		avp_data := {
+			avp_AAA_3GPP_Operator_Determined_Barring := int2oct(val, 4)
+		}
+	}
+}
+
+/* TS 29.272 7.3.33 All-APN-Configurations-Included-Indicator */
+template (present) GenericAVP tr_AVP_3GPP_AllApnConfigsIncl(template (present) AAA_3GPP_All_APN_Configurations_Included_Indicator ind := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_All_APN_Configurations_Included_Indicator),
+		avp_data := {
+			avp_AAA_3GPP_All_APN_Configurations_Included_Indicator := ind
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_AllApnConfigsIncl(template (value) AAA_3GPP_All_APN_Configurations_Included_Indicator ind := All_APN_CONFIGURATIONS_INCLUDED) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_All_APN_Configurations_Included_Indicator),
+		avp_data := {
+			avp_AAA_3GPP_All_APN_Configurations_Included_Indicator := ind
+		}
+	}
+}
+
+/* TS 29.272 7.3.34 APN-Configuration-Profile */
+template (present) GenericAVP tr_AVP_3GPP_ApnConfigProfile(template (present) AVP_list content := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration_Profile),
+		avp_data := {
+			avp_AAA_3GPP_APN_Configuration_Profile := content
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_ApnConfigProfile(template (value) AVP_list content) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration_Profile),
+		avp_data := {
+			avp_AAA_3GPP_APN_Configuration_Profile := content
+		}
+	}
+}
+
+/* TS 29.272 7.3.35 APN-Configuration */
+template (present) GenericAVP tr_AVP_3GPP_ApnConfig(template (present) uint32_t ctx := ?,
+						    template (present) AAA_3GPP_PDN_Type pdn_type := ?,
+						    template (present) charstring apn := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration),
+		avp_data := {
+			avp_AAA_3GPP_APN_Configuration := superset(
+				tr_AVP_3GPP_ContextId(ctx),
+				tr_AVP_3GPP_PdnType(pdn_type),
+				tr_AVP_ServiceSelection(apn),
+				tr_AVP_3GPP_EpsSubscrQosProfile(?, ?)
+			)
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_ApnConfig(uint32_t ctx, AAA_3GPP_PDN_Type pdn_type,
+						  charstring apn) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_APN_Configuration),
+		avp_data := {
+			avp_AAA_3GPP_APN_Configuration := {
+				ts_AVP_3GPP_ContextId(ctx),
+				ts_AVP_3GPP_PdnType(pdn_type),
+				ts_AVP_ServiceSelection(apn),
+				ts_AVP_3GPP_EpsSubscrQosProfile(1, 1)
+			}
+		}
+	}
+}
+
+
+/* TS 29.272 7.3.41 AMBR */
+template (present) GenericAVP tr_AVP_3GPP_AMBR(template (present) uint32_t ul := ?, template (present) uint32_t dl := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_AMBR),
+		avp_data := {
+			avp_AAA_3GPP_AMBR := {
+				tr_AVP_3GPP_MaxReqBwUL(ul),
+				tr_AVP_3GPP_MaxReqBwDL(dl)
+			}
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_AMBR(uint32_t ul, uint32_t dl) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_AMBR),
+		avp_data := {
+			avp_AAA_3GPP_AMBR := {
+				ts_AVP_3GPP_MaxReqBwUL(ul),
+				ts_AVP_3GPP_MaxReqBwDL(dl)
+			}
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_MaxReqBwUL(template (present) uint32_t bw := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_UL),
+		avp_data := {
+			avp_RX_3GPP_Max_Requested_Bandwidth_UL := int2oct_tmpl(bw, 4)
+		}
+	}
+}
+
+template (value) GenericAVP ts_AVP_3GPP_MaxReqBwUL(uint32_t bw) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_UL),
+		avp_data := {
+			avp_RX_3GPP_Max_Requested_Bandwidth_UL := int2oct(bw, 4)
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_3GPP_MaxReqBwDL(template (present) uint32_t bw := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_DL),
+		avp_data := {
+			avp_RX_3GPP_Max_Requested_Bandwidth_DL := int2oct_tmpl(bw, 4)
+		}
+	}
+}
+
+template (value) GenericAVP ts_AVP_3GPP_MaxReqBwDL(uint32_t bw) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_RX_3GPP_Max_Requested_Bandwidth_DL),
+		avp_data := {
+			avp_RX_3GPP_Max_Requested_Bandwidth_DL := int2oct(bw, 4)
+		}
+	}
+}
+
+/* TS 29.272 7.3.62 PDN-Type */
+template (present) GenericAVP tr_AVP_3GPP_PdnType(template (present) AAA_3GPP_PDN_Type pdn_type := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_PDN_Type),
+		avp_data := {
+			avp_AAA_3GPP_PDN_Type := pdn_type
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_PdnType(template (value) AAA_3GPP_PDN_Type pdn_type) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_AAA_3GPP_PDN_Type),
+		avp_data := {
+			avp_AAA_3GPP_PDN_Type := pdn_type
+		}
+	}
+}
+
+
+/* TS 29.272 5.2.3.1 + 7.2.6 Authentication Information Answer */
+template (value) PDU_DIAMETER
+ts_DIA_AIA(template (value) AVP_list auth_info_contents,
+	   template (value) octetstring sess_id := c_def_sess_id,
+	   template (value) charstring orig_host := "hss.localdomain",
+	   template (value) charstring orig_realm := "localdomain",
+	   template (value) UINT32 hbh_id := '00000000'O,
+	   template (value) UINT32 ete_id := '00000000'O) :=
+	ts_DIAMETER(flags := '01000000'B,
+		    cmd_code := Authentication_Information,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := {
+			ts_AVP_SessionId(sess_id),
+			ts_AVP_ResultCode(DIAMETER_SUCCESS),
+			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			ts_AVP_OriginHost(orig_host),
+			ts_AVP_OriginRealm(orig_realm),
+			ts_AVP_3GPP_AuthInfo(auth_info_contents)
+	});
+template (present) PDU_DIAMETER
+tr_DIA_AIA(template (present) AVP_list auth_info_contents := ?,
+	   template (present) octetstring sess_id := ?,
+	   template (present) charstring orig_host := ?,
+	   template (present) charstring orig_realm := ?,
+	   template (present) UINT32 hbh_id := ?,
+	   template (present) UINT32 ete_id := ?) :=
+	tr_DIAMETER(flags := '0???????'B,
+		    cmd_code := Authentication_Information,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			tr_AVP_ResultCode(DIAMETER_SUCCESS),
+			tr_AVP_3GPP_AuthInfo(auth_info_contents)
+	));
+template (present) PDU_DIAMETER
+tr_DIA_AIA_ERR(template (present) GenericAVP err_avp := ?,
+	   template (present) octetstring sess_id := ?,
+	   template (present) charstring orig_host := ?,
+	   template (present) charstring orig_realm := ?,
+	   template (present) UINT32 hbh_id := ?,
+	   template (present) UINT32 ete_id := ?) :=
+	tr_DIAMETER(flags := '0???????'B,
+		    cmd_code := Authentication_Information,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			err_avp
+	));
+
+
+/* TS 29.272 7.2.3 Update Location Request */
+template (value) PDU_DIAMETER
+ts_DIA_ULR(/* template (value) */ hexstring imsi,
+	   template (value) octetstring mcc_mnc := '111F11'O,
+	   template (value) octetstring sess_id := c_def_sess_id,
+	   template (value) charstring orig_host := "ttcn3.localdomain",
+	   template (value) charstring orig_realm := "localdomain",
+	   template (value) charstring dest_realm := "localdomain",
+	   template (value) UINT32 hbh_id := '00000000'O,
+	   template (value) UINT32 ete_id := '00000000'O) :=
+	ts_DIAMETER(flags := '11000000'B,
+		    cmd_code := Update_Location,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := {
+			ts_AVP_SessionId(sess_id),
+			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			ts_AVP_UserNameImsi(imsi),
+			ts_AVP_3GPP_UlrFlags('00000000'O),
+			ts_AVP_3GPP_VisitedPlmnId(mcc_mnc),
+			ts_AVP_PCC_3GPP_RatType(EUTRAN),
+			ts_AVP_OriginHost(orig_host),
+			ts_AVP_OriginRealm(orig_realm),
+			ts_AVP_DestinationRealm(dest_realm)
+	});
+template (present) PDU_DIAMETER
+tr_DIA_ULR(/* template (present) */ hexstring imsi,
+	   template (present) octetstring sess_id := ?,
+	   template (present) charstring orig_host := ?,
+	   template (present) charstring orig_realm := ?,
+	   template (present) charstring dest_realm := ?,
+	   template (present) UINT32 hbh_id := ?,
+	   template (present) UINT32 ete_id := ?) :=
+	tr_DIAMETER(flags := '11000000'B,
+		    cmd_code := Update_Location,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_AuthSessionState,
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			tr_AVP_DestinationRealm(dest_realm),
+			tr_AVP_UserNameImsi(imsi),
+			tr_AVP_PCC_3GPP_RatType,
+			tr_AVP_3GPP_UlrFlags,
+			tr_AVP_3GPP_VisitedPlmnId
+	));
+
+template (value) PDU_DIAMETER
+ts_DIA_ULA(template (value) AVP_list sub_data,
+	   template (value) octetstring sess_id := c_def_sess_id,
+	   template (value) charstring orig_host := "hss.localdomain",
+	   template (value) charstring orig_realm := "localdomain",
+	   template (value) UINT32 hbh_id := '00000000'O,
+	   template (value) UINT32 ete_id := '00000000'O) :=
+	ts_DIAMETER(flags:='01000000'B,
+		    cmd_code := Update_Location,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := {
+			ts_AVP_SessionId(sess_id),
+			ts_AVP_ResultCode(DIAMETER_SUCCESS), /* optional */
+			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			ts_AVP_OriginHost(orig_host),
+			ts_AVP_OriginRealm(orig_realm),
+			ts_AVP_3GPP_UlaFlags('00000002'O),
+			ts_AVP_3GPP_SubscriptionData(sub_data)
+	});
+template (present) PDU_DIAMETER
+tr_DIA_ULA(template (present) AVP_list sub_data := ?,
+	   template (present) octetstring sess_id := ?,
+	   template (present) charstring orig_host := ?,
+	   template (present) charstring orig_realm := ?,
+	   template (present) UINT32 hbh_id := ?,
+	   template (present) UINT32 ete_id := ?) :=
+	tr_DIAMETER(flags := '0???????'B,
+		    cmd_code := Update_Location,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_ResultCode(DIAMETER_SUCCESS),
+			tr_AVP_AuthSessionState,
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			tr_AVP_3GPP_UlaFlags,
+			tr_AVP_3GPP_SubscriptionData(sub_data)
+	));
+
+/* TS 29.272 7.2.5 Authentication-Information-Request */
+template (value) PDU_DIAMETER
+ts_DIA_AIR(/* template (value) */ hexstring imsi,
+	   template (value) octetstring mcc_mnc := '111F11'O,
+	   template (value) octetstring sess_id := c_def_sess_id,
+	   template (value) charstring orig_host := "ttcn3.localdomain",
+	   template (value) charstring orig_realm := "localdomain",
+	   template (value) charstring dest_realm := "localdomain",
+	   template (value) UINT32 hbh_id := '00000000'O,
+	   template (value) UINT32 ete_id := '00000000'O) :=
+	ts_DIAMETER(flags := '11000000'B,
+		    cmd_code := Authentication_Information,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := {
+			ts_AVP_SessionId(sess_id),
+			ts_AVP_DestinationRealm(dest_realm),
+			ts_AVP_OriginHost(orig_host),
+			ts_AVP_OriginRealm(orig_realm),
+			ts_AVP_UserNameImsi(imsi),
+			/* Requested EUTRAN Auth Info */
+			ts_AVP_RequestedEutranAuthInfo,
+			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			ts_AVP_3GPP_VisitedPlmnId(mcc_mnc)
+	});
+template (present) PDU_DIAMETER
+tr_DIA_AIR(/* template (present) */ hexstring imsi,
+	   template (present) octetstring sess_id := ?,
+	   template (present) charstring dest_realm := ?,
+	   template (present) UINT32 hbh_id := ?,
+	   template (present) UINT32 ete_id := ?) :=
+	tr_DIAMETER(flags := '1???????'B,
+		    cmd_code := Authentication_Information,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id, ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_DestinationRealm(dest_realm),
+			tr_AVP_UserNameImsi(imsi),
+			tr_AVP_3GPP_VisitedPlmnId
+	));
+
+}
diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn
index 973c097..7f714fc 100644
--- a/mme/MME_Tests.ttcn
+++ b/mme/MME_Tests.ttcn
@@ -27,6 +27,7 @@
 
 import from DIAMETER_Types all;
 import from DIAMETER_Templates all;
+import from DIAMETER_ts29_272_Templates all;
 import from DIAMETER_Emulation all;
 
 import from SGsAP_Types all;
diff --git a/mme/gen_links.sh b/mme/gen_links.sh
index f10a161..32c782f 100755
--- a/mme/gen_links.sh
+++ b/mme/gen_links.sh
@@ -75,7 +75,8 @@
 FILES+="L3_Templates.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn "
 FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc S1AP_CodecPort_CtrlFunct.ttcn S1AP_Emulation.ttcn "
 FILES+="NAS_Templates.ttcn GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn "
-FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
+FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn "
+FILES+="DIAMETER_Templates.ttcn DIAMETER_ts29_272_Templates.ttcn "
 FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Emulation.ttcn GTP_Templates.ttcn Osmocom_Gb_Types.ttcn "
 FILES+="GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn "
 FILES+="GTPv2_CodecPort.ttcn GTPv2_CodecPort_CtrlFunctDef.cc GTPv2_CodecPort_CtrlFunct.ttcn GTPv2_Emulation.ttcn "
diff --git a/pgw/PGW_Tests.ttcn b/pgw/PGW_Tests.ttcn
index bafabdf..b8eb471 100644
--- a/pgw/PGW_Tests.ttcn
+++ b/pgw/PGW_Tests.ttcn
@@ -18,6 +18,7 @@
 
 import from DIAMETER_Types all;
 import from DIAMETER_Templates all;
+import from DIAMETER_ts29_272_Templates all;
 import from DIAMETER_Emulation all;
 
 
diff --git a/pgw/gen_links.sh b/pgw/gen_links.sh
index c8333c7..0bf264a 100755
--- a/pgw/gen_links.sh
+++ b/pgw/gen_links.sh
@@ -63,7 +63,8 @@
 FILES+="GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn "
 FILES+="GTPv2_CodecPort.ttcn GTPv2_CodecPort_CtrlFunctDef.cc GTPv2_CodecPort_CtrlFunct.ttcn GTPv2_Emulation.ttcn "
 FILES+="DNS_Helpers.ttcn "
-FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn DIAMETER_Templates.ttcn "
+FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc DIAMETER_Emulation.ttcn "
+FILES+="DIAMETER_Templates.ttcn DIAMETER_ts29_272_Templates.ttcn "
 gen_links $DIR $FILES
 
 ignore_pp_results
