diff --git a/library/hnbap/HNBAP_Templates.ttcn b/library/hnbap/HNBAP_Templates.ttcn
index 2576d17..7a86e0c 100644
--- a/library/hnbap/HNBAP_Templates.ttcn
+++ b/library/hnbap/HNBAP_Templates.ttcn
@@ -232,6 +232,172 @@
 	}
 }
 
+/* 9.1.6 UE REGISTER REQUEST */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterRequest(template (present) UE_Identity ue_id) := {
+	initiatingMessage := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterRequest := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Registration_Cause,
+						criticality := ignore,
+						value_ := { Registration_Cause := normal }
+					}, {
+						id := HNBAP_Constants.id_UE_Capabilities,
+						criticality := ignore,
+						value_ := {
+							UE_Capabilities := {
+								access_stratum_release_indicator := ?,
+								csg_capability := ?
+							}
+						}
+					}
+				},
+				protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterRequest(template (value) UE_Identity ue_id) := {
+	initiatingMessage := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterRequest := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Registration_Cause,
+						criticality := ignore,
+						value_ := { Registration_Cause := normal }
+					}, {
+						id := HNBAP_Constants.id_UE_Capabilities,
+						criticality := ignore,
+						value_ := {
+							UE_Capabilities := {
+								access_stratum_release_indicator := rel_8_and_beyond,
+								csg_capability := not_csg_capable,
+								iE_Extensions := omit
+							}
+						}
+					}
+				},
+				protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+/* 9.1.7 UE REGISTER ACCEPT */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterAccept(template (present) UE_Identity ue_id) := {
+	successfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterAccept := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Context_ID,
+						criticality := reject,
+						value_ := { Context_ID := ? }
+					}, *
+				},
+				protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterAccept(template (value) UE_Identity ue_id,
+			  template (value) BIT24 context_id) := {
+	successfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterAccept := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Context_ID,
+						criticality := reject,
+						value_ := { Context_ID := context_id }
+					}
+				},
+				protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+/* 9.1.8 UE REGISTER REJECT */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterReject(template (present) UE_Identity ue_id, template (present) Cause cause := ?) := {
+	unsuccessfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterReject := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Cause,
+						criticality := ignore,
+						value_ := { Cause := cause }
+					}, *
+				},
+				protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterReject(template (value) UE_Identity ue_id, template (value) Cause cause) := {
+	unsuccessfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterReject := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Cause,
+						criticality := ignore,
+						value_ := { Cause := cause }
+					}
+				},
+				protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
 /* 9.1.9 HNB DE-REGISTER */
 template (value) HNBAP_PDU
 ts_HNBAP_HNBDe_Register(template (value) Cause cause) := {
