diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 97412b8..cbaeb72 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -2693,6 +2693,21 @@
 		 rIM_Protocol_Version_Number := ver,
 		 sON_Transfer_Application_Identity := son_app_id
 	}
+	template RAN_Information_Ack_RIM_Container
+	tr_RAN_Information_Ack_RIM_Container(template RIM_Application_Identity app_id := ?,
+					     template RIM_Sequence_Number seq := ?,
+					     template RIM_Protocol_Version_Number ver := omit,
+					     template SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
+		 iEI := '5A'O,
+		 ext := '1'B,
+		 lengthIndicator := {
+			length1 := ?
+		 },
+		 rIM_Application_Identity := app_id,
+		 rIM_Sequence_Number := seq,
+		 rIM_Protocol_Version_Number := ver,
+		 sON_Transfer_Application_Identity := son_app_id
+	}
 
 	/* 3GPP TS 48.018 11.3.62a.4 */
 	template (value) RAN_Information_Error_RIM_Container
@@ -2719,6 +2734,30 @@
 		 },
 		 sON_Transfer_Application_Identity := son_app_id
 	}
+	template RAN_Information_Error_RIM_Container
+	tr_RAN_Information_Error_RIM_Container(template RIM_Application_Identity app_id := ?,
+					       template Cause_BSSGP cause := ?,
+					       template RIM_Protocol_Version_Number ver := omit,
+					       template octetstring pdu := ?,
+					       template SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
+		 iEI := '5B'O,
+		 ext := '1'B,
+		 lengthIndicator := {
+			length1 := ?
+		 },
+		 rIM_Application_Identity := app_id,
+		 rIM_cause := cause,
+		 rIM_Protocol_Version_Number := ver,
+		 pDU_in_Error:= {
+			iEI := '15'O,
+			ext := '1'B,
+			lengthIndicator := {
+				length1 := ?
+			},
+			erroneous_BSSGP_PDU := pdu
+		 },
+		 sON_Transfer_Application_Identity := son_app_id
+	}
 
 	/* 3GPP TS 48.018 11.3.62a.5 */
 	template (value) RAN_Information_Application_Error_RIM_Container
@@ -2740,6 +2779,25 @@
 		 application_Error_Container := cont,
 		 sON_Transfer_Application_Identity := son_app_id
 	}
+	template RAN_Information_Application_Error_RIM_Container
+	tr_RAN_Information_Application_Error_RIM_Container(template RIM_Application_Identity app_id := ?,
+							   template RIM_Sequence_Number seq := ?,
+							   template RIM_PDU_Indications ind := ?,
+							   template RIM_Protocol_Version_Number ver := omit,
+							   template Application_Error_Container cont := ?,
+							   template SON_Transfer_Application_Identity_TLV son_app_id := omit) := {
+		 iEI := '59'O,
+		 ext := '1'B,
+		 lengthIndicator := {
+			length1 := ?
+		 },
+		 rIM_Application_Identity := app_id,
+		 rIM_Sequence_Number := seq,
+		 rIM_PDU_Indications := ind,
+		 rIM_Protocol_Version_Number := ver,
+		 application_Error_Container := cont,
+		 sON_Transfer_Application_Identity := son_app_id
+	}
 
 
 	/* 3GPP TS 48.018 11.3.63.1 */
@@ -2775,6 +2833,15 @@
 		 },
 		 reporting_Cell_Identifier := t_Cell_Identifier_V(cid)
 	}
+	template RAN_Information_Request_Application_Container_NACC
+	tr_RAN_Information_Request_Application_Container_NACC(template BssgpCellId cid := ?) := {
+		 iEI := '4D'O,
+		 ext := '1'B,
+		 lengthIndicator := {
+			length1 := ?
+		 },
+		 reporting_Cell_Identifier := t_Cell_Identifier_V(cid)
+	}
 
 	/* 3GPP TS 48.018 11.3.63.1.2 */
 	template (value) RAN_Information_Request_Application_Container_SI3
@@ -2869,6 +2936,12 @@
 					     template (value) Application_Container_IE_NACC app_cont) := {
 		nacc := ts_Application_Error_Container_NACC(cid, cause, app_cont)
 	}
+	template Application_Error_Container
+	rsu_Application_Error_Container_NACC(template BssgpCellId cid := ?,
+					     template integer cause := ?,
+					     template Application_Container_IE_NACC app_cont := ?) := {
+		nacc := tr_Application_Error_Container_NACC(cid, cause, app_cont)
+	}
 	template (value) Application_Error_Container
 	tsu_Application_Error_Container_SI3(template (value) BssgpCellId cid,
 					    integer cause,
@@ -2895,10 +2968,33 @@
 		 nACC_cause := int2oct(cause, 1),
 		 erroneousApplicationContainer := app_cont
 	}
+	function tr_Application_Error_Container_NACC(template BssgpCellId cid := ?,
+						     template integer cause := ?,
+						     template Application_Container_IE_NACC app_cont := ?)
+						     return template Application_Error_Container_NACC {
+		 var template Application_Error_Container_NACC ret;
+		 ret.iEI := '56'O;
+		 ret.ext := '1'B;
+		 ret.lengthIndicator := { length1 := ? };
+		 ret.erroneousApplicationContainer := app_cont;
+		 if (istemplatekind(cause, "*")) {
+			ret.nACC_cause := *;
+		 } else if (istemplatekind(cause, "?")) {
+			ret.nACC_cause := ?;
+		 } else {
+			ret.nACC_cause := int2oct(valueof(cause), 1);
+		 }
+		 return ret;
+	}
+
 	template (value) Application_Container_IE_NACC
 	tsu_Application_Container_IE_NACC_req(template (value) BssgpCellId cid) := {
 		rAN_Information_Request_Application_Container := ts_RAN_Information_Request_Application_Container_NACC(cid)
 	}
+	template Application_Container_IE_NACC
+	rsu_Application_Container_IE_NACC_req(template BssgpCellId cid := ?) := {
+		rAN_Information_Request_Application_Container := tr_RAN_Information_Request_Application_Container_NACC(cid)
+	}
 	template (value) Application_Container_IE_NACC
 	tsu_Application_Container_IE_NACC(template (value) BssgpCellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := {
 		rAN_Information_Application_Container := ts_RAN_Information_Application_Container_NACC(cid, psi_type, si_psi_num, si_psi)
