diff --git a/library/DIAMETER_Templates.ttcn b/library/DIAMETER_Templates.ttcn
index bbf3cff..f909b5f 100644
--- a/library/DIAMETER_Templates.ttcn
+++ b/library/DIAMETER_Templates.ttcn
@@ -9,6 +9,7 @@
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 
+import from General_Types all;
 import from DIAMETER_Types all;
 import from Osmocom_Types all;
 import from Misc_Helpers all;
@@ -124,11 +125,13 @@
 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;
+/* 3GPP TS 29.273 Section 8.2 */
+const uint32_t c_DIAMETER_3GPP_SWx_AID := 16777265;
 
 const octetstring c_def_sess_id := char2oct("ttcn3.session");
 
 template (value) PDU_DIAMETER
-ts_DIAMETER(template (value) BIT8 flags,
+ts_DIAMETER(template (value) DIAMETER_Types.BIT8 flags,
 	    template (value) Command_Code cmd_code,
 	    template (value) OCTET4 app_id := '00000000'O,
 	    template (value) UINT32 hbh_id := '00000000'O,
@@ -145,7 +148,7 @@
 	avps := avps
 }
 template (present) PDU_DIAMETER
-tr_DIAMETER(template (present) BIT8 flags := ?,
+tr_DIAMETER(template (present) DIAMETER_Types.BIT8 flags := ?,
 	    template (present) Command_Code cmd_code := ?,
 	    template (present) OCTET4 app_id := ?,
 	    template (present) UINT32 hbh_id := ?,
@@ -180,7 +183,7 @@
 
 template (value) AVP_Header
 ts_DIA_Hdr(template (value) AVP_Code avp_code,
-		template (value) BIT8 flags := '01000000'B) := {
+		template (value) DIAMETER_Types.BIT8 flags := '01000000'B) := {
 	avp_code := avp_code,
 	VMPxxxxx := flags,
 	avp_length := 0, /* overwritten */
@@ -188,7 +191,7 @@
 }
 template (present) AVP_Header
 tr_DIA_Hdr(template (present) AVP_Code avp_code,
-		template (present) BIT8 flags := '0???????'B) := {
+		template (present) DIAMETER_Types.BIT8 flags := '0???????'B) := {
 	avp_code := avp_code,
 	VMPxxxxx := flags,
 	avp_length := ?, /* overwritten */
@@ -197,7 +200,7 @@
 
 template (value) AVP_Header
 ts_DIA_Hdr_3GPP(template (value) AVP_Code avp_code,
-		template (value) BIT8 flags := '11000000'B) := {
+		template (value) DIAMETER_Types.BIT8 flags := '11000000'B) := {
 	avp_code := avp_code,
 	VMPxxxxx := flags,
 	avp_length := 0, /* overwritten */
@@ -205,7 +208,7 @@
 }
 template (present) AVP_Header
 tr_DIA_Hdr_3GPP(template (present) AVP_Code avp_code,
-		template (present) BIT8 flags := '1???????'B) := {
+		template (present) DIAMETER_Types.BIT8 flags := '1???????'B) := {
 	avp_code := avp_code,
 	VMPxxxxx := flags,
 	avp_length := ?, /* overwritten */
@@ -1028,7 +1031,7 @@
 	}
 }
 
-/* TS 29.272 7.3.36 Service-Selection (refers to RFC 5778) */
+/* 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 := {
 		avp_header := tr_DIA_Hdr(c_AVP_Code_MIPv6_NONE_Service_Selection),
@@ -2255,4 +2258,191 @@
 	}
 }
 
+/* Server-Assignment-Type, 3GPP TS 29.273 8.2.3.12, 3GPP TS 29.229 6.3.15 */
+template (present) GenericAVP tr_AVP_3GPP_ServerAssignmentType(template (present) CxDx_3GPP_Server_Assignment_Type t := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_CxDx_3GPP_Server_Assignment_Type),
+		avp_data := {
+			avp_CxDx_3GPP_Server_Assignment_Type := t
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_ServerAssignmentType(template (value) CxDx_3GPP_Server_Assignment_Type t) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_CxDx_3GPP_Server_Assignment_Type),
+		avp_data := {
+			avp_CxDx_3GPP_Server_Assignment_Type := t
+		}
+	}
+}
+
+/*****************************
+ * SWx 3GPP TS 29.273
+ *****************************/
+
+/* SIP-Auth-Data-Item , 3GPP TS 29.273 8.2.3.9 */
+template (present) GenericAVP tr_AVP_3GPP_SIPAuthDataItem(template (present) uint32_t num := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr_3GPP(c_AVP_Code_CxDx_3GPP_SIP_Auth_Data_Item),
+		avp_data := {
+			avp_CxDx_3GPP_SIP_Auth_Data_Item := superset(
+				//tr_AVP_3GPP_SIPItemNumber(num), /* Optional */
+				tr_AVP_3GPP_SIPAuthScheme(?)//, /* Optional */
+				//tr_AVP_3GPP_SIPAuthenticate(?), /* Optional */
+				//tr_AVP_3GPP_SIPAuthorization(?), /* Optional */
+				//tr_AVP_3GPP_SIPAuthContext(?), /* Optional */
+				//tr_AVP_3GPP_ConfidentialityKey(?), /* Optional */
+				//tr_AVP_3GPP_IntegrityKey(?) /* Optional */
+				/* TODO:
+				[ SIP-Digest-Authenticate ]
+				[ Framed-IP-Address ]
+				[ Framed-IPv6-Prefix ]
+				[ Framed-Interface-Id ]
+				[ Line-Identifier ]
+				*[AVP]
+				*/
+			)
+		}
+	}
+}
+template (value) GenericAVP ts_AVP_3GPP_SIPAuthDataItem(uint32_t num, OCT16 rand, OCT16 ik, OCT16 ck, OCT16 autn, OCT14 auts) := {
+	avp := {
+		avp_header := ts_DIA_Hdr_3GPP(c_AVP_Code_CxDx_3GPP_SIP_Auth_Data_Item),
+		avp_data := {
+			avp_CxDx_3GPP_SIP_Auth_Data_Item := {
+				ts_AVP_3GPP_SIPItemNumber(num),
+				ts_AVP_3GPP_SIPAuthScheme(char2oct("Digest-AKAv1-MD5")),
+				ts_AVP_3GPP_SIPAuthenticate(rand & autn),
+				ts_AVP_3GPP_SIPAuthorization(rand & auts),
+				ts_AVP_3GPP_SIPAuthContext(char2oct("foobar")),
+				ts_AVP_3GPP_ConfidentialityKey(ck),
+				ts_AVP_3GPP_IntegrityKey(ik)
+				/* TODO:
+				[ SIP-Digest-Authenticate ]
+				[ Framed-IP-Address ]
+				[ Framed-IPv6-Prefix ]
+				[ Framed-Interface-Id ]
+				[ Line-Identifier ]
+				*[AVP]
+				*/
+			}
+		}
+	}
+}
+
+/* Multimedia-Auth-Request, 3GPP TS 29.273 8.2.2.1 Authentication Procedure */
+template (present) PDU_DIAMETER
+tr_DIA_SWx_MAR(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 := '1???????'B,
+		    cmd_code := Multimedia_Auth,
+		    app_id := int2oct(c_DIAMETER_3GPP_SWx_AID, 4),
+		    hbh_id := hbh_id, ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_VendorSpecAppId(?, ?),
+			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			tr_AVP_DestinationRealm(dest_realm),
+			tr_AVP_UserNameImsi(imsi),
+			tr_AVP_3GPP_SIPAuthDataItem(?),
+			tr_AVP_3GPP_SIPNumAuthDataItems(?)
+	));
+
+/* Multimedia-Auth-Answer, 3GPP TS 29.273 8.2.2.1 Authentication Procedure */
+template (value) PDU_DIAMETER
+ts_DIA_SWx_MAA(template (value) hexstring imsi,
+	       template (value) GenericAVP sip_auth_data_item,
+	       template (value) uint32_t vendor_app_id := c_DIAMETER_3GPP_SWx_AID,
+	       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 := Multimedia_Auth,
+		    app_id := int2oct(c_DIAMETER_3GPP_SWx_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := {
+			ts_AVP_SessionId(sess_id),
+			ts_AVP_VendorSpecAppId(vendor_id_3GPP, valueof(vendor_app_id)),
+			ts_AVP_ResultCode(DIAMETER_SUCCESS),
+			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			ts_AVP_OriginHost(orig_host),
+			ts_AVP_OriginRealm(orig_realm),
+			ts_AVP_UserNameImsi(valueof(imsi)),
+			sip_auth_data_item,
+			ts_AVP_3GPP_SIPNumAuthDataItems(1)
+	});
+
+/* Server-Assignment-Request,
+ * 3GPP TS 29.273 8.1.2.2.2 UE/PDN Registration/DeRegistration Notification
+ * 3GPP TS 29.273 8.2.2.3 Non-3GPP IP Access Registration Procedure */
+template (present) PDU_DIAMETER
+tr_DIA_SWx_SAR(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 := ?,
+	       template (present) CxDx_3GPP_Server_Assignment_Type server_ass_type := ?,
+	       template (present) charstring service_selection := ?) :=
+	tr_DIAMETER(flags := '1???????'B,
+		    cmd_code := Server_Assignment,
+		    app_id := int2oct(c_DIAMETER_3GPP_SWx_AID, 4),
+		    hbh_id := hbh_id, ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_VendorSpecAppId(?, ?),
+			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			tr_AVP_DestinationRealm(dest_realm),
+			tr_AVP_UserNameImsi(imsi),
+			tr_AVP_3GPP_ServerAssignmentType(server_ass_type),
+			tr_AVP_ServiceSelection(service_selection)
+	));
+
+/* Server-Assignment-Answer,
+ * 3GPP TS 29.273 8.1.2.2.2 UE/PDN Registration/DeRegistration Notification
+ * 3GPP TS 29.273 8.2.2.3 Non-3GPP IP Access Registration Procedure */
+template (value) PDU_DIAMETER
+ts_DIA_SWx_SAA(template (value) hexstring imsi,
+	       template (value) uint32_t vendor_app_id := c_DIAMETER_3GPP_SWx_AID,
+	       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 := Server_Assignment,
+		    app_id := int2oct(c_DIAMETER_3GPP_SWx_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := {
+			ts_AVP_SessionId(sess_id),
+			ts_AVP_VendorSpecAppId(vendor_id_3GPP, valueof(vendor_app_id)),
+			ts_AVP_ResultCode(DIAMETER_SUCCESS),
+			ts_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			ts_AVP_OriginHost(orig_host),
+			ts_AVP_OriginRealm(orig_realm),
+			ts_AVP_UserNameImsi(valueof(imsi))
+			/* TODO:
+			 * [ Non-3GPP-User-Data ]
+			 * [ 3GPP-AAA-Server-Name ]
+			 * [ OC-Supported-Features ]
+			 * [ OC-OLR ] ]
+			 * *[ Load ]
+			 * *[ Supported-Features ]
+			 */
+	});
+
 }
