E2AP and E2SM-RC version upgrade to E2aP v.2.0 and E2SM-RC to v1.0.1

Signed-off-by: rajalakshmisv <rajalakshmisv@gmail.com>
Change-Id: I241726da02e3aea69f3cc3e127a47455b778c1e6
diff --git a/e2sm/lib/AMF-UE-NGAP-ID.c b/e2sm/lib/AMF-UE-NGAP-ID.c
new file mode 100644
index 0000000..403bacf
--- /dev/null
+++ b/e2sm/lib/AMF-UE-NGAP-ID.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "AMF-UE-NGAP-ID.h"
+
+int
+AMF_UE_NGAP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const INTEGER_t *st = (const INTEGER_t *)sptr;
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(asn_INTEGER2long(st, &value)) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value too large (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if((value >= 0 && value <= 1099511627775)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using INTEGER,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = {
+	{ 8, 1 }	/* (0..1099511627775) */,
+	-1};
+asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 40, -1,  0,  1099511627775 }	/* (0..1099511627775) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMF_UE_NGAP_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID = {
+	"AMF-UE-NGAP-ID",
+	"AMF-UE-NGAP-ID",
+	&asn_OP_INTEGER,
+	asn_DEF_AMF_UE_NGAP_ID_tags_1,
+	sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1)
+		/sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */
+	asn_DEF_AMF_UE_NGAP_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1)
+		/sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_AMF_UE_NGAP_ID_constr_1, &asn_PER_type_AMF_UE_NGAP_ID_constr_1, AMF_UE_NGAP_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/AMFPointer.c b/e2sm/lib/AMFPointer.c
new file mode 100644
index 0000000..70592cd
--- /dev/null
+++ b/e2sm/lib/AMFPointer.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "AMFPointer.h"
+
+int
+AMFPointer_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 6)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMFPointer_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	6	/* (SIZE(6..6)) */};
+asn_per_constraints_t asn_PER_type_AMFPointer_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  6,  6 }	/* (SIZE(6..6)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFPointer_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFPointer = {
+	"AMFPointer",
+	"AMFPointer",
+	&asn_OP_BIT_STRING,
+	asn_DEF_AMFPointer_tags_1,
+	sizeof(asn_DEF_AMFPointer_tags_1)
+		/sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */
+	asn_DEF_AMFPointer_tags_1,	/* Same as above */
+	sizeof(asn_DEF_AMFPointer_tags_1)
+		/sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */
+	{ &asn_OER_type_AMFPointer_constr_1, &asn_PER_type_AMFPointer_constr_1, AMFPointer_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_BIT_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/AMFRegionID.c b/e2sm/lib/AMFRegionID.c
new file mode 100644
index 0000000..f686a27
--- /dev/null
+++ b/e2sm/lib/AMFRegionID.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "AMFRegionID.h"
+
+int
+AMFRegionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 8)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMFRegionID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	8	/* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFRegionID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFRegionID = {
+	"AMFRegionID",
+	"AMFRegionID",
+	&asn_OP_BIT_STRING,
+	asn_DEF_AMFRegionID_tags_1,
+	sizeof(asn_DEF_AMFRegionID_tags_1)
+		/sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */
+	asn_DEF_AMFRegionID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_AMFRegionID_tags_1)
+		/sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_AMFRegionID_constr_1, &asn_PER_type_AMFRegionID_constr_1, AMFRegionID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_BIT_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/AMFSetID.c b/e2sm/lib/AMFSetID.c
new file mode 100644
index 0000000..797bdba
--- /dev/null
+++ b/e2sm/lib/AMFSetID.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "AMFSetID.h"
+
+int
+AMFSetID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 10)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMFSetID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	10	/* (SIZE(10..10)) */};
+asn_per_constraints_t asn_PER_type_AMFSetID_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  10,  10 }	/* (SIZE(10..10)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFSetID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFSetID = {
+	"AMFSetID",
+	"AMFSetID",
+	&asn_OP_BIT_STRING,
+	asn_DEF_AMFSetID_tags_1,
+	sizeof(asn_DEF_AMFSetID_tags_1)
+		/sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */
+	asn_DEF_AMFSetID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_AMFSetID_tags_1)
+		/sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_AMFSetID_constr_1, &asn_PER_type_AMFSetID_constr_1, AMFSetID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_BIT_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/CGI.c b/e2sm/lib/CGI.c
new file mode 100644
index 0000000..a0f0d66
--- /dev/null
+++ b/e2sm/lib/CGI.c
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "CGI.h"
+
+#include "NR-CGI.h"
+#include "EUTRA-CGI.h"
+static asn_oer_constraints_t asn_OER_type_CGI_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_CGI_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CGI_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct CGI, choice.nR_CGI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR-CGI"
+		},
+	{ ATF_POINTER, 0, offsetof(struct CGI, choice.eUTRA_CGI),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EUTRA_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA-CGI"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_CGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA-CGI */
+};
+asn_CHOICE_specifics_t asn_SPC_CGI_specs_1 = {
+	sizeof(struct CGI),
+	offsetof(struct CGI, _asn_ctx),
+	offsetof(struct CGI, present),
+	sizeof(((struct CGI *)0)->present),
+	asn_MAP_CGI_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CGI = {
+	"CGI",
+	"CGI",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_CGI_constr_1, &asn_PER_type_CGI_constr_1, CHOICE_constraint },
+	asn_MBR_CGI_1,
+	2,	/* Elements count */
+	&asn_SPC_CGI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/CSI-RS-Index.c b/e2sm/lib/CSI-RS-Index.c
deleted file mode 100644
index 327aeb9..0000000
--- a/e2sm/lib/CSI-RS-Index.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "CSI-RS-Index.h"
-
-int
-CSI_RS_Index_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 95)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_CSI_RS_Index_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..95) */,
-	-1};
-asn_per_constraints_t asn_PER_type_CSI_RS_Index_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  95 }	/* (0..95) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_CSI_RS_Index_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_CSI_RS_Index = {
-	"CSI-RS-Index",
-	"CSI-RS-Index",
-	&asn_OP_NativeInteger,
-	asn_DEF_CSI_RS_Index_tags_1,
-	sizeof(asn_DEF_CSI_RS_Index_tags_1)
-		/sizeof(asn_DEF_CSI_RS_Index_tags_1[0]), /* 1 */
-	asn_DEF_CSI_RS_Index_tags_1,	/* Same as above */
-	sizeof(asn_DEF_CSI_RS_Index_tags_1)
-		/sizeof(asn_DEF_CSI_RS_Index_tags_1[0]), /* 1 */
-	{ &asn_OER_type_CSI_RS_Index_constr_1, &asn_PER_type_CSI_RS_Index_constr_1, CSI_RS_Index_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/CUUPMeasurement-Container.c b/e2sm/lib/CUUPMeasurement-Container.c
deleted file mode 100644
index 0e768d8..0000000
--- a/e2sm/lib/CUUPMeasurement-Container.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "CUUPMeasurement-Container.h"
-
-#include "PlmnID-Item.h"
-static int
-memb_plmnList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 12)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_plmnList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..12)) */};
-static asn_per_constraints_t asn_PER_type_plmnList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  1,  12 }	/* (SIZE(1..12)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_plmnList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..12)) */};
-static asn_per_constraints_t asn_PER_memb_plmnList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  1,  12 }	/* (SIZE(1..12)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_plmnList_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PlmnID_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_plmnList_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_plmnList_specs_2 = {
-	sizeof(struct CUUPMeasurement_Container__plmnList),
-	offsetof(struct CUUPMeasurement_Container__plmnList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_plmnList_2 = {
-	"plmnList",
-	"plmnList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_plmnList_tags_2,
-	sizeof(asn_DEF_plmnList_tags_2)
-		/sizeof(asn_DEF_plmnList_tags_2[0]) - 1, /* 1 */
-	asn_DEF_plmnList_tags_2,	/* Same as above */
-	sizeof(asn_DEF_plmnList_tags_2)
-		/sizeof(asn_DEF_plmnList_tags_2[0]), /* 2 */
-	{ &asn_OER_type_plmnList_constr_2, &asn_PER_type_plmnList_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_plmnList_2,
-	1,	/* Single element */
-	&asn_SPC_plmnList_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_CUUPMeasurement_Container_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct CUUPMeasurement_Container, plmnList),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_plmnList_2,
-		0,
-		{ &asn_OER_memb_plmnList_constr_2, &asn_PER_memb_plmnList_constr_2,  memb_plmnList_constraint_1 },
-		0, 0, /* No default value */
-		"plmnList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_CUUPMeasurement_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_CUUPMeasurement_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* plmnList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_CUUPMeasurement_Container_specs_1 = {
-	sizeof(struct CUUPMeasurement_Container),
-	offsetof(struct CUUPMeasurement_Container, _asn_ctx),
-	asn_MAP_CUUPMeasurement_Container_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_CUUPMeasurement_Container = {
-	"CUUPMeasurement-Container",
-	"CUUPMeasurement-Container",
-	&asn_OP_SEQUENCE,
-	asn_DEF_CUUPMeasurement_Container_tags_1,
-	sizeof(asn_DEF_CUUPMeasurement_Container_tags_1)
-		/sizeof(asn_DEF_CUUPMeasurement_Container_tags_1[0]), /* 1 */
-	asn_DEF_CUUPMeasurement_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_CUUPMeasurement_Container_tags_1)
-		/sizeof(asn_DEF_CUUPMeasurement_Container_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_CUUPMeasurement_Container_1,
-	1,	/* Elements count */
-	&asn_SPC_CUUPMeasurement_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/CallProcessBreakpoint-RANParameter-Item.c b/e2sm/lib/CallProcessBreakpoint-RANParameter-Item.c
new file mode 100644
index 0000000..4825bb7
--- /dev/null
+++ b/e2sm/lib/CallProcessBreakpoint-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "CallProcessBreakpoint-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_CallProcessBreakpoint_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct CallProcessBreakpoint_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct CallProcessBreakpoint_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct CallProcessBreakpoint_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_CallProcessBreakpoint_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CallProcessBreakpoint_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CallProcessBreakpoint_RANParameter_Item_specs_1 = {
+	sizeof(struct CallProcessBreakpoint_RANParameter_Item),
+	offsetof(struct CallProcessBreakpoint_RANParameter_Item, _asn_ctx),
+	asn_MAP_CallProcessBreakpoint_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_CallProcessBreakpoint_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CallProcessBreakpoint_RANParameter_Item = {
+	"CallProcessBreakpoint-RANParameter-Item",
+	"CallProcessBreakpoint-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_CallProcessBreakpoint_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_CallProcessBreakpoint_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_CallProcessBreakpoint_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/CellIdentification-RANParameter-Item.c b/e2sm/lib/CellIdentification-RANParameter-Item.c
new file mode 100644
index 0000000..8c6f787
--- /dev/null
+++ b/e2sm/lib/CellIdentification-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "CellIdentification-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_CellIdentification_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct CellIdentification_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct CellIdentification_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct CellIdentification_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_CellIdentification_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CellIdentification_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellIdentification_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CellIdentification_RANParameter_Item_specs_1 = {
+	sizeof(struct CellIdentification_RANParameter_Item),
+	offsetof(struct CellIdentification_RANParameter_Item, _asn_ctx),
+	asn_MAP_CellIdentification_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_CellIdentification_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellIdentification_RANParameter_Item = {
+	"CellIdentification-RANParameter-Item",
+	"CellIdentification-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_CellIdentification_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_CellIdentification_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_CellIdentification_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_CellIdentification_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_CellIdentification_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_CellIdentification_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_CellIdentification_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_CellIdentification_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/CellObjectID.c b/e2sm/lib/CellObjectID.c
deleted file mode 100644
index b6da12b..0000000
--- a/e2sm/lib/CellObjectID.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "CellObjectID.h"
-
-static const int permitted_alphabet_table_1[256] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
- 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,	/* .      '() +,-./ */
-10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,	/* 0123456789:  = ? */
- 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,	/*  ABCDEFGHIJKLMNO */
-38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,	/* PQRSTUVWXYZ      */
- 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,	/*  abcdefghijklmno */
-64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
-};
-static const int permitted_alphabet_code2value_1[74] = {
-32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
-55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
-75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
-97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
-113,114,115,116,117,118,119,120,121,122,};
-
-
-static int check_permitted_alphabet_1(const void *sptr) {
-	const int *table = permitted_alphabet_table_1;
-	/* The underlying type is PrintableString */
-	const PrintableString_t *st = (const PrintableString_t *)sptr;
-	const uint8_t *ch = st->buf;
-	const uint8_t *end = ch + st->size;
-	
-	for(; ch < end; ch++) {
-		uint8_t cv = *ch;
-		if(!table[cv]) return -1;
-	}
-	return 0;
-}
-
-int
-CellObjectID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const PrintableString_t *st = (const PrintableString_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	size = st->size;
-	
-	if((size <= 400)
-		 && !check_permitted_alphabet_1(st)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int asn_PER_MAP_CellObjectID_1_v2c(unsigned int value) {
-	if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
-		return -1;
-	return permitted_alphabet_table_1[value] - 1;
-}
-static int asn_PER_MAP_CellObjectID_1_c2v(unsigned int code) {
-	if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
-		return -1;
-	return permitted_alphabet_code2value_1[code];
-}
-/*
- * This type is implemented using PrintableString,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_CellObjectID_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(0..MAX)) */};
-asn_per_constraints_t asn_PER_type_CellObjectID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  32,  122 }	/* (32..122) */,
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  9,  9,  0,  400 }	/* (SIZE(0..400,...)) */,
-	asn_PER_MAP_CellObjectID_1_v2c,	/* Value to PER code map */
-	asn_PER_MAP_CellObjectID_1_c2v	/* PER code to value map */
-};
-static const ber_tlv_tag_t asn_DEF_CellObjectID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_CellObjectID = {
-	"CellObjectID",
-	"CellObjectID",
-	&asn_OP_PrintableString,
-	asn_DEF_CellObjectID_tags_1,
-	sizeof(asn_DEF_CellObjectID_tags_1)
-		/sizeof(asn_DEF_CellObjectID_tags_1[0]), /* 1 */
-	asn_DEF_CellObjectID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_CellObjectID_tags_1)
-		/sizeof(asn_DEF_CellObjectID_tags_1[0]), /* 1 */
-	{ &asn_OER_type_CellObjectID_constr_1, &asn_PER_type_CellObjectID_constr_1, CellObjectID_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/CellResourceReportListItem.c b/e2sm/lib/CellResourceReportListItem.c
deleted file mode 100644
index a7ce4ae..0000000
--- a/e2sm/lib/CellResourceReportListItem.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "CellResourceReportListItem.h"
-
-#include "ServedPlmnPerCellListItem.h"
-static int
-memb_dl_TotalofAvailablePRBs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 273)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_ul_TotalofAvailablePRBs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 273)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_servedPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 12)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_servedPlmnPerCellList_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..12)) */};
-static asn_per_constraints_t asn_PER_type_servedPlmnPerCellList_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  1,  12 }	/* (SIZE(1..12)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_dl_TotalofAvailablePRBs_constr_3 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..273) */,
-	-1};
-static asn_per_constraints_t asn_PER_memb_dl_TotalofAvailablePRBs_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 9,  9,  0,  273 }	/* (0..273) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ul_TotalofAvailablePRBs_constr_4 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..273) */,
-	-1};
-static asn_per_constraints_t asn_PER_memb_ul_TotalofAvailablePRBs_constr_4 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 9,  9,  0,  273 }	/* (0..273) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_servedPlmnPerCellList_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..12)) */};
-static asn_per_constraints_t asn_PER_memb_servedPlmnPerCellList_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  1,  12 }	/* (SIZE(1..12)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_servedPlmnPerCellList_5[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_ServedPlmnPerCellListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_servedPlmnPerCellList_tags_5[] = {
-	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_servedPlmnPerCellList_specs_5 = {
-	sizeof(struct CellResourceReportListItem__servedPlmnPerCellList),
-	offsetof(struct CellResourceReportListItem__servedPlmnPerCellList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_servedPlmnPerCellList_5 = {
-	"servedPlmnPerCellList",
-	"servedPlmnPerCellList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_servedPlmnPerCellList_tags_5,
-	sizeof(asn_DEF_servedPlmnPerCellList_tags_5)
-		/sizeof(asn_DEF_servedPlmnPerCellList_tags_5[0]) - 1, /* 1 */
-	asn_DEF_servedPlmnPerCellList_tags_5,	/* Same as above */
-	sizeof(asn_DEF_servedPlmnPerCellList_tags_5)
-		/sizeof(asn_DEF_servedPlmnPerCellList_tags_5[0]), /* 2 */
-	{ &asn_OER_type_servedPlmnPerCellList_constr_5, &asn_PER_type_servedPlmnPerCellList_constr_5, SEQUENCE_OF_constraint },
-	asn_MBR_servedPlmnPerCellList_5,
-	1,	/* Single element */
-	&asn_SPC_servedPlmnPerCellList_specs_5	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_CellResourceReportListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct CellResourceReportListItem, nRCGI),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NRCGI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"nRCGI"
-		},
-	{ ATF_POINTER, 2, offsetof(struct CellResourceReportListItem, dl_TotalofAvailablePRBs),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_dl_TotalofAvailablePRBs_constr_3, &asn_PER_memb_dl_TotalofAvailablePRBs_constr_3,  memb_dl_TotalofAvailablePRBs_constraint_1 },
-		0, 0, /* No default value */
-		"dl-TotalofAvailablePRBs"
-		},
-	{ ATF_POINTER, 1, offsetof(struct CellResourceReportListItem, ul_TotalofAvailablePRBs),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_ul_TotalofAvailablePRBs_constr_4, &asn_PER_memb_ul_TotalofAvailablePRBs_constr_4,  memb_ul_TotalofAvailablePRBs_constraint_1 },
-		0, 0, /* No default value */
-		"ul-TotalofAvailablePRBs"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct CellResourceReportListItem, servedPlmnPerCellList),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		0,
-		&asn_DEF_servedPlmnPerCellList_5,
-		0,
-		{ &asn_OER_memb_servedPlmnPerCellList_constr_5, &asn_PER_memb_servedPlmnPerCellList_constr_5,  memb_servedPlmnPerCellList_constraint_1 },
-		0, 0, /* No default value */
-		"servedPlmnPerCellList"
-		},
-};
-static const int asn_MAP_CellResourceReportListItem_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_CellResourceReportListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_CellResourceReportListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRCGI */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-TotalofAvailablePRBs */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-TotalofAvailablePRBs */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* servedPlmnPerCellList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_CellResourceReportListItem_specs_1 = {
-	sizeof(struct CellResourceReportListItem),
-	offsetof(struct CellResourceReportListItem, _asn_ctx),
-	asn_MAP_CellResourceReportListItem_tag2el_1,
-	4,	/* Count of tags in the map */
-	asn_MAP_CellResourceReportListItem_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	4,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_CellResourceReportListItem = {
-	"CellResourceReportListItem",
-	"CellResourceReportListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_CellResourceReportListItem_tags_1,
-	sizeof(asn_DEF_CellResourceReportListItem_tags_1)
-		/sizeof(asn_DEF_CellResourceReportListItem_tags_1[0]), /* 1 */
-	asn_DEF_CellResourceReportListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_CellResourceReportListItem_tags_1)
-		/sizeof(asn_DEF_CellResourceReportListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_CellResourceReportListItem_1,
-	4,	/* Elements count */
-	&asn_SPC_CellResourceReportListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ControlAction-RANParameter-Item.c b/e2sm/lib/ControlAction-RANParameter-Item.c
new file mode 100644
index 0000000..c9cca4f
--- /dev/null
+++ b/e2sm/lib/ControlAction-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "ControlAction-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_ControlAction_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ControlAction_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct ControlAction_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct ControlAction_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_ControlAction_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_ControlAction_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ControlAction_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ControlAction_RANParameter_Item_specs_1 = {
+	sizeof(struct ControlAction_RANParameter_Item),
+	offsetof(struct ControlAction_RANParameter_Item, _asn_ctx),
+	asn_MAP_ControlAction_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_ControlAction_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ControlAction_RANParameter_Item = {
+	"ControlAction-RANParameter-Item",
+	"ControlAction-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_ControlAction_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_ControlAction_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_ControlAction_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_ControlAction_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ControlAction_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_ControlAction_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_ControlAction_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_ControlAction_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/ControlOutcome-RANParameter-Item.c b/e2sm/lib/ControlOutcome-RANParameter-Item.c
new file mode 100644
index 0000000..30a3ff8
--- /dev/null
+++ b/e2sm/lib/ControlOutcome-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "ControlOutcome-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_ControlOutcome_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ControlOutcome_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct ControlOutcome_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct ControlOutcome_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_ControlOutcome_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_ControlOutcome_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ControlOutcome_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ControlOutcome_RANParameter_Item_specs_1 = {
+	sizeof(struct ControlOutcome_RANParameter_Item),
+	offsetof(struct ControlOutcome_RANParameter_Item, _asn_ctx),
+	asn_MAP_ControlOutcome_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_ControlOutcome_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ControlOutcome_RANParameter_Item = {
+	"ControlOutcome-RANParameter-Item",
+	"ControlOutcome-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_ControlOutcome_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_ControlOutcome_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_ControlOutcome_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_ControlOutcome_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ControlOutcome_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_ControlOutcome_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_ControlOutcome_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_ControlOutcome_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/CoreCPID.c b/e2sm/lib/CoreCPID.c
new file mode 100644
index 0000000..1a5c8d4
--- /dev/null
+++ b/e2sm/lib/CoreCPID.c
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "CoreCPID.h"
+
+#include "GUAMI.h"
+#include "GUMMEI.h"
+static asn_oer_constraints_t asn_OER_type_CoreCPID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_CoreCPID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_CoreCPID_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct CoreCPID, choice.fiveGC),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUAMI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"fiveGC"
+		},
+	{ ATF_POINTER, 0, offsetof(struct CoreCPID, choice.ePC),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUMMEI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ePC"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_CoreCPID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveGC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ePC */
+};
+static asn_CHOICE_specifics_t asn_SPC_CoreCPID_specs_1 = {
+	sizeof(struct CoreCPID),
+	offsetof(struct CoreCPID, _asn_ctx),
+	offsetof(struct CoreCPID, present),
+	sizeof(((struct CoreCPID *)0)->present),
+	asn_MAP_CoreCPID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CoreCPID = {
+	"CoreCPID",
+	"CoreCPID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_CoreCPID_constr_1, &asn_PER_type_CoreCPID_constr_1, CHOICE_constraint },
+	asn_MBR_CoreCPID_1,
+	2,	/* Elements count */
+	&asn_SPC_CoreCPID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/Criticality.c b/e2sm/lib/Criticality.c
deleted file mode 100644
index 7f57c68..0000000
--- a/e2sm/lib/Criticality.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "Criticality.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_Criticality_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = {
-	{ 0,	6,	"reject" },
-	{ 1,	6,	"ignore" },
-	{ 2,	6,	"notify" }
-};
-static const unsigned int asn_MAP_Criticality_enum2value_1[] = {
-	1,	/* ignore(1) */
-	2,	/* notify(2) */
-	0	/* reject(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = {
-	asn_MAP_Criticality_value2enum_1,	/* "tag" => N; sorted by tag */
-	asn_MAP_Criticality_enum2value_1,	/* N => "tag"; sorted by N */
-	3,	/* Number of elements in the maps */
-	0,	/* Enumeration is not extensible */
-	1,	/* Strict enumeration */
-	0,	/* Native long size */
-	0
-};
-static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_Criticality = {
-	"Criticality",
-	"Criticality",
-	&asn_OP_NativeEnumerated,
-	asn_DEF_Criticality_tags_1,
-	sizeof(asn_DEF_Criticality_tags_1)
-		/sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */
-	asn_DEF_Criticality_tags_1,	/* Same as above */
-	sizeof(asn_DEF_Criticality_tags_1)
-		/sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */
-	{ &asn_OER_type_Criticality_constr_1, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint },
-	0, 0,	/* Defined elsewhere */
-	&asn_SPC_Criticality_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E-UTRA-ARFCN.c b/e2sm/lib/E-UTRA-ARFCN.c
new file mode 100644
index 0000000..6fa8a7e
--- /dev/null
+++ b/e2sm/lib/E-UTRA-ARFCN.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E-UTRA-ARFCN.h"
+
+int
+E_UTRA_ARFCN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_E_UTRA_ARFCN_constr_1 CC_NOTUSED = {
+	{ 2, 1 }	/* (0..65535) */,
+	-1};
+asn_per_constraints_t asn_PER_type_E_UTRA_ARFCN_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (0..65535) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_E_UTRA_ARFCN_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_E_UTRA_ARFCN = {
+	"E-UTRA-ARFCN",
+	"E-UTRA-ARFCN",
+	&asn_OP_NativeInteger,
+	asn_DEF_E_UTRA_ARFCN_tags_1,
+	sizeof(asn_DEF_E_UTRA_ARFCN_tags_1)
+		/sizeof(asn_DEF_E_UTRA_ARFCN_tags_1[0]), /* 1 */
+	asn_DEF_E_UTRA_ARFCN_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E_UTRA_ARFCN_tags_1)
+		/sizeof(asn_DEF_E_UTRA_ARFCN_tags_1[0]), /* 1 */
+	{ &asn_OER_type_E_UTRA_ARFCN_constr_1, &asn_PER_type_E_UTRA_ARFCN_constr_1, E_UTRA_ARFCN_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/E-UTRA-PCI.c b/e2sm/lib/E-UTRA-PCI.c
new file mode 100644
index 0000000..4d9f07d
--- /dev/null
+++ b/e2sm/lib/E-UTRA-PCI.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E-UTRA-PCI.h"
+
+int
+E_UTRA_PCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 503)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_E_UTRA_PCI_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_E_UTRA_PCI_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  9,  9,  0,  503 }	/* (0..503,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_E_UTRA_PCI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_E_UTRA_PCI = {
+	"E-UTRA-PCI",
+	"E-UTRA-PCI",
+	&asn_OP_NativeInteger,
+	asn_DEF_E_UTRA_PCI_tags_1,
+	sizeof(asn_DEF_E_UTRA_PCI_tags_1)
+		/sizeof(asn_DEF_E_UTRA_PCI_tags_1[0]), /* 1 */
+	asn_DEF_E_UTRA_PCI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E_UTRA_PCI_tags_1)
+		/sizeof(asn_DEF_E_UTRA_PCI_tags_1[0]), /* 1 */
+	{ &asn_OER_type_E_UTRA_PCI_constr_1, &asn_PER_type_E_UTRA_PCI_constr_1, E_UTRA_PCI_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/E-UTRA-TAC.c b/e2sm/lib/E-UTRA-TAC.c
new file mode 100644
index 0000000..55ad809
--- /dev/null
+++ b/e2sm/lib/E-UTRA-TAC.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E-UTRA-TAC.h"
+
+int
+E_UTRA_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 2)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_E_UTRA_TAC_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	2	/* (SIZE(2..2)) */};
+asn_per_constraints_t asn_PER_type_E_UTRA_TAC_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  2,  2 }	/* (SIZE(2..2)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_E_UTRA_TAC_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_E_UTRA_TAC = {
+	"E-UTRA-TAC",
+	"E-UTRA-TAC",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_E_UTRA_TAC_tags_1,
+	sizeof(asn_DEF_E_UTRA_TAC_tags_1)
+		/sizeof(asn_DEF_E_UTRA_TAC_tags_1[0]), /* 1 */
+	asn_DEF_E_UTRA_TAC_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E_UTRA_TAC_tags_1)
+		/sizeof(asn_DEF_E_UTRA_TAC_tags_1[0]), /* 1 */
+	{ &asn_OER_type_E_UTRA_TAC_constr_1, &asn_PER_type_E_UTRA_TAC_constr_1, E_UTRA_TAC_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-KPM-ActionDefinition-Format1.c b/e2sm/lib/E2SM-KPM-ActionDefinition-Format1.c
deleted file mode 100644
index 5d94a4d..0000000
--- a/e2sm/lib/E2SM-KPM-ActionDefinition-Format1.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-ActionDefinition-Format1.h"
-
-asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, cellObjID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_CellObjectID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"cellObjID"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, measInfoList),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasurementInfoList,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measInfoList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellObjID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measInfoList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1 = {
-	sizeof(struct E2SM_KPM_ActionDefinition_Format1),
-	offsetof(struct E2SM_KPM_ActionDefinition_Format1, _asn_ctx),
-	asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1 = {
-	"E2SM-KPM-ActionDefinition-Format1",
-	"E2SM-KPM-ActionDefinition-Format1",
-	&asn_OP_SEQUENCE,
-	asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1,
-	sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */
-	asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1,	/* Same as above */
-	sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_E2SM_KPM_ActionDefinition_Format1_1,
-	2,	/* Elements count */
-	&asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-ActionDefinition.c b/e2sm/lib/E2SM-KPM-ActionDefinition.c
deleted file mode 100644
index 1566aa5..0000000
--- a/e2sm/lib/E2SM-KPM-ActionDefinition.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-ActionDefinition.h"
-
-#include "E2SM-KPM-ActionDefinition-Format1.h"
-static asn_oer_constraints_t asn_OER_type_actionDefinition_formats_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_actionDefinition_formats_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_actionDefinition_formats_3[] = {
-	{ ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format1),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_E2SM_KPM_ActionDefinition_Format1,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"actionDefinition-Format1"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_actionDefinition_formats_tag2el_3[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* actionDefinition-Format1 */
-};
-static asn_CHOICE_specifics_t asn_SPC_actionDefinition_formats_specs_3 = {
-	sizeof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats),
-	offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, _asn_ctx),
-	offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, present),
-	sizeof(((struct E2SM_KPM_ActionDefinition__actionDefinition_formats *)0)->present),
-	asn_MAP_actionDefinition_formats_tag2el_3,
-	1,	/* Count of tags in the map */
-	0, 0,
-	1	/* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_actionDefinition_formats_3 = {
-	"actionDefinition-formats",
-	"actionDefinition-formats",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_actionDefinition_formats_constr_3, &asn_PER_type_actionDefinition_formats_constr_3, CHOICE_constraint },
-	asn_MBR_actionDefinition_formats_3,
-	1,	/* Elements count */
-	&asn_SPC_actionDefinition_formats_specs_3	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, ric_ReportStyle_Type),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ReportStyle-Type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, actionDefinition_formats),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_actionDefinition_formats_3,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"actionDefinition-formats"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDefinition-formats */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_specs_1 = {
-	sizeof(struct E2SM_KPM_ActionDefinition),
-	offsetof(struct E2SM_KPM_ActionDefinition, _asn_ctx),
-	asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition = {
-	"E2SM-KPM-ActionDefinition",
-	"E2SM-KPM-ActionDefinition",
-	&asn_OP_SEQUENCE,
-	asn_DEF_E2SM_KPM_ActionDefinition_tags_1,
-	sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */
-	asn_DEF_E2SM_KPM_ActionDefinition_tags_1,	/* Same as above */
-	sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_E2SM_KPM_ActionDefinition_1,
-	2,	/* Elements count */
-	&asn_SPC_E2SM_KPM_ActionDefinition_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-EventTriggerDefinition-Format1.c b/e2sm/lib/E2SM-KPM-EventTriggerDefinition-Format1.c
deleted file mode 100644
index 314e7f6..0000000
--- a/e2sm/lib/E2SM-KPM-EventTriggerDefinition-Format1.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-EventTriggerDefinition-Format1.h"
-
-#include "Trigger-ConditionIE-Item.h"
-static int
-memb_policyTest_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 15)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_policyTest_List_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..15)) */};
-static asn_per_constraints_t asn_PER_type_policyTest_List_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  1,  15 }	/* (SIZE(1..15)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_policyTest_List_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..15)) */};
-static asn_per_constraints_t asn_PER_memb_policyTest_List_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  1,  15 }	/* (SIZE(1..15)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_policyTest_List_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_Trigger_ConditionIE_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_policyTest_List_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_policyTest_List_specs_2 = {
-	sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List),
-	offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1__policyTest_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_policyTest_List_2 = {
-	"policyTest-List",
-	"policyTest-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_policyTest_List_tags_2,
-	sizeof(asn_DEF_policyTest_List_tags_2)
-		/sizeof(asn_DEF_policyTest_List_tags_2[0]) - 1, /* 1 */
-	asn_DEF_policyTest_List_tags_2,	/* Same as above */
-	sizeof(asn_DEF_policyTest_List_tags_2)
-		/sizeof(asn_DEF_policyTest_List_tags_2[0]), /* 2 */
-	{ &asn_OER_type_policyTest_List_constr_2, &asn_PER_type_policyTest_List_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_policyTest_List_2,
-	1,	/* Single element */
-	&asn_SPC_policyTest_List_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[] = {
-	{ ATF_POINTER, 1, offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, policyTest_List),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_policyTest_List_2,
-		0,
-		{ &asn_OER_memb_policyTest_List_constr_2, &asn_PER_memb_policyTest_List_constr_2,  memb_policyTest_List_constraint_1 },
-		0, 0, /* No default value */
-		"policyTest-List"
-		},
-};
-static const int asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* policyTest-List */
-};
-asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 = {
-	sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1),
-	offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, _asn_ctx),
-	asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1,
-	1,	/* Count of tags in the map */
-	asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1 = {
-	"E2SM-KPM-EventTriggerDefinition-Format1",
-	"E2SM-KPM-EventTriggerDefinition-Format1",
-	&asn_OP_SEQUENCE,
-	asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1,
-	sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */
-	asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1,	/* Same as above */
-	sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1,
-	1,	/* Elements count */
-	&asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-EventTriggerDefinition.c b/e2sm/lib/E2SM-KPM-EventTriggerDefinition.c
deleted file mode 100644
index 144313d..0000000
--- a/e2sm/lib/E2SM-KPM-EventTriggerDefinition.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-EventTriggerDefinition.h"
-
-#include "E2SM-KPM-EventTriggerDefinition-Format1.h"
-static asn_oer_constraints_t asn_OER_type_E2SM_KPM_EventTriggerDefinition_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_E2SM_KPM_EventTriggerDefinition_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition, choice.eventDefinition_Format1),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"eventDefinition-Format1"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */
-};
-static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 = {
-	sizeof(struct E2SM_KPM_EventTriggerDefinition),
-	offsetof(struct E2SM_KPM_EventTriggerDefinition, _asn_ctx),
-	offsetof(struct E2SM_KPM_EventTriggerDefinition, present),
-	sizeof(((struct E2SM_KPM_EventTriggerDefinition *)0)->present),
-	asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0,
-	1	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition = {
-	"E2SM-KPM-EventTriggerDefinition",
-	"E2SM-KPM-EventTriggerDefinition",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_E2SM_KPM_EventTriggerDefinition_constr_1, &asn_PER_type_E2SM_KPM_EventTriggerDefinition_constr_1, CHOICE_constraint },
-	asn_MBR_E2SM_KPM_EventTriggerDefinition_1,
-	1,	/* Elements count */
-	&asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-IndicationHeader-Format1.c b/e2sm/lib/E2SM-KPM-IndicationHeader-Format1.c
deleted file mode 100644
index be23bda..0000000
--- a/e2sm/lib/E2SM-KPM-IndicationHeader-Format1.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-IndicationHeader-Format1.h"
-
-asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader_Format1, collectionStartTime),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_TimeStamp,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"collectionStartTime"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader_Format1, id_GlobalE2node_ID),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_GlobalE2node_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"id-GlobalE2node-ID"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* collectionStartTime */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* id-GlobalE2node-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = {
-	sizeof(struct E2SM_KPM_IndicationHeader_Format1),
-	offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx),
-	asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = {
-	"E2SM-KPM-IndicationHeader-Format1",
-	"E2SM-KPM-IndicationHeader-Format1",
-	&asn_OP_SEQUENCE,
-	asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1,
-	sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
-	asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1,	/* Same as above */
-	sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_E2SM_KPM_IndicationHeader_Format1_1,
-	2,	/* Elements count */
-	&asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-IndicationHeader.c b/e2sm/lib/E2SM-KPM-IndicationHeader.c
deleted file mode 100644
index 40f09a3..0000000
--- a/e2sm/lib/E2SM-KPM-IndicationHeader.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-IndicationHeader.h"
-
-#include "E2SM-KPM-IndicationHeader-Format1.h"
-static asn_oer_constraints_t asn_OER_type_E2SM_KPM_IndicationHeader_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_E2SM_KPM_IndicationHeader_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationHeader, choice.indicationHeader_Format1),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_E2SM_KPM_IndicationHeader_Format1,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"indicationHeader-Format1"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */
-};
-static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_specs_1 = {
-	sizeof(struct E2SM_KPM_IndicationHeader),
-	offsetof(struct E2SM_KPM_IndicationHeader, _asn_ctx),
-	offsetof(struct E2SM_KPM_IndicationHeader, present),
-	sizeof(((struct E2SM_KPM_IndicationHeader *)0)->present),
-	asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0,
-	1	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader = {
-	"E2SM-KPM-IndicationHeader",
-	"E2SM-KPM-IndicationHeader",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_E2SM_KPM_IndicationHeader_constr_1, &asn_PER_type_E2SM_KPM_IndicationHeader_constr_1, CHOICE_constraint },
-	asn_MBR_E2SM_KPM_IndicationHeader_1,
-	1,	/* Elements count */
-	&asn_SPC_E2SM_KPM_IndicationHeader_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-IndicationMessage-Format1.c b/e2sm/lib/E2SM-KPM-IndicationMessage-Format1.c
deleted file mode 100644
index ea21e14..0000000
--- a/e2sm/lib/E2SM-KPM-IndicationMessage-Format1.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-IndicationMessage-Format1.h"
-
-#include "PM-Containers-Item.h"
-#include "PM-Info-Item.h"
-#include "PerUE-PM-Item.h"
-static int
-memb_pm_Containers_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 8)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_list_of_PM_Information_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 2147483647)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_list_of_matched_UEs_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 65535)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_pm_Containers_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..8)) */};
-static asn_per_constraints_t asn_PER_type_pm_Containers_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 3,  3,  1,  8 }	/* (SIZE(1..8)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_list_of_PM_Information_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..2147483647)) */};
-static asn_per_constraints_t asn_PER_type_list_of_PM_Information_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 31, -1,  1,  2147483647 }	/* (SIZE(1..2147483647)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_list_of_matched_UEs_constr_7 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..65535)) */};
-static asn_per_constraints_t asn_PER_type_list_of_matched_UEs_constr_7 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_pm_Containers_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..8)) */};
-static asn_per_constraints_t asn_PER_memb_pm_Containers_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 3,  3,  1,  8 }	/* (SIZE(1..8)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_list_of_PM_Information_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..2147483647)) */};
-static asn_per_constraints_t asn_PER_memb_list_of_PM_Information_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 31, -1,  1,  2147483647 }	/* (SIZE(1..2147483647)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_list_of_matched_UEs_constr_7 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..65535)) */};
-static asn_per_constraints_t asn_PER_memb_list_of_matched_UEs_constr_7 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_pm_Containers_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PM_Containers_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_pm_Containers_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_pm_Containers_specs_2 = {
-	sizeof(struct E2SM_KPM_IndicationMessage_Format1__pm_Containers),
-	offsetof(struct E2SM_KPM_IndicationMessage_Format1__pm_Containers, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_pm_Containers_2 = {
-	"pm-Containers",
-	"pm-Containers",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_pm_Containers_tags_2,
-	sizeof(asn_DEF_pm_Containers_tags_2)
-		/sizeof(asn_DEF_pm_Containers_tags_2[0]) - 1, /* 1 */
-	asn_DEF_pm_Containers_tags_2,	/* Same as above */
-	sizeof(asn_DEF_pm_Containers_tags_2)
-		/sizeof(asn_DEF_pm_Containers_tags_2[0]), /* 2 */
-	{ &asn_OER_type_pm_Containers_constr_2, &asn_PER_type_pm_Containers_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_pm_Containers_2,
-	1,	/* Single element */
-	&asn_SPC_pm_Containers_specs_2	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_list_of_PM_Information_5[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PM_Info_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_list_of_PM_Information_tags_5[] = {
-	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_list_of_PM_Information_specs_5 = {
-	sizeof(struct E2SM_KPM_IndicationMessage_Format1__list_of_PM_Information),
-	offsetof(struct E2SM_KPM_IndicationMessage_Format1__list_of_PM_Information, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_list_of_PM_Information_5 = {
-	"list-of-PM-Information",
-	"list-of-PM-Information",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_list_of_PM_Information_tags_5,
-	sizeof(asn_DEF_list_of_PM_Information_tags_5)
-		/sizeof(asn_DEF_list_of_PM_Information_tags_5[0]) - 1, /* 1 */
-	asn_DEF_list_of_PM_Information_tags_5,	/* Same as above */
-	sizeof(asn_DEF_list_of_PM_Information_tags_5)
-		/sizeof(asn_DEF_list_of_PM_Information_tags_5[0]), /* 2 */
-	{ &asn_OER_type_list_of_PM_Information_constr_5, &asn_PER_type_list_of_PM_Information_constr_5, SEQUENCE_OF_constraint },
-	asn_MBR_list_of_PM_Information_5,
-	1,	/* Single element */
-	&asn_SPC_list_of_PM_Information_specs_5	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_list_of_matched_UEs_7[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PerUE_PM_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_list_of_matched_UEs_tags_7[] = {
-	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_list_of_matched_UEs_specs_7 = {
-	sizeof(struct E2SM_KPM_IndicationMessage_Format1__list_of_matched_UEs),
-	offsetof(struct E2SM_KPM_IndicationMessage_Format1__list_of_matched_UEs, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_list_of_matched_UEs_7 = {
-	"list-of-matched-UEs",
-	"list-of-matched-UEs",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_list_of_matched_UEs_tags_7,
-	sizeof(asn_DEF_list_of_matched_UEs_tags_7)
-		/sizeof(asn_DEF_list_of_matched_UEs_tags_7[0]) - 1, /* 1 */
-	asn_DEF_list_of_matched_UEs_tags_7,	/* Same as above */
-	sizeof(asn_DEF_list_of_matched_UEs_tags_7)
-		/sizeof(asn_DEF_list_of_matched_UEs_tags_7[0]), /* 2 */
-	{ &asn_OER_type_list_of_matched_UEs_constr_7, &asn_PER_type_list_of_matched_UEs_constr_7, SEQUENCE_OF_constraint },
-	asn_MBR_list_of_matched_UEs_7,
-	1,	/* Single element */
-	&asn_SPC_list_of_matched_UEs_specs_7	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, pm_Containers),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_pm_Containers_2,
-		0,
-		{ &asn_OER_memb_pm_Containers_constr_2, &asn_PER_memb_pm_Containers_constr_2,  memb_pm_Containers_constraint_1 },
-		0, 0, /* No default value */
-		"pm-Containers"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, cellObjectID),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_CellObjectID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"cellObjectID"
-		},
-	{ ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationMessage_Format1, list_of_PM_Information),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		0,
-		&asn_DEF_list_of_PM_Information_5,
-		0,
-		{ &asn_OER_memb_list_of_PM_Information_constr_5, &asn_PER_memb_list_of_PM_Information_constr_5,  memb_list_of_PM_Information_constraint_1 },
-		0, 0, /* No default value */
-		"list-of-PM-Information"
-		},
-	{ ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format1, list_of_matched_UEs),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		0,
-		&asn_DEF_list_of_matched_UEs_7,
-		0,
-		{ &asn_OER_memb_list_of_matched_UEs_constr_7, &asn_PER_memb_list_of_matched_UEs_constr_7,  memb_list_of_matched_UEs_constraint_1 },
-		0, 0, /* No default value */
-		"list-of-matched-UEs"
-		},
-};
-static const int asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1[] = { 2, 3 };
-static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pm-Containers */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellObjectID */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* list-of-PM-Information */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* list-of-matched-UEs */
-};
-asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 = {
-	sizeof(struct E2SM_KPM_IndicationMessage_Format1),
-	offsetof(struct E2SM_KPM_IndicationMessage_Format1, _asn_ctx),
-	asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1,
-	4,	/* Count of tags in the map */
-	asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	4,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1 = {
-	"E2SM-KPM-IndicationMessage-Format1",
-	"E2SM-KPM-IndicationMessage-Format1",
-	&asn_OP_SEQUENCE,
-	asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1,
-	sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */
-	asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1,	/* Same as above */
-	sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_E2SM_KPM_IndicationMessage_Format1_1,
-	4,	/* Elements count */
-	&asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-IndicationMessage.c b/e2sm/lib/E2SM-KPM-IndicationMessage.c
deleted file mode 100644
index 0b1e701..0000000
--- a/e2sm/lib/E2SM-KPM-IndicationMessage.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-IndicationMessage.h"
-
-#include "E2SM-KPM-IndicationMessage-Format1.h"
-static asn_oer_constraints_t asn_OER_type_E2SM_KPM_IndicationMessage_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_E2SM_KPM_IndicationMessage_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage, choice.indicationMessage_Format1),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_E2SM_KPM_IndicationMessage_Format1,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"indicationMessage-Format1"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */
-};
-static asn_CHOICE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = {
-	sizeof(struct E2SM_KPM_IndicationMessage),
-	offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx),
-	offsetof(struct E2SM_KPM_IndicationMessage, present),
-	sizeof(((struct E2SM_KPM_IndicationMessage *)0)->present),
-	asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0,
-	1	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = {
-	"E2SM-KPM-IndicationMessage",
-	"E2SM-KPM-IndicationMessage",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_E2SM_KPM_IndicationMessage_constr_1, &asn_PER_type_E2SM_KPM_IndicationMessage_constr_1, CHOICE_constraint },
-	asn_MBR_E2SM_KPM_IndicationMessage_1,
-	1,	/* Elements count */
-	&asn_SPC_E2SM_KPM_IndicationMessage_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-KPM-RANFunctionDefinition.c b/e2sm/lib/E2SM-KPM-RANFunctionDefinition.c
deleted file mode 100644
index d87fe15..0000000
--- a/e2sm/lib/E2SM-KPM-RANFunctionDefinition.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "E2SM-KPM-RANFunctionDefinition.h"
-
-#include "RIC-EventTriggerStyle-Item.h"
-#include "RIC-ReportStyle-Item.h"
-static int
-memb_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 63)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 63)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_3[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_RIC_EventTriggerStyle_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_3[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_3 = {
-	sizeof(struct E2SM_KPM_RANFunctionDefinition__ric_EventTriggerStyle_List),
-	offsetof(struct E2SM_KPM_RANFunctionDefinition__ric_EventTriggerStyle_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_3 = {
-	"ric-EventTriggerStyle-List",
-	"ric-EventTriggerStyle-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ric_EventTriggerStyle_List_tags_3,
-	sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
-		/sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */
-	asn_DEF_ric_EventTriggerStyle_List_tags_3,	/* Same as above */
-	sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
-		/sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */
-	{ &asn_OER_type_ric_EventTriggerStyle_List_constr_3, &asn_PER_type_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint },
-	asn_MBR_ric_EventTriggerStyle_List_3,
-	1,	/* Single element */
-	&asn_SPC_ric_EventTriggerStyle_List_specs_3	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_5[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_RIC_ReportStyle_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_5[] = {
-	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_5 = {
-	sizeof(struct E2SM_KPM_RANFunctionDefinition__ric_ReportStyle_List),
-	offsetof(struct E2SM_KPM_RANFunctionDefinition__ric_ReportStyle_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_5 = {
-	"ric-ReportStyle-List",
-	"ric-ReportStyle-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ric_ReportStyle_List_tags_5,
-	sizeof(asn_DEF_ric_ReportStyle_List_tags_5)
-		/sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */
-	asn_DEF_ric_ReportStyle_List_tags_5,	/* Same as above */
-	sizeof(asn_DEF_ric_ReportStyle_List_tags_5)
-		/sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]), /* 2 */
-	{ &asn_OER_type_ric_ReportStyle_List_constr_5, &asn_PER_type_ric_ReportStyle_List_constr_5, SEQUENCE_OF_constraint },
-	asn_MBR_ric_ReportStyle_List_5,
-	1,	/* Single element */
-	&asn_SPC_ric_ReportStyle_List_specs_5	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_E2SM_KPM_RANFunctionDefinition_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANFunctionDefinition, ranFunction_Name),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANfunction_Name,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ranFunction-Name"
-		},
-	{ ATF_POINTER, 2, offsetof(struct E2SM_KPM_RANFunctionDefinition, ric_EventTriggerStyle_List),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		0,
-		&asn_DEF_ric_EventTriggerStyle_List_3,
-		0,
-		{ &asn_OER_memb_ric_EventTriggerStyle_List_constr_3, &asn_PER_memb_ric_EventTriggerStyle_List_constr_3,  memb_ric_EventTriggerStyle_List_constraint_1 },
-		0, 0, /* No default value */
-		"ric-EventTriggerStyle-List"
-		},
-	{ ATF_POINTER, 1, offsetof(struct E2SM_KPM_RANFunctionDefinition, ric_ReportStyle_List),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		0,
-		&asn_DEF_ric_ReportStyle_List_5,
-		0,
-		{ &asn_OER_memb_ric_ReportStyle_List_constr_5, &asn_PER_memb_ric_ReportStyle_List_constr_5,  memb_ric_ReportStyle_List_constraint_1 },
-		0, 0, /* No default value */
-		"ric-ReportStyle-List"
-		},
-};
-static const int asn_MAP_E2SM_KPM_RANFunctionDefinition_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_RANFunctionDefinition_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-ReportStyle-List */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_RANFunctionDefinition_specs_1 = {
-	sizeof(struct E2SM_KPM_RANFunctionDefinition),
-	offsetof(struct E2SM_KPM_RANFunctionDefinition, _asn_ctx),
-	asn_MAP_E2SM_KPM_RANFunctionDefinition_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_E2SM_KPM_RANFunctionDefinition_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANFunctionDefinition = {
-	"E2SM-KPM-RANFunctionDefinition",
-	"E2SM-KPM-RANFunctionDefinition",
-	&asn_OP_SEQUENCE,
-	asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1,
-	sizeof(asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1[0]), /* 1 */
-	asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1,	/* Same as above */
-	sizeof(asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1)
-		/sizeof(asn_DEF_E2SM_KPM_RANFunctionDefinition_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_E2SM_KPM_RANFunctionDefinition_1,
-	3,	/* Elements count */
-	&asn_SPC_E2SM_KPM_RANFunctionDefinition_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition-Format1-Item.c b/e2sm/lib/E2SM-RC-ActionDefinition-Format1-Item.c
new file mode 100644
index 0000000..ae6439a
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition-Format1-Item.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition-Format1-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_Format1_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format1_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_Format1_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_Format1_Item_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format1_Item),
+	offsetof(struct E2SM_RC_ActionDefinition_Format1_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_Format1_Item_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition_Format1_Item = {
+	"E2SM-RC-ActionDefinition-Format1-Item",
+	"E2SM-RC-ActionDefinition-Format1-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_Format1_Item_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_Format1_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition-Format1.c b/e2sm/lib/E2SM-RC-ActionDefinition-Format1.c
new file mode 100644
index 0000000..cfe2b5c
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition-Format1.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition-Format1.h"
+
+#include "E2SM-RC-ActionDefinition-Format1-Item.h"
+static int
+memb_ranP_ToBeReported_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranP_ToBeReported_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranP_ToBeReported_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranP_ToBeReported_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_ToBeReported_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranP_ToBeReported_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_ActionDefinition_Format1_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranP_ToBeReported_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranP_ToBeReported_List_specs_2 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format1__ranP_ToBeReported_List),
+	offsetof(struct E2SM_RC_ActionDefinition_Format1__ranP_ToBeReported_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_ToBeReported_List_2 = {
+	"ranP-ToBeReported-List",
+	"ranP-ToBeReported-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranP_ToBeReported_List_tags_2,
+	sizeof(asn_DEF_ranP_ToBeReported_List_tags_2)
+		/sizeof(asn_DEF_ranP_ToBeReported_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranP_ToBeReported_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranP_ToBeReported_List_tags_2)
+		/sizeof(asn_DEF_ranP_ToBeReported_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranP_ToBeReported_List_constr_2, &asn_PER_type_ranP_ToBeReported_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_ToBeReported_List_2,
+	1,	/* Single element */
+	&asn_SPC_ranP_ToBeReported_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_Format1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format1, ranP_ToBeReported_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ranP_ToBeReported_List_2,
+		0,
+		{ &asn_OER_memb_ranP_ToBeReported_List_constr_2, &asn_PER_memb_ranP_ToBeReported_List_constr_2,  memb_ranP_ToBeReported_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranP-ToBeReported-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranP-ToBeReported-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_Format1_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format1),
+	offsetof(struct E2SM_RC_ActionDefinition_Format1, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_Format1_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition_Format1 = {
+	"E2SM-RC-ActionDefinition-Format1",
+	"E2SM-RC-ActionDefinition-Format1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_Format1_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_Format1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition-Format2-Item.c b/e2sm/lib/E2SM-RC-ActionDefinition-Format2-Item.c
new file mode 100644
index 0000000..3b48569
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition-Format2-Item.c
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition-Format2-Item.h"
+
+#include "RANParameter-Testing.h"
+asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_Format2_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format2_Item, ric_PolicyAction),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_PolicyAction,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyAction"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_ActionDefinition_Format2_Item, ric_PolicyConditionDefinition),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyConditionDefinition"
+		},
+};
+static const int asn_MAP_E2SM_RC_ActionDefinition_Format2_Item_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_Format2_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyAction */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-PolicyConditionDefinition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_Format2_Item_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format2_Item),
+	offsetof(struct E2SM_RC_ActionDefinition_Format2_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_Format2_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_ActionDefinition_Format2_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition_Format2_Item = {
+	"E2SM-RC-ActionDefinition-Format2-Item",
+	"E2SM-RC-ActionDefinition-Format2-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_Format2_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_Format2_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition-Format2.c b/e2sm/lib/E2SM-RC-ActionDefinition-Format2.c
new file mode 100644
index 0000000..f15018d
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition-Format2.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition-Format2.h"
+
+#include "E2SM-RC-ActionDefinition-Format2-Item.h"
+static int
+memb_ric_PolicyConditions_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_PolicyConditions_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ric_PolicyConditions_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_PolicyConditions_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ric_PolicyConditions_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_PolicyConditions_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_ActionDefinition_Format2_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_PolicyConditions_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_PolicyConditions_List_specs_2 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format2__ric_PolicyConditions_List),
+	offsetof(struct E2SM_RC_ActionDefinition_Format2__ric_PolicyConditions_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_PolicyConditions_List_2 = {
+	"ric-PolicyConditions-List",
+	"ric-PolicyConditions-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_PolicyConditions_List_tags_2,
+	sizeof(asn_DEF_ric_PolicyConditions_List_tags_2)
+		/sizeof(asn_DEF_ric_PolicyConditions_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ric_PolicyConditions_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ric_PolicyConditions_List_tags_2)
+		/sizeof(asn_DEF_ric_PolicyConditions_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ric_PolicyConditions_List_constr_2, &asn_PER_type_ric_PolicyConditions_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ric_PolicyConditions_List_2,
+	1,	/* Single element */
+	&asn_SPC_ric_PolicyConditions_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_Format2_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format2, ric_PolicyConditions_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ric_PolicyConditions_List_2,
+		0,
+		{ &asn_OER_memb_ric_PolicyConditions_List_constr_2, &asn_PER_memb_ric_PolicyConditions_List_constr_2,  memb_ric_PolicyConditions_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-PolicyConditions-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_Format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-PolicyConditions-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_Format2_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format2),
+	offsetof(struct E2SM_RC_ActionDefinition_Format2, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_Format2_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition_Format2 = {
+	"E2SM-RC-ActionDefinition-Format2",
+	"E2SM-RC-ActionDefinition-Format2",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format2_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_Format2_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_Format2_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition-Format3-Item.c b/e2sm/lib/E2SM-RC-ActionDefinition-Format3-Item.c
new file mode 100644
index 0000000..1390c44
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition-Format3-Item.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition-Format3-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_Format3_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format3_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_Format3_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_Format3_Item_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format3_Item),
+	offsetof(struct E2SM_RC_ActionDefinition_Format3_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_Format3_Item_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition_Format3_Item = {
+	"E2SM-RC-ActionDefinition-Format3-Item",
+	"E2SM-RC-ActionDefinition-Format3-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_Format3_Item_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_Format3_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition-Format3.c b/e2sm/lib/E2SM-RC-ActionDefinition-Format3.c
new file mode 100644
index 0000000..1413d05
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition-Format3.c
@@ -0,0 +1,153 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition-Format3.h"
+
+#include "UEID.h"
+#include "E2SM-RC-ActionDefinition-Format3-Item.h"
+static int
+memb_ranP_InsertIndication_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranP_InsertIndication_List_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranP_InsertIndication_List_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranP_InsertIndication_List_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_InsertIndication_List_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranP_InsertIndication_List_3[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_ActionDefinition_Format3_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranP_InsertIndication_List_tags_3[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranP_InsertIndication_List_specs_3 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format3__ranP_InsertIndication_List),
+	offsetof(struct E2SM_RC_ActionDefinition_Format3__ranP_InsertIndication_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_InsertIndication_List_3 = {
+	"ranP-InsertIndication-List",
+	"ranP-InsertIndication-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranP_InsertIndication_List_tags_3,
+	sizeof(asn_DEF_ranP_InsertIndication_List_tags_3)
+		/sizeof(asn_DEF_ranP_InsertIndication_List_tags_3[0]) - 1, /* 1 */
+	asn_DEF_ranP_InsertIndication_List_tags_3,	/* Same as above */
+	sizeof(asn_DEF_ranP_InsertIndication_List_tags_3)
+		/sizeof(asn_DEF_ranP_InsertIndication_List_tags_3[0]), /* 2 */
+	{ &asn_OER_type_ranP_InsertIndication_List_constr_3, &asn_PER_type_ranP_InsertIndication_List_constr_3, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_InsertIndication_List_3,
+	1,	/* Single element */
+	&asn_SPC_ranP_InsertIndication_List_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_Format3_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format3, ric_InsertIndication_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_InsertIndication_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertIndication-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition_Format3, ranP_InsertIndication_List),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_ranP_InsertIndication_List_3,
+		0,
+		{ &asn_OER_memb_ranP_InsertIndication_List_constr_3, &asn_PER_memb_ranP_InsertIndication_List_constr_3,  memb_ranP_InsertIndication_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranP-InsertIndication-List"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_ActionDefinition_Format3, ueID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_UEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueID"
+		},
+};
+static const int asn_MAP_E2SM_RC_ActionDefinition_Format3_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_Format3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-InsertIndication-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranP-InsertIndication-List */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_Format3_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition_Format3),
+	offsetof(struct E2SM_RC_ActionDefinition_Format3, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_Format3_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_ActionDefinition_Format3_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition_Format3 = {
+	"E2SM-RC-ActionDefinition-Format3",
+	"E2SM-RC-ActionDefinition-Format3",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_Format3_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_Format3_1,
+	3,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_Format3_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ActionDefinition.c b/e2sm/lib/E2SM-RC-ActionDefinition.c
new file mode 100644
index 0000000..a8e2a57
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ActionDefinition.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ActionDefinition.h"
+
+#include "E2SM-RC-ActionDefinition-Format1.h"
+#include "E2SM-RC-ActionDefinition-Format2.h"
+#include "E2SM-RC-ActionDefinition-Format3.h"
+static asn_oer_constraints_t asn_OER_type_ric_actionDefinition_formats_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_actionDefinition_formats_constr_3 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_actionDefinition_formats_3[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats, choice.actionDefinition_Format1),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_ActionDefinition_Format1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"actionDefinition-Format1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats, choice.actionDefinition_Format2),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_ActionDefinition_Format2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"actionDefinition-Format2"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats, choice.actionDefinition_Format3),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_ActionDefinition_Format3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"actionDefinition-Format3"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ric_actionDefinition_formats_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionDefinition-Format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* actionDefinition-Format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* actionDefinition-Format3 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ric_actionDefinition_formats_specs_3 = {
+	sizeof(struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats),
+	offsetof(struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats, present),
+	sizeof(((struct E2SM_RC_ActionDefinition__ric_actionDefinition_formats *)0)->present),
+	asn_MAP_ric_actionDefinition_formats_tag2el_3,
+	3,	/* Count of tags in the map */
+	0, 0,
+	3	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_actionDefinition_formats_3 = {
+	"ric-actionDefinition-formats",
+	"ric-actionDefinition-formats",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ric_actionDefinition_formats_constr_3, &asn_PER_type_ric_actionDefinition_formats_constr_3, CHOICE_constraint },
+	asn_MBR_ric_actionDefinition_formats_3,
+	3,	/* Elements count */
+	&asn_SPC_ric_actionDefinition_formats_specs_3	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_ActionDefinition_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition, ric_Style_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-Style-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ActionDefinition, ric_actionDefinition_formats),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_actionDefinition_formats_3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-actionDefinition-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ActionDefinition_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ActionDefinition_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-actionDefinition-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ActionDefinition_specs_1 = {
+	sizeof(struct E2SM_RC_ActionDefinition),
+	offsetof(struct E2SM_RC_ActionDefinition, _asn_ctx),
+	asn_MAP_E2SM_RC_ActionDefinition_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ActionDefinition = {
+	"E2SM-RC-ActionDefinition",
+	"E2SM-RC-ActionDefinition",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ActionDefinition_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ActionDefinition_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ActionDefinition_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ActionDefinition_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ActionDefinition_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_ActionDefinition_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-CallProcessID-Format1.c b/e2sm/lib/E2SM-RC-CallProcessID-Format1.c
new file mode 100644
index 0000000..d3a25c1
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-CallProcessID-Format1.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-CallProcessID-Format1.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_CallProcessID_Format1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_CallProcessID_Format1, ric_callProcess_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RAN_CallProcess_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-callProcess-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_CallProcessID_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-callProcess-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_CallProcessID_Format1_specs_1 = {
+	sizeof(struct E2SM_RC_CallProcessID_Format1),
+	offsetof(struct E2SM_RC_CallProcessID_Format1, _asn_ctx),
+	asn_MAP_E2SM_RC_CallProcessID_Format1_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_CallProcessID_Format1 = {
+	"E2SM-RC-CallProcessID-Format1",
+	"E2SM-RC-CallProcessID-Format1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1,
+	sizeof(asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_CallProcessID_Format1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_CallProcessID_Format1_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_CallProcessID_Format1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-CallProcessID.c b/e2sm/lib/E2SM-RC-CallProcessID.c
new file mode 100644
index 0000000..f92d4aa
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-CallProcessID.c
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-CallProcessID.h"
+
+#include "E2SM-RC-CallProcessID-Format1.h"
+static asn_oer_constraints_t asn_OER_type_ric_callProcessID_formats_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_callProcessID_formats_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_callProcessID_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_CallProcessID__ric_callProcessID_formats, choice.callProcessID_Format1),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_CallProcessID_Format1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"callProcessID-Format1"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ric_callProcessID_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* callProcessID-Format1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ric_callProcessID_formats_specs_2 = {
+	sizeof(struct E2SM_RC_CallProcessID__ric_callProcessID_formats),
+	offsetof(struct E2SM_RC_CallProcessID__ric_callProcessID_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_CallProcessID__ric_callProcessID_formats, present),
+	sizeof(((struct E2SM_RC_CallProcessID__ric_callProcessID_formats *)0)->present),
+	asn_MAP_ric_callProcessID_formats_tag2el_2,
+	1,	/* Count of tags in the map */
+	0, 0,
+	1	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_callProcessID_formats_2 = {
+	"ric-callProcessID-formats",
+	"ric-callProcessID-formats",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ric_callProcessID_formats_constr_2, &asn_PER_type_ric_callProcessID_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_callProcessID_formats_2,
+	1,	/* Elements count */
+	&asn_SPC_ric_callProcessID_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_CallProcessID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_CallProcessID, ric_callProcessID_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_callProcessID_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-callProcessID-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_CallProcessID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_CallProcessID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-callProcessID-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_CallProcessID_specs_1 = {
+	sizeof(struct E2SM_RC_CallProcessID),
+	offsetof(struct E2SM_RC_CallProcessID, _asn_ctx),
+	asn_MAP_E2SM_RC_CallProcessID_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_CallProcessID = {
+	"E2SM-RC-CallProcessID",
+	"E2SM-RC-CallProcessID",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_CallProcessID_tags_1,
+	sizeof(asn_DEF_E2SM_RC_CallProcessID_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_CallProcessID_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_CallProcessID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_CallProcessID_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_CallProcessID_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_CallProcessID_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_CallProcessID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ControlHeader-Format1.c b/e2sm/lib/E2SM-RC-ControlHeader-Format1.c
index e953ec7..7388ce6 100644
--- a/e2sm/lib/E2SM-RC-ControlHeader-Format1.c
+++ b/e2sm/lib/E2SM-RC-ControlHeader-Format1.c
@@ -1,30 +1,81 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "E2SM-RC-ControlHeader-Format1.h"
 
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ric_ControlDecision_constr_5 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_ControlDecision_constr_5 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ric_ControlDecision_value2enum_5[] = {
+	{ 0,	6,	"accept" },
+	{ 1,	6,	"reject" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_ric_ControlDecision_enum2value_5[] = {
+	0,	/* accept(0) */
+	1	/* reject(1) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ric_ControlDecision_specs_5 = {
+	asn_MAP_ric_ControlDecision_value2enum_5,	/* "tag" => N; sorted by tag */
+	asn_MAP_ric_ControlDecision_enum2value_5,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_ric_ControlDecision_tags_5[] = {
+	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_ControlDecision_5 = {
+	"ric-ControlDecision",
+	"ric-ControlDecision",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_ric_ControlDecision_tags_5,
+	sizeof(asn_DEF_ric_ControlDecision_tags_5)
+		/sizeof(asn_DEF_ric_ControlDecision_tags_5[0]) - 1, /* 1 */
+	asn_DEF_ric_ControlDecision_tags_5,	/* Same as above */
+	sizeof(asn_DEF_ric_ControlDecision_tags_5)
+		/sizeof(asn_DEF_ric_ControlDecision_tags_5[0]), /* 2 */
+	{ &asn_OER_type_ric_ControlDecision_constr_5, &asn_PER_type_ric_ControlDecision_constr_5, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_ric_ControlDecision_specs_5	/* Additional specs */
+};
+
 asn_TYPE_member_t asn_MBR_E2SM_RC_ControlHeader_Format1_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlHeader_Format1, ueId),
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlHeader_Format1, ueID),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_UE_Identity,
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_UEID,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ueId"
+		"ueID"
 		},
-	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlHeader_Format1, ric_ControlStyle_Type),
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlHeader_Format1, ric_Style_Type),
 		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		-1,	/* IMPLICIT tag at current level */
 		&asn_DEF_RIC_Style_Type,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ric-ControlStyle-Type"
+		"ric-Style-Type"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlHeader_Format1, ric_ControlAction_ID),
 		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
@@ -35,22 +86,34 @@
 		0, 0, /* No default value */
 		"ric-ControlAction-ID"
 		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_ControlHeader_Format1, ric_ControlDecision),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ric_ControlDecision_5,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlDecision"
+		},
 };
+static const int asn_MAP_E2SM_RC_ControlHeader_Format1_oms_1[] = { 3 };
 static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlHeader_Format1_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlHeader_Format1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlStyle-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-ControlAction-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-Style-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ControlAction-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-ControlDecision */
 };
 asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlHeader_Format1_specs_1 = {
 	sizeof(struct E2SM_RC_ControlHeader_Format1),
 	offsetof(struct E2SM_RC_ControlHeader_Format1, _asn_ctx),
 	asn_MAP_E2SM_RC_ControlHeader_Format1_tag2el_1,
-	3,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	3,	/* First extension addition */
+	4,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_ControlHeader_Format1_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	4,	/* First extension addition */
 };
 asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlHeader_Format1 = {
 	"E2SM-RC-ControlHeader-Format1",
@@ -64,7 +127,7 @@
 		/sizeof(asn_DEF_E2SM_RC_ControlHeader_Format1_tags_1[0]), /* 1 */
 	{ 0, 0, SEQUENCE_constraint },
 	asn_MBR_E2SM_RC_ControlHeader_Format1_1,
-	3,	/* Elements count */
+	4,	/* Elements count */
 	&asn_SPC_E2SM_RC_ControlHeader_Format1_specs_1	/* Additional specs */
 };
 
diff --git a/e2sm/lib/E2SM-RC-ControlHeader.c b/e2sm/lib/E2SM-RC-ControlHeader.c
index 8de1e6c..0a3ff61 100644
--- a/e2sm/lib/E2SM-RC-ControlHeader.c
+++ b/e2sm/lib/E2SM-RC-ControlHeader.c
@@ -1,23 +1,23 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "E2SM-RC-ControlHeader.h"
 
 #include "E2SM-RC-ControlHeader-Format1.h"
-static asn_oer_constraints_t asn_OER_type_E2SM_RC_ControlHeader_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_ric_controlHeader_formats_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
 	-1};
-static asn_per_constraints_t asn_PER_type_E2SM_RC_ControlHeader_constr_1 CC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_ric_controlHeader_formats_constr_2 CC_NOTUSED = {
 	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
-static asn_TYPE_member_t asn_MBR_E2SM_RC_ControlHeader_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ControlHeader, choice.controlHeader_Format1),
+static asn_TYPE_member_t asn_MBR_ric_controlHeader_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ControlHeader__ric_controlHeader_formats, choice.controlHeader_Format1),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
 		&asn_DEF_E2SM_RC_ControlHeader_Format1,
@@ -27,28 +27,70 @@
 		"controlHeader-Format1"
 		},
 };
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlHeader_tag2el_1[] = {
+static const asn_TYPE_tag2member_t asn_MAP_ric_controlHeader_formats_tag2el_2[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlHeader-Format1 */
 };
-static asn_CHOICE_specifics_t asn_SPC_E2SM_RC_ControlHeader_specs_1 = {
-	sizeof(struct E2SM_RC_ControlHeader),
-	offsetof(struct E2SM_RC_ControlHeader, _asn_ctx),
-	offsetof(struct E2SM_RC_ControlHeader, present),
-	sizeof(((struct E2SM_RC_ControlHeader *)0)->present),
-	asn_MAP_E2SM_RC_ControlHeader_tag2el_1,
+static asn_CHOICE_specifics_t asn_SPC_ric_controlHeader_formats_specs_2 = {
+	sizeof(struct E2SM_RC_ControlHeader__ric_controlHeader_formats),
+	offsetof(struct E2SM_RC_ControlHeader__ric_controlHeader_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_ControlHeader__ric_controlHeader_formats, present),
+	sizeof(((struct E2SM_RC_ControlHeader__ric_controlHeader_formats *)0)->present),
+	asn_MAP_ric_controlHeader_formats_tag2el_2,
 	1,	/* Count of tags in the map */
 	0, 0,
 	1	/* Extensions start */
 };
-asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlHeader = {
-	"E2SM-RC-ControlHeader",
-	"E2SM-RC-ControlHeader",
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_controlHeader_formats_2 = {
+	"ric-controlHeader-formats",
+	"ric-controlHeader-formats",
 	&asn_OP_CHOICE,
 	0,	/* No effective tags (pointer) */
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	{ &asn_OER_type_E2SM_RC_ControlHeader_constr_1, &asn_PER_type_E2SM_RC_ControlHeader_constr_1, CHOICE_constraint },
+	{ &asn_OER_type_ric_controlHeader_formats_constr_2, &asn_PER_type_ric_controlHeader_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_controlHeader_formats_2,
+	1,	/* Elements count */
+	&asn_SPC_ric_controlHeader_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_ControlHeader_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlHeader, ric_controlHeader_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_controlHeader_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-controlHeader-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlHeader_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlHeader_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-controlHeader-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlHeader_specs_1 = {
+	sizeof(struct E2SM_RC_ControlHeader),
+	offsetof(struct E2SM_RC_ControlHeader, _asn_ctx),
+	asn_MAP_E2SM_RC_ControlHeader_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlHeader = {
+	"E2SM-RC-ControlHeader",
+	"E2SM-RC-ControlHeader",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ControlHeader_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ControlHeader_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlHeader_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ControlHeader_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ControlHeader_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlHeader_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
 	asn_MBR_E2SM_RC_ControlHeader_1,
 	1,	/* Elements count */
 	&asn_SPC_E2SM_RC_ControlHeader_specs_1	/* Additional specs */
diff --git a/e2sm/lib/E2SM-RC-ControlMessage-Format1-Item.c b/e2sm/lib/E2SM-RC-ControlMessage-Format1-Item.c
new file mode 100644
index 0000000..4d3194c
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ControlMessage-Format1-Item.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ControlMessage-Format1-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ControlMessage_Format1_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlMessage_Format1_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlMessage_Format1_Item, ranParameter_valueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-valueType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlMessage_Format1_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-valueType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlMessage_Format1_Item_specs_1 = {
+	sizeof(struct E2SM_RC_ControlMessage_Format1_Item),
+	offsetof(struct E2SM_RC_ControlMessage_Format1_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_ControlMessage_Format1_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlMessage_Format1_Item = {
+	"E2SM-RC-ControlMessage-Format1-Item",
+	"E2SM-RC-ControlMessage-Format1-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlMessage_Format1_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ControlMessage_Format1_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_ControlMessage_Format1_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ControlMessage-Format1.c b/e2sm/lib/E2SM-RC-ControlMessage-Format1.c
index 7ba5bba..b7972a2 100644
--- a/e2sm/lib/E2SM-RC-ControlMessage-Format1.c
+++ b/e2sm/lib/E2SM-RC-ControlMessage-Format1.c
@@ -1,15 +1,15 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "E2SM-RC-ControlMessage-Format1.h"
 
-#include "RANParameter-Item.h"
+#include "E2SM-RC-ControlMessage-Format1-Item.h"
 static int
-memb_ranParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+memb_ranP_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	size_t size;
 	
@@ -23,7 +23,7 @@
 	/* Determine the number of elements */
 	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
 	
-	if((size >= 1 && size <= 4294967295)) {
+	if((size <= 65535)) {
 		/* Perform validation of the inner elements */
 		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
 	} else {
@@ -34,84 +34,82 @@
 	}
 }
 
-static asn_oer_constraints_t asn_OER_type_ranParameters_List_constr_2 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_ranP_List_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
-static asn_per_constraints_t asn_PER_type_ranParameters_List_constr_2 CC_NOTUSED = {
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranP_List_constr_2 CC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
 	0, 0	/* No PER value map */
 };
-static asn_oer_constraints_t asn_OER_memb_ranParameters_List_constr_2 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_memb_ranP_List_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
-static asn_per_constraints_t asn_PER_memb_ranParameters_List_constr_2 CC_NOTUSED = {
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_List_constr_2 CC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
 	0, 0	/* No PER value map */
 };
-static asn_TYPE_member_t asn_MBR_ranParameters_List_2[] = {
+static asn_TYPE_member_t asn_MBR_ranP_List_2[] = {
 	{ ATF_POINTER, 0, 0,
 		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		0,
-		&asn_DEF_RANParameter_Item,
+		&asn_DEF_E2SM_RC_ControlMessage_Format1_Item,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_ranParameters_List_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_ranP_List_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_ranParameters_List_specs_2 = {
-	sizeof(struct E2SM_RC_ControlMessage_Format1__ranParameters_List),
-	offsetof(struct E2SM_RC_ControlMessage_Format1__ranParameters_List, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_ranP_List_specs_2 = {
+	sizeof(struct E2SM_RC_ControlMessage_Format1__ranP_List),
+	offsetof(struct E2SM_RC_ControlMessage_Format1__ranP_List, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ranParameters_List_2 = {
-	"ranParameters-List",
-	"ranParameters-List",
+asn_TYPE_descriptor_t asn_DEF_ranP_List_2 = {
+	"ranP-List",
+	"ranP-List",
 	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ranParameters_List_tags_2,
-	sizeof(asn_DEF_ranParameters_List_tags_2)
-		/sizeof(asn_DEF_ranParameters_List_tags_2[0]) - 1, /* 1 */
-	asn_DEF_ranParameters_List_tags_2,	/* Same as above */
-	sizeof(asn_DEF_ranParameters_List_tags_2)
-		/sizeof(asn_DEF_ranParameters_List_tags_2[0]), /* 2 */
-	{ &asn_OER_type_ranParameters_List_constr_2, &asn_PER_type_ranParameters_List_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_ranParameters_List_2,
+	asn_DEF_ranP_List_tags_2,
+	sizeof(asn_DEF_ranP_List_tags_2)
+		/sizeof(asn_DEF_ranP_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranP_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranP_List_tags_2)
+		/sizeof(asn_DEF_ranP_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranP_List_constr_2, &asn_PER_type_ranP_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_List_2,
 	1,	/* Single element */
-	&asn_SPC_ranParameters_List_specs_2	/* Additional specs */
+	&asn_SPC_ranP_List_specs_2	/* Additional specs */
 };
 
 asn_TYPE_member_t asn_MBR_E2SM_RC_ControlMessage_Format1_1[] = {
-	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_ControlMessage_Format1, ranParameters_List),
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlMessage_Format1, ranP_List),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_ranParameters_List_2,
+		&asn_DEF_ranP_List_2,
 		0,
-		{ &asn_OER_memb_ranParameters_List_constr_2, &asn_PER_memb_ranParameters_List_constr_2,  memb_ranParameters_List_constraint_1 },
+		{ &asn_OER_memb_ranP_List_constr_2, &asn_PER_memb_ranP_List_constr_2,  memb_ranP_List_constraint_1 },
 		0, 0, /* No default value */
-		"ranParameters-List"
+		"ranP-List"
 		},
 };
-static const int asn_MAP_E2SM_RC_ControlMessage_Format1_oms_1[] = { 0 };
 static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlMessage_Format1_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlMessage_Format1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameters-List */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranP-List */
 };
 asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlMessage_Format1_specs_1 = {
 	sizeof(struct E2SM_RC_ControlMessage_Format1),
 	offsetof(struct E2SM_RC_ControlMessage_Format1, _asn_ctx),
 	asn_MAP_E2SM_RC_ControlMessage_Format1_tag2el_1,
 	1,	/* Count of tags in the map */
-	asn_MAP_E2SM_RC_ControlMessage_Format1_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
+	0, 0, 0,	/* Optional elements (not needed) */
 	1,	/* First extension addition */
 };
 asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlMessage_Format1 = {
diff --git a/e2sm/lib/E2SM-RC-ControlMessage.c b/e2sm/lib/E2SM-RC-ControlMessage.c
index 15a6afe..295c133 100644
--- a/e2sm/lib/E2SM-RC-ControlMessage.c
+++ b/e2sm/lib/E2SM-RC-ControlMessage.c
@@ -1,23 +1,23 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "E2SM-RC-ControlMessage.h"
 
 #include "E2SM-RC-ControlMessage-Format1.h"
-static asn_oer_constraints_t asn_OER_type_E2SM_RC_ControlMessage_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_ric_controlMessage_formats_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
 	-1};
-static asn_per_constraints_t asn_PER_type_E2SM_RC_ControlMessage_constr_1 CC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_ric_controlMessage_formats_constr_2 CC_NOTUSED = {
 	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
-static asn_TYPE_member_t asn_MBR_E2SM_RC_ControlMessage_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ControlMessage, choice.controlMessage_Format1),
+static asn_TYPE_member_t asn_MBR_ric_controlMessage_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ControlMessage__ric_controlMessage_formats, choice.controlMessage_Format1),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
 		&asn_DEF_E2SM_RC_ControlMessage_Format1,
@@ -27,28 +27,70 @@
 		"controlMessage-Format1"
 		},
 };
-static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlMessage_tag2el_1[] = {
+static const asn_TYPE_tag2member_t asn_MAP_ric_controlMessage_formats_tag2el_2[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlMessage-Format1 */
 };
-static asn_CHOICE_specifics_t asn_SPC_E2SM_RC_ControlMessage_specs_1 = {
-	sizeof(struct E2SM_RC_ControlMessage),
-	offsetof(struct E2SM_RC_ControlMessage, _asn_ctx),
-	offsetof(struct E2SM_RC_ControlMessage, present),
-	sizeof(((struct E2SM_RC_ControlMessage *)0)->present),
-	asn_MAP_E2SM_RC_ControlMessage_tag2el_1,
+static asn_CHOICE_specifics_t asn_SPC_ric_controlMessage_formats_specs_2 = {
+	sizeof(struct E2SM_RC_ControlMessage__ric_controlMessage_formats),
+	offsetof(struct E2SM_RC_ControlMessage__ric_controlMessage_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_ControlMessage__ric_controlMessage_formats, present),
+	sizeof(((struct E2SM_RC_ControlMessage__ric_controlMessage_formats *)0)->present),
+	asn_MAP_ric_controlMessage_formats_tag2el_2,
 	1,	/* Count of tags in the map */
 	0, 0,
 	1	/* Extensions start */
 };
-asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlMessage = {
-	"E2SM-RC-ControlMessage",
-	"E2SM-RC-ControlMessage",
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_controlMessage_formats_2 = {
+	"ric-controlMessage-formats",
+	"ric-controlMessage-formats",
 	&asn_OP_CHOICE,
 	0,	/* No effective tags (pointer) */
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	{ &asn_OER_type_E2SM_RC_ControlMessage_constr_1, &asn_PER_type_E2SM_RC_ControlMessage_constr_1, CHOICE_constraint },
+	{ &asn_OER_type_ric_controlMessage_formats_constr_2, &asn_PER_type_ric_controlMessage_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_controlMessage_formats_2,
+	1,	/* Elements count */
+	&asn_SPC_ric_controlMessage_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_ControlMessage_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlMessage, ric_controlMessage_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_controlMessage_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-controlMessage-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlMessage_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlMessage_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-controlMessage-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlMessage_specs_1 = {
+	sizeof(struct E2SM_RC_ControlMessage),
+	offsetof(struct E2SM_RC_ControlMessage, _asn_ctx),
+	asn_MAP_E2SM_RC_ControlMessage_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlMessage = {
+	"E2SM-RC-ControlMessage",
+	"E2SM-RC-ControlMessage",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ControlMessage_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ControlMessage_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlMessage_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ControlMessage_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ControlMessage_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlMessage_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
 	asn_MBR_E2SM_RC_ControlMessage_1,
 	1,	/* Elements count */
 	&asn_SPC_E2SM_RC_ControlMessage_specs_1	/* Additional specs */
diff --git a/e2sm/lib/E2SM-RC-ControlOutcome-Format1-Item.c b/e2sm/lib/E2SM-RC-ControlOutcome-Format1-Item.c
new file mode 100644
index 0000000..f9b0bfd
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ControlOutcome-Format1-Item.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ControlOutcome-Format1-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ControlOutcome_Format1_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlOutcome_Format1_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlOutcome_Format1_Item, ranParameter_value),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_Value,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlOutcome_Format1_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-value */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlOutcome_Format1_Item_specs_1 = {
+	sizeof(struct E2SM_RC_ControlOutcome_Format1_Item),
+	offsetof(struct E2SM_RC_ControlOutcome_Format1_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_ControlOutcome_Format1_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlOutcome_Format1_Item = {
+	"E2SM-RC-ControlOutcome-Format1-Item",
+	"E2SM-RC-ControlOutcome-Format1-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ControlOutcome_Format1_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_ControlOutcome_Format1_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ControlOutcome-Format1.c b/e2sm/lib/E2SM-RC-ControlOutcome-Format1.c
new file mode 100644
index 0000000..8b78e0f
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ControlOutcome-Format1.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ControlOutcome-Format1.h"
+
+#include "E2SM-RC-ControlOutcome-Format1-Item.h"
+static int
+memb_ranP_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 255)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranP_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..255)) */};
+static asn_per_constraints_t asn_PER_type_ranP_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  0,  255 }	/* (SIZE(0..255)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranP_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..255)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  0,  255 }	/* (SIZE(0..255)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranP_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_ControlOutcome_Format1_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranP_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranP_List_specs_2 = {
+	sizeof(struct E2SM_RC_ControlOutcome_Format1__ranP_List),
+	offsetof(struct E2SM_RC_ControlOutcome_Format1__ranP_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_List_2 = {
+	"ranP-List",
+	"ranP-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranP_List_tags_2,
+	sizeof(asn_DEF_ranP_List_tags_2)
+		/sizeof(asn_DEF_ranP_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranP_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranP_List_tags_2)
+		/sizeof(asn_DEF_ranP_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranP_List_constr_2, &asn_PER_type_ranP_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_List_2,
+	1,	/* Single element */
+	&asn_SPC_ranP_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_ControlOutcome_Format1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlOutcome_Format1, ranP_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ranP_List_2,
+		0,
+		{ &asn_OER_memb_ranP_List_constr_2, &asn_PER_memb_ranP_List_constr_2,  memb_ranP_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranP-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlOutcome_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranP-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlOutcome_Format1_specs_1 = {
+	sizeof(struct E2SM_RC_ControlOutcome_Format1),
+	offsetof(struct E2SM_RC_ControlOutcome_Format1, _asn_ctx),
+	asn_MAP_E2SM_RC_ControlOutcome_Format1_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlOutcome_Format1 = {
+	"E2SM-RC-ControlOutcome-Format1",
+	"E2SM-RC-ControlOutcome-Format1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlOutcome_Format1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ControlOutcome_Format1_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_ControlOutcome_Format1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-ControlOutcome.c b/e2sm/lib/E2SM-RC-ControlOutcome.c
new file mode 100644
index 0000000..8e6ce7b
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-ControlOutcome.c
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-ControlOutcome.h"
+
+#include "E2SM-RC-ControlOutcome-Format1.h"
+static asn_oer_constraints_t asn_OER_type_ric_controlOutcome_formats_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_controlOutcome_formats_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_controlOutcome_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_ControlOutcome__ric_controlOutcome_formats, choice.controlOutcome_Format1),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_ControlOutcome_Format1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"controlOutcome-Format1"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ric_controlOutcome_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlOutcome-Format1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ric_controlOutcome_formats_specs_2 = {
+	sizeof(struct E2SM_RC_ControlOutcome__ric_controlOutcome_formats),
+	offsetof(struct E2SM_RC_ControlOutcome__ric_controlOutcome_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_ControlOutcome__ric_controlOutcome_formats, present),
+	sizeof(((struct E2SM_RC_ControlOutcome__ric_controlOutcome_formats *)0)->present),
+	asn_MAP_ric_controlOutcome_formats_tag2el_2,
+	1,	/* Count of tags in the map */
+	0, 0,
+	1	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_controlOutcome_formats_2 = {
+	"ric-controlOutcome-formats",
+	"ric-controlOutcome-formats",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ric_controlOutcome_formats_constr_2, &asn_PER_type_ric_controlOutcome_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_controlOutcome_formats_2,
+	1,	/* Elements count */
+	&asn_SPC_ric_controlOutcome_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_ControlOutcome_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_ControlOutcome, ric_controlOutcome_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_controlOutcome_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-controlOutcome-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_ControlOutcome_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_ControlOutcome_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-controlOutcome-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_ControlOutcome_specs_1 = {
+	sizeof(struct E2SM_RC_ControlOutcome),
+	offsetof(struct E2SM_RC_ControlOutcome, _asn_ctx),
+	asn_MAP_E2SM_RC_ControlOutcome_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_ControlOutcome = {
+	"E2SM-RC-ControlOutcome",
+	"E2SM-RC-ControlOutcome",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_ControlOutcome_tags_1,
+	sizeof(asn_DEF_E2SM_RC_ControlOutcome_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlOutcome_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_ControlOutcome_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_ControlOutcome_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_ControlOutcome_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_ControlOutcome_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_ControlOutcome_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format1-Item.c b/e2sm/lib/E2SM-RC-EventTrigger-Format1-Item.c
new file mode 100644
index 0000000..346cf2e
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format1-Item.c
@@ -0,0 +1,155 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format1-Item.h"
+
+#include "EventTrigger-UE-Info.h"
+#include "EventTrigger-UEevent-Info.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_messageDirection_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_messageDirection_constr_4 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_messageDirection_value2enum_4[] = {
+	{ 0,	8,	"incoming" },
+	{ 1,	8,	"outgoing" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_messageDirection_enum2value_4[] = {
+	0,	/* incoming(0) */
+	1	/* outgoing(1) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_messageDirection_specs_4 = {
+	asn_MAP_messageDirection_value2enum_4,	/* "tag" => N; sorted by tag */
+	asn_MAP_messageDirection_enum2value_4,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_messageDirection_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageDirection_4 = {
+	"messageDirection",
+	"messageDirection",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_messageDirection_tags_4,
+	sizeof(asn_DEF_messageDirection_tags_4)
+		/sizeof(asn_DEF_messageDirection_tags_4[0]) - 1, /* 1 */
+	asn_DEF_messageDirection_tags_4,	/* Same as above */
+	sizeof(asn_DEF_messageDirection_tags_4)
+		/sizeof(asn_DEF_messageDirection_tags_4[0]), /* 2 */
+	{ &asn_OER_type_messageDirection_constr_4, &asn_PER_type_messageDirection_constr_4, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_messageDirection_specs_4	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format1_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format1_Item, ric_eventTriggerCondition_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTriggerCondition_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-eventTriggerCondition-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format1_Item, messageType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_MessageType_Choice,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"messageType"
+		},
+	{ ATF_POINTER, 4, offsetof(struct E2SM_RC_EventTrigger_Format1_Item, messageDirection),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_messageDirection_4,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"messageDirection"
+		},
+	{ ATF_POINTER, 3, offsetof(struct E2SM_RC_EventTrigger_Format1_Item, associatedUEInfo),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedUEInfo"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_EventTrigger_Format1_Item, associatedUEEvent),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UEevent_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedUEEvent"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_EventTrigger_Format1_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_E2SM_RC_EventTrigger_Format1_Item_oms_1[] = { 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format1_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-eventTriggerCondition-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* messageType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* messageDirection */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* associatedUEInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* associatedUEEvent */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format1_Item_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format1_Item),
+	offsetof(struct E2SM_RC_EventTrigger_Format1_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format1_Item_tag2el_1,
+	6,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_EventTrigger_Format1_Item_oms_1,	/* Optional members */
+	4, 0,	/* Root/Additions */
+	6,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format1_Item = {
+	"E2SM-RC-EventTrigger-Format1-Item",
+	"E2SM-RC-EventTrigger-Format1-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format1_Item_1,
+	6,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format1_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format1.c b/e2sm/lib/E2SM-RC-EventTrigger-Format1.c
new file mode 100644
index 0000000..c8911e9
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format1.c
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format1.h"
+
+#include "EventTrigger-UE-Info.h"
+#include "E2SM-RC-EventTrigger-Format1-Item.h"
+static int
+memb_message_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_message_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_message_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_message_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_message_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_message_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_EventTrigger_Format1_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_message_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_message_List_specs_2 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format1__message_List),
+	offsetof(struct E2SM_RC_EventTrigger_Format1__message_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_message_List_2 = {
+	"message-List",
+	"message-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_message_List_tags_2,
+	sizeof(asn_DEF_message_List_tags_2)
+		/sizeof(asn_DEF_message_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_message_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_message_List_tags_2)
+		/sizeof(asn_DEF_message_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_message_List_constr_2, &asn_PER_type_message_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_message_List_2,
+	1,	/* Single element */
+	&asn_SPC_message_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format1, message_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_message_List_2,
+		0,
+		{ &asn_OER_memb_message_List_constr_2, &asn_PER_memb_message_List_constr_2,  memb_message_List_constraint_1 },
+		0, 0, /* No default value */
+		"message-List"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_EventTrigger_Format1, globalAssociatedUEInfo),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalAssociatedUEInfo"
+		},
+};
+static const int asn_MAP_E2SM_RC_EventTrigger_Format1_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* message-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* globalAssociatedUEInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format1_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format1),
+	offsetof(struct E2SM_RC_EventTrigger_Format1, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format1_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_EventTrigger_Format1_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format1 = {
+	"E2SM-RC-EventTrigger-Format1",
+	"E2SM-RC-EventTrigger-Format1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format1_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format2.c b/e2sm/lib/E2SM-RC-EventTrigger-Format2.c
new file mode 100644
index 0000000..54a8e9d
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format2.c
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format2.h"
+
+#include "RANParameter-Testing.h"
+#include "EventTrigger-UE-Info.h"
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format2_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format2, ric_callProcessType_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_CallProcessType_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-callProcessType-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format2, ric_callProcessBreakpoint_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_CallProcessBreakpoint_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-callProcessBreakpoint-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_EventTrigger_Format2, associatedE2NodeInfo),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedE2NodeInfo"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_EventTrigger_Format2, associatedUEInfo),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedUEInfo"
+		},
+};
+static const int asn_MAP_E2SM_RC_EventTrigger_Format2_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-callProcessType-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-callProcessBreakpoint-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* associatedE2NodeInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* associatedUEInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format2_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format2),
+	offsetof(struct E2SM_RC_EventTrigger_Format2, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format2_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_EventTrigger_Format2_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	4,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format2 = {
+	"E2SM-RC-EventTrigger-Format2",
+	"E2SM-RC-EventTrigger-Format2",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format2_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format2_1,
+	4,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format2_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format3-Item.c b/e2sm/lib/E2SM-RC-EventTrigger-Format3-Item.c
new file mode 100644
index 0000000..9781e8e
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format3-Item.c
@@ -0,0 +1,116 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format3-Item.h"
+
+#include "EventTrigger-Cell-Info.h"
+static int
+memb_e2NodeInfoChange_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 512)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_e2NodeInfoChange_ID_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_e2NodeInfoChange_ID_constr_3 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  9,  9,  1,  512 }	/* (1..512,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format3_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format3_Item, ric_eventTriggerCondition_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTriggerCondition_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-eventTriggerCondition-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format3_Item, e2NodeInfoChange_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_e2NodeInfoChange_ID_constr_3, &asn_PER_memb_e2NodeInfoChange_ID_constr_3,  memb_e2NodeInfoChange_ID_constraint_1 },
+		0, 0, /* No default value */
+		"e2NodeInfoChange-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_EventTrigger_Format3_Item, associatedCellInfo),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_Cell_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedCellInfo"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_EventTrigger_Format3_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_E2SM_RC_EventTrigger_Format3_Item_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format3_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-eventTriggerCondition-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e2NodeInfoChange-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* associatedCellInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format3_Item_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format3_Item),
+	offsetof(struct E2SM_RC_EventTrigger_Format3_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format3_Item_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_EventTrigger_Format3_Item_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	4,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format3_Item = {
+	"E2SM-RC-EventTrigger-Format3-Item",
+	"E2SM-RC-EventTrigger-Format3-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format3_Item_1,
+	4,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format3_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format3.c b/e2sm/lib/E2SM-RC-EventTrigger-Format3.c
new file mode 100644
index 0000000..2f0efcd
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format3.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format3.h"
+
+#include "E2SM-RC-EventTrigger-Format3-Item.h"
+static int
+memb_e2NodeInfoChange_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_e2NodeInfoChange_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_e2NodeInfoChange_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_e2NodeInfoChange_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_e2NodeInfoChange_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_e2NodeInfoChange_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_EventTrigger_Format3_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_e2NodeInfoChange_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_e2NodeInfoChange_List_specs_2 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format3__e2NodeInfoChange_List),
+	offsetof(struct E2SM_RC_EventTrigger_Format3__e2NodeInfoChange_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_e2NodeInfoChange_List_2 = {
+	"e2NodeInfoChange-List",
+	"e2NodeInfoChange-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_e2NodeInfoChange_List_tags_2,
+	sizeof(asn_DEF_e2NodeInfoChange_List_tags_2)
+		/sizeof(asn_DEF_e2NodeInfoChange_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_e2NodeInfoChange_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_e2NodeInfoChange_List_tags_2)
+		/sizeof(asn_DEF_e2NodeInfoChange_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_e2NodeInfoChange_List_constr_2, &asn_PER_type_e2NodeInfoChange_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_e2NodeInfoChange_List_2,
+	1,	/* Single element */
+	&asn_SPC_e2NodeInfoChange_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format3_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format3, e2NodeInfoChange_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_e2NodeInfoChange_List_2,
+		0,
+		{ &asn_OER_memb_e2NodeInfoChange_List_constr_2, &asn_PER_memb_e2NodeInfoChange_List_constr_2,  memb_e2NodeInfoChange_List_constraint_1 },
+		0, 0, /* No default value */
+		"e2NodeInfoChange-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* e2NodeInfoChange-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format3_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format3),
+	offsetof(struct E2SM_RC_EventTrigger_Format3, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format3_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format3 = {
+	"E2SM-RC-EventTrigger-Format3",
+	"E2SM-RC-EventTrigger-Format3",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format3_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format3_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format3_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format4-Item.c b/e2sm/lib/E2SM-RC-EventTrigger-Format4-Item.c
new file mode 100644
index 0000000..35d496a
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format4-Item.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format4-Item.h"
+
+#include "EventTrigger-UE-Info.h"
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format4_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format4_Item, ric_eventTriggerCondition_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTriggerCondition_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-eventTriggerCondition-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format4_Item, triggerType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_TriggerType_Choice,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"triggerType"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_EventTrigger_Format4_Item, associatedUEInfo),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedUEInfo"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_EventTrigger_Format4_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_E2SM_RC_EventTrigger_Format4_Item_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format4_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-eventTriggerCondition-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggerType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* associatedUEInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format4_Item_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format4_Item),
+	offsetof(struct E2SM_RC_EventTrigger_Format4_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format4_Item_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_EventTrigger_Format4_Item_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	4,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format4_Item = {
+	"E2SM-RC-EventTrigger-Format4-Item",
+	"E2SM-RC-EventTrigger-Format4-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format4_Item_1,
+	4,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format4_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format4.c b/e2sm/lib/E2SM-RC-EventTrigger-Format4.c
new file mode 100644
index 0000000..8fa15b7
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format4.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format4.h"
+
+#include "E2SM-RC-EventTrigger-Format4-Item.h"
+static int
+memb_uEInfoChange_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_uEInfoChange_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_uEInfoChange_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uEInfoChange_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_uEInfoChange_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uEInfoChange_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_EventTrigger_Format4_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_uEInfoChange_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uEInfoChange_List_specs_2 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format4__uEInfoChange_List),
+	offsetof(struct E2SM_RC_EventTrigger_Format4__uEInfoChange_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uEInfoChange_List_2 = {
+	"uEInfoChange-List",
+	"uEInfoChange-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_uEInfoChange_List_tags_2,
+	sizeof(asn_DEF_uEInfoChange_List_tags_2)
+		/sizeof(asn_DEF_uEInfoChange_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_uEInfoChange_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_uEInfoChange_List_tags_2)
+		/sizeof(asn_DEF_uEInfoChange_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_uEInfoChange_List_constr_2, &asn_PER_type_uEInfoChange_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_uEInfoChange_List_2,
+	1,	/* Single element */
+	&asn_SPC_uEInfoChange_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format4_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format4, uEInfoChange_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_uEInfoChange_List_2,
+		0,
+		{ &asn_OER_memb_uEInfoChange_List_constr_2, &asn_PER_memb_uEInfoChange_List_constr_2,  memb_uEInfoChange_List_constraint_1 },
+		0, 0, /* No default value */
+		"uEInfoChange-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format4_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* uEInfoChange-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format4_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format4),
+	offsetof(struct E2SM_RC_EventTrigger_Format4, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format4_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format4 = {
+	"E2SM-RC-EventTrigger-Format4",
+	"E2SM-RC-EventTrigger-Format4",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format4_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format4_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format4_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger-Format5.c b/e2sm/lib/E2SM-RC-EventTrigger-Format5.c
new file mode 100644
index 0000000..f7ebe17
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger-Format5.c
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger-Format5.h"
+
+#include "EventTrigger-UE-Info.h"
+#include "EventTrigger-Cell-Info.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_onDemand_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_onDemand_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_onDemand_value2enum_2[] = {
+	{ 0,	4,	"true" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_onDemand_enum2value_2[] = {
+	0	/* true(0) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_onDemand_specs_2 = {
+	asn_MAP_onDemand_value2enum_2,	/* "tag" => N; sorted by tag */
+	asn_MAP_onDemand_enum2value_2,	/* N => "tag"; sorted by N */
+	1,	/* Number of elements in the maps */
+	2,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_onDemand_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_onDemand_2 = {
+	"onDemand",
+	"onDemand",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_onDemand_tags_2,
+	sizeof(asn_DEF_onDemand_tags_2)
+		/sizeof(asn_DEF_onDemand_tags_2[0]) - 1, /* 1 */
+	asn_DEF_onDemand_tags_2,	/* Same as above */
+	sizeof(asn_DEF_onDemand_tags_2)
+		/sizeof(asn_DEF_onDemand_tags_2[0]), /* 2 */
+	{ &asn_OER_type_onDemand_constr_2, &asn_PER_type_onDemand_constr_2, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_onDemand_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_Format5_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger_Format5, onDemand),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_onDemand_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"onDemand"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_EventTrigger_Format5, associatedUEInfo),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedUEInfo"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_EventTrigger_Format5, associatedCellInfo),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_Cell_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedCellInfo"
+		},
+};
+static const int asn_MAP_E2SM_RC_EventTrigger_Format5_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_Format5_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* onDemand */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* associatedUEInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* associatedCellInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_Format5_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger_Format5),
+	offsetof(struct E2SM_RC_EventTrigger_Format5, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_Format5_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_EventTrigger_Format5_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger_Format5 = {
+	"E2SM-RC-EventTrigger-Format5",
+	"E2SM-RC-EventTrigger-Format5",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_Format5_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_Format5_1,
+	3,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_Format5_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-EventTrigger.c b/e2sm/lib/E2SM-RC-EventTrigger.c
new file mode 100644
index 0000000..6991f39
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-EventTrigger.c
@@ -0,0 +1,142 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-EventTrigger.h"
+
+#include "E2SM-RC-EventTrigger-Format1.h"
+#include "E2SM-RC-EventTrigger-Format2.h"
+#include "E2SM-RC-EventTrigger-Format3.h"
+#include "E2SM-RC-EventTrigger-Format4.h"
+#include "E2SM-RC-EventTrigger-Format5.h"
+static asn_oer_constraints_t asn_OER_type_ric_eventTrigger_formats_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_eventTrigger_formats_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  4 }	/* (0..4,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_eventTrigger_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, choice.eventTrigger_Format1),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_EventTrigger_Format1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTrigger-Format1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, choice.eventTrigger_Format2),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_EventTrigger_Format2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTrigger-Format2"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, choice.eventTrigger_Format3),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_EventTrigger_Format3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTrigger-Format3"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, choice.eventTrigger_Format4),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_EventTrigger_Format4,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTrigger-Format4"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, choice.eventTrigger_Format5),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_EventTrigger_Format5,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTrigger-Format5"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ric_eventTrigger_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventTrigger-Format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eventTrigger-Format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eventTrigger-Format3 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* eventTrigger-Format4 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* eventTrigger-Format5 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ric_eventTrigger_formats_specs_2 = {
+	sizeof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats),
+	offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_EventTrigger__ric_eventTrigger_formats, present),
+	sizeof(((struct E2SM_RC_EventTrigger__ric_eventTrigger_formats *)0)->present),
+	asn_MAP_ric_eventTrigger_formats_tag2el_2,
+	5,	/* Count of tags in the map */
+	0, 0,
+	5	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_eventTrigger_formats_2 = {
+	"ric-eventTrigger-formats",
+	"ric-eventTrigger-formats",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ric_eventTrigger_formats_constr_2, &asn_PER_type_ric_eventTrigger_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_eventTrigger_formats_2,
+	5,	/* Elements count */
+	&asn_SPC_ric_eventTrigger_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_EventTrigger_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_EventTrigger, ric_eventTrigger_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_eventTrigger_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-eventTrigger-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_EventTrigger_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_EventTrigger_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-eventTrigger-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_EventTrigger_specs_1 = {
+	sizeof(struct E2SM_RC_EventTrigger),
+	offsetof(struct E2SM_RC_EventTrigger, _asn_ctx),
+	asn_MAP_E2SM_RC_EventTrigger_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_EventTrigger = {
+	"E2SM-RC-EventTrigger",
+	"E2SM-RC-EventTrigger",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_EventTrigger_tags_1,
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_EventTrigger_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_EventTrigger_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_EventTrigger_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_EventTrigger_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_EventTrigger_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationHeader-Format1.c b/e2sm/lib/E2SM-RC-IndicationHeader-Format1.c
new file mode 100644
index 0000000..7a880ae
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationHeader-Format1.c
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationHeader-Format1.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationHeader_Format1_1[] = {
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_IndicationHeader_Format1, ric_eventTriggerCondition_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTriggerCondition_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-eventTriggerCondition-ID"
+		},
+};
+static const int asn_MAP_E2SM_RC_IndicationHeader_Format1_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationHeader_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-eventTriggerCondition-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationHeader_Format1_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationHeader_Format1),
+	offsetof(struct E2SM_RC_IndicationHeader_Format1, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationHeader_Format1_tag2el_1,
+	1,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_IndicationHeader_Format1_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationHeader_Format1 = {
+	"E2SM-RC-IndicationHeader-Format1",
+	"E2SM-RC-IndicationHeader-Format1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationHeader_Format1_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationHeader_Format1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationHeader-Format2.c b/e2sm/lib/E2SM-RC-IndicationHeader-Format2.c
new file mode 100644
index 0000000..4b7724c
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationHeader-Format2.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationHeader-Format2.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationHeader_Format2_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationHeader_Format2, ueID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_UEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationHeader_Format2, ric_InsertStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationHeader_Format2, ric_InsertIndication_ID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_InsertIndication_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertIndication-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationHeader_Format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-InsertStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-InsertIndication-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationHeader_Format2_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationHeader_Format2),
+	offsetof(struct E2SM_RC_IndicationHeader_Format2, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationHeader_Format2_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationHeader_Format2 = {
+	"E2SM-RC-IndicationHeader-Format2",
+	"E2SM-RC-IndicationHeader-Format2",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationHeader_Format2_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationHeader_Format2_1,
+	3,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationHeader_Format2_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationHeader.c b/e2sm/lib/E2SM-RC-IndicationHeader.c
new file mode 100644
index 0000000..c5764a4
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationHeader.c
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationHeader.h"
+
+#include "E2SM-RC-IndicationHeader-Format1.h"
+#include "E2SM-RC-IndicationHeader-Format2.h"
+static asn_oer_constraints_t asn_OER_type_ric_indicationHeader_formats_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_indicationHeader_formats_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_indicationHeader_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationHeader__ric_indicationHeader_formats, choice.indicationHeader_Format1),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationHeader_Format1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationHeader-Format1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationHeader__ric_indicationHeader_formats, choice.indicationHeader_Format2),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationHeader_Format2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationHeader-Format2"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ric_indicationHeader_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* indicationHeader-Format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* indicationHeader-Format2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ric_indicationHeader_formats_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationHeader__ric_indicationHeader_formats),
+	offsetof(struct E2SM_RC_IndicationHeader__ric_indicationHeader_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_IndicationHeader__ric_indicationHeader_formats, present),
+	sizeof(((struct E2SM_RC_IndicationHeader__ric_indicationHeader_formats *)0)->present),
+	asn_MAP_ric_indicationHeader_formats_tag2el_2,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_indicationHeader_formats_2 = {
+	"ric-indicationHeader-formats",
+	"ric-indicationHeader-formats",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ric_indicationHeader_formats_constr_2, &asn_PER_type_ric_indicationHeader_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_indicationHeader_formats_2,
+	2,	/* Elements count */
+	&asn_SPC_ric_indicationHeader_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationHeader_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationHeader, ric_indicationHeader_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_indicationHeader_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-indicationHeader-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationHeader_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationHeader_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-indicationHeader-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationHeader_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationHeader),
+	offsetof(struct E2SM_RC_IndicationHeader, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationHeader_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationHeader = {
+	"E2SM-RC-IndicationHeader",
+	"E2SM-RC-IndicationHeader",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationHeader_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationHeader_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationHeader_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationHeader_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationHeader_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationHeader_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationHeader_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationHeader_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format1-Item.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format1-Item.c
new file mode 100644
index 0000000..b84dcc1
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format1-Item.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format1-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format1_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format1_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format1_Item, ranParameter_valueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-valueType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format1_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-valueType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format1_Item_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format1_Item),
+	offsetof(struct E2SM_RC_IndicationMessage_Format1_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format1_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format1_Item = {
+	"E2SM-RC-IndicationMessage-Format1-Item",
+	"E2SM-RC-IndicationMessage-Format1-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format1_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format1_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format1.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format1.c
new file mode 100644
index 0000000..0395dbd
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format1.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format1.h"
+
+#include "E2SM-RC-IndicationMessage-Format1-Item.h"
+static int
+memb_ranP_Reported_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranP_Reported_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranP_Reported_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranP_Reported_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_Reported_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranP_Reported_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format1_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranP_Reported_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranP_Reported_List_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format1__ranP_Reported_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format1__ranP_Reported_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_Reported_List_2 = {
+	"ranP-Reported-List",
+	"ranP-Reported-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranP_Reported_List_tags_2,
+	sizeof(asn_DEF_ranP_Reported_List_tags_2)
+		/sizeof(asn_DEF_ranP_Reported_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranP_Reported_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranP_Reported_List_tags_2)
+		/sizeof(asn_DEF_ranP_Reported_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranP_Reported_List_constr_2, &asn_PER_type_ranP_Reported_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_Reported_List_2,
+	1,	/* Single element */
+	&asn_SPC_ranP_Reported_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format1, ranP_Reported_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ranP_Reported_List_2,
+		0,
+		{ &asn_OER_memb_ranP_Reported_List_constr_2, &asn_PER_memb_ranP_Reported_List_constr_2,  memb_ranP_Reported_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranP-Reported-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranP-Reported-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format1_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format1),
+	offsetof(struct E2SM_RC_IndicationMessage_Format1, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format1_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format1 = {
+	"E2SM-RC-IndicationMessage-Format1",
+	"E2SM-RC-IndicationMessage-Format1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format1_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format2-Item.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format2-Item.c
new file mode 100644
index 0000000..5091cd5
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format2-Item.c
@@ -0,0 +1,140 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format2-Item.h"
+
+#include "E2SM-RC-IndicationMessage-Format2-RANParameter-Item.h"
+static int
+memb_ranP_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranP_List_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranP_List_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranP_List_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_List_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranP_List_3[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranP_List_tags_3[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranP_List_specs_3 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format2_Item__ranP_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format2_Item__ranP_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_List_3 = {
+	"ranP-List",
+	"ranP-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranP_List_tags_3,
+	sizeof(asn_DEF_ranP_List_tags_3)
+		/sizeof(asn_DEF_ranP_List_tags_3[0]) - 1, /* 1 */
+	asn_DEF_ranP_List_tags_3,	/* Same as above */
+	sizeof(asn_DEF_ranP_List_tags_3)
+		/sizeof(asn_DEF_ranP_List_tags_3[0]), /* 2 */
+	{ &asn_OER_type_ranP_List_constr_3, &asn_PER_type_ranP_List_constr_3, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_List_3,
+	1,	/* Single element */
+	&asn_SPC_ranP_List_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format2_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format2_Item, ueID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_UEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format2_Item, ranP_List),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_ranP_List_3,
+		0,
+		{ &asn_OER_memb_ranP_List_constr_3, &asn_PER_memb_ranP_List_constr_3,  memb_ranP_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranP-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format2_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranP-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format2_Item_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format2_Item),
+	offsetof(struct E2SM_RC_IndicationMessage_Format2_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format2_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format2_Item = {
+	"E2SM-RC-IndicationMessage-Format2-Item",
+	"E2SM-RC-IndicationMessage-Format2-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format2_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format2_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format2-RANParameter-Item.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format2-RANParameter-Item.c
new file mode 100644
index 0000000..c750920
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format2-RANParameter-Item.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format2-RANParameter-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format2_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format2_RANParameter_Item, ranParameter_valueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-valueType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-valueType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format2_RANParameter_Item),
+	offsetof(struct E2SM_RC_IndicationMessage_Format2_RANParameter_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item = {
+	"E2SM-RC-IndicationMessage-Format2-RANParameter-Item",
+	"E2SM-RC-IndicationMessage-Format2-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format2_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format2.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format2.c
new file mode 100644
index 0000000..a4210cc
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format2.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format2.h"
+
+#include "E2SM-RC-IndicationMessage-Format2-Item.h"
+static int
+memb_ueParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ueParameter_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ueParameter_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueParameter_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ueParameter_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueParameter_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format2_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ueParameter_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueParameter_List_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format2__ueParameter_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format2__ueParameter_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueParameter_List_2 = {
+	"ueParameter-List",
+	"ueParameter-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ueParameter_List_tags_2,
+	sizeof(asn_DEF_ueParameter_List_tags_2)
+		/sizeof(asn_DEF_ueParameter_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ueParameter_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ueParameter_List_tags_2)
+		/sizeof(asn_DEF_ueParameter_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ueParameter_List_constr_2, &asn_PER_type_ueParameter_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ueParameter_List_2,
+	1,	/* Single element */
+	&asn_SPC_ueParameter_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format2_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format2, ueParameter_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ueParameter_List_2,
+		0,
+		{ &asn_OER_memb_ueParameter_List_constr_2, &asn_PER_memb_ueParameter_List_constr_2,  memb_ueParameter_List_constraint_1 },
+		0, 0, /* No default value */
+		"ueParameter-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueParameter-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format2_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format2),
+	offsetof(struct E2SM_RC_IndicationMessage_Format2, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format2_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format2 = {
+	"E2SM-RC-IndicationMessage-Format2",
+	"E2SM-RC-IndicationMessage-Format2",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format2_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format2_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format2_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format3-Item.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format3-Item.c
new file mode 100644
index 0000000..2dd2b21
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format3-Item.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format3-Item.h"
+
+#include "NeighborRelation-Info.h"
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format3_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format3_Item, cellGlobal_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellGlobal-ID"
+		},
+	{ ATF_POINTER, 3, offsetof(struct E2SM_RC_IndicationMessage_Format3_Item, cellContextInfo),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_OCTET_STRING,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellContextInfo"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_IndicationMessage_Format3_Item, cellDeleted),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BOOLEAN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellDeleted"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_IndicationMessage_Format3_Item, neighborRelation_Table),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NeighborRelation_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"neighborRelation-Table"
+		},
+};
+static const int asn_MAP_E2SM_RC_IndicationMessage_Format3_Item_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format3_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellGlobal-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellContextInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellDeleted */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* neighborRelation-Table */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format3_Item_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format3_Item),
+	offsetof(struct E2SM_RC_IndicationMessage_Format3_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format3_Item_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_IndicationMessage_Format3_Item_oms_1,	/* Optional members */
+	3, 0,	/* Root/Additions */
+	4,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format3_Item = {
+	"E2SM-RC-IndicationMessage-Format3-Item",
+	"E2SM-RC-IndicationMessage-Format3-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format3_Item_1,
+	4,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format3_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format3.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format3.c
new file mode 100644
index 0000000..2573d44
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format3.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format3.h"
+
+#include "E2SM-RC-IndicationMessage-Format3-Item.h"
+static int
+memb_cellInfo_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellInfo_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format3_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_cellInfo_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellInfo_List_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format3__cellInfo_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format3__cellInfo_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellInfo_List_2 = {
+	"cellInfo-List",
+	"cellInfo-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_cellInfo_List_tags_2,
+	sizeof(asn_DEF_cellInfo_List_tags_2)
+		/sizeof(asn_DEF_cellInfo_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_cellInfo_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_cellInfo_List_tags_2)
+		/sizeof(asn_DEF_cellInfo_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_cellInfo_List_constr_2, &asn_PER_type_cellInfo_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_cellInfo_List_2,
+	1,	/* Single element */
+	&asn_SPC_cellInfo_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format3_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format3, cellInfo_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_cellInfo_List_2,
+		0,
+		{ &asn_OER_memb_cellInfo_List_constr_2, &asn_PER_memb_cellInfo_List_constr_2,  memb_cellInfo_List_constraint_1 },
+		0, 0, /* No default value */
+		"cellInfo-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellInfo-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format3_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format3),
+	offsetof(struct E2SM_RC_IndicationMessage_Format3, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format3_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format3 = {
+	"E2SM-RC-IndicationMessage-Format3",
+	"E2SM-RC-IndicationMessage-Format3",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format3_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format3_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format3_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format4-ItemCell.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format4-ItemCell.c
new file mode 100644
index 0000000..113d318
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format4-ItemCell.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format4-ItemCell.h"
+
+#include "NeighborRelation-Info.h"
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format4_ItemCell_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemCell, cellGlobal_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellGlobal-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemCell, cellContextInfo),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_OCTET_STRING,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellContextInfo"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemCell, neighborRelation_Table),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NeighborRelation_Info,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"neighborRelation-Table"
+		},
+};
+static const int asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemCell_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemCell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellGlobal-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellContextInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighborRelation-Table */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format4_ItemCell_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format4_ItemCell),
+	offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemCell, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemCell_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemCell_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell = {
+	"E2SM-RC-IndicationMessage-Format4-ItemCell",
+	"E2SM-RC-IndicationMessage-Format4-ItemCell",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format4_ItemCell_1,
+	3,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format4_ItemCell_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format4-ItemUE.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format4-ItemUE.c
new file mode 100644
index 0000000..857e906
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format4-ItemUE.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format4-ItemUE.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format4_ItemUE_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemUE, ueID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_UEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemUE, ueContextInfo),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_OCTET_STRING,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueContextInfo"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemUE, cellGlobal_ID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellGlobal-ID"
+		},
+};
+static const int asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemUE_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemUE_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ueContextInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellGlobal-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format4_ItemUE_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format4_ItemUE),
+	offsetof(struct E2SM_RC_IndicationMessage_Format4_ItemUE, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemUE_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_E2SM_RC_IndicationMessage_Format4_ItemUE_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE = {
+	"E2SM-RC-IndicationMessage-Format4-ItemUE",
+	"E2SM-RC-IndicationMessage-Format4-ItemUE",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format4_ItemUE_1,
+	3,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format4_ItemUE_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format4.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format4.c
new file mode 100644
index 0000000..dfcc96a
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format4.c
@@ -0,0 +1,220 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format4.h"
+
+#include "E2SM-RC-IndicationMessage-Format4-ItemUE.h"
+#include "E2SM-RC-IndicationMessage-Format4-ItemCell.h"
+static int
+memb_ueInfo_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_cellInfo_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_type_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cellInfo_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_type_cellInfo_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellInfo_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_memb_cellInfo_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueInfo_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemUE,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ueInfo_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueInfo_List_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format4__ueInfo_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format4__ueInfo_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueInfo_List_2 = {
+	"ueInfo-List",
+	"ueInfo-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ueInfo_List_tags_2,
+	sizeof(asn_DEF_ueInfo_List_tags_2)
+		/sizeof(asn_DEF_ueInfo_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ueInfo_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ueInfo_List_tags_2)
+		/sizeof(asn_DEF_ueInfo_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ueInfo_List_constr_2, &asn_PER_type_ueInfo_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ueInfo_List_2,
+	1,	/* Single element */
+	&asn_SPC_ueInfo_List_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cellInfo_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format4_ItemCell,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_cellInfo_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellInfo_List_specs_4 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format4__cellInfo_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format4__cellInfo_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellInfo_List_4 = {
+	"cellInfo-List",
+	"cellInfo-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_cellInfo_List_tags_4,
+	sizeof(asn_DEF_cellInfo_List_tags_4)
+		/sizeof(asn_DEF_cellInfo_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_cellInfo_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_cellInfo_List_tags_4)
+		/sizeof(asn_DEF_cellInfo_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_cellInfo_List_constr_4, &asn_PER_type_cellInfo_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_cellInfo_List_4,
+	1,	/* Single element */
+	&asn_SPC_cellInfo_List_specs_4	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format4_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format4, ueInfo_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ueInfo_List_2,
+		0,
+		{ &asn_OER_memb_ueInfo_List_constr_2, &asn_PER_memb_ueInfo_List_constr_2,  memb_ueInfo_List_constraint_1 },
+		0, 0, /* No default value */
+		"ueInfo-List"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format4, cellInfo_List),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_cellInfo_List_4,
+		0,
+		{ &asn_OER_memb_cellInfo_List_constr_4, &asn_PER_memb_cellInfo_List_constr_4,  memb_cellInfo_List_constraint_1 },
+		0, 0, /* No default value */
+		"cellInfo-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format4_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueInfo-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cellInfo-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format4_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format4),
+	offsetof(struct E2SM_RC_IndicationMessage_Format4, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format4_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format4 = {
+	"E2SM-RC-IndicationMessage-Format4",
+	"E2SM-RC-IndicationMessage-Format4",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format4_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format4_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format4_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format5-Item.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format5-Item.c
new file mode 100644
index 0000000..3b9541d
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format5-Item.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format5-Item.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format5_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format5_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format5_Item, ranParameter_valueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-valueType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format5_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-valueType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format5_Item_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format5_Item),
+	offsetof(struct E2SM_RC_IndicationMessage_Format5_Item, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format5_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format5_Item = {
+	"E2SM-RC-IndicationMessage-Format5-Item",
+	"E2SM-RC-IndicationMessage-Format5-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format5_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format5_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage-Format5.c b/e2sm/lib/E2SM-RC-IndicationMessage-Format5.c
new file mode 100644
index 0000000..3a5f71b
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage-Format5.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage-Format5.h"
+
+#include "E2SM-RC-IndicationMessage-Format5-Item.h"
+static int
+memb_ranP_Requested_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranP_Requested_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranP_Requested_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranP_Requested_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranP_Requested_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranP_Requested_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_E2SM_RC_IndicationMessage_Format5_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranP_Requested_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranP_Requested_List_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format5__ranP_Requested_List),
+	offsetof(struct E2SM_RC_IndicationMessage_Format5__ranP_Requested_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_Requested_List_2 = {
+	"ranP-Requested-List",
+	"ranP-Requested-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranP_Requested_List_tags_2,
+	sizeof(asn_DEF_ranP_Requested_List_tags_2)
+		/sizeof(asn_DEF_ranP_Requested_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranP_Requested_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranP_Requested_List_tags_2)
+		/sizeof(asn_DEF_ranP_Requested_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranP_Requested_List_constr_2, &asn_PER_type_ranP_Requested_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranP_Requested_List_2,
+	1,	/* Single element */
+	&asn_SPC_ranP_Requested_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_Format5_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage_Format5, ranP_Requested_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ranP_Requested_List_2,
+		0,
+		{ &asn_OER_memb_ranP_Requested_List_constr_2, &asn_PER_memb_ranP_Requested_List_constr_2,  memb_ranP_Requested_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranP-Requested-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_Format5_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranP-Requested-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_Format5_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage_Format5),
+	offsetof(struct E2SM_RC_IndicationMessage_Format5, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_Format5_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage_Format5 = {
+	"E2SM-RC-IndicationMessage-Format5",
+	"E2SM-RC-IndicationMessage-Format5",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_Format5_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_Format5_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_Format5_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-IndicationMessage.c b/e2sm/lib/E2SM-RC-IndicationMessage.c
new file mode 100644
index 0000000..3a4cd00
--- /dev/null
+++ b/e2sm/lib/E2SM-RC-IndicationMessage.c
@@ -0,0 +1,142 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "E2SM-RC-IndicationMessage.h"
+
+#include "E2SM-RC-IndicationMessage-Format1.h"
+#include "E2SM-RC-IndicationMessage-Format2.h"
+#include "E2SM-RC-IndicationMessage-Format3.h"
+#include "E2SM-RC-IndicationMessage-Format4.h"
+#include "E2SM-RC-IndicationMessage-Format5.h"
+static asn_oer_constraints_t asn_OER_type_ric_indicationMessage_formats_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ric_indicationMessage_formats_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  4 }	/* (0..4,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_indicationMessage_formats_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, choice.indicationMessage_Format1),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationMessage_Format1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationMessage-Format1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, choice.indicationMessage_Format2),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationMessage_Format2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationMessage-Format2"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, choice.indicationMessage_Format3),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationMessage_Format3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationMessage-Format3"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, choice.indicationMessage_Format4),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationMessage_Format4,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationMessage-Format4"
+		},
+	{ ATF_POINTER, 0, offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, choice.indicationMessage_Format5),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E2SM_RC_IndicationMessage_Format5,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"indicationMessage-Format5"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ric_indicationMessage_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* indicationMessage-Format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* indicationMessage-Format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* indicationMessage-Format3 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* indicationMessage-Format4 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* indicationMessage-Format5 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ric_indicationMessage_formats_specs_2 = {
+	sizeof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats),
+	offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, _asn_ctx),
+	offsetof(struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats, present),
+	sizeof(((struct E2SM_RC_IndicationMessage__ric_indicationMessage_formats *)0)->present),
+	asn_MAP_ric_indicationMessage_formats_tag2el_2,
+	5,	/* Count of tags in the map */
+	0, 0,
+	5	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_indicationMessage_formats_2 = {
+	"ric-indicationMessage-formats",
+	"ric-indicationMessage-formats",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ric_indicationMessage_formats_constr_2, &asn_PER_type_ric_indicationMessage_formats_constr_2, CHOICE_constraint },
+	asn_MBR_ric_indicationMessage_formats_2,
+	5,	/* Elements count */
+	&asn_SPC_ric_indicationMessage_formats_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_RC_IndicationMessage_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_IndicationMessage, ric_indicationMessage_formats),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ric_indicationMessage_formats_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-indicationMessage-formats"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_RC_IndicationMessage_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_IndicationMessage_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-indicationMessage-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_IndicationMessage_specs_1 = {
+	sizeof(struct E2SM_RC_IndicationMessage),
+	offsetof(struct E2SM_RC_IndicationMessage, _asn_ctx),
+	asn_MAP_E2SM_RC_IndicationMessage_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_RC_IndicationMessage = {
+	"E2SM-RC-IndicationMessage",
+	"E2SM-RC-IndicationMessage",
+	&asn_OP_SEQUENCE,
+	asn_DEF_E2SM_RC_IndicationMessage_tags_1,
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_tags_1[0]), /* 1 */
+	asn_DEF_E2SM_RC_IndicationMessage_tags_1,	/* Same as above */
+	sizeof(asn_DEF_E2SM_RC_IndicationMessage_tags_1)
+		/sizeof(asn_DEF_E2SM_RC_IndicationMessage_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_E2SM_RC_IndicationMessage_1,
+	1,	/* Elements count */
+	&asn_SPC_E2SM_RC_IndicationMessage_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/E2SM-RC-RANFunctionDefinition.c b/e2sm/lib/E2SM-RC-RANFunctionDefinition.c
index e3ff8fe..dddb336 100644
--- a/e2sm/lib/E2SM-RC-RANFunctionDefinition.c
+++ b/e2sm/lib/E2SM-RC-RANFunctionDefinition.c
@@ -1,172 +1,17 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "E2SM-RC-RANFunctionDefinition.h"
 
-#include "RIC-EventTriggerStyle-Item.h"
-#include "RIC-ControlStyle-Item.h"
-static int
-memb_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 63)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_ric_ControlStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 63)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ric_ControlStyle_List_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_type_ric_ControlStyle_List_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ric_ControlStyle_List_constr_5 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..63)) */};
-static asn_per_constraints_t asn_PER_memb_ric_ControlStyle_List_constr_5 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_3[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_RIC_EventTriggerStyle_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_3[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_3 = {
-	sizeof(struct E2SM_RC_RANFunctionDefinition__ric_EventTriggerStyle_List),
-	offsetof(struct E2SM_RC_RANFunctionDefinition__ric_EventTriggerStyle_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_3 = {
-	"ric-EventTriggerStyle-List",
-	"ric-EventTriggerStyle-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ric_EventTriggerStyle_List_tags_3,
-	sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
-		/sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */
-	asn_DEF_ric_EventTriggerStyle_List_tags_3,	/* Same as above */
-	sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
-		/sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */
-	{ &asn_OER_type_ric_EventTriggerStyle_List_constr_3, &asn_PER_type_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint },
-	asn_MBR_ric_EventTriggerStyle_List_3,
-	1,	/* Single element */
-	&asn_SPC_ric_EventTriggerStyle_List_specs_3	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ric_ControlStyle_List_5[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_RIC_ControlStyle_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ric_ControlStyle_List_tags_5[] = {
-	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_ric_ControlStyle_List_specs_5 = {
-	sizeof(struct E2SM_RC_RANFunctionDefinition__ric_ControlStyle_List),
-	offsetof(struct E2SM_RC_RANFunctionDefinition__ric_ControlStyle_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ric_ControlStyle_List_5 = {
-	"ric-ControlStyle-List",
-	"ric-ControlStyle-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ric_ControlStyle_List_tags_5,
-	sizeof(asn_DEF_ric_ControlStyle_List_tags_5)
-		/sizeof(asn_DEF_ric_ControlStyle_List_tags_5[0]) - 1, /* 1 */
-	asn_DEF_ric_ControlStyle_List_tags_5,	/* Same as above */
-	sizeof(asn_DEF_ric_ControlStyle_List_tags_5)
-		/sizeof(asn_DEF_ric_ControlStyle_List_tags_5[0]), /* 2 */
-	{ &asn_OER_type_ric_ControlStyle_List_constr_5, &asn_PER_type_ric_ControlStyle_List_constr_5, SEQUENCE_OF_constraint },
-	asn_MBR_ric_ControlStyle_List_5,
-	1,	/* Single element */
-	&asn_SPC_ric_ControlStyle_List_specs_5	/* Additional specs */
-};
-
+#include "RANFunctionDefinition-EventTrigger.h"
+#include "RANFunctionDefinition-Report.h"
+#include "RANFunctionDefinition-Insert.h"
+#include "RANFunctionDefinition-Control.h"
+#include "RANFunctionDefinition-Policy.h"
 static asn_TYPE_member_t asn_MBR_E2SM_RC_RANFunctionDefinition_1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct E2SM_RC_RANFunctionDefinition, ranFunction_Name),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
@@ -177,42 +22,72 @@
 		0, 0, /* No default value */
 		"ranFunction-Name"
 		},
-	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_RANFunctionDefinition, ric_EventTriggerStyle_List),
+	{ ATF_POINTER, 5, offsetof(struct E2SM_RC_RANFunctionDefinition, ranFunctionDefinition_EventTrigger),
 		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANFunctionDefinition_EventTrigger,
 		0,
-		&asn_DEF_ric_EventTriggerStyle_List_3,
-		0,
-		{ &asn_OER_memb_ric_EventTriggerStyle_List_constr_3, &asn_PER_memb_ric_EventTriggerStyle_List_constr_3,  memb_ric_EventTriggerStyle_List_constraint_1 },
+		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ric-EventTriggerStyle-List"
+		"ranFunctionDefinition-EventTrigger"
 		},
-	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_RANFunctionDefinition, ric_ControlStyle_List),
+	{ ATF_POINTER, 4, offsetof(struct E2SM_RC_RANFunctionDefinition, ranFunctionDefinition_Report),
 		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANFunctionDefinition_Report,
 		0,
-		&asn_DEF_ric_ControlStyle_List_5,
-		0,
-		{ &asn_OER_memb_ric_ControlStyle_List_constr_5, &asn_PER_memb_ric_ControlStyle_List_constr_5,  memb_ric_ControlStyle_List_constraint_1 },
+		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ric-ControlStyle-List"
+		"ranFunctionDefinition-Report"
+		},
+	{ ATF_POINTER, 3, offsetof(struct E2SM_RC_RANFunctionDefinition, ranFunctionDefinition_Insert),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANFunctionDefinition_Insert,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranFunctionDefinition-Insert"
+		},
+	{ ATF_POINTER, 2, offsetof(struct E2SM_RC_RANFunctionDefinition, ranFunctionDefinition_Control),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANFunctionDefinition_Control,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranFunctionDefinition-Control"
+		},
+	{ ATF_POINTER, 1, offsetof(struct E2SM_RC_RANFunctionDefinition, ranFunctionDefinition_Policy),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANFunctionDefinition_Policy,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranFunctionDefinition-Policy"
 		},
 };
-static const int asn_MAP_E2SM_RC_RANFunctionDefinition_oms_1[] = { 1, 2 };
+static const int asn_MAP_E2SM_RC_RANFunctionDefinition_oms_1[] = { 1, 2, 3, 4, 5 };
 static const ber_tlv_tag_t asn_DEF_E2SM_RC_RANFunctionDefinition_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_E2SM_RC_RANFunctionDefinition_tag2el_1[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-ControlStyle-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition-EventTrigger */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunctionDefinition-Report */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ranFunctionDefinition-Insert */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ranFunctionDefinition-Control */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ranFunctionDefinition-Policy */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_E2SM_RC_RANFunctionDefinition_specs_1 = {
 	sizeof(struct E2SM_RC_RANFunctionDefinition),
 	offsetof(struct E2SM_RC_RANFunctionDefinition, _asn_ctx),
 	asn_MAP_E2SM_RC_RANFunctionDefinition_tag2el_1,
-	3,	/* Count of tags in the map */
+	6,	/* Count of tags in the map */
 	asn_MAP_E2SM_RC_RANFunctionDefinition_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
+	5, 0,	/* Root/Additions */
+	6,	/* First extension addition */
 };
 asn_TYPE_descriptor_t asn_DEF_E2SM_RC_RANFunctionDefinition = {
 	"E2SM-RC-RANFunctionDefinition",
@@ -226,7 +101,7 @@
 		/sizeof(asn_DEF_E2SM_RC_RANFunctionDefinition_tags_1[0]), /* 1 */
 	{ 0, 0, SEQUENCE_constraint },
 	asn_MBR_E2SM_RC_RANFunctionDefinition_1,
-	3,	/* Elements count */
+	6,	/* Elements count */
 	&asn_SPC_E2SM_RC_RANFunctionDefinition_specs_1	/* Additional specs */
 };
 
diff --git a/e2sm/lib/EN-GNB-ID.c b/e2sm/lib/EN-GNB-ID.c
new file mode 100644
index 0000000..98b8263
--- /dev/null
+++ b/e2sm/lib/EN-GNB-ID.c
@@ -0,0 +1,94 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EN-GNB-ID.h"
+
+static int
+memb_en_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size >= 22 && size <= 32)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_en_gNB_ID_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(22..32)) */};
+static asn_per_constraints_t asn_PER_memb_en_gNB_ID_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 4,  4,  22,  32 }	/* (SIZE(22..32)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_EN_GNB_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_EN_GNB_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EN_GNB_ID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EN_GNB_ID, choice.en_gNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BIT_STRING,
+		0,
+		{ &asn_OER_memb_en_gNB_ID_constr_2, &asn_PER_memb_en_gNB_ID_constr_2,  memb_en_gNB_ID_constraint_1 },
+		0, 0, /* No default value */
+		"en-gNB-ID"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_EN_GNB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* en-gNB-ID */
+};
+asn_CHOICE_specifics_t asn_SPC_EN_GNB_ID_specs_1 = {
+	sizeof(struct EN_GNB_ID),
+	offsetof(struct EN_GNB_ID, _asn_ctx),
+	offsetof(struct EN_GNB_ID, present),
+	sizeof(((struct EN_GNB_ID *)0)->present),
+	asn_MAP_EN_GNB_ID_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0,
+	1	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_EN_GNB_ID = {
+	"EN-GNB-ID",
+	"EN-GNB-ID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_EN_GNB_ID_constr_1, &asn_PER_type_EN_GNB_ID_constr_1, CHOICE_constraint },
+	asn_MBR_EN_GNB_ID_1,
+	1,	/* Elements count */
+	&asn_SPC_EN_GNB_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/ENB-ID-Choice.c b/e2sm/lib/ENB-ID-Choice.c
deleted file mode 100644
index 8ce2abe..0000000
--- a/e2sm/lib/ENB-ID-Choice.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ENB-ID-Choice.h"
-
-static int
-memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(st->size > 0) {
-		/* Size in bits */
-		size = 8 * st->size - (st->bits_unused & 0x07);
-	} else {
-		size = 0;
-	}
-	
-	if((size == 20)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(st->size > 0) {
-		/* Size in bits */
-		size = 8 * st->size - (st->bits_unused & 0x07);
-	} else {
-		size = 0;
-	}
-	
-	if((size == 18)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(st->size > 0) {
-		/* Size in bits */
-		size = 8 * st->size - (st->bits_unused & 0x07);
-	} else {
-		size = 0;
-	}
-	
-	if((size == 21)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_enb_ID_macro_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	20	/* (SIZE(20..20)) */};
-static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  20,  20 }	/* (SIZE(20..20)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	18	/* (SIZE(18..18)) */};
-static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  18,  18 }	/* (SIZE(18..18)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	21	/* (SIZE(21..21)) */};
-static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  21,  21 }	/* (SIZE(21..21)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_BIT_STRING,
-		0,
-		{ &asn_OER_memb_enb_ID_macro_constr_2, &asn_PER_memb_enb_ID_macro_constr_2,  memb_enb_ID_macro_constraint_1 },
-		0, 0, /* No default value */
-		"enb-ID-macro"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_BIT_STRING,
-		0,
-		{ &asn_OER_memb_enb_ID_shortmacro_constr_3, &asn_PER_memb_enb_ID_shortmacro_constr_3,  memb_enb_ID_shortmacro_constraint_1 },
-		0, 0, /* No default value */
-		"enb-ID-shortmacro"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_BIT_STRING,
-		0,
-		{ &asn_OER_memb_enb_ID_longmacro_constr_4, &asn_PER_memb_enb_ID_longmacro_constr_4,  memb_enb_ID_longmacro_constraint_1 },
-		0, 0, /* No default value */
-		"enb-ID-longmacro"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */
-};
-asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = {
-	sizeof(struct ENB_ID_Choice),
-	offsetof(struct ENB_ID_Choice, _asn_ctx),
-	offsetof(struct ENB_ID_Choice, present),
-	sizeof(((struct ENB_ID_Choice *)0)->present),
-	asn_MAP_ENB_ID_Choice_tag2el_1,
-	3,	/* Count of tags in the map */
-	0, 0,
-	3	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = {
-	"ENB-ID-Choice",
-	"ENB-ID-Choice",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_ENB_ID_Choice_constr_1, &asn_PER_type_ENB_ID_Choice_constr_1, CHOICE_constraint },
-	asn_MBR_ENB_ID_Choice_1,
-	3,	/* Elements count */
-	&asn_SPC_ENB_ID_Choice_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ENB-ID.c b/e2sm/lib/ENB-ID.c
index e2a5f89..faab5f7 100644
--- a/e2sm/lib/ENB-ID.c
+++ b/e2sm/lib/ENB-ID.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/ENB-UE-X2AP-ID-Extension.c b/e2sm/lib/ENB-UE-X2AP-ID-Extension.c
new file mode 100644
index 0000000..d9f8c31
--- /dev/null
+++ b/e2sm/lib/ENB-UE-X2AP-ID-Extension.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "ENB-UE-X2AP-ID-Extension.h"
+
+int
+ENB_UE_X2AP_ID_Extension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 4095)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  12,  12,  0,  4095 }	/* (0..4095,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension = {
+	"ENB-UE-X2AP-ID-Extension",
+	"ENB-UE-X2AP-ID-Extension",
+	&asn_OP_NativeInteger,
+	asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1,
+	sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1)
+		/sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */
+	asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1)
+		/sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */
+	{ &asn_OER_type_ENB_UE_X2AP_ID_Extension_constr_1, &asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1, ENB_UE_X2AP_ID_Extension_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/ENB-UE-X2AP-ID.c b/e2sm/lib/ENB-UE-X2AP-ID.c
new file mode 100644
index 0000000..8af2e3f
--- /dev/null
+++ b/e2sm/lib/ENB-UE-X2AP-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "ENB-UE-X2AP-ID.h"
+
+int
+ENB_UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 4095)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = {
+	{ 2, 1 }	/* (0..4095) */,
+	-1};
+asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 12,  12,  0,  4095 }	/* (0..4095) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID = {
+	"ENB-UE-X2AP-ID",
+	"ENB-UE-X2AP-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_ENB_UE_X2AP_ID_tags_1,
+	sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1)
+		/sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */
+	asn_DEF_ENB_UE_X2AP_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1)
+		/sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_ENB_UE_X2AP_ID_constr_1, &asn_PER_type_ENB_UE_X2AP_ID_constr_1, ENB_UE_X2AP_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/EPC-CUUP-PM-Format.c b/e2sm/lib/EPC-CUUP-PM-Format.c
deleted file mode 100644
index 5fb414a..0000000
--- a/e2sm/lib/EPC-CUUP-PM-Format.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "EPC-CUUP-PM-Format.h"
-
-#include "PerQCIReportListItemFormat.h"
-static int
-memb_perQCIReportList_cuup_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 256)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_perQCIReportList_cuup_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..256)) */};
-static asn_per_constraints_t asn_PER_type_perQCIReportList_cuup_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 8,  8,  1,  256 }	/* (SIZE(1..256)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_perQCIReportList_cuup_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..256)) */};
-static asn_per_constraints_t asn_PER_memb_perQCIReportList_cuup_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 8,  8,  1,  256 }	/* (SIZE(1..256)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_perQCIReportList_cuup_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PerQCIReportListItemFormat,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_perQCIReportList_cuup_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_perQCIReportList_cuup_specs_2 = {
-	sizeof(struct EPC_CUUP_PM_Format__perQCIReportList_cuup),
-	offsetof(struct EPC_CUUP_PM_Format__perQCIReportList_cuup, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_perQCIReportList_cuup_2 = {
-	"perQCIReportList-cuup",
-	"perQCIReportList-cuup",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_perQCIReportList_cuup_tags_2,
-	sizeof(asn_DEF_perQCIReportList_cuup_tags_2)
-		/sizeof(asn_DEF_perQCIReportList_cuup_tags_2[0]) - 1, /* 1 */
-	asn_DEF_perQCIReportList_cuup_tags_2,	/* Same as above */
-	sizeof(asn_DEF_perQCIReportList_cuup_tags_2)
-		/sizeof(asn_DEF_perQCIReportList_cuup_tags_2[0]), /* 2 */
-	{ &asn_OER_type_perQCIReportList_cuup_constr_2, &asn_PER_type_perQCIReportList_cuup_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_perQCIReportList_cuup_2,
-	1,	/* Single element */
-	&asn_SPC_perQCIReportList_cuup_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_EPC_CUUP_PM_Format_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct EPC_CUUP_PM_Format, perQCIReportList_cuup),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_perQCIReportList_cuup_2,
-		0,
-		{ &asn_OER_memb_perQCIReportList_cuup_constr_2, &asn_PER_memb_perQCIReportList_cuup_constr_2,  memb_perQCIReportList_cuup_constraint_1 },
-		0, 0, /* No default value */
-		"perQCIReportList-cuup"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_EPC_CUUP_PM_Format_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_EPC_CUUP_PM_Format_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* perQCIReportList-cuup */
-};
-asn_SEQUENCE_specifics_t asn_SPC_EPC_CUUP_PM_Format_specs_1 = {
-	sizeof(struct EPC_CUUP_PM_Format),
-	offsetof(struct EPC_CUUP_PM_Format, _asn_ctx),
-	asn_MAP_EPC_CUUP_PM_Format_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_EPC_CUUP_PM_Format = {
-	"EPC-CUUP-PM-Format",
-	"EPC-CUUP-PM-Format",
-	&asn_OP_SEQUENCE,
-	asn_DEF_EPC_CUUP_PM_Format_tags_1,
-	sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1)
-		/sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1[0]), /* 1 */
-	asn_DEF_EPC_CUUP_PM_Format_tags_1,	/* Same as above */
-	sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1)
-		/sizeof(asn_DEF_EPC_CUUP_PM_Format_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_EPC_CUUP_PM_Format_1,
-	1,	/* Elements count */
-	&asn_SPC_EPC_CUUP_PM_Format_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/EPC-DU-PM-Container.c b/e2sm/lib/EPC-DU-PM-Container.c
deleted file mode 100644
index 801080e..0000000
--- a/e2sm/lib/EPC-DU-PM-Container.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "EPC-DU-PM-Container.h"
-
-#include "PerQCIReportListItem.h"
-static int
-memb_perQCIReportList_du_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 256)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_perQCIReportList_du_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..256)) */};
-static asn_per_constraints_t asn_PER_type_perQCIReportList_du_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 8,  8,  1,  256 }	/* (SIZE(1..256)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_perQCIReportList_du_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..256)) */};
-static asn_per_constraints_t asn_PER_memb_perQCIReportList_du_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 8,  8,  1,  256 }	/* (SIZE(1..256)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_perQCIReportList_du_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PerQCIReportListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_perQCIReportList_du_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_perQCIReportList_du_specs_2 = {
-	sizeof(struct EPC_DU_PM_Container__perQCIReportList_du),
-	offsetof(struct EPC_DU_PM_Container__perQCIReportList_du, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_perQCIReportList_du_2 = {
-	"perQCIReportList-du",
-	"perQCIReportList-du",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_perQCIReportList_du_tags_2,
-	sizeof(asn_DEF_perQCIReportList_du_tags_2)
-		/sizeof(asn_DEF_perQCIReportList_du_tags_2[0]) - 1, /* 1 */
-	asn_DEF_perQCIReportList_du_tags_2,	/* Same as above */
-	sizeof(asn_DEF_perQCIReportList_du_tags_2)
-		/sizeof(asn_DEF_perQCIReportList_du_tags_2[0]), /* 2 */
-	{ &asn_OER_type_perQCIReportList_du_constr_2, &asn_PER_type_perQCIReportList_du_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_perQCIReportList_du_2,
-	1,	/* Single element */
-	&asn_SPC_perQCIReportList_du_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_EPC_DU_PM_Container_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct EPC_DU_PM_Container, perQCIReportList_du),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_perQCIReportList_du_2,
-		0,
-		{ &asn_OER_memb_perQCIReportList_du_constr_2, &asn_PER_memb_perQCIReportList_du_constr_2,  memb_perQCIReportList_du_constraint_1 },
-		0, 0, /* No default value */
-		"perQCIReportList-du"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_EPC_DU_PM_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_EPC_DU_PM_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* perQCIReportList-du */
-};
-asn_SEQUENCE_specifics_t asn_SPC_EPC_DU_PM_Container_specs_1 = {
-	sizeof(struct EPC_DU_PM_Container),
-	offsetof(struct EPC_DU_PM_Container, _asn_ctx),
-	asn_MAP_EPC_DU_PM_Container_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_EPC_DU_PM_Container = {
-	"EPC-DU-PM-Container",
-	"EPC-DU-PM-Container",
-	&asn_OP_SEQUENCE,
-	asn_DEF_EPC_DU_PM_Container_tags_1,
-	sizeof(asn_DEF_EPC_DU_PM_Container_tags_1)
-		/sizeof(asn_DEF_EPC_DU_PM_Container_tags_1[0]), /* 1 */
-	asn_DEF_EPC_DU_PM_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_EPC_DU_PM_Container_tags_1)
-		/sizeof(asn_DEF_EPC_DU_PM_Container_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_EPC_DU_PM_Container_1,
-	1,	/* Elements count */
-	&asn_SPC_EPC_DU_PM_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/EUTRA-CGI.c b/e2sm/lib/EUTRA-CGI.c
new file mode 100644
index 0000000..985c769
--- /dev/null
+++ b/e2sm/lib/EUTRA-CGI.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EUTRA-CGI.h"
+
+asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, pLMNIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PLMNIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"pLMNIdentity"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, eUTRACellIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EUTRACellIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRACellIdentity"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_CGI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_CGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRACellIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1 = {
+	sizeof(struct EUTRA_CGI),
+	offsetof(struct EUTRA_CGI, _asn_ctx),
+	asn_MAP_EUTRA_CGI_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI = {
+	"EUTRA-CGI",
+	"EUTRA-CGI",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EUTRA_CGI_tags_1,
+	sizeof(asn_DEF_EUTRA_CGI_tags_1)
+		/sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */
+	asn_DEF_EUTRA_CGI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EUTRA_CGI_tags_1)
+		/sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EUTRA_CGI_1,
+	2,	/* Elements count */
+	&asn_SPC_EUTRA_CGI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EUTRACellIdentity.c b/e2sm/lib/EUTRACellIdentity.c
new file mode 100644
index 0000000..cefaeb9
--- /dev/null
+++ b/e2sm/lib/EUTRACellIdentity.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EUTRACellIdentity.h"
+
+int
+EUTRACellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 28)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	28	/* (SIZE(28..28)) */};
+asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  28,  28 }	/* (SIZE(28..28)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_EUTRACellIdentity_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity = {
+	"EUTRACellIdentity",
+	"EUTRACellIdentity",
+	&asn_OP_BIT_STRING,
+	asn_DEF_EUTRACellIdentity_tags_1,
+	sizeof(asn_DEF_EUTRACellIdentity_tags_1)
+		/sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */
+	asn_DEF_EUTRACellIdentity_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EUTRACellIdentity_tags_1)
+		/sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */
+	{ &asn_OER_type_EUTRACellIdentity_constr_1, &asn_PER_type_EUTRACellIdentity_constr_1, EUTRACellIdentity_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_BIT_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-Cell-Info-Item-Choice-Group.c b/e2sm/lib/EventTrigger-Cell-Info-Item-Choice-Group.c
new file mode 100644
index 0000000..2f6269f
--- /dev/null
+++ b/e2sm/lib/EventTrigger-Cell-Info-Item-Choice-Group.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-Cell-Info-Item-Choice-Group.h"
+
+asn_TYPE_member_t asn_MBR_EventTrigger_Cell_Info_Item_Choice_Group_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_Cell_Info_Item_Choice_Group, ranParameterTesting),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameterTesting"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_Cell_Info_Item_Choice_Group_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameterTesting */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_Cell_Info_Item_Choice_Group_specs_1 = {
+	sizeof(struct EventTrigger_Cell_Info_Item_Choice_Group),
+	offsetof(struct EventTrigger_Cell_Info_Item_Choice_Group, _asn_ctx),
+	asn_MAP_EventTrigger_Cell_Info_Item_Choice_Group_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group = {
+	"EventTrigger-Cell-Info-Item-Choice-Group",
+	"EventTrigger-Cell-Info-Item-Choice-Group",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1,
+	sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_Cell_Info_Item_Choice_Group_1,
+	1,	/* Elements count */
+	&asn_SPC_EventTrigger_Cell_Info_Item_Choice_Group_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-Cell-Info-Item-Choice-Individual.c b/e2sm/lib/EventTrigger-Cell-Info-Item-Choice-Individual.c
new file mode 100644
index 0000000..1cf5866
--- /dev/null
+++ b/e2sm/lib/EventTrigger-Cell-Info-Item-Choice-Individual.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-Cell-Info-Item-Choice-Individual.h"
+
+asn_TYPE_member_t asn_MBR_EventTrigger_Cell_Info_Item_Choice_Individual_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_Cell_Info_Item_Choice_Individual, cellGlobalID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellGlobalID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_Cell_Info_Item_Choice_Individual_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellGlobalID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_Cell_Info_Item_Choice_Individual_specs_1 = {
+	sizeof(struct EventTrigger_Cell_Info_Item_Choice_Individual),
+	offsetof(struct EventTrigger_Cell_Info_Item_Choice_Individual, _asn_ctx),
+	asn_MAP_EventTrigger_Cell_Info_Item_Choice_Individual_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual = {
+	"EventTrigger-Cell-Info-Item-Choice-Individual",
+	"EventTrigger-Cell-Info-Item-Choice-Individual",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1,
+	sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_Cell_Info_Item_Choice_Individual_1,
+	1,	/* Elements count */
+	&asn_SPC_EventTrigger_Cell_Info_Item_Choice_Individual_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-Cell-Info-Item.c b/e2sm/lib/EventTrigger-Cell-Info-Item.c
new file mode 100644
index 0000000..e96053a
--- /dev/null
+++ b/e2sm/lib/EventTrigger-Cell-Info-Item.c
@@ -0,0 +1,131 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-Cell-Info-Item.h"
+
+#include "EventTrigger-Cell-Info-Item-Choice-Individual.h"
+#include "EventTrigger-Cell-Info-Item-Choice-Group.h"
+static asn_oer_constraints_t asn_OER_type_cellType_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_cellType_constr_3 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellType_3[] = {
+	{ ATF_POINTER, 0, offsetof(struct EventTrigger_Cell_Info_Item__cellType, choice.cellType_Choice_Individual),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_Cell_Info_Item_Choice_Individual,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellType-Choice-Individual"
+		},
+	{ ATF_POINTER, 0, offsetof(struct EventTrigger_Cell_Info_Item__cellType, choice.cellType_Choice_Group),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_Cell_Info_Item_Choice_Group,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellType-Choice-Group"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_cellType_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellType-Choice-Individual */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cellType-Choice-Group */
+};
+static asn_CHOICE_specifics_t asn_SPC_cellType_specs_3 = {
+	sizeof(struct EventTrigger_Cell_Info_Item__cellType),
+	offsetof(struct EventTrigger_Cell_Info_Item__cellType, _asn_ctx),
+	offsetof(struct EventTrigger_Cell_Info_Item__cellType, present),
+	sizeof(((struct EventTrigger_Cell_Info_Item__cellType *)0)->present),
+	asn_MAP_cellType_tag2el_3,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellType_3 = {
+	"cellType",
+	"cellType",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_cellType_constr_3, &asn_PER_type_cellType_constr_3, CHOICE_constraint },
+	asn_MBR_cellType_3,
+	2,	/* Elements count */
+	&asn_SPC_cellType_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTrigger_Cell_Info_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_Cell_Info_Item, eventTriggerCellID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTrigger_Cell_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTriggerCellID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_Cell_Info_Item, cellType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_cellType_3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"cellType"
+		},
+	{ ATF_POINTER, 1, offsetof(struct EventTrigger_Cell_Info_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_EventTrigger_Cell_Info_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_EventTrigger_Cell_Info_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_Cell_Info_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventTriggerCellID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_Cell_Info_Item_specs_1 = {
+	sizeof(struct EventTrigger_Cell_Info_Item),
+	offsetof(struct EventTrigger_Cell_Info_Item, _asn_ctx),
+	asn_MAP_EventTrigger_Cell_Info_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_EventTrigger_Cell_Info_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_Cell_Info_Item = {
+	"EventTrigger-Cell-Info-Item",
+	"EventTrigger-Cell-Info-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_Cell_Info_Item_tags_1,
+	sizeof(asn_DEF_EventTrigger_Cell_Info_Item_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_Item_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_Cell_Info_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_Cell_Info_Item_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_Cell_Info_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_EventTrigger_Cell_Info_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-Cell-Info.c b/e2sm/lib/EventTrigger-Cell-Info.c
new file mode 100644
index 0000000..30273f7
--- /dev/null
+++ b/e2sm/lib/EventTrigger-Cell-Info.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-Cell-Info.h"
+
+#include "EventTrigger-Cell-Info-Item.h"
+static int
+memb_cellInfo_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_cellInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellInfo_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_EventTrigger_Cell_Info_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_cellInfo_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellInfo_List_specs_2 = {
+	sizeof(struct EventTrigger_Cell_Info__cellInfo_List),
+	offsetof(struct EventTrigger_Cell_Info__cellInfo_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellInfo_List_2 = {
+	"cellInfo-List",
+	"cellInfo-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_cellInfo_List_tags_2,
+	sizeof(asn_DEF_cellInfo_List_tags_2)
+		/sizeof(asn_DEF_cellInfo_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_cellInfo_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_cellInfo_List_tags_2)
+		/sizeof(asn_DEF_cellInfo_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_cellInfo_List_constr_2, &asn_PER_type_cellInfo_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_cellInfo_List_2,
+	1,	/* Single element */
+	&asn_SPC_cellInfo_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTrigger_Cell_Info_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_Cell_Info, cellInfo_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_cellInfo_List_2,
+		0,
+		{ &asn_OER_memb_cellInfo_List_constr_2, &asn_PER_memb_cellInfo_List_constr_2,  memb_cellInfo_List_constraint_1 },
+		0, 0, /* No default value */
+		"cellInfo-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_Cell_Info_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_Cell_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellInfo-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_Cell_Info_specs_1 = {
+	sizeof(struct EventTrigger_Cell_Info),
+	offsetof(struct EventTrigger_Cell_Info, _asn_ctx),
+	asn_MAP_EventTrigger_Cell_Info_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_Cell_Info = {
+	"EventTrigger-Cell-Info",
+	"EventTrigger-Cell-Info",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_Cell_Info_tags_1,
+	sizeof(asn_DEF_EventTrigger_Cell_Info_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_Cell_Info_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_Cell_Info_tags_1)
+		/sizeof(asn_DEF_EventTrigger_Cell_Info_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_Cell_Info_1,
+	1,	/* Elements count */
+	&asn_SPC_EventTrigger_Cell_Info_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-UE-Info-Item-Choice-Group.c b/e2sm/lib/EventTrigger-UE-Info-Item-Choice-Group.c
new file mode 100644
index 0000000..d819bc1
--- /dev/null
+++ b/e2sm/lib/EventTrigger-UE-Info-Item-Choice-Group.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-UE-Info-Item-Choice-Group.h"
+
+asn_TYPE_member_t asn_MBR_EventTrigger_UE_Info_Item_Choice_Group_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UE_Info_Item_Choice_Group, ranParameterTesting),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameterTesting"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_UE_Info_Item_Choice_Group_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameterTesting */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UE_Info_Item_Choice_Group_specs_1 = {
+	sizeof(struct EventTrigger_UE_Info_Item_Choice_Group),
+	offsetof(struct EventTrigger_UE_Info_Item_Choice_Group, _asn_ctx),
+	asn_MAP_EventTrigger_UE_Info_Item_Choice_Group_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_UE_Info_Item_Choice_Group = {
+	"EventTrigger-UE-Info-Item-Choice-Group",
+	"EventTrigger-UE-Info-Item-Choice-Group",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1,
+	sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Group_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_UE_Info_Item_Choice_Group_1,
+	1,	/* Elements count */
+	&asn_SPC_EventTrigger_UE_Info_Item_Choice_Group_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-UE-Info-Item-Choice-Individual.c b/e2sm/lib/EventTrigger-UE-Info-Item-Choice-Individual.c
new file mode 100644
index 0000000..d822187
--- /dev/null
+++ b/e2sm/lib/EventTrigger-UE-Info-Item-Choice-Individual.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-UE-Info-Item-Choice-Individual.h"
+
+asn_TYPE_member_t asn_MBR_EventTrigger_UE_Info_Item_Choice_Individual_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UE_Info_Item_Choice_Individual, ueID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_UEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UE_Info_Item_Choice_Individual, ranParameterTesting),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameterTesting"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_UE_Info_Item_Choice_Individual_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameterTesting */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UE_Info_Item_Choice_Individual_specs_1 = {
+	sizeof(struct EventTrigger_UE_Info_Item_Choice_Individual),
+	offsetof(struct EventTrigger_UE_Info_Item_Choice_Individual, _asn_ctx),
+	asn_MAP_EventTrigger_UE_Info_Item_Choice_Individual_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual = {
+	"EventTrigger-UE-Info-Item-Choice-Individual",
+	"EventTrigger-UE-Info-Item-Choice-Individual",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1,
+	sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_UE_Info_Item_Choice_Individual_1,
+	2,	/* Elements count */
+	&asn_SPC_EventTrigger_UE_Info_Item_Choice_Individual_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-UE-Info-Item.c b/e2sm/lib/EventTrigger-UE-Info-Item.c
new file mode 100644
index 0000000..dfb34d0
--- /dev/null
+++ b/e2sm/lib/EventTrigger-UE-Info-Item.c
@@ -0,0 +1,131 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-UE-Info-Item.h"
+
+#include "EventTrigger-UE-Info-Item-Choice-Individual.h"
+#include "EventTrigger-UE-Info-Item-Choice-Group.h"
+static asn_oer_constraints_t asn_OER_type_ueType_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ueType_constr_3 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueType_3[] = {
+	{ ATF_POINTER, 0, offsetof(struct EventTrigger_UE_Info_Item__ueType, choice.ueType_Choice_Individual),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info_Item_Choice_Individual,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueType-Choice-Individual"
+		},
+	{ ATF_POINTER, 0, offsetof(struct EventTrigger_UE_Info_Item__ueType, choice.ueType_Choice_Group),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EventTrigger_UE_Info_Item_Choice_Group,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueType-Choice-Group"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ueType_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueType-Choice-Individual */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ueType-Choice-Group */
+};
+static asn_CHOICE_specifics_t asn_SPC_ueType_specs_3 = {
+	sizeof(struct EventTrigger_UE_Info_Item__ueType),
+	offsetof(struct EventTrigger_UE_Info_Item__ueType, _asn_ctx),
+	offsetof(struct EventTrigger_UE_Info_Item__ueType, present),
+	sizeof(((struct EventTrigger_UE_Info_Item__ueType *)0)->present),
+	asn_MAP_ueType_tag2el_3,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueType_3 = {
+	"ueType",
+	"ueType",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ueType_constr_3, &asn_PER_type_ueType_constr_3, CHOICE_constraint },
+	asn_MBR_ueType_3,
+	2,	/* Elements count */
+	&asn_SPC_ueType_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTrigger_UE_Info_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UE_Info_Item, eventTriggerUEID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTrigger_UE_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eventTriggerUEID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UE_Info_Item, ueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ueType_3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueType"
+		},
+	{ ATF_POINTER, 1, offsetof(struct EventTrigger_UE_Info_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_EventTrigger_UE_Info_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_EventTrigger_UE_Info_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_UE_Info_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventTriggerUEID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ueType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UE_Info_Item_specs_1 = {
+	sizeof(struct EventTrigger_UE_Info_Item),
+	offsetof(struct EventTrigger_UE_Info_Item, _asn_ctx),
+	asn_MAP_EventTrigger_UE_Info_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_EventTrigger_UE_Info_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_UE_Info_Item = {
+	"EventTrigger-UE-Info-Item",
+	"EventTrigger-UE-Info-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_UE_Info_Item_tags_1,
+	sizeof(asn_DEF_EventTrigger_UE_Info_Item_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_Item_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_UE_Info_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_UE_Info_Item_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_UE_Info_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_EventTrigger_UE_Info_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-UE-Info.c b/e2sm/lib/EventTrigger-UE-Info.c
new file mode 100644
index 0000000..85a6492
--- /dev/null
+++ b/e2sm/lib/EventTrigger-UE-Info.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-UE-Info.h"
+
+#include "EventTrigger-UE-Info-Item.h"
+static int
+memb_ueInfo_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ueInfo_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueInfo_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_EventTrigger_UE_Info_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ueInfo_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueInfo_List_specs_2 = {
+	sizeof(struct EventTrigger_UE_Info__ueInfo_List),
+	offsetof(struct EventTrigger_UE_Info__ueInfo_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueInfo_List_2 = {
+	"ueInfo-List",
+	"ueInfo-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ueInfo_List_tags_2,
+	sizeof(asn_DEF_ueInfo_List_tags_2)
+		/sizeof(asn_DEF_ueInfo_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ueInfo_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ueInfo_List_tags_2)
+		/sizeof(asn_DEF_ueInfo_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ueInfo_List_constr_2, &asn_PER_type_ueInfo_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ueInfo_List_2,
+	1,	/* Single element */
+	&asn_SPC_ueInfo_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTrigger_UE_Info_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UE_Info, ueInfo_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ueInfo_List_2,
+		0,
+		{ &asn_OER_memb_ueInfo_List_constr_2, &asn_PER_memb_ueInfo_List_constr_2,  memb_ueInfo_List_constraint_1 },
+		0, 0, /* No default value */
+		"ueInfo-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_UE_Info_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_UE_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueInfo-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UE_Info_specs_1 = {
+	sizeof(struct EventTrigger_UE_Info),
+	offsetof(struct EventTrigger_UE_Info, _asn_ctx),
+	asn_MAP_EventTrigger_UE_Info_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_UE_Info = {
+	"EventTrigger-UE-Info",
+	"EventTrigger-UE-Info",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_UE_Info_tags_1,
+	sizeof(asn_DEF_EventTrigger_UE_Info_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_UE_Info_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_UE_Info_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UE_Info_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_UE_Info_1,
+	1,	/* Elements count */
+	&asn_SPC_EventTrigger_UE_Info_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-UEevent-Info-Item.c b/e2sm/lib/EventTrigger-UEevent-Info-Item.c
new file mode 100644
index 0000000..868fa6b
--- /dev/null
+++ b/e2sm/lib/EventTrigger-UEevent-Info-Item.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-UEevent-Info-Item.h"
+
+asn_TYPE_member_t asn_MBR_EventTrigger_UEevent_Info_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UEevent_Info_Item, ueEventID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_EventTrigger_UEevent_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ueEventID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct EventTrigger_UEevent_Info_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_EventTrigger_UEevent_Info_Item_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_EventTrigger_UEevent_Info_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_UEevent_Info_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueEventID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UEevent_Info_Item_specs_1 = {
+	sizeof(struct EventTrigger_UEevent_Info_Item),
+	offsetof(struct EventTrigger_UEevent_Info_Item, _asn_ctx),
+	asn_MAP_EventTrigger_UEevent_Info_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_EventTrigger_UEevent_Info_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_UEevent_Info_Item = {
+	"EventTrigger-UEevent-Info-Item",
+	"EventTrigger-UEevent-Info-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_UEevent_Info_Item_tags_1,
+	sizeof(asn_DEF_EventTrigger_UEevent_Info_Item_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UEevent_Info_Item_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_UEevent_Info_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_UEevent_Info_Item_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UEevent_Info_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_UEevent_Info_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_EventTrigger_UEevent_Info_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/EventTrigger-UEevent-Info.c b/e2sm/lib/EventTrigger-UEevent-Info.c
new file mode 100644
index 0000000..77a5ed7
--- /dev/null
+++ b/e2sm/lib/EventTrigger-UEevent-Info.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "EventTrigger-UEevent-Info.h"
+
+#include "EventTrigger-UEevent-Info-Item.h"
+static int
+memb_ueEvent_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ueEvent_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ueEvent_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ueEvent_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ueEvent_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ueEvent_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_EventTrigger_UEevent_Info_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ueEvent_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ueEvent_List_specs_2 = {
+	sizeof(struct EventTrigger_UEevent_Info__ueEvent_List),
+	offsetof(struct EventTrigger_UEevent_Info__ueEvent_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ueEvent_List_2 = {
+	"ueEvent-List",
+	"ueEvent-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ueEvent_List_tags_2,
+	sizeof(asn_DEF_ueEvent_List_tags_2)
+		/sizeof(asn_DEF_ueEvent_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ueEvent_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ueEvent_List_tags_2)
+		/sizeof(asn_DEF_ueEvent_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ueEvent_List_constr_2, &asn_PER_type_ueEvent_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ueEvent_List_2,
+	1,	/* Single element */
+	&asn_SPC_ueEvent_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTrigger_UEevent_Info_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct EventTrigger_UEevent_Info, ueEvent_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ueEvent_List_2,
+		0,
+		{ &asn_OER_memb_ueEvent_List_constr_2, &asn_PER_memb_ueEvent_List_constr_2,  memb_ueEvent_List_constraint_1 },
+		0, 0, /* No default value */
+		"ueEvent-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_EventTrigger_UEevent_Info_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTrigger_UEevent_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueEvent-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTrigger_UEevent_Info_specs_1 = {
+	sizeof(struct EventTrigger_UEevent_Info),
+	offsetof(struct EventTrigger_UEevent_Info, _asn_ctx),
+	asn_MAP_EventTrigger_UEevent_Info_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTrigger_UEevent_Info = {
+	"EventTrigger-UEevent-Info",
+	"EventTrigger-UEevent-Info",
+	&asn_OP_SEQUENCE,
+	asn_DEF_EventTrigger_UEevent_Info_tags_1,
+	sizeof(asn_DEF_EventTrigger_UEevent_Info_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UEevent_Info_tags_1[0]), /* 1 */
+	asn_DEF_EventTrigger_UEevent_Info_tags_1,	/* Same as above */
+	sizeof(asn_DEF_EventTrigger_UEevent_Info_tags_1)
+		/sizeof(asn_DEF_EventTrigger_UEevent_Info_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_EventTrigger_UEevent_Info_1,
+	1,	/* Elements count */
+	&asn_SPC_EventTrigger_UEevent_Info_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/FGC-CUUP-PM-Format.c b/e2sm/lib/FGC-CUUP-PM-Format.c
deleted file mode 100644
index 634e092..0000000
--- a/e2sm/lib/FGC-CUUP-PM-Format.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "FGC-CUUP-PM-Format.h"
-
-#include "SliceToReportListItem.h"
-static int
-memb_sliceToReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 1024)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_sliceToReportList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..1024)) */};
-static asn_per_constraints_t asn_PER_type_sliceToReportList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 10,  10,  1,  1024 }	/* (SIZE(1..1024)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sliceToReportList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..1024)) */};
-static asn_per_constraints_t asn_PER_memb_sliceToReportList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 10,  10,  1,  1024 }	/* (SIZE(1..1024)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_sliceToReportList_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_SliceToReportListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_sliceToReportList_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sliceToReportList_specs_2 = {
-	sizeof(struct FGC_CUUP_PM_Format__sliceToReportList),
-	offsetof(struct FGC_CUUP_PM_Format__sliceToReportList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sliceToReportList_2 = {
-	"sliceToReportList",
-	"sliceToReportList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_sliceToReportList_tags_2,
-	sizeof(asn_DEF_sliceToReportList_tags_2)
-		/sizeof(asn_DEF_sliceToReportList_tags_2[0]) - 1, /* 1 */
-	asn_DEF_sliceToReportList_tags_2,	/* Same as above */
-	sizeof(asn_DEF_sliceToReportList_tags_2)
-		/sizeof(asn_DEF_sliceToReportList_tags_2[0]), /* 2 */
-	{ &asn_OER_type_sliceToReportList_constr_2, &asn_PER_type_sliceToReportList_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_sliceToReportList_2,
-	1,	/* Single element */
-	&asn_SPC_sliceToReportList_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_FGC_CUUP_PM_Format_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct FGC_CUUP_PM_Format, sliceToReportList),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_sliceToReportList_2,
-		0,
-		{ &asn_OER_memb_sliceToReportList_constr_2, &asn_PER_memb_sliceToReportList_constr_2,  memb_sliceToReportList_constraint_1 },
-		0, 0, /* No default value */
-		"sliceToReportList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_FGC_CUUP_PM_Format_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_FGC_CUUP_PM_Format_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* sliceToReportList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_FGC_CUUP_PM_Format_specs_1 = {
-	sizeof(struct FGC_CUUP_PM_Format),
-	offsetof(struct FGC_CUUP_PM_Format, _asn_ctx),
-	asn_MAP_FGC_CUUP_PM_Format_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_FGC_CUUP_PM_Format = {
-	"FGC-CUUP-PM-Format",
-	"FGC-CUUP-PM-Format",
-	&asn_OP_SEQUENCE,
-	asn_DEF_FGC_CUUP_PM_Format_tags_1,
-	sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1)
-		/sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1[0]), /* 1 */
-	asn_DEF_FGC_CUUP_PM_Format_tags_1,	/* Same as above */
-	sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1)
-		/sizeof(asn_DEF_FGC_CUUP_PM_Format_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_FGC_CUUP_PM_Format_1,
-	1,	/* Elements count */
-	&asn_SPC_FGC_CUUP_PM_Format_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/FGC-DU-PM-Container.c b/e2sm/lib/FGC-DU-PM-Container.c
deleted file mode 100644
index 859867f..0000000
--- a/e2sm/lib/FGC-DU-PM-Container.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "FGC-DU-PM-Container.h"
-
-#include "SlicePerPlmnPerCellListItem.h"
-static int
-memb_slicePerPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 1024)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..1024)) */};
-static asn_per_constraints_t asn_PER_type_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 10,  10,  1,  1024 }	/* (SIZE(1..1024)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..1024)) */};
-static asn_per_constraints_t asn_PER_memb_slicePerPlmnPerCellList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 10,  10,  1,  1024 }	/* (SIZE(1..1024)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_slicePerPlmnPerCellList_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_SlicePerPlmnPerCellListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_slicePerPlmnPerCellList_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_slicePerPlmnPerCellList_specs_2 = {
-	sizeof(struct FGC_DU_PM_Container__slicePerPlmnPerCellList),
-	offsetof(struct FGC_DU_PM_Container__slicePerPlmnPerCellList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_slicePerPlmnPerCellList_2 = {
-	"slicePerPlmnPerCellList",
-	"slicePerPlmnPerCellList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_slicePerPlmnPerCellList_tags_2,
-	sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2)
-		/sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2[0]) - 1, /* 1 */
-	asn_DEF_slicePerPlmnPerCellList_tags_2,	/* Same as above */
-	sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2)
-		/sizeof(asn_DEF_slicePerPlmnPerCellList_tags_2[0]), /* 2 */
-	{ &asn_OER_type_slicePerPlmnPerCellList_constr_2, &asn_PER_type_slicePerPlmnPerCellList_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_slicePerPlmnPerCellList_2,
-	1,	/* Single element */
-	&asn_SPC_slicePerPlmnPerCellList_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_FGC_DU_PM_Container_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct FGC_DU_PM_Container, slicePerPlmnPerCellList),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_slicePerPlmnPerCellList_2,
-		0,
-		{ &asn_OER_memb_slicePerPlmnPerCellList_constr_2, &asn_PER_memb_slicePerPlmnPerCellList_constr_2,  memb_slicePerPlmnPerCellList_constraint_1 },
-		0, 0, /* No default value */
-		"slicePerPlmnPerCellList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_FGC_DU_PM_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_FGC_DU_PM_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* slicePerPlmnPerCellList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_FGC_DU_PM_Container_specs_1 = {
-	sizeof(struct FGC_DU_PM_Container),
-	offsetof(struct FGC_DU_PM_Container, _asn_ctx),
-	asn_MAP_FGC_DU_PM_Container_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_FGC_DU_PM_Container = {
-	"FGC-DU-PM-Container",
-	"FGC-DU-PM-Container",
-	&asn_OP_SEQUENCE,
-	asn_DEF_FGC_DU_PM_Container_tags_1,
-	sizeof(asn_DEF_FGC_DU_PM_Container_tags_1)
-		/sizeof(asn_DEF_FGC_DU_PM_Container_tags_1[0]), /* 1 */
-	asn_DEF_FGC_DU_PM_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_FGC_DU_PM_Container_tags_1)
-		/sizeof(asn_DEF_FGC_DU_PM_Container_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_FGC_DU_PM_Container_1,
-	1,	/* Elements count */
-	&asn_SPC_FGC_DU_PM_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/FQIPERSlicesPerPlmnListItem.c b/e2sm/lib/FQIPERSlicesPerPlmnListItem.c
deleted file mode 100644
index e875ee2..0000000
--- a/e2sm/lib/FQIPERSlicesPerPlmnListItem.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "FQIPERSlicesPerPlmnListItem.h"
-
-static int
-memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const INTEGER_t *st = (const INTEGER_t *)sptr;
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(asn_INTEGER2long(st, &value)) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value too large (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if((value >= 0 && value <= 10000000000)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const INTEGER_t *st = (const INTEGER_t *)sptr;
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(asn_INTEGER2long(st, &value)) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value too large (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if((value >= 0 && value <= 10000000000)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  34, -1,  0,  10000000000 }	/* (0..10000000000,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  34, -1,  0,  10000000000 }	/* (0..10000000000,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct FQIPERSlicesPerPlmnListItem, fiveQI),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_FiveQI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"fiveQI"
-		},
-	{ ATF_POINTER, 2, offsetof(struct FQIPERSlicesPerPlmnListItem, pDCPBytesDL),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_INTEGER,
-		0,
-		{ &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3,  memb_pDCPBytesDL_constraint_1 },
-		0, 0, /* No default value */
-		"pDCPBytesDL"
-		},
-	{ ATF_POINTER, 1, offsetof(struct FQIPERSlicesPerPlmnListItem, pDCPBytesUL),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_INTEGER,
-		0,
-		{ &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4,  memb_pDCPBytesUL_constraint_1 },
-		0, 0, /* No default value */
-		"pDCPBytesUL"
-		},
-};
-static const int asn_MAP_FQIPERSlicesPerPlmnListItem_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_FQIPERSlicesPerPlmnListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveQI */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */
-};
-asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1 = {
-	sizeof(struct FQIPERSlicesPerPlmnListItem),
-	offsetof(struct FQIPERSlicesPerPlmnListItem, _asn_ctx),
-	asn_MAP_FQIPERSlicesPerPlmnListItem_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_FQIPERSlicesPerPlmnListItem_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnListItem = {
-	"FQIPERSlicesPerPlmnListItem",
-	"FQIPERSlicesPerPlmnListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1,
-	sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1)
-		/sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[0]), /* 1 */
-	asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1)
-		/sizeof(asn_DEF_FQIPERSlicesPerPlmnListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_FQIPERSlicesPerPlmnListItem_1,
-	3,	/* Elements count */
-	&asn_SPC_FQIPERSlicesPerPlmnListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/FQIPERSlicesPerPlmnPerCellListItem.c b/e2sm/lib/FQIPERSlicesPerPlmnPerCellListItem.c
deleted file mode 100644
index d69f8a1..0000000
--- a/e2sm/lib/FQIPERSlicesPerPlmnPerCellListItem.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "FQIPERSlicesPerPlmnPerCellListItem.h"
-
-static int
-memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 273)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 273)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..273) */,
-	-1};
-static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 9,  9,  0,  273 }	/* (0..273) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..273) */,
-	-1};
-static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 9,  9,  0,  273 }	/* (0..273) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, fiveQI),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_FiveQI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"fiveQI"
-		},
-	{ ATF_POINTER, 2, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, dl_PRBUsage),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3,  memb_dl_PRBUsage_constraint_1 },
-		0, 0, /* No default value */
-		"dl-PRBUsage"
-		},
-	{ ATF_POINTER, 1, offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, ul_PRBUsage),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4,  memb_ul_PRBUsage_constraint_1 },
-		0, 0, /* No default value */
-		"ul-PRBUsage"
-		},
-};
-static const int asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveQI */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */
-};
-asn_SEQUENCE_specifics_t asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1 = {
-	sizeof(struct FQIPERSlicesPerPlmnPerCellListItem),
-	offsetof(struct FQIPERSlicesPerPlmnPerCellListItem, _asn_ctx),
-	asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_FQIPERSlicesPerPlmnPerCellListItem_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_FQIPERSlicesPerPlmnPerCellListItem = {
-	"FQIPERSlicesPerPlmnPerCellListItem",
-	"FQIPERSlicesPerPlmnPerCellListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1,
-	sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1)
-		/sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[0]), /* 1 */
-	asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1)
-		/sizeof(asn_DEF_FQIPERSlicesPerPlmnPerCellListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_FQIPERSlicesPerPlmnPerCellListItem_1,
-	3,	/* Elements count */
-	&asn_SPC_FQIPERSlicesPerPlmnPerCellListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/FiveGS-TAC.c b/e2sm/lib/FiveGS-TAC.c
new file mode 100644
index 0000000..48ff439
--- /dev/null
+++ b/e2sm/lib/FiveGS-TAC.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "FiveGS-TAC.h"
+
+int
+FiveGS_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 3)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_FiveGS_TAC_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	3	/* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_FiveGS_TAC_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  3,  3 }	/* (SIZE(3..3)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FiveGS_TAC_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC = {
+	"FiveGS-TAC",
+	"FiveGS-TAC",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_FiveGS_TAC_tags_1,
+	sizeof(asn_DEF_FiveGS_TAC_tags_1)
+		/sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */
+	asn_DEF_FiveGS_TAC_tags_1,	/* Same as above */
+	sizeof(asn_DEF_FiveGS_TAC_tags_1)
+		/sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */
+	{ &asn_OER_type_FiveGS_TAC_constr_1, &asn_PER_type_FiveGS_TAC_constr_1, FiveGS_TAC_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/FiveQI.c b/e2sm/lib/FiveQI.c
index 15d32c9..c19218b 100644
--- a/e2sm/lib/FiveQI.c
+++ b/e2sm/lib/FiveQI.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/FreqBandNrItem.c b/e2sm/lib/FreqBandNrItem.c
new file mode 100644
index 0000000..d5cff17
--- /dev/null
+++ b/e2sm/lib/FreqBandNrItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "FreqBandNrItem.h"
+
+static int
+memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 1024)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  10,  10,  1,  1024 }	/* (1..1024,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_FreqBandNrItem_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem, freqBandIndicatorNr),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_freqBandIndicatorNr_constr_2, &asn_PER_memb_freqBandIndicatorNr_constr_2,  memb_freqBandIndicatorNr_constraint_1 },
+		0, 0, /* No default value */
+		"freqBandIndicatorNr"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_FreqBandNrItem_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FreqBandNrItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* freqBandIndicatorNr */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_specs_1 = {
+	sizeof(struct FreqBandNrItem),
+	offsetof(struct FreqBandNrItem, _asn_ctx),
+	asn_MAP_FreqBandNrItem_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem = {
+	"FreqBandNrItem",
+	"FreqBandNrItem",
+	&asn_OP_SEQUENCE,
+	asn_DEF_FreqBandNrItem_tags_1,
+	sizeof(asn_DEF_FreqBandNrItem_tags_1)
+		/sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */
+	asn_DEF_FreqBandNrItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_FreqBandNrItem_tags_1)
+		/sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_FreqBandNrItem_1,
+	1,	/* Elements count */
+	&asn_SPC_FreqBandNrItem_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GNB-CU-CP-UE-E1AP-ID.c b/e2sm/lib/GNB-CU-CP-UE-E1AP-ID.c
new file mode 100644
index 0000000..d18a479
--- /dev/null
+++ b/e2sm/lib/GNB-CU-CP-UE-E1AP-ID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+
+int
+GNB_CU_CP_UE_E1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	/* Constraint check succeeded */
+	return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = {
+	{ 4, 1 }	/* (0..4294967295) */,
+	-1};
+asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 32, -1,  0,  4294967295 }	/* (0..4294967295) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1 = {
+	0,	0,	0,	0,	0,
+	0,	/* Native long size */
+	1	/* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID = {
+	"GNB-CU-CP-UE-E1AP-ID",
+	"GNB-CU-CP-UE-E1AP-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1,
+	sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1)
+		/sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */
+	asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1)
+		/sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, &asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, GNB_CU_CP_UE_E1AP_ID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GNB-CU-UE-F1AP-ID.c b/e2sm/lib/GNB-CU-UE-F1AP-ID.c
new file mode 100644
index 0000000..5b6c575
--- /dev/null
+++ b/e2sm/lib/GNB-CU-UE-F1AP-ID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GNB-CU-UE-F1AP-ID.h"
+
+int
+GNB_CU_UE_F1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	/* Constraint check succeeded */
+	return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = {
+	{ 4, 1 }	/* (0..4294967295) */,
+	-1};
+asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 32, -1,  0,  4294967295 }	/* (0..4294967295) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1 = {
+	0,	0,	0,	0,	0,
+	0,	/* Native long size */
+	1	/* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID = {
+	"GNB-CU-UE-F1AP-ID",
+	"GNB-CU-UE-F1AP-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_GNB_CU_UE_F1AP_ID_tags_1,
+	sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1)
+		/sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */
+	asn_DEF_GNB_CU_UE_F1AP_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1)
+		/sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_GNB_CU_UE_F1AP_ID_constr_1, &asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1, GNB_CU_UE_F1AP_ID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_GNB_CU_UE_F1AP_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GNB-CU-UP-ID.c b/e2sm/lib/GNB-CU-UP-ID.c
index a6e0e86..f4c8012 100644
--- a/e2sm/lib/GNB-CU-UP-ID.c
+++ b/e2sm/lib/GNB-CU-UP-ID.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/GNB-DU-ID.c b/e2sm/lib/GNB-DU-ID.c
index bae29c8..3bbd52c 100644
--- a/e2sm/lib/GNB-DU-ID.c
+++ b/e2sm/lib/GNB-DU-ID.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/GNB-ID-Choice.c b/e2sm/lib/GNB-ID-Choice.c
deleted file mode 100644
index 34d5450..0000000
--- a/e2sm/lib/GNB-ID-Choice.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GNB-ID-Choice.h"
-
-static int
-memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(st->size > 0) {
-		/* Size in bits */
-		size = 8 * st->size - (st->bits_unused & 0x07);
-	} else {
-		size = 0;
-	}
-	
-	if((size >= 22 && size <= 32)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_gnb_ID_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(22..32)) */};
-static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 4,  4,  22,  32 }	/* (SIZE(22..32)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_BIT_STRING,
-		0,
-		{ &asn_OER_memb_gnb_ID_constr_2, &asn_PER_memb_gnb_ID_constr_2,  memb_gnb_ID_constraint_1 },
-		0, 0, /* No default value */
-		"gnb-ID"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */
-};
-asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = {
-	sizeof(struct GNB_ID_Choice),
-	offsetof(struct GNB_ID_Choice, _asn_ctx),
-	offsetof(struct GNB_ID_Choice, present),
-	sizeof(((struct GNB_ID_Choice *)0)->present),
-	asn_MAP_GNB_ID_Choice_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0,
-	1	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = {
-	"GNB-ID-Choice",
-	"GNB-ID-Choice",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_GNB_ID_Choice_constr_1, &asn_PER_type_GNB_ID_Choice_constr_1, CHOICE_constraint },
-	asn_MBR_GNB_ID_Choice_1,
-	1,	/* Elements count */
-	&asn_SPC_GNB_ID_Choice_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ENGNB-ID.c b/e2sm/lib/GNB-ID.c
similarity index 69%
rename from e2sm/lib/ENGNB-ID.c
rename to e2sm/lib/GNB-ID.c
index 5577266..ccde106 100644
--- a/e2sm/lib/ENGNB-ID.c
+++ b/e2sm/lib/GNB-ID.c
@@ -1,11 +1,11 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
-#include "ENGNB-ID.h"
+#include "GNB-ID.h"
 
 static int
 memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
@@ -46,16 +46,16 @@
 	{ APC_CONSTRAINED,	 4,  4,  22,  32 }	/* (SIZE(22..32)) */,
 	0, 0	/* No PER value map */
 };
-static asn_oer_constraints_t asn_OER_type_ENGNB_ID_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_GNB_ID_constr_1 CC_NOTUSED = {
 	{ 0, 0 },
 	-1};
-asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = {
+asn_per_constraints_t asn_PER_type_GNB_ID_constr_1 CC_NOTUSED = {
 	{ APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }	/* (0..0,...) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
-asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID),
+asn_TYPE_member_t asn_MBR_GNB_ID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct GNB_ID, choice.gNB_ID),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
 		&asn_DEF_BIT_STRING,
@@ -65,30 +65,30 @@
 		"gNB-ID"
 		},
 };
-static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = {
+static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_tag2el_1[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */
 };
-asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = {
-	sizeof(struct ENGNB_ID),
-	offsetof(struct ENGNB_ID, _asn_ctx),
-	offsetof(struct ENGNB_ID, present),
-	sizeof(((struct ENGNB_ID *)0)->present),
-	asn_MAP_ENGNB_ID_tag2el_1,
+asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1 = {
+	sizeof(struct GNB_ID),
+	offsetof(struct GNB_ID, _asn_ctx),
+	offsetof(struct GNB_ID, present),
+	sizeof(((struct GNB_ID *)0)->present),
+	asn_MAP_GNB_ID_tag2el_1,
 	1,	/* Count of tags in the map */
 	0, 0,
 	1	/* Extensions start */
 };
-asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = {
-	"ENGNB-ID",
-	"ENGNB-ID",
+asn_TYPE_descriptor_t asn_DEF_GNB_ID = {
+	"GNB-ID",
+	"GNB-ID",
 	&asn_OP_CHOICE,
 	0,	/* No effective tags (pointer) */
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	{ &asn_OER_type_ENGNB_ID_constr_1, &asn_PER_type_ENGNB_ID_constr_1, CHOICE_constraint },
-	asn_MBR_ENGNB_ID_1,
+	{ &asn_OER_type_GNB_ID_constr_1, &asn_PER_type_GNB_ID_constr_1, CHOICE_constraint },
+	asn_MBR_GNB_ID_1,
 	1,	/* Elements count */
-	&asn_SPC_ENGNB_ID_specs_1	/* Additional specs */
+	&asn_SPC_GNB_ID_specs_1	/* Additional specs */
 };
 
diff --git a/e2sm/lib/GUAMI.c b/e2sm/lib/GUAMI.c
new file mode 100644
index 0000000..05040f5
--- /dev/null
+++ b/e2sm/lib/GUAMI.c
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GUAMI.h"
+
+asn_TYPE_member_t asn_MBR_GUAMI_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct GUAMI, pLMNIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PLMNIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"pLMNIdentity"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFRegionID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_AMFRegionID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"aMFRegionID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFSetID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_AMFSetID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"aMFSetID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFPointer),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_AMFPointer,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"aMFPointer"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_GUAMI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GUAMI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMFRegionID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aMFSetID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* aMFPointer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1 = {
+	sizeof(struct GUAMI),
+	offsetof(struct GUAMI, _asn_ctx),
+	asn_MAP_GUAMI_tag2el_1,
+	4,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	4,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GUAMI = {
+	"GUAMI",
+	"GUAMI",
+	&asn_OP_SEQUENCE,
+	asn_DEF_GUAMI_tags_1,
+	sizeof(asn_DEF_GUAMI_tags_1)
+		/sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */
+	asn_DEF_GUAMI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_GUAMI_tags_1)
+		/sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_GUAMI_1,
+	4,	/* Elements count */
+	&asn_SPC_GUAMI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GUMMEI.c b/e2sm/lib/GUMMEI.c
new file mode 100644
index 0000000..ac0bf5b
--- /dev/null
+++ b/e2sm/lib/GUMMEI.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GUMMEI.h"
+
+asn_TYPE_member_t asn_MBR_GUMMEI_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct GUMMEI, pLMN_Identity),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PLMNIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"pLMN-Identity"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Group_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_MME_Group_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"mME-Group-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Code),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_MME_Code,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"mME-Code"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_GUMMEI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Group-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* mME-Code */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1 = {
+	sizeof(struct GUMMEI),
+	offsetof(struct GUMMEI, _asn_ctx),
+	asn_MAP_GUMMEI_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GUMMEI = {
+	"GUMMEI",
+	"GUMMEI",
+	&asn_OP_SEQUENCE,
+	asn_DEF_GUMMEI_tags_1,
+	sizeof(asn_DEF_GUMMEI_tags_1)
+		/sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */
+	asn_DEF_GUMMEI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_GUMMEI_tags_1)
+		/sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_GUMMEI_1,
+	3,	/* Elements count */
+	&asn_SPC_GUMMEI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GlobalE2node-ID.c b/e2sm/lib/GlobalE2node-ID.c
deleted file mode 100644
index 07879f0..0000000
--- a/e2sm/lib/GlobalE2node-ID.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalE2node-ID.h"
-
-#include "GlobalE2node-gNB-ID.h"
-#include "GlobalE2node-en-gNB-ID.h"
-#include "GlobalE2node-ng-eNB-ID.h"
-#include "GlobalE2node-eNB-ID.h"
-static asn_oer_constraints_t asn_OER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalE2node_gNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gNB"
-		},
-	{ ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalE2node_en_gNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"en-gNB"
-		},
-	{ ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalE2node_ng_eNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ng-eNB"
-		},
-	{ ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalE2node_eNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"eNB"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */
-};
-asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = {
-	sizeof(struct GlobalE2node_ID),
-	offsetof(struct GlobalE2node_ID, _asn_ctx),
-	offsetof(struct GlobalE2node_ID, present),
-	sizeof(((struct GlobalE2node_ID *)0)->present),
-	asn_MAP_GlobalE2node_ID_tag2el_1,
-	4,	/* Count of tags in the map */
-	0, 0,
-	4	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = {
-	"GlobalE2node-ID",
-	"GlobalE2node-ID",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_GlobalE2node_ID_constr_1, &asn_PER_type_GlobalE2node_ID_constr_1, CHOICE_constraint },
-	asn_MBR_GlobalE2node_ID_1,
-	4,	/* Elements count */
-	&asn_SPC_GlobalE2node_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalE2node-eNB-ID.c b/e2sm/lib/GlobalE2node-eNB-ID.c
deleted file mode 100644
index 5848da9..0000000
--- a/e2sm/lib/GlobalE2node-eNB-ID.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalE2node-eNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalENB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-eNB-ID"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = {
-	sizeof(struct GlobalE2node_eNB_ID),
-	offsetof(struct GlobalE2node_eNB_ID, _asn_ctx),
-	asn_MAP_GlobalE2node_eNB_ID_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = {
-	"GlobalE2node-eNB-ID",
-	"GlobalE2node-eNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalE2node_eNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalE2node_eNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalE2node_eNB_ID_1,
-	1,	/* Elements count */
-	&asn_SPC_GlobalE2node_eNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalE2node-en-gNB-ID.c b/e2sm/lib/GlobalE2node-en-gNB-ID.c
deleted file mode 100644
index 53c81ad..0000000
--- a/e2sm/lib/GlobalE2node-en-gNB-ID.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalE2node-en-gNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_gNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalenGNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-gNB-ID"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = {
-	sizeof(struct GlobalE2node_en_gNB_ID),
-	offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx),
-	asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = {
-	"GlobalE2node-en-gNB-ID",
-	"GlobalE2node-en-gNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalE2node_en_gNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalE2node_en_gNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalE2node_en_gNB_ID_1,
-	1,	/* Elements count */
-	&asn_SPC_GlobalE2node_en_gNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalE2node-gNB-ID.c b/e2sm/lib/GlobalE2node-gNB-ID.c
deleted file mode 100644
index 6be7447..0000000
--- a/e2sm/lib/GlobalE2node-gNB-ID.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalE2node-gNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalgNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-gNB-ID"
-		},
-	{ ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GNB_CU_UP_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gNB-CU-UP-ID"
-		},
-	{ ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GNB_DU_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gNB-DU-ID"
-		},
-};
-static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = {
-	sizeof(struct GlobalE2node_gNB_ID),
-	offsetof(struct GlobalE2node_gNB_ID, _asn_ctx),
-	asn_MAP_GlobalE2node_gNB_ID_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_GlobalE2node_gNB_ID_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = {
-	"GlobalE2node-gNB-ID",
-	"GlobalE2node-gNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalE2node_gNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalE2node_gNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalE2node_gNB_ID_1,
-	3,	/* Elements count */
-	&asn_SPC_GlobalE2node_gNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalE2node-ng-eNB-ID.c b/e2sm/lib/GlobalE2node-ng-eNB-ID.c
deleted file mode 100644
index 8ae9e02..0000000
--- a/e2sm/lib/GlobalE2node-ng-eNB-ID.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalE2node-ng-eNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalngeNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-ng-eNB-ID"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = {
-	sizeof(struct GlobalE2node_ng_eNB_ID),
-	offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx),
-	asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = {
-	"GlobalE2node-ng-eNB-ID",
-	"GlobalE2node-ng-eNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalE2node_ng_eNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalE2node_ng_eNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalE2node_ng_eNB_ID_1,
-	1,	/* Elements count */
-	&asn_SPC_GlobalE2node_ng_eNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalENB-ID.c b/e2sm/lib/GlobalENB-ID.c
index fccb2e0..731c16e 100644
--- a/e2sm/lib/GlobalENB-ID.c
+++ b/e2sm/lib/GlobalENB-ID.c
@@ -1,21 +1,21 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "GlobalENB-ID.h"
 
 asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity),
+	{ ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMNIdentity),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
+		&asn_DEF_PLMNIdentity,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"pLMN-Identity"
+		"pLMNIdentity"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID),
 		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
@@ -31,7 +31,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */
 };
 asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = {
diff --git a/e2sm/lib/GlobalGNB-ID.c b/e2sm/lib/GlobalGNB-ID.c
new file mode 100644
index 0000000..47f17dd
--- /dev/null
+++ b/e2sm/lib/GlobalGNB-ID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GlobalGNB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, pLMNIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PLMNIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"pLMNIdentity"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, gNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_GNB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1 = {
+	sizeof(struct GlobalGNB_ID),
+	offsetof(struct GlobalGNB_ID, _asn_ctx),
+	asn_MAP_GlobalGNB_ID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID = {
+	"GlobalGNB-ID",
+	"GlobalGNB-ID",
+	&asn_OP_SEQUENCE,
+	asn_DEF_GlobalGNB_ID_tags_1,
+	sizeof(asn_DEF_GlobalGNB_ID_tags_1)
+		/sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */
+	asn_DEF_GlobalGNB_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_GlobalGNB_ID_tags_1)
+		/sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_GlobalGNB_ID_1,
+	2,	/* Elements count */
+	&asn_SPC_GlobalGNB_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GlobalKPMnode-ID.c b/e2sm/lib/GlobalKPMnode-ID.c
deleted file mode 100644
index db52419..0000000
--- a/e2sm/lib/GlobalKPMnode-ID.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-IEs"
- * 	found in "E2SM-KPM-Prespec.asn"
- * 	`asn1c -D ./e2sm-kpm -gen-PER`
- */
-
-#include "GlobalKPMnode-ID.h"
-
-static asn_oer_constraints_t asn_OER_type_GlobalKPMnode_ID_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_GlobalKPMnode_ID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_GlobalKPMnode_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.gNB),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalKPMnode_gNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gNB"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.en_gNB),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalKPMnode_en_gNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"en-gNB"
-		},
-
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.ng_eNB),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalKPMnode_ng_eNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ng-eNB"
-		},
-
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ID, choice.eNB),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalKPMnode_eNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"eNB"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */
-};
-asn_CHOICE_specifics_t asn_SPC_GlobalKPMnode_ID_specs_1 = {
-	sizeof(struct GlobalKPMnode_ID),
-	offsetof(struct GlobalKPMnode_ID, _asn_ctx),
-	offsetof(struct GlobalKPMnode_ID, present),
-	sizeof(((struct GlobalKPMnode_ID *)0)->present),
-	asn_MAP_GlobalKPMnode_ID_tag2el_1,
-	4,	/* Count of tags in the map */
-	0, 0,
-	4	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ID = {
-	"GlobalKPMnode-ID",
-	"GlobalKPMnode-ID",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_GlobalKPMnode_ID_constr_1, &asn_PER_type_GlobalKPMnode_ID_constr_1, CHOICE_constraint },
-	asn_MBR_GlobalKPMnode_ID_1,
-	4,	/* Elements count */
-	&asn_SPC_GlobalKPMnode_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalKPMnode-eNB-ID.c b/e2sm/lib/GlobalKPMnode-eNB-ID.c
deleted file mode 100644
index 5d6e935..0000000
--- a/e2sm/lib/GlobalKPMnode-eNB-ID.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-IEs"
- * 	found in "E2SM-KPM-Prespec.asn"
- * 	`asn1c -D ./e2sm-kpm -gen-PER`
- */
-
-#include "GlobalKPMnode-eNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalKPMnode_eNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_eNB_ID, global_eNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalENB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-eNB-ID"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_eNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_eNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_eNB_ID_specs_1 = {
-	sizeof(struct GlobalKPMnode_eNB_ID),
-	offsetof(struct GlobalKPMnode_eNB_ID, _asn_ctx),
-	asn_MAP_GlobalKPMnode_eNB_ID_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_eNB_ID = {
-	"GlobalKPMnode-eNB-ID",
-	"GlobalKPMnode-eNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalKPMnode_eNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalKPMnode_eNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_eNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalKPMnode_eNB_ID_1,
-	1,	/* Elements count */
-	&asn_SPC_GlobalKPMnode_eNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalKPMnode-en-gNB-ID.c b/e2sm/lib/GlobalKPMnode-en-gNB-ID.c
deleted file mode 100644
index 4c4f222..0000000
--- a/e2sm/lib/GlobalKPMnode-en-gNB-ID.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-IEs"
- * 	found in "E2SM-KPM-Prespec.asn"
- * 	`asn1c -D ./e2sm-kpm -gen-PER`
- */
-
-#include "GlobalKPMnode-en-gNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalKPMnode_en_gNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_en_gNB_ID, global_gNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalenGNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-gNB-ID"
-		},
-};
-
-static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_en_gNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1 = {
-	sizeof(struct GlobalKPMnode_en_gNB_ID),
-	offsetof(struct GlobalKPMnode_en_gNB_ID, _asn_ctx),
-	asn_MAP_GlobalKPMnode_en_gNB_ID_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_en_gNB_ID = {
-	"GlobalKPMnode-en-gNB-ID",
-	"GlobalKPMnode-en-gNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_en_gNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalKPMnode_en_gNB_ID_1,
-	1,	/* Elements count */
-	&asn_SPC_GlobalKPMnode_en_gNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalKPMnode-gNB-ID.c b/e2sm/lib/GlobalKPMnode-gNB-ID.c
deleted file mode 100644
index 19f2769..0000000
--- a/e2sm/lib/GlobalKPMnode-gNB-ID.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-IEs"
- * 	found in "E2SM-KPM-Prespec.asn"
- * 	`asn1c -D ./e2sm-kpm -gen-PER`
- */
-
-#include "GlobalKPMnode-gNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalKPMnode_gNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_gNB_ID, global_gNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalgNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-gNB-ID"
-		},
-	{ ATF_POINTER, 2, offsetof(struct GlobalKPMnode_gNB_ID, gNB_CU_UP_ID),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GNB_CU_UP_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gNB-CU-UP-ID"
-		},
-	{ ATF_POINTER, 1, offsetof(struct GlobalKPMnode_gNB_ID, gNB_DU_ID),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GNB_DU_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gNB-DU-ID"
-		},
-};
-static const int asn_MAP_GlobalKPMnode_gNB_ID_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_gNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_gNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_gNB_ID_specs_1 = {
-	sizeof(struct GlobalKPMnode_gNB_ID),
-	offsetof(struct GlobalKPMnode_gNB_ID, _asn_ctx),
-	asn_MAP_GlobalKPMnode_gNB_ID_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_GlobalKPMnode_gNB_ID_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_gNB_ID = {
-	"GlobalKPMnode-gNB-ID",
-	"GlobalKPMnode-gNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalKPMnode_gNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalKPMnode_gNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_gNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalKPMnode_gNB_ID_1,
-	3,	/* Elements count */
-	&asn_SPC_GlobalKPMnode_gNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalKPMnode-ng-eNB-ID.c b/e2sm/lib/GlobalKPMnode-ng-eNB-ID.c
deleted file mode 100644
index 6d04929..0000000
--- a/e2sm/lib/GlobalKPMnode-ng-eNB-ID.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-IEs"
- * 	found in "E2SM-KPM-Prespec.asn"
- * 	`asn1c -D ./e2sm-kpm -gen-PER`
- */
-
-#include "GlobalKPMnode-ng-eNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalKPMnode_ng_eNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalKPMnode_ng_eNB_ID, global_ng_eNB_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_GlobalngeNB_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"global-ng-eNB-ID"
-		},
-};
-
-static const ber_tlv_tag_t asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalKPMnode_ng_eNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1 = {
-	sizeof(struct GlobalKPMnode_ng_eNB_ID),
-	offsetof(struct GlobalKPMnode_ng_eNB_ID, _asn_ctx),
-	asn_MAP_GlobalKPMnode_ng_eNB_ID_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalKPMnode_ng_eNB_ID = {
-	"GlobalKPMnode-ng-eNB-ID",
-	"GlobalKPMnode-ng-eNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalKPMnode_ng_eNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalKPMnode_ng_eNB_ID_1,
-	1,	/* Elements count */
-	&asn_SPC_GlobalKPMnode_ng_eNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalNGRANNodeID.c b/e2sm/lib/GlobalNGRANNodeID.c
new file mode 100644
index 0000000..58de505
--- /dev/null
+++ b/e2sm/lib/GlobalNGRANNodeID.c
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GlobalNGRANNodeID.h"
+
+#include "GlobalGNB-ID.h"
+#include "GlobalNgENB-ID.h"
+static asn_oer_constraints_t asn_OER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.gNB),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalGNB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB"
+		},
+	{ ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.ng_eNB),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalNgENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ng-eNB"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalNGRANNodeID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */
+};
+asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1 = {
+	sizeof(struct GlobalNGRANNodeID),
+	offsetof(struct GlobalNGRANNodeID, _asn_ctx),
+	offsetof(struct GlobalNGRANNodeID, present),
+	sizeof(((struct GlobalNGRANNodeID *)0)->present),
+	asn_MAP_GlobalNGRANNodeID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID = {
+	"GlobalNGRANNodeID",
+	"GlobalNGRANNodeID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_GlobalNGRANNodeID_constr_1, &asn_PER_type_GlobalNGRANNodeID_constr_1, CHOICE_constraint },
+	asn_MBR_GlobalNGRANNodeID_1,
+	2,	/* Elements count */
+	&asn_SPC_GlobalNGRANNodeID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GlobalNgENB-ID.c b/e2sm/lib/GlobalNgENB-ID.c
new file mode 100644
index 0000000..549617a
--- /dev/null
+++ b/e2sm/lib/GlobalNgENB-ID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GlobalNgENB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, pLMNIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PLMNIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"pLMNIdentity"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, ngENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_NgENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ngENB-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_GlobalNgENB_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalNgENB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ngENB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1 = {
+	sizeof(struct GlobalNgENB_ID),
+	offsetof(struct GlobalNgENB_ID, _asn_ctx),
+	asn_MAP_GlobalNgENB_ID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID = {
+	"GlobalNgENB-ID",
+	"GlobalNgENB-ID",
+	&asn_OP_SEQUENCE,
+	asn_DEF_GlobalNgENB_ID_tags_1,
+	sizeof(asn_DEF_GlobalNgENB_ID_tags_1)
+		/sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */
+	asn_DEF_GlobalNgENB_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_GlobalNgENB_ID_tags_1)
+		/sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_GlobalNgENB_ID_1,
+	2,	/* Elements count */
+	&asn_SPC_GlobalNgENB_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/GlobalenGNB-ID.c b/e2sm/lib/GlobalenGNB-ID.c
index 1824a11..887b8a4 100644
--- a/e2sm/lib/GlobalenGNB-ID.c
+++ b/e2sm/lib/GlobalenGNB-ID.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -11,20 +11,20 @@
 	{ ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, pLMN_Identity),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
+		&asn_DEF_PLMNIdentity,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
 		"pLMN-Identity"
 		},
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, gNB_ID),
+	{ ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, en_gNB_ID),
 		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_ENGNB_ID,
+		&asn_DEF_EN_GNB_ID,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"gNB-ID"
+		"en-gNB-ID"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_GlobalenGNB_ID_tags_1[] = {
@@ -32,7 +32,7 @@
 };
 static const asn_TYPE_tag2member_t asn_MAP_GlobalenGNB_ID_tag2el_1[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* en-gNB-ID */
 };
 asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1 = {
 	sizeof(struct GlobalenGNB_ID),
diff --git a/e2sm/lib/GlobalgNB-ID.c b/e2sm/lib/GlobalgNB-ID.c
deleted file mode 100644
index 40d7462..0000000
--- a/e2sm/lib/GlobalgNB-ID.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalgNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"plmn-id"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_GNB_ID_Choice,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"gnb-id"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = {
-	sizeof(struct GlobalgNB_ID),
-	offsetof(struct GlobalgNB_ID, _asn_ctx),
-	asn_MAP_GlobalgNB_ID_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = {
-	"GlobalgNB-ID",
-	"GlobalgNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalgNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalgNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalgNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalgNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalgNB_ID_1,
-	2,	/* Elements count */
-	&asn_SPC_GlobalgNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GlobalngeNB-ID.c b/e2sm/lib/GlobalngeNB-ID.c
deleted file mode 100644
index 91873a1..0000000
--- a/e2sm/lib/GlobalngeNB-ID.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "GlobalngeNB-ID.h"
-
-asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"plmn-id"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_ENB_ID_Choice,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"enb-id"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */
-};
-asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = {
-	sizeof(struct GlobalngeNB_ID),
-	offsetof(struct GlobalngeNB_ID, _asn_ctx),
-	asn_MAP_GlobalngeNB_ID_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = {
-	"GlobalngeNB-ID",
-	"GlobalngeNB-ID",
-	&asn_OP_SEQUENCE,
-	asn_DEF_GlobalngeNB_ID_tags_1,
-	sizeof(asn_DEF_GlobalngeNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */
-	asn_DEF_GlobalngeNB_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_GlobalngeNB_ID_tags_1)
-		/sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_GlobalngeNB_ID_1,
-	2,	/* Elements count */
-	&asn_SPC_GlobalngeNB_ID_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/GroupID.c b/e2sm/lib/GroupID.c
new file mode 100644
index 0000000..4fe3f18
--- /dev/null
+++ b/e2sm/lib/GroupID.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "GroupID.h"
+
+static asn_oer_constraints_t asn_OER_type_GroupID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_GroupID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_GroupID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct GroupID, choice.fiveGC),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_FiveQI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"fiveGC"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct GroupID, choice.ePC),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_QCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ePC"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_GroupID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveGC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ePC */
+};
+static asn_CHOICE_specifics_t asn_SPC_GroupID_specs_1 = {
+	sizeof(struct GroupID),
+	offsetof(struct GroupID, _asn_ctx),
+	offsetof(struct GroupID, present),
+	sizeof(((struct GroupID *)0)->present),
+	asn_MAP_GroupID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GroupID = {
+	"GroupID",
+	"GroupID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_GroupID_constr_1, &asn_PER_type_GroupID_constr_1, CHOICE_constraint },
+	asn_MBR_GroupID_1,
+	2,	/* Elements count */
+	&asn_SPC_GroupID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/IndexToRFSP.c b/e2sm/lib/IndexToRFSP.c
new file mode 100644
index 0000000..cd7b378
--- /dev/null
+++ b/e2sm/lib/IndexToRFSP.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "IndexToRFSP.h"
+
+int
+IndexToRFSP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 256)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_IndexToRFSP_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_IndexToRFSP_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  256 }	/* (1..256,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_IndexToRFSP_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IndexToRFSP = {
+	"IndexToRFSP",
+	"IndexToRFSP",
+	&asn_OP_NativeInteger,
+	asn_DEF_IndexToRFSP_tags_1,
+	sizeof(asn_DEF_IndexToRFSP_tags_1)
+		/sizeof(asn_DEF_IndexToRFSP_tags_1[0]), /* 1 */
+	asn_DEF_IndexToRFSP_tags_1,	/* Same as above */
+	sizeof(asn_DEF_IndexToRFSP_tags_1)
+		/sizeof(asn_DEF_IndexToRFSP_tags_1[0]), /* 1 */
+	{ &asn_OER_type_IndexToRFSP_constr_1, &asn_PER_type_IndexToRFSP_constr_1, IndexToRFSP_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/InsertIndication-RANParameter-Item.c b/e2sm/lib/InsertIndication-RANParameter-Item.c
new file mode 100644
index 0000000..0577b21
--- /dev/null
+++ b/e2sm/lib/InsertIndication-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InsertIndication-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_InsertIndication_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InsertIndication_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct InsertIndication_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct InsertIndication_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_InsertIndication_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_InsertIndication_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InsertIndication_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InsertIndication_RANParameter_Item_specs_1 = {
+	sizeof(struct InsertIndication_RANParameter_Item),
+	offsetof(struct InsertIndication_RANParameter_Item, _asn_ctx),
+	asn_MAP_InsertIndication_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_InsertIndication_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InsertIndication_RANParameter_Item = {
+	"InsertIndication-RANParameter-Item",
+	"InsertIndication-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InsertIndication_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_InsertIndication_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_InsertIndication_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_InsertIndication_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InsertIndication_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_InsertIndication_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InsertIndication_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_InsertIndication_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/Interface-MessageID.c b/e2sm/lib/Interface-MessageID.c
new file mode 100644
index 0000000..6f78561
--- /dev/null
+++ b/e2sm/lib/Interface-MessageID.c
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "Interface-MessageID.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_messageType_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_messageType_constr_3 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_messageType_value2enum_3[] = {
+	{ 0,	17,	"initiatingMessage" },
+	{ 1,	17,	"successfulOutcome" },
+	{ 2,	19,	"unsuccessfulOutcome" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_messageType_enum2value_3[] = {
+	0,	/* initiatingMessage(0) */
+	1,	/* successfulOutcome(1) */
+	2	/* unsuccessfulOutcome(2) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_messageType_specs_3 = {
+	asn_MAP_messageType_value2enum_3,	/* "tag" => N; sorted by tag */
+	asn_MAP_messageType_enum2value_3,	/* N => "tag"; sorted by N */
+	3,	/* Number of elements in the maps */
+	4,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_messageType_tags_3[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageType_3 = {
+	"messageType",
+	"messageType",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_messageType_tags_3,
+	sizeof(asn_DEF_messageType_tags_3)
+		/sizeof(asn_DEF_messageType_tags_3[0]) - 1, /* 1 */
+	asn_DEF_messageType_tags_3,	/* Same as above */
+	sizeof(asn_DEF_messageType_tags_3)
+		/sizeof(asn_DEF_messageType_tags_3[0]), /* 2 */
+	{ &asn_OER_type_messageType_constr_3, &asn_PER_type_messageType_constr_3, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_messageType_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Interface_MessageID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct Interface_MessageID, interfaceProcedureID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"interfaceProcedureID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Interface_MessageID, messageType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_messageType_3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"messageType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_Interface_MessageID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Interface_MessageID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interfaceProcedureID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Interface_MessageID_specs_1 = {
+	sizeof(struct Interface_MessageID),
+	offsetof(struct Interface_MessageID, _asn_ctx),
+	asn_MAP_Interface_MessageID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Interface_MessageID = {
+	"Interface-MessageID",
+	"Interface-MessageID",
+	&asn_OP_SEQUENCE,
+	asn_DEF_Interface_MessageID_tags_1,
+	sizeof(asn_DEF_Interface_MessageID_tags_1)
+		/sizeof(asn_DEF_Interface_MessageID_tags_1[0]), /* 1 */
+	asn_DEF_Interface_MessageID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_Interface_MessageID_tags_1)
+		/sizeof(asn_DEF_Interface_MessageID_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_Interface_MessageID_1,
+	2,	/* Elements count */
+	&asn_SPC_Interface_MessageID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-E1.c b/e2sm/lib/InterfaceID-E1.c
new file mode 100644
index 0000000..3c6109f
--- /dev/null
+++ b/e2sm/lib/InterfaceID-E1.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-E1.h"
+
+asn_TYPE_member_t asn_MBR_InterfaceID_E1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_E1, globalGNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalGNB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalGNB-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_E1, gNB_CU_UP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_CU_UP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-UP-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_E1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_E1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* globalGNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-CU-UP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_E1_specs_1 = {
+	sizeof(struct InterfaceID_E1),
+	offsetof(struct InterfaceID_E1, _asn_ctx),
+	asn_MAP_InterfaceID_E1_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_E1 = {
+	"InterfaceID-E1",
+	"InterfaceID-E1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_E1_tags_1,
+	sizeof(asn_DEF_InterfaceID_E1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_E1_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_E1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_E1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_E1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_E1_1,
+	2,	/* Elements count */
+	&asn_SPC_InterfaceID_E1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-F1.c b/e2sm/lib/InterfaceID-F1.c
new file mode 100644
index 0000000..cd36650
--- /dev/null
+++ b/e2sm/lib/InterfaceID-F1.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-F1.h"
+
+asn_TYPE_member_t asn_MBR_InterfaceID_F1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_F1, globalGNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalGNB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalGNB-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_F1, gNB_DU_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_DU_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-DU-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_F1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_F1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* globalGNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-DU-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_F1_specs_1 = {
+	sizeof(struct InterfaceID_F1),
+	offsetof(struct InterfaceID_F1, _asn_ctx),
+	asn_MAP_InterfaceID_F1_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_F1 = {
+	"InterfaceID-F1",
+	"InterfaceID-F1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_F1_tags_1,
+	sizeof(asn_DEF_InterfaceID_F1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_F1_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_F1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_F1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_F1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_F1_1,
+	2,	/* Elements count */
+	&asn_SPC_InterfaceID_F1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-NG.c b/e2sm/lib/InterfaceID-NG.c
new file mode 100644
index 0000000..a1cc25c
--- /dev/null
+++ b/e2sm/lib/InterfaceID-NG.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-NG.h"
+
+asn_TYPE_member_t asn_MBR_InterfaceID_NG_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_NG, guami),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUAMI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"guami"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_NG_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_NG_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* guami */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_NG_specs_1 = {
+	sizeof(struct InterfaceID_NG),
+	offsetof(struct InterfaceID_NG, _asn_ctx),
+	asn_MAP_InterfaceID_NG_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_NG = {
+	"InterfaceID-NG",
+	"InterfaceID-NG",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_NG_tags_1,
+	sizeof(asn_DEF_InterfaceID_NG_tags_1)
+		/sizeof(asn_DEF_InterfaceID_NG_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_NG_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_NG_tags_1)
+		/sizeof(asn_DEF_InterfaceID_NG_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_NG_1,
+	1,	/* Elements count */
+	&asn_SPC_InterfaceID_NG_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-S1.c b/e2sm/lib/InterfaceID-S1.c
new file mode 100644
index 0000000..2710359
--- /dev/null
+++ b/e2sm/lib/InterfaceID-S1.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-S1.h"
+
+asn_TYPE_member_t asn_MBR_InterfaceID_S1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_S1, gUMMEI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUMMEI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gUMMEI"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_S1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_S1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gUMMEI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_S1_specs_1 = {
+	sizeof(struct InterfaceID_S1),
+	offsetof(struct InterfaceID_S1, _asn_ctx),
+	asn_MAP_InterfaceID_S1_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_S1 = {
+	"InterfaceID-S1",
+	"InterfaceID-S1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_S1_tags_1,
+	sizeof(asn_DEF_InterfaceID_S1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_S1_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_S1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_S1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_S1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_S1_1,
+	1,	/* Elements count */
+	&asn_SPC_InterfaceID_S1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-W1.c b/e2sm/lib/InterfaceID-W1.c
new file mode 100644
index 0000000..4bbd6a6
--- /dev/null
+++ b/e2sm/lib/InterfaceID-W1.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-W1.h"
+
+asn_TYPE_member_t asn_MBR_InterfaceID_W1_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_W1, global_ng_eNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalNgENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"global-ng-eNB-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_W1, ng_eNB_DU_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NGENB_DU_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ng-eNB-DU-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_W1_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_W1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ng-eNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB-DU-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_W1_specs_1 = {
+	sizeof(struct InterfaceID_W1),
+	offsetof(struct InterfaceID_W1, _asn_ctx),
+	asn_MAP_InterfaceID_W1_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_W1 = {
+	"InterfaceID-W1",
+	"InterfaceID-W1",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_W1_tags_1,
+	sizeof(asn_DEF_InterfaceID_W1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_W1_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_W1_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_W1_tags_1)
+		/sizeof(asn_DEF_InterfaceID_W1_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_W1_1,
+	2,	/* Elements count */
+	&asn_SPC_InterfaceID_W1_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-X2.c b/e2sm/lib/InterfaceID-X2.c
new file mode 100644
index 0000000..f410123
--- /dev/null
+++ b/e2sm/lib/InterfaceID-X2.c
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-X2.h"
+
+#include "GlobalENB-ID.h"
+#include "GlobalenGNB-ID.h"
+static asn_oer_constraints_t asn_OER_type_nodeType_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_nodeType_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_nodeType_2[] = {
+	{ ATF_POINTER, 0, offsetof(struct InterfaceID_X2__nodeType, choice.global_eNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"global-eNB-ID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceID_X2__nodeType, choice.global_en_gNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalenGNB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"global-en-gNB-ID"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_nodeType_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-en-gNB-ID */
+};
+static asn_CHOICE_specifics_t asn_SPC_nodeType_specs_2 = {
+	sizeof(struct InterfaceID_X2__nodeType),
+	offsetof(struct InterfaceID_X2__nodeType, _asn_ctx),
+	offsetof(struct InterfaceID_X2__nodeType, present),
+	sizeof(((struct InterfaceID_X2__nodeType *)0)->present),
+	asn_MAP_nodeType_tag2el_2,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nodeType_2 = {
+	"nodeType",
+	"nodeType",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_nodeType_constr_2, &asn_PER_type_nodeType_constr_2, CHOICE_constraint },
+	asn_MBR_nodeType_2,
+	2,	/* Elements count */
+	&asn_SPC_nodeType_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_InterfaceID_X2_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_X2, nodeType),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_nodeType_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nodeType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_X2_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_X2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nodeType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_X2_specs_1 = {
+	sizeof(struct InterfaceID_X2),
+	offsetof(struct InterfaceID_X2, _asn_ctx),
+	asn_MAP_InterfaceID_X2_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_X2 = {
+	"InterfaceID-X2",
+	"InterfaceID-X2",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_X2_tags_1,
+	sizeof(asn_DEF_InterfaceID_X2_tags_1)
+		/sizeof(asn_DEF_InterfaceID_X2_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_X2_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_X2_tags_1)
+		/sizeof(asn_DEF_InterfaceID_X2_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_X2_1,
+	1,	/* Elements count */
+	&asn_SPC_InterfaceID_X2_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceID-Xn.c b/e2sm/lib/InterfaceID-Xn.c
new file mode 100644
index 0000000..de8e414
--- /dev/null
+++ b/e2sm/lib/InterfaceID-Xn.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceID-Xn.h"
+
+asn_TYPE_member_t asn_MBR_InterfaceID_Xn_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct InterfaceID_Xn, global_NG_RAN_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_GlobalNGRANNodeID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"global-NG-RAN-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceID_Xn_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceID_Xn_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-NG-RAN-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterfaceID_Xn_specs_1 = {
+	sizeof(struct InterfaceID_Xn),
+	offsetof(struct InterfaceID_Xn, _asn_ctx),
+	asn_MAP_InterfaceID_Xn_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceID_Xn = {
+	"InterfaceID-Xn",
+	"InterfaceID-Xn",
+	&asn_OP_SEQUENCE,
+	asn_DEF_InterfaceID_Xn_tags_1,
+	sizeof(asn_DEF_InterfaceID_Xn_tags_1)
+		/sizeof(asn_DEF_InterfaceID_Xn_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceID_Xn_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceID_Xn_tags_1)
+		/sizeof(asn_DEF_InterfaceID_Xn_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_InterfaceID_Xn_1,
+	1,	/* Elements count */
+	&asn_SPC_InterfaceID_Xn_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceIdentifier.c b/e2sm/lib/InterfaceIdentifier.c
new file mode 100644
index 0000000..b04564e
--- /dev/null
+++ b/e2sm/lib/InterfaceIdentifier.c
@@ -0,0 +1,122 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceIdentifier.h"
+
+#include "InterfaceID-NG.h"
+#include "InterfaceID-Xn.h"
+#include "InterfaceID-F1.h"
+#include "InterfaceID-E1.h"
+#include "InterfaceID-S1.h"
+#include "InterfaceID-X2.h"
+#include "InterfaceID-W1.h"
+static asn_oer_constraints_t asn_OER_type_InterfaceIdentifier_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_InterfaceIdentifier_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  6 }	/* (0..6,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_InterfaceIdentifier_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.nG),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_NG,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nG"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.xN),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_Xn,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"xN"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.f1),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_F1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"f1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.e1),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_E1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"e1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.s1),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_S1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"s1"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.x2),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_X2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"x2"
+		},
+	{ ATF_POINTER, 0, offsetof(struct InterfaceIdentifier, choice.w1),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceID_W1,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"w1"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterfaceIdentifier_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nG */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* xN */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* f1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e1 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s1 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* x2 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* w1 */
+};
+asn_CHOICE_specifics_t asn_SPC_InterfaceIdentifier_specs_1 = {
+	sizeof(struct InterfaceIdentifier),
+	offsetof(struct InterfaceIdentifier, _asn_ctx),
+	offsetof(struct InterfaceIdentifier, present),
+	sizeof(((struct InterfaceIdentifier *)0)->present),
+	asn_MAP_InterfaceIdentifier_tag2el_1,
+	7,	/* Count of tags in the map */
+	0, 0,
+	7	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceIdentifier = {
+	"InterfaceIdentifier",
+	"InterfaceIdentifier",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_InterfaceIdentifier_constr_1, &asn_PER_type_InterfaceIdentifier_constr_1, CHOICE_constraint },
+	asn_MBR_InterfaceIdentifier_1,
+	7,	/* Elements count */
+	&asn_SPC_InterfaceIdentifier_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/InterfaceType.c b/e2sm/lib/InterfaceType.c
new file mode 100644
index 0000000..359cad7
--- /dev/null
+++ b/e2sm/lib/InterfaceType.c
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "InterfaceType.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_InterfaceType_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_InterfaceType_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  6 }	/* (0..6,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_InterfaceType_value2enum_1[] = {
+	{ 0,	2,	"nG" },
+	{ 1,	2,	"xn" },
+	{ 2,	2,	"f1" },
+	{ 3,	2,	"e1" },
+	{ 4,	2,	"s1" },
+	{ 5,	2,	"x2" },
+	{ 6,	2,	"w1" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_InterfaceType_enum2value_1[] = {
+	3,	/* e1(3) */
+	2,	/* f1(2) */
+	0,	/* nG(0) */
+	4,	/* s1(4) */
+	6,	/* w1(6) */
+	5,	/* x2(5) */
+	1	/* xn(1) */
+	/* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_InterfaceType_specs_1 = {
+	asn_MAP_InterfaceType_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_InterfaceType_enum2value_1,	/* N => "tag"; sorted by N */
+	7,	/* Number of elements in the maps */
+	8,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_InterfaceType_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_InterfaceType = {
+	"InterfaceType",
+	"InterfaceType",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_InterfaceType_tags_1,
+	sizeof(asn_DEF_InterfaceType_tags_1)
+		/sizeof(asn_DEF_InterfaceType_tags_1[0]), /* 1 */
+	asn_DEF_InterfaceType_tags_1,	/* Same as above */
+	sizeof(asn_DEF_InterfaceType_tags_1)
+		/sizeof(asn_DEF_InterfaceType_tags_1[0]), /* 1 */
+	{ &asn_OER_type_InterfaceType_constr_1, &asn_PER_type_InterfaceType_constr_1, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_InterfaceType_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/L2Parameters-RANParameter-Item.c b/e2sm/lib/L2Parameters-RANParameter-Item.c
new file mode 100644
index 0000000..929135d
--- /dev/null
+++ b/e2sm/lib/L2Parameters-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "L2Parameters-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_L2Parameters_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct L2Parameters_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct L2Parameters_RANParameter_Item, ranParameter_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct L2Parameters_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_L2Parameters_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_L2Parameters_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_L2Parameters_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_L2Parameters_RANParameter_Item_specs_1 = {
+	sizeof(struct L2Parameters_RANParameter_Item),
+	offsetof(struct L2Parameters_RANParameter_Item, _asn_ctx),
+	asn_MAP_L2Parameters_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_L2Parameters_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_L2Parameters_RANParameter_Item = {
+	"L2Parameters-RANParameter-Item",
+	"L2Parameters-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_L2Parameters_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_L2Parameters_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_L2Parameters_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_L2Parameters_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_L2Parameters_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_L2Parameters_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_L2Parameters_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_L2Parameters_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/L3-RRC-Measurements.c b/e2sm/lib/L3-RRC-Measurements.c
deleted file mode 100644
index df7009d..0000000
--- a/e2sm/lib/L3-RRC-Measurements.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "L3-RRC-Measurements.h"
-
-#include "ServingCellMeasurements.h"
-#include "MeasResultNeighCells.h"
-asn_TYPE_member_t asn_MBR_L3_RRC_Measurements_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct L3_RRC_Measurements, rrcEvent),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RRCEvent,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rrcEvent"
-		},
-	{ ATF_POINTER, 2, offsetof(struct L3_RRC_Measurements, servingCellMeasurements),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_ServingCellMeasurements,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"servingCellMeasurements"
-		},
-	{ ATF_POINTER, 1, offsetof(struct L3_RRC_Measurements, measResultNeighCells),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_MeasResultNeighCells,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResultNeighCells"
-		},
-};
-static const int asn_MAP_L3_RRC_Measurements_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_L3_RRC_Measurements_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_L3_RRC_Measurements_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcEvent */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servingCellMeasurements */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measResultNeighCells */
-};
-asn_SEQUENCE_specifics_t asn_SPC_L3_RRC_Measurements_specs_1 = {
-	sizeof(struct L3_RRC_Measurements),
-	offsetof(struct L3_RRC_Measurements, _asn_ctx),
-	asn_MAP_L3_RRC_Measurements_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_L3_RRC_Measurements_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_L3_RRC_Measurements = {
-	"L3-RRC-Measurements",
-	"L3-RRC-Measurements",
-	&asn_OP_SEQUENCE,
-	asn_DEF_L3_RRC_Measurements_tags_1,
-	sizeof(asn_DEF_L3_RRC_Measurements_tags_1)
-		/sizeof(asn_DEF_L3_RRC_Measurements_tags_1[0]), /* 1 */
-	asn_DEF_L3_RRC_Measurements_tags_1,	/* Same as above */
-	sizeof(asn_DEF_L3_RRC_Measurements_tags_1)
-		/sizeof(asn_DEF_L3_RRC_Measurements_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_L3_RRC_Measurements_1,
-	3,	/* Elements count */
-	&asn_SPC_L3_RRC_Measurements_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/LogicalOR.c b/e2sm/lib/LogicalOR.c
new file mode 100644
index 0000000..4201a8e
--- /dev/null
+++ b/e2sm/lib/LogicalOR.c
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "LogicalOR.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_LogicalOR_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_LogicalOR_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_LogicalOR_value2enum_1[] = {
+	{ 0,	4,	"true" },
+	{ 1,	5,	"false" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_LogicalOR_enum2value_1[] = {
+	1,	/* false(1) */
+	0	/* true(0) */
+	/* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1 = {
+	asn_MAP_LogicalOR_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_LogicalOR_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_LogicalOR_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_LogicalOR = {
+	"LogicalOR",
+	"LogicalOR",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_LogicalOR_tags_1,
+	sizeof(asn_DEF_LogicalOR_tags_1)
+		/sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */
+	asn_DEF_LogicalOR_tags_1,	/* Same as above */
+	sizeof(asn_DEF_LogicalOR_tags_1)
+		/sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */
+	{ &asn_OER_type_LogicalOR_constr_1, &asn_PER_type_LogicalOR_constr_1, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_LogicalOR_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/MME-Code.c b/e2sm/lib/MME-Code.c
new file mode 100644
index 0000000..193d640
--- /dev/null
+++ b/e2sm/lib/MME-Code.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "MME-Code.h"
+
+int
+MME_Code_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 1)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_Code_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	1	/* (SIZE(1..1)) */};
+asn_per_constraints_t asn_PER_type_MME_Code_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  1,  1 }	/* (SIZE(1..1)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MME_Code_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_Code = {
+	"MME-Code",
+	"MME-Code",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_MME_Code_tags_1,
+	sizeof(asn_DEF_MME_Code_tags_1)
+		/sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */
+	asn_DEF_MME_Code_tags_1,	/* Same as above */
+	sizeof(asn_DEF_MME_Code_tags_1)
+		/sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */
+	{ &asn_OER_type_MME_Code_constr_1, &asn_PER_type_MME_Code_constr_1, MME_Code_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/MME-Group-ID.c b/e2sm/lib/MME-Group-ID.c
new file mode 100644
index 0000000..cc5af21
--- /dev/null
+++ b/e2sm/lib/MME-Group-ID.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "MME-Group-ID.h"
+
+int
+MME_Group_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 2)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_Group_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	2	/* (SIZE(2..2)) */};
+asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  2,  2 }	/* (SIZE(2..2)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MME_Group_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_Group_ID = {
+	"MME-Group-ID",
+	"MME-Group-ID",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_MME_Group_ID_tags_1,
+	sizeof(asn_DEF_MME_Group_ID_tags_1)
+		/sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */
+	asn_DEF_MME_Group_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_MME_Group_ID_tags_1)
+		/sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_MME_Group_ID_constr_1, &asn_PER_type_MME_Group_ID_constr_1, MME_Group_ID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/MME-UE-S1AP-ID.c b/e2sm/lib/MME-UE-S1AP-ID.c
new file mode 100644
index 0000000..5e89d7f
--- /dev/null
+++ b/e2sm/lib/MME-UE-S1AP-ID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "MME-UE-S1AP-ID.h"
+
+int
+MME_UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	/* Constraint check succeeded */
+	return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = {
+	{ 4, 1 }	/* (0..4294967295) */,
+	-1};
+asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 32, -1,  0,  4294967295 }	/* (0..4294967295) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1 = {
+	0,	0,	0,	0,	0,
+	0,	/* Native long size */
+	1	/* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_MME_UE_S1AP_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID = {
+	"MME-UE-S1AP-ID",
+	"MME-UE-S1AP-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_MME_UE_S1AP_ID_tags_1,
+	sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1)
+		/sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */
+	asn_DEF_MME_UE_S1AP_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1)
+		/sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_MME_UE_S1AP_ID_constr_1, &asn_PER_type_MME_UE_S1AP_ID_constr_1, MME_UE_S1AP_ID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_MME_UE_S1AP_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/Makefile.am.libasncodec b/e2sm/lib/Makefile.am.libasncodec
new file mode 100644
index 0000000..dca4816
--- /dev/null
+++ b/e2sm/lib/Makefile.am.libasncodec
@@ -0,0 +1,544 @@
+ASN_MODULE_SRCS=	\
+	./CGI.c	\
+	./CoreCPID.c	\
+	./InterfaceIdentifier.c	\
+	./InterfaceID-NG.c	\
+	./InterfaceID-Xn.c	\
+	./InterfaceID-F1.c	\
+	./InterfaceID-E1.c	\
+	./InterfaceID-S1.c	\
+	./InterfaceID-X2.c	\
+	./InterfaceID-W1.c	\
+	./Interface-MessageID.c	\
+	./InterfaceType.c	\
+	./GroupID.c	\
+	./QoSID.c	\
+	./RANfunction-Name.c	\
+	./RIC-Format-Type.c	\
+	./RIC-Style-Type.c	\
+	./RIC-Style-Name.c	\
+	./RRC-MessageID.c	\
+	./RRCclass-LTE.c	\
+	./RRCclass-NR.c	\
+	./ServingCell-ARFCN.c	\
+	./ServingCell-PCI.c	\
+	./UEID.c	\
+	./UEID-GNB.c	\
+	./UEID-GNB-CU-CP-E1AP-ID-List.c	\
+	./UEID-GNB-CU-CP-E1AP-ID-Item.c	\
+	./UEID-GNB-CU-F1AP-ID-List.c	\
+	./UEID-GNB-CU-CP-F1AP-ID-Item.c	\
+	./UEID-GNB-DU.c	\
+	./UEID-GNB-CU-UP.c	\
+	./UEID-NG-ENB.c	\
+	./UEID-NG-ENB-DU.c	\
+	./UEID-EN-GNB.c	\
+	./UEID-ENB.c	\
+	./ENB-ID.c	\
+	./GlobalENB-ID.c	\
+	./GUMMEI.c	\
+	./MME-Group-ID.c	\
+	./MME-Code.c	\
+	./MME-UE-S1AP-ID.c	\
+	./QCI.c	\
+	./SubscriberProfileIDforRFP.c	\
+	./EN-GNB-ID.c	\
+	./ENB-UE-X2AP-ID.c	\
+	./ENB-UE-X2AP-ID-Extension.c	\
+	./E-UTRA-ARFCN.c	\
+	./E-UTRA-PCI.c	\
+	./E-UTRA-TAC.c	\
+	./GlobalenGNB-ID.c	\
+	./NGENB-CU-UE-W1AP-ID.c	\
+	./NGENB-DU-ID.c	\
+	./AMFPointer.c	\
+	./AMFRegionID.c	\
+	./AMFSetID.c	\
+	./AMF-UE-NGAP-ID.c	\
+	./EUTRACellIdentity.c	\
+	./EUTRA-CGI.c	\
+	./FiveQI.c	\
+	./GlobalGNB-ID.c	\
+	./GlobalNgENB-ID.c	\
+	./GNB-ID.c	\
+	./GUAMI.c	\
+	./IndexToRFSP.c	\
+	./NgENB-ID.c	\
+	./NRCellIdentity.c	\
+	./NR-CGI.c	\
+	./PLMNIdentity.c	\
+	./QosFlowIdentifier.c	\
+	./SD.c	\
+	./S-NSSAI.c	\
+	./SST.c	\
+	./NG-RANnodeUEXnAPID.c	\
+	./GlobalNGRANNodeID.c	\
+	./GNB-CU-CP-UE-E1AP-ID.c	\
+	./GNB-CU-UP-ID.c	\
+	./FiveGS-TAC.c	\
+	./FreqBandNrItem.c	\
+	./GNB-CU-UE-F1AP-ID.c	\
+	./GNB-DU-ID.c	\
+	./NR-PCI.c	\
+	./NR-ARFCN.c	\
+	./NRFrequencyBand-List.c	\
+	./NRFrequencyBandItem.c	\
+	./NRFrequencyInfo.c	\
+	./NRFrequencyShift7p5khz.c	\
+	./RANUEID.c	\
+	./SupportedSULBandList.c	\
+	./SupportedSULFreqBandItem.c	\
+	./LogicalOR.c	\
+	./NeighborCell-List.c	\
+	./NeighborCell-Item.c	\
+	./NeighborCell-Item-Choice-NR.c	\
+	./NeighborCell-Item-Choice-E-UTRA.c	\
+	./NeighborRelation-Info.c	\
+	./RRC-State.c	\
+	./EventTrigger-Cell-Info.c	\
+	./EventTrigger-Cell-Info-Item.c	\
+	./EventTrigger-Cell-Info-Item-Choice-Individual.c	\
+	./EventTrigger-Cell-Info-Item-Choice-Group.c	\
+	./EventTrigger-UE-Info.c	\
+	./EventTrigger-UE-Info-Item.c	\
+	./EventTrigger-UE-Info-Item-Choice-Individual.c	\
+	./EventTrigger-UE-Info-Item-Choice-Group.c	\
+	./EventTrigger-UEevent-Info.c	\
+	./EventTrigger-UEevent-Info-Item.c	\
+	./RANParameter-ID.c	\
+	./RANParameter-Name.c	\
+	./RANParameter-Definition.c	\
+	./RANParameter-Definition-Choice.c	\
+	./RANParameter-Definition-Choice-LIST.c	\
+	./RANParameter-Definition-Choice-LIST-Item.c	\
+	./RANParameter-Definition-Choice-STRUCTURE.c	\
+	./RANParameter-Definition-Choice-STRUCTURE-Item.c	\
+	./RANParameter-Value.c	\
+	./RANParameter-ValueType.c	\
+	./RANParameter-ValueType-Choice-ElementTrue.c	\
+	./RANParameter-ValueType-Choice-ElementFalse.c	\
+	./RANParameter-ValueType-Choice-Structure.c	\
+	./RANParameter-ValueType-Choice-List.c	\
+	./RANParameter-STRUCTURE.c	\
+	./RANParameter-STRUCTURE-Item.c	\
+	./RANParameter-LIST.c	\
+	./RANParameter-Testing.c	\
+	./RANParameter-TestingCondition.c	\
+	./RANParameter-Testing-Item.c	\
+	./RANParameter-Testing-Item-Choice-List.c	\
+	./RANParameter-Testing-Item-Choice-Structure.c	\
+	./RANParameter-Testing-Item-Choice-ElementTrue.c	\
+	./RANParameter-Testing-Item-Choice-ElementFalse.c	\
+	./RANParameter-Testing-LIST.c	\
+	./RANParameter-Testing-STRUCTURE.c	\
+	./RAN-CallProcess-ID.c	\
+	./RIC-CallProcessType-ID.c	\
+	./RIC-CallProcessType-Name.c	\
+	./RIC-CallProcessBreakpoint-ID.c	\
+	./RIC-CallProcessBreakpoint-Name.c	\
+	./RIC-ControlAction-ID.c	\
+	./RIC-ControlAction-Name.c	\
+	./RIC-EventTriggerCondition-ID.c	\
+	./RIC-EventTrigger-UE-ID.c	\
+	./RIC-EventTrigger-UEevent-ID.c	\
+	./RIC-EventTrigger-Cell-ID.c	\
+	./RIC-InsertIndication-ID.c	\
+	./RIC-InsertIndication-Name.c	\
+	./RIC-PolicyAction.c	\
+	./RIC-PolicyAction-RANParameter-Item.c	\
+	./E2SM-RC-EventTrigger.c	\
+	./E2SM-RC-EventTrigger-Format1.c	\
+	./E2SM-RC-EventTrigger-Format1-Item.c	\
+	./MessageType-Choice.c	\
+	./MessageType-Choice-NI.c	\
+	./MessageType-Choice-RRC.c	\
+	./E2SM-RC-EventTrigger-Format2.c	\
+	./E2SM-RC-EventTrigger-Format3.c	\
+	./E2SM-RC-EventTrigger-Format3-Item.c	\
+	./E2SM-RC-EventTrigger-Format4.c	\
+	./E2SM-RC-EventTrigger-Format4-Item.c	\
+	./TriggerType-Choice.c	\
+	./TriggerType-Choice-RRCstate.c	\
+	./TriggerType-Choice-RRCstate-Item.c	\
+	./TriggerType-Choice-UEID.c	\
+	./TriggerType-Choice-L2state.c	\
+	./E2SM-RC-EventTrigger-Format5.c	\
+	./E2SM-RC-ActionDefinition.c	\
+	./E2SM-RC-ActionDefinition-Format1.c	\
+	./E2SM-RC-ActionDefinition-Format1-Item.c	\
+	./E2SM-RC-ActionDefinition-Format2.c	\
+	./E2SM-RC-ActionDefinition-Format2-Item.c	\
+	./E2SM-RC-ActionDefinition-Format3.c	\
+	./E2SM-RC-ActionDefinition-Format3-Item.c	\
+	./E2SM-RC-IndicationHeader.c	\
+	./E2SM-RC-IndicationHeader-Format1.c	\
+	./E2SM-RC-IndicationHeader-Format2.c	\
+	./E2SM-RC-IndicationMessage.c	\
+	./E2SM-RC-IndicationMessage-Format1.c	\
+	./E2SM-RC-IndicationMessage-Format1-Item.c	\
+	./E2SM-RC-IndicationMessage-Format2.c	\
+	./E2SM-RC-IndicationMessage-Format2-Item.c	\
+	./E2SM-RC-IndicationMessage-Format2-RANParameter-Item.c	\
+	./E2SM-RC-IndicationMessage-Format3.c	\
+	./E2SM-RC-IndicationMessage-Format3-Item.c	\
+	./E2SM-RC-IndicationMessage-Format4.c	\
+	./E2SM-RC-IndicationMessage-Format4-ItemUE.c	\
+	./E2SM-RC-IndicationMessage-Format4-ItemCell.c	\
+	./E2SM-RC-IndicationMessage-Format5.c	\
+	./E2SM-RC-IndicationMessage-Format5-Item.c	\
+	./E2SM-RC-CallProcessID.c	\
+	./E2SM-RC-CallProcessID-Format1.c	\
+	./E2SM-RC-ControlHeader.c	\
+	./E2SM-RC-ControlHeader-Format1.c	\
+	./E2SM-RC-ControlMessage.c	\
+	./E2SM-RC-ControlMessage-Format1.c	\
+	./E2SM-RC-ControlMessage-Format1-Item.c	\
+	./E2SM-RC-ControlOutcome.c	\
+	./E2SM-RC-ControlOutcome-Format1.c	\
+	./E2SM-RC-ControlOutcome-Format1-Item.c	\
+	./E2SM-RC-RANFunctionDefinition.c	\
+	./RANFunctionDefinition-EventTrigger.c	\
+	./RANFunctionDefinition-EventTrigger-Style-Item.c	\
+	./L2Parameters-RANParameter-Item.c	\
+	./UEIdentification-RANParameter-Item.c	\
+	./CellIdentification-RANParameter-Item.c	\
+	./RANFunctionDefinition-EventTrigger-CallProcess-Item.c	\
+	./RANFunctionDefinition-EventTrigger-Breakpoint-Item.c	\
+	./CallProcessBreakpoint-RANParameter-Item.c	\
+	./RANFunctionDefinition-Report.c	\
+	./RANFunctionDefinition-Report-Item.c	\
+	./Report-RANParameter-Item.c	\
+	./RANFunctionDefinition-Insert.c	\
+	./RANFunctionDefinition-Insert-Item.c	\
+	./RANFunctionDefinition-Insert-Indication-Item.c	\
+	./InsertIndication-RANParameter-Item.c	\
+	./RANFunctionDefinition-Control.c	\
+	./RANFunctionDefinition-Control-Item.c	\
+	./ControlOutcome-RANParameter-Item.c	\
+	./RANFunctionDefinition-Control-Action-Item.c	\
+	./ControlAction-RANParameter-Item.c	\
+	./RANFunctionDefinition-Policy.c	\
+	./RANFunctionDefinition-Policy-Item.c	\
+	./RANFunctionDefinition-Policy-Action-Item.c	\
+	./PolicyAction-RANParameter-Item.c	\
+	./PolicyCondition-RANParameter-Item.c
+
+ASN_MODULE_HDRS=	\
+	./CGI.h	\
+	./CoreCPID.h	\
+	./InterfaceIdentifier.h	\
+	./InterfaceID-NG.h	\
+	./InterfaceID-Xn.h	\
+	./InterfaceID-F1.h	\
+	./InterfaceID-E1.h	\
+	./InterfaceID-S1.h	\
+	./InterfaceID-X2.h	\
+	./InterfaceID-W1.h	\
+	./Interface-MessageID.h	\
+	./InterfaceType.h	\
+	./GroupID.h	\
+	./QoSID.h	\
+	./RANfunction-Name.h	\
+	./RIC-Format-Type.h	\
+	./RIC-Style-Type.h	\
+	./RIC-Style-Name.h	\
+	./RRC-MessageID.h	\
+	./RRCclass-LTE.h	\
+	./RRCclass-NR.h	\
+	./ServingCell-ARFCN.h	\
+	./ServingCell-PCI.h	\
+	./UEID.h	\
+	./UEID-GNB.h	\
+	./UEID-GNB-CU-CP-E1AP-ID-List.h	\
+	./UEID-GNB-CU-CP-E1AP-ID-Item.h	\
+	./UEID-GNB-CU-F1AP-ID-List.h	\
+	./UEID-GNB-CU-CP-F1AP-ID-Item.h	\
+	./UEID-GNB-DU.h	\
+	./UEID-GNB-CU-UP.h	\
+	./UEID-NG-ENB.h	\
+	./UEID-NG-ENB-DU.h	\
+	./UEID-EN-GNB.h	\
+	./UEID-ENB.h	\
+	./ENB-ID.h	\
+	./GlobalENB-ID.h	\
+	./GUMMEI.h	\
+	./MME-Group-ID.h	\
+	./MME-Code.h	\
+	./MME-UE-S1AP-ID.h	\
+	./QCI.h	\
+	./SubscriberProfileIDforRFP.h	\
+	./EN-GNB-ID.h	\
+	./ENB-UE-X2AP-ID.h	\
+	./ENB-UE-X2AP-ID-Extension.h	\
+	./E-UTRA-ARFCN.h	\
+	./E-UTRA-PCI.h	\
+	./E-UTRA-TAC.h	\
+	./GlobalenGNB-ID.h	\
+	./NGENB-CU-UE-W1AP-ID.h	\
+	./NGENB-DU-ID.h	\
+	./AMFPointer.h	\
+	./AMFRegionID.h	\
+	./AMFSetID.h	\
+	./AMF-UE-NGAP-ID.h	\
+	./EUTRACellIdentity.h	\
+	./EUTRA-CGI.h	\
+	./FiveQI.h	\
+	./GlobalGNB-ID.h	\
+	./GlobalNgENB-ID.h	\
+	./GNB-ID.h	\
+	./GUAMI.h	\
+	./IndexToRFSP.h	\
+	./NgENB-ID.h	\
+	./NRCellIdentity.h	\
+	./NR-CGI.h	\
+	./PLMNIdentity.h	\
+	./QosFlowIdentifier.h	\
+	./SD.h	\
+	./S-NSSAI.h	\
+	./SST.h	\
+	./NG-RANnodeUEXnAPID.h	\
+	./GlobalNGRANNodeID.h	\
+	./GNB-CU-CP-UE-E1AP-ID.h	\
+	./GNB-CU-UP-ID.h	\
+	./FiveGS-TAC.h	\
+	./FreqBandNrItem.h	\
+	./GNB-CU-UE-F1AP-ID.h	\
+	./GNB-DU-ID.h	\
+	./NR-PCI.h	\
+	./NR-ARFCN.h	\
+	./NRFrequencyBand-List.h	\
+	./NRFrequencyBandItem.h	\
+	./NRFrequencyInfo.h	\
+	./NRFrequencyShift7p5khz.h	\
+	./RANUEID.h	\
+	./SupportedSULBandList.h	\
+	./SupportedSULFreqBandItem.h	\
+	./LogicalOR.h	\
+	./NeighborCell-List.h	\
+	./NeighborCell-Item.h	\
+	./NeighborCell-Item-Choice-NR.h	\
+	./NeighborCell-Item-Choice-E-UTRA.h	\
+	./NeighborRelation-Info.h	\
+	./RRC-State.h	\
+	./EventTrigger-Cell-Info.h	\
+	./EventTrigger-Cell-Info-Item.h	\
+	./EventTrigger-Cell-Info-Item-Choice-Individual.h	\
+	./EventTrigger-Cell-Info-Item-Choice-Group.h	\
+	./EventTrigger-UE-Info.h	\
+	./EventTrigger-UE-Info-Item.h	\
+	./EventTrigger-UE-Info-Item-Choice-Individual.h	\
+	./EventTrigger-UE-Info-Item-Choice-Group.h	\
+	./EventTrigger-UEevent-Info.h	\
+	./EventTrigger-UEevent-Info-Item.h	\
+	./RANParameter-ID.h	\
+	./RANParameter-Name.h	\
+	./RANParameter-Definition.h	\
+	./RANParameter-Definition-Choice.h	\
+	./RANParameter-Definition-Choice-LIST.h	\
+	./RANParameter-Definition-Choice-LIST-Item.h	\
+	./RANParameter-Definition-Choice-STRUCTURE.h	\
+	./RANParameter-Definition-Choice-STRUCTURE-Item.h	\
+	./RANParameter-Value.h	\
+	./RANParameter-ValueType.h	\
+	./RANParameter-ValueType-Choice-ElementTrue.h	\
+	./RANParameter-ValueType-Choice-ElementFalse.h	\
+	./RANParameter-ValueType-Choice-Structure.h	\
+	./RANParameter-ValueType-Choice-List.h	\
+	./RANParameter-STRUCTURE.h	\
+	./RANParameter-STRUCTURE-Item.h	\
+	./RANParameter-LIST.h	\
+	./RANParameter-Testing.h	\
+	./RANParameter-TestingCondition.h	\
+	./RANParameter-Testing-Item.h	\
+	./RANParameter-Testing-Item-Choice-List.h	\
+	./RANParameter-Testing-Item-Choice-Structure.h	\
+	./RANParameter-Testing-Item-Choice-ElementTrue.h	\
+	./RANParameter-Testing-Item-Choice-ElementFalse.h	\
+	./RANParameter-Testing-LIST.h	\
+	./RANParameter-Testing-STRUCTURE.h	\
+	./RAN-CallProcess-ID.h	\
+	./RIC-CallProcessType-ID.h	\
+	./RIC-CallProcessType-Name.h	\
+	./RIC-CallProcessBreakpoint-ID.h	\
+	./RIC-CallProcessBreakpoint-Name.h	\
+	./RIC-ControlAction-ID.h	\
+	./RIC-ControlAction-Name.h	\
+	./RIC-EventTriggerCondition-ID.h	\
+	./RIC-EventTrigger-UE-ID.h	\
+	./RIC-EventTrigger-UEevent-ID.h	\
+	./RIC-EventTrigger-Cell-ID.h	\
+	./RIC-InsertIndication-ID.h	\
+	./RIC-InsertIndication-Name.h	\
+	./RIC-PolicyAction.h	\
+	./RIC-PolicyAction-RANParameter-Item.h	\
+	./E2SM-RC-EventTrigger.h	\
+	./E2SM-RC-EventTrigger-Format1.h	\
+	./E2SM-RC-EventTrigger-Format1-Item.h	\
+	./MessageType-Choice.h	\
+	./MessageType-Choice-NI.h	\
+	./MessageType-Choice-RRC.h	\
+	./E2SM-RC-EventTrigger-Format2.h	\
+	./E2SM-RC-EventTrigger-Format3.h	\
+	./E2SM-RC-EventTrigger-Format3-Item.h	\
+	./E2SM-RC-EventTrigger-Format4.h	\
+	./E2SM-RC-EventTrigger-Format4-Item.h	\
+	./TriggerType-Choice.h	\
+	./TriggerType-Choice-RRCstate.h	\
+	./TriggerType-Choice-RRCstate-Item.h	\
+	./TriggerType-Choice-UEID.h	\
+	./TriggerType-Choice-L2state.h	\
+	./E2SM-RC-EventTrigger-Format5.h	\
+	./E2SM-RC-ActionDefinition.h	\
+	./E2SM-RC-ActionDefinition-Format1.h	\
+	./E2SM-RC-ActionDefinition-Format1-Item.h	\
+	./E2SM-RC-ActionDefinition-Format2.h	\
+	./E2SM-RC-ActionDefinition-Format2-Item.h	\
+	./E2SM-RC-ActionDefinition-Format3.h	\
+	./E2SM-RC-ActionDefinition-Format3-Item.h	\
+	./E2SM-RC-IndicationHeader.h	\
+	./E2SM-RC-IndicationHeader-Format1.h	\
+	./E2SM-RC-IndicationHeader-Format2.h	\
+	./E2SM-RC-IndicationMessage.h	\
+	./E2SM-RC-IndicationMessage-Format1.h	\
+	./E2SM-RC-IndicationMessage-Format1-Item.h	\
+	./E2SM-RC-IndicationMessage-Format2.h	\
+	./E2SM-RC-IndicationMessage-Format2-Item.h	\
+	./E2SM-RC-IndicationMessage-Format2-RANParameter-Item.h	\
+	./E2SM-RC-IndicationMessage-Format3.h	\
+	./E2SM-RC-IndicationMessage-Format3-Item.h	\
+	./E2SM-RC-IndicationMessage-Format4.h	\
+	./E2SM-RC-IndicationMessage-Format4-ItemUE.h	\
+	./E2SM-RC-IndicationMessage-Format4-ItemCell.h	\
+	./E2SM-RC-IndicationMessage-Format5.h	\
+	./E2SM-RC-IndicationMessage-Format5-Item.h	\
+	./E2SM-RC-CallProcessID.h	\
+	./E2SM-RC-CallProcessID-Format1.h	\
+	./E2SM-RC-ControlHeader.h	\
+	./E2SM-RC-ControlHeader-Format1.h	\
+	./E2SM-RC-ControlMessage.h	\
+	./E2SM-RC-ControlMessage-Format1.h	\
+	./E2SM-RC-ControlMessage-Format1-Item.h	\
+	./E2SM-RC-ControlOutcome.h	\
+	./E2SM-RC-ControlOutcome-Format1.h	\
+	./E2SM-RC-ControlOutcome-Format1-Item.h	\
+	./E2SM-RC-RANFunctionDefinition.h	\
+	./RANFunctionDefinition-EventTrigger.h	\
+	./RANFunctionDefinition-EventTrigger-Style-Item.h	\
+	./L2Parameters-RANParameter-Item.h	\
+	./UEIdentification-RANParameter-Item.h	\
+	./CellIdentification-RANParameter-Item.h	\
+	./RANFunctionDefinition-EventTrigger-CallProcess-Item.h	\
+	./RANFunctionDefinition-EventTrigger-Breakpoint-Item.h	\
+	./CallProcessBreakpoint-RANParameter-Item.h	\
+	./RANFunctionDefinition-Report.h	\
+	./RANFunctionDefinition-Report-Item.h	\
+	./Report-RANParameter-Item.h	\
+	./RANFunctionDefinition-Insert.h	\
+	./RANFunctionDefinition-Insert-Item.h	\
+	./RANFunctionDefinition-Insert-Indication-Item.h	\
+	./InsertIndication-RANParameter-Item.h	\
+	./RANFunctionDefinition-Control.h	\
+	./RANFunctionDefinition-Control-Item.h	\
+	./ControlOutcome-RANParameter-Item.h	\
+	./RANFunctionDefinition-Control-Action-Item.h	\
+	./ControlAction-RANParameter-Item.h	\
+	./RANFunctionDefinition-Policy.h	\
+	./RANFunctionDefinition-Policy-Item.h	\
+	./RANFunctionDefinition-Policy-Action-Item.h	\
+	./PolicyAction-RANParameter-Item.h	\
+	./PolicyCondition-RANParameter-Item.h
+
+ASN_MODULE_HDRS+=./OPEN_TYPE.h
+ASN_MODULE_SRCS+=./OPEN_TYPE.c
+ASN_MODULE_HDRS+=./constr_CHOICE.h
+ASN_MODULE_HDRS+=./BOOLEAN.h
+ASN_MODULE_SRCS+=./BOOLEAN.c
+ASN_MODULE_HDRS+=./INTEGER.h
+ASN_MODULE_SRCS+=./INTEGER.c
+ASN_MODULE_HDRS+=./NativeEnumerated.h
+ASN_MODULE_SRCS+=./NativeEnumerated.c
+ASN_MODULE_HDRS+=./NativeInteger.h
+ASN_MODULE_SRCS+=./NativeInteger.c
+ASN_MODULE_HDRS+=./NativeReal.h
+ASN_MODULE_SRCS+=./NativeReal.c
+ASN_MODULE_HDRS+=./REAL.h
+ASN_MODULE_HDRS+=./PrintableString.h
+ASN_MODULE_SRCS+=./PrintableString.c
+ASN_MODULE_HDRS+=./OCTET_STRING.h
+ASN_MODULE_SRCS+=./REAL.c
+ASN_MODULE_HDRS+=./asn_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./asn_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./asn_SET_OF.h
+ASN_MODULE_SRCS+=./asn_SET_OF.c
+ASN_MODULE_SRCS+=./constr_CHOICE.c
+ASN_MODULE_HDRS+=./constr_SEQUENCE.h
+ASN_MODULE_SRCS+=./constr_SEQUENCE.c
+ASN_MODULE_HDRS+=./constr_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./constr_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./constr_SET_OF.h
+ASN_MODULE_SRCS+=./constr_SET_OF.c
+ASN_MODULE_HDRS+=./asn_application.h
+ASN_MODULE_SRCS+=./asn_application.c
+ASN_MODULE_HDRS+=./asn_ioc.h
+ASN_MODULE_HDRS+=./asn_system.h
+ASN_MODULE_HDRS+=./asn_codecs.h
+ASN_MODULE_HDRS+=./asn_internal.h
+ASN_MODULE_SRCS+=./asn_internal.c
+ASN_MODULE_HDRS+=./asn_random_fill.h
+ASN_MODULE_SRCS+=./asn_random_fill.c
+ASN_MODULE_HDRS+=./asn_bit_data.h
+ASN_MODULE_SRCS+=./asn_bit_data.c
+ASN_MODULE_SRCS+=./OCTET_STRING.c
+ASN_MODULE_HDRS+=./BIT_STRING.h
+ASN_MODULE_SRCS+=./BIT_STRING.c
+ASN_MODULE_SRCS+=./asn_codecs_prim.c
+ASN_MODULE_HDRS+=./asn_codecs_prim.h
+ASN_MODULE_HDRS+=./ber_tlv_length.h
+ASN_MODULE_SRCS+=./ber_tlv_length.c
+ASN_MODULE_HDRS+=./ber_tlv_tag.h
+ASN_MODULE_SRCS+=./ber_tlv_tag.c
+ASN_MODULE_HDRS+=./ber_decoder.h
+ASN_MODULE_SRCS+=./ber_decoder.c
+ASN_MODULE_HDRS+=./der_encoder.h
+ASN_MODULE_SRCS+=./der_encoder.c
+ASN_MODULE_HDRS+=./constr_TYPE.h
+ASN_MODULE_SRCS+=./constr_TYPE.c
+ASN_MODULE_HDRS+=./constraints.h
+ASN_MODULE_SRCS+=./constraints.c
+ASN_MODULE_HDRS+=./xer_support.h
+ASN_MODULE_SRCS+=./xer_support.c
+ASN_MODULE_HDRS+=./xer_decoder.h
+ASN_MODULE_SRCS+=./xer_decoder.c
+ASN_MODULE_HDRS+=./xer_encoder.h
+ASN_MODULE_SRCS+=./xer_encoder.c
+ASN_MODULE_HDRS+=./per_support.h
+ASN_MODULE_SRCS+=./per_support.c
+ASN_MODULE_HDRS+=./per_decoder.h
+ASN_MODULE_SRCS+=./per_decoder.c
+ASN_MODULE_HDRS+=./per_encoder.h
+ASN_MODULE_SRCS+=./per_encoder.c
+ASN_MODULE_HDRS+=./per_opentype.h
+ASN_MODULE_SRCS+=./per_opentype.c
+ASN_MODULE_HDRS+=./oer_decoder.h
+ASN_MODULE_HDRS+=./oer_encoder.h
+ASN_MODULE_HDRS+=./oer_support.h
+ASN_MODULE_SRCS+=./oer_decoder.c
+ASN_MODULE_SRCS+=./oer_encoder.c
+ASN_MODULE_SRCS+=./oer_support.c
+ASN_MODULE_SRCS+=./OPEN_TYPE_oer.c
+ASN_MODULE_SRCS+=./INTEGER_oer.c
+ASN_MODULE_SRCS+=./BIT_STRING_oer.c
+ASN_MODULE_SRCS+=./OCTET_STRING_oer.c
+ASN_MODULE_SRCS+=./NativeInteger_oer.c
+ASN_MODULE_SRCS+=./NativeEnumerated_oer.c
+ASN_MODULE_SRCS+=./constr_CHOICE_oer.c
+ASN_MODULE_SRCS+=./constr_SEQUENCE_oer.c
+ASN_MODULE_SRCS+=./constr_SET_OF_oer.c
+
+ASN_MODULE_CFLAGS=
+
+lib_LTLIBRARIES+=libasncodec.la
+libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS)
+libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./
+libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
+libasncodec_la_LDFLAGS=-lm
diff --git a/e2sm/lib/MeasQuantityResults.c b/e2sm/lib/MeasQuantityResults.c
deleted file mode 100644
index 71a2de9..0000000
--- a/e2sm/lib/MeasQuantityResults.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasQuantityResults.h"
-
-asn_TYPE_member_t asn_MBR_MeasQuantityResults_1[] = {
-	{ ATF_POINTER, 3, offsetof(struct MeasQuantityResults, rsrp),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RSRP_Range,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsrp"
-		},
-	{ ATF_POINTER, 2, offsetof(struct MeasQuantityResults, rsrq),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RSRQ_Range,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsrq"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MeasQuantityResults, sinr),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_SINR_Range,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"sinr"
-		},
-};
-static const int asn_MAP_MeasQuantityResults_oms_1[] = { 0, 1, 2 };
-static const ber_tlv_tag_t asn_DEF_MeasQuantityResults_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasQuantityResults_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResults_specs_1 = {
-	sizeof(struct MeasQuantityResults),
-	offsetof(struct MeasQuantityResults, _asn_ctx),
-	asn_MAP_MeasQuantityResults_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_MeasQuantityResults_oms_1,	/* Optional members */
-	3, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasQuantityResults = {
-	"MeasQuantityResults",
-	"MeasQuantityResults",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasQuantityResults_tags_1,
-	sizeof(asn_DEF_MeasQuantityResults_tags_1)
-		/sizeof(asn_DEF_MeasQuantityResults_tags_1[0]), /* 1 */
-	asn_DEF_MeasQuantityResults_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasQuantityResults_tags_1)
-		/sizeof(asn_DEF_MeasQuantityResults_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasQuantityResults_1,
-	3,	/* Elements count */
-	&asn_SPC_MeasQuantityResults_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasQuantityResultsEUTRA.c b/e2sm/lib/MeasQuantityResultsEUTRA.c
deleted file mode 100644
index 8dfe36d..0000000
--- a/e2sm/lib/MeasQuantityResultsEUTRA.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasQuantityResultsEUTRA.h"
-
-asn_TYPE_member_t asn_MBR_MeasQuantityResultsEUTRA_1[] = {
-	{ ATF_POINTER, 3, offsetof(struct MeasQuantityResultsEUTRA, rsrp),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RSRP_RangeEUTRA,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsrp"
-		},
-	{ ATF_POINTER, 2, offsetof(struct MeasQuantityResultsEUTRA, rsrq),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RSRQ_RangeEUTRA,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsrq"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MeasQuantityResultsEUTRA, sinr),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_SINR_RangeEUTRA,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"sinr"
-		},
-};
-static const int asn_MAP_MeasQuantityResultsEUTRA_oms_1[] = { 0, 1, 2 };
-static const ber_tlv_tag_t asn_DEF_MeasQuantityResultsEUTRA_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasQuantityResultsEUTRA_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResultsEUTRA_specs_1 = {
-	sizeof(struct MeasQuantityResultsEUTRA),
-	offsetof(struct MeasQuantityResultsEUTRA, _asn_ctx),
-	asn_MAP_MeasQuantityResultsEUTRA_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_MeasQuantityResultsEUTRA_oms_1,	/* Optional members */
-	3, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasQuantityResultsEUTRA = {
-	"MeasQuantityResultsEUTRA",
-	"MeasQuantityResultsEUTRA",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasQuantityResultsEUTRA_tags_1,
-	sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1)
-		/sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1[0]), /* 1 */
-	asn_DEF_MeasQuantityResultsEUTRA_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1)
-		/sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasQuantityResultsEUTRA_1,
-	3,	/* Elements count */
-	&asn_SPC_MeasQuantityResultsEUTRA_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultEUTRA.c b/e2sm/lib/MeasResultEUTRA.c
deleted file mode 100644
index b3713d9..0000000
--- a/e2sm/lib/MeasResultEUTRA.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultEUTRA.h"
-
-asn_TYPE_member_t asn_MBR_MeasResultEUTRA_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultEUTRA, eutra_PhysCellId),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PhysCellId,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"eutra-PhysCellId"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultEUTRA, measResult),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasQuantityResultsEUTRA,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResult"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasResultEUTRA_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasResultEUTRA_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra-PhysCellId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measResult */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasResultEUTRA_specs_1 = {
-	sizeof(struct MeasResultEUTRA),
-	offsetof(struct MeasResultEUTRA, _asn_ctx),
-	asn_MAP_MeasResultEUTRA_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultEUTRA = {
-	"MeasResultEUTRA",
-	"MeasResultEUTRA",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasResultEUTRA_tags_1,
-	sizeof(asn_DEF_MeasResultEUTRA_tags_1)
-		/sizeof(asn_DEF_MeasResultEUTRA_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultEUTRA_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultEUTRA_tags_1)
-		/sizeof(asn_DEF_MeasResultEUTRA_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasResultEUTRA_1,
-	2,	/* Elements count */
-	&asn_SPC_MeasResultEUTRA_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultListEUTRA.c b/e2sm/lib/MeasResultListEUTRA.c
deleted file mode 100644
index b7a963e..0000000
--- a/e2sm/lib/MeasResultListEUTRA.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultListEUTRA.h"
-
-#include "MeasResultEUTRA.h"
-static asn_oer_constraints_t asn_OER_type_MeasResultListEUTRA_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..8)) */};
-asn_per_constraints_t asn_PER_type_MeasResultListEUTRA_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 3,  3,  1,  8 }	/* (SIZE(1..8)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasResultListEUTRA_1[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_MeasResultEUTRA,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasResultListEUTRA_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MeasResultListEUTRA_specs_1 = {
-	sizeof(struct MeasResultListEUTRA),
-	offsetof(struct MeasResultListEUTRA, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultListEUTRA = {
-	"MeasResultListEUTRA",
-	"MeasResultListEUTRA",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_MeasResultListEUTRA_tags_1,
-	sizeof(asn_DEF_MeasResultListEUTRA_tags_1)
-		/sizeof(asn_DEF_MeasResultListEUTRA_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultListEUTRA_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultListEUTRA_tags_1)
-		/sizeof(asn_DEF_MeasResultListEUTRA_tags_1[0]), /* 1 */
-	{ &asn_OER_type_MeasResultListEUTRA_constr_1, &asn_PER_type_MeasResultListEUTRA_constr_1, SEQUENCE_OF_constraint },
-	asn_MBR_MeasResultListEUTRA_1,
-	1,	/* Single element */
-	&asn_SPC_MeasResultListEUTRA_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultListNR.c b/e2sm/lib/MeasResultListNR.c
deleted file mode 100644
index d5edda9..0000000
--- a/e2sm/lib/MeasResultListNR.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultListNR.h"
-
-#include "MeasResultNR.h"
-static asn_oer_constraints_t asn_OER_type_MeasResultListNR_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..8)) */};
-asn_per_constraints_t asn_PER_type_MeasResultListNR_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 3,  3,  1,  8 }	/* (SIZE(1..8)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasResultListNR_1[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_MeasResultNR,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasResultListNR_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MeasResultListNR_specs_1 = {
-	sizeof(struct MeasResultListNR),
-	offsetof(struct MeasResultListNR, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultListNR = {
-	"MeasResultListNR",
-	"MeasResultListNR",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_MeasResultListNR_tags_1,
-	sizeof(asn_DEF_MeasResultListNR_tags_1)
-		/sizeof(asn_DEF_MeasResultListNR_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultListNR_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultListNR_tags_1)
-		/sizeof(asn_DEF_MeasResultListNR_tags_1[0]), /* 1 */
-	{ &asn_OER_type_MeasResultListNR_constr_1, &asn_PER_type_MeasResultListNR_constr_1, SEQUENCE_OF_constraint },
-	asn_MBR_MeasResultListNR_1,
-	1,	/* Single element */
-	&asn_SPC_MeasResultListNR_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultNR.c b/e2sm/lib/MeasResultNR.c
deleted file mode 100644
index fa4dae8..0000000
--- a/e2sm/lib/MeasResultNR.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultNR.h"
-
-#include "MeasQuantityResults.h"
-#include "ResultsPerSSB-IndexList.h"
-#include "ResultsPerCSI-RS-IndexList.h"
-static asn_TYPE_member_t asn_MBR_cellResults_4[] = {
-	{ ATF_POINTER, 2, offsetof(struct MeasResultNR__measResult__cellResults, resultsSSB_Cell),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasQuantityResults,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"resultsSSB-Cell"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MeasResultNR__measResult__cellResults, resultsCSI_RS_Cell),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasQuantityResults,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"resultsCSI-RS-Cell"
-		},
-};
-static const int asn_MAP_cellResults_oms_4[] = { 0, 1 };
-static const ber_tlv_tag_t asn_DEF_cellResults_tags_4[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_cellResults_tag2el_4[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resultsSSB-Cell */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* resultsCSI-RS-Cell */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_cellResults_specs_4 = {
-	sizeof(struct MeasResultNR__measResult__cellResults),
-	offsetof(struct MeasResultNR__measResult__cellResults, _asn_ctx),
-	asn_MAP_cellResults_tag2el_4,
-	2,	/* Count of tags in the map */
-	asn_MAP_cellResults_oms_4,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	-1,	/* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_cellResults_4 = {
-	"cellResults",
-	"cellResults",
-	&asn_OP_SEQUENCE,
-	asn_DEF_cellResults_tags_4,
-	sizeof(asn_DEF_cellResults_tags_4)
-		/sizeof(asn_DEF_cellResults_tags_4[0]) - 1, /* 1 */
-	asn_DEF_cellResults_tags_4,	/* Same as above */
-	sizeof(asn_DEF_cellResults_tags_4)
-		/sizeof(asn_DEF_cellResults_tags_4[0]), /* 2 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_cellResults_4,
-	2,	/* Elements count */
-	&asn_SPC_cellResults_specs_4	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_rsIndexResults_7[] = {
-	{ ATF_POINTER, 2, offsetof(struct MeasResultNR__measResult__rsIndexResults, resultsSSB_Indexes),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_ResultsPerSSB_IndexList,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"resultsSSB-Indexes"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MeasResultNR__measResult__rsIndexResults, resultsCSI_RS_Indexes),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_ResultsPerCSI_RS_IndexList,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"resultsCSI-RS-Indexes"
-		},
-};
-static const int asn_MAP_rsIndexResults_oms_7[] = { 0, 1 };
-static const ber_tlv_tag_t asn_DEF_rsIndexResults_tags_7[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_rsIndexResults_tag2el_7[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resultsSSB-Indexes */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* resultsCSI-RS-Indexes */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_rsIndexResults_specs_7 = {
-	sizeof(struct MeasResultNR__measResult__rsIndexResults),
-	offsetof(struct MeasResultNR__measResult__rsIndexResults, _asn_ctx),
-	asn_MAP_rsIndexResults_tag2el_7,
-	2,	/* Count of tags in the map */
-	asn_MAP_rsIndexResults_oms_7,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	-1,	/* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rsIndexResults_7 = {
-	"rsIndexResults",
-	"rsIndexResults",
-	&asn_OP_SEQUENCE,
-	asn_DEF_rsIndexResults_tags_7,
-	sizeof(asn_DEF_rsIndexResults_tags_7)
-		/sizeof(asn_DEF_rsIndexResults_tags_7[0]) - 1, /* 1 */
-	asn_DEF_rsIndexResults_tags_7,	/* Same as above */
-	sizeof(asn_DEF_rsIndexResults_tags_7)
-		/sizeof(asn_DEF_rsIndexResults_tags_7[0]), /* 2 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_rsIndexResults_7,
-	2,	/* Elements count */
-	&asn_SPC_rsIndexResults_specs_7	/* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_measResult_3[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultNR__measResult, cellResults),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_cellResults_4,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"cellResults"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MeasResultNR__measResult, rsIndexResults),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		0,
-		&asn_DEF_rsIndexResults_7,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsIndexResults"
-		},
-};
-static const int asn_MAP_measResult_oms_3[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_measResult_tags_3[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_measResult_tag2el_3[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellResults */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rsIndexResults */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_measResult_specs_3 = {
-	sizeof(struct MeasResultNR__measResult),
-	offsetof(struct MeasResultNR__measResult, _asn_ctx),
-	asn_MAP_measResult_tag2el_3,
-	2,	/* Count of tags in the map */
-	asn_MAP_measResult_oms_3,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	-1,	/* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_measResult_3 = {
-	"measResult",
-	"measResult",
-	&asn_OP_SEQUENCE,
-	asn_DEF_measResult_tags_3,
-	sizeof(asn_DEF_measResult_tags_3)
-		/sizeof(asn_DEF_measResult_tags_3[0]) - 1, /* 1 */
-	asn_DEF_measResult_tags_3,	/* Same as above */
-	sizeof(asn_DEF_measResult_tags_3)
-		/sizeof(asn_DEF_measResult_tags_3[0]), /* 2 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_measResult_3,
-	2,	/* Elements count */
-	&asn_SPC_measResult_specs_3	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_MeasResultNR_1[] = {
-	{ ATF_POINTER, 1, offsetof(struct MeasResultNR, physCellId),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PhysCellId,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"physCellId"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultNR, measResult),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		0,
-		&asn_DEF_measResult_3,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResult"
-		},
-};
-static const int asn_MAP_MeasResultNR_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_MeasResultNR_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasResultNR_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measResult */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasResultNR_specs_1 = {
-	sizeof(struct MeasResultNR),
-	offsetof(struct MeasResultNR, _asn_ctx),
-	asn_MAP_MeasResultNR_tag2el_1,
-	2,	/* Count of tags in the map */
-	asn_MAP_MeasResultNR_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultNR = {
-	"MeasResultNR",
-	"MeasResultNR",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasResultNR_tags_1,
-	sizeof(asn_DEF_MeasResultNR_tags_1)
-		/sizeof(asn_DEF_MeasResultNR_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultNR_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultNR_tags_1)
-		/sizeof(asn_DEF_MeasResultNR_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasResultNR_1,
-	2,	/* Elements count */
-	&asn_SPC_MeasResultNR_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultNeighCells.c b/e2sm/lib/MeasResultNeighCells.c
deleted file mode 100644
index 3f87d70..0000000
--- a/e2sm/lib/MeasResultNeighCells.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultNeighCells.h"
-
-#include "MeasResultListNR.h"
-#include "MeasResultListEUTRA.h"
-static asn_oer_constraints_t asn_OER_type_MeasResultNeighCells_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_MeasResultNeighCells_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasResultNeighCells_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct MeasResultNeighCells, choice.measResultListNR),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasResultListNR,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResultListNR"
-		},
-	{ ATF_POINTER, 0, offsetof(struct MeasResultNeighCells, choice.measResultListEUTRA),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasResultListEUTRA,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResultListEUTRA"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasResultNeighCells_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measResultListNR */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measResultListEUTRA */
-};
-asn_CHOICE_specifics_t asn_SPC_MeasResultNeighCells_specs_1 = {
-	sizeof(struct MeasResultNeighCells),
-	offsetof(struct MeasResultNeighCells, _asn_ctx),
-	offsetof(struct MeasResultNeighCells, present),
-	sizeof(((struct MeasResultNeighCells *)0)->present),
-	asn_MAP_MeasResultNeighCells_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0,
-	2	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultNeighCells = {
-	"MeasResultNeighCells",
-	"MeasResultNeighCells",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_MeasResultNeighCells_constr_1, &asn_PER_type_MeasResultNeighCells_constr_1, CHOICE_constraint },
-	asn_MBR_MeasResultNeighCells_1,
-	2,	/* Elements count */
-	&asn_SPC_MeasResultNeighCells_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultPCell.c b/e2sm/lib/MeasResultPCell.c
deleted file mode 100644
index cbd74f8..0000000
--- a/e2sm/lib/MeasResultPCell.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultPCell.h"
-
-asn_TYPE_member_t asn_MBR_MeasResultPCell_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultPCell, eutra_PhysCellId),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PhysCellId,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"eutra-PhysCellId"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultPCell, rsrpResult),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RSRP_Range,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsrpResult"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultPCell, rsrqResult),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RSRQ_Range,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"rsrqResult"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasResultPCell_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasResultPCell_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra-PhysCellId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrpResult */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* rsrqResult */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasResultPCell_specs_1 = {
-	sizeof(struct MeasResultPCell),
-	offsetof(struct MeasResultPCell, _asn_ctx),
-	asn_MAP_MeasResultPCell_tag2el_1,
-	3,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultPCell = {
-	"MeasResultPCell",
-	"MeasResultPCell",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasResultPCell_tags_1,
-	sizeof(asn_DEF_MeasResultPCell_tags_1)
-		/sizeof(asn_DEF_MeasResultPCell_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultPCell_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultPCell_tags_1)
-		/sizeof(asn_DEF_MeasResultPCell_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasResultPCell_1,
-	3,	/* Elements count */
-	&asn_SPC_MeasResultPCell_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultServMO.c b/e2sm/lib/MeasResultServMO.c
deleted file mode 100644
index 346f5fe..0000000
--- a/e2sm/lib/MeasResultServMO.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultServMO.h"
-
-#include "MeasResultNR.h"
-asn_TYPE_member_t asn_MBR_MeasResultServMO_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultServMO, servCellId),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_ServCellIndex,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"servCellId"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasResultServMO, measResultServingCell),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasResultNR,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResultServingCell"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MeasResultServMO, measResultBestNeighCell),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasResultNR,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measResultBestNeighCell"
-		},
-};
-static const int asn_MAP_MeasResultServMO_oms_1[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_MeasResultServMO_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasResultServMO_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servCellId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measResultServingCell */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measResultBestNeighCell */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasResultServMO_specs_1 = {
-	sizeof(struct MeasResultServMO),
-	offsetof(struct MeasResultServMO, _asn_ctx),
-	asn_MAP_MeasResultServMO_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_MeasResultServMO_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultServMO = {
-	"MeasResultServMO",
-	"MeasResultServMO",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasResultServMO_tags_1,
-	sizeof(asn_DEF_MeasResultServMO_tags_1)
-		/sizeof(asn_DEF_MeasResultServMO_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultServMO_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultServMO_tags_1)
-		/sizeof(asn_DEF_MeasResultServMO_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasResultServMO_1,
-	3,	/* Elements count */
-	&asn_SPC_MeasResultServMO_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasResultServMOList.c b/e2sm/lib/MeasResultServMOList.c
deleted file mode 100644
index 2798a7e..0000000
--- a/e2sm/lib/MeasResultServMOList.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasResultServMOList.h"
-
-#include "MeasResultServMO.h"
-static asn_oer_constraints_t asn_OER_type_MeasResultServMOList_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..32)) */};
-asn_per_constraints_t asn_PER_type_MeasResultServMOList_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 5,  5,  1,  32 }	/* (SIZE(1..32)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasResultServMOList_1[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_MeasResultServMO,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasResultServMOList_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MeasResultServMOList_specs_1 = {
-	sizeof(struct MeasResultServMOList),
-	offsetof(struct MeasResultServMOList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasResultServMOList = {
-	"MeasResultServMOList",
-	"MeasResultServMOList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_MeasResultServMOList_tags_1,
-	sizeof(asn_DEF_MeasResultServMOList_tags_1)
-		/sizeof(asn_DEF_MeasResultServMOList_tags_1[0]), /* 1 */
-	asn_DEF_MeasResultServMOList_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasResultServMOList_tags_1)
-		/sizeof(asn_DEF_MeasResultServMOList_tags_1[0]), /* 1 */
-	{ &asn_OER_type_MeasResultServMOList_constr_1, &asn_PER_type_MeasResultServMOList_constr_1, SEQUENCE_OF_constraint },
-	asn_MBR_MeasResultServMOList_1,
-	1,	/* Single element */
-	&asn_SPC_MeasResultServMOList_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasurementInfoItem.c b/e2sm/lib/MeasurementInfoItem.c
deleted file mode 100644
index 5edae52..0000000
--- a/e2sm/lib/MeasurementInfoItem.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasurementInfoItem.h"
-
-asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, measType),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_MeasurementType,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measType"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasurementInfoItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfoItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measType */
-};
-asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1 = {
-	sizeof(struct MeasurementInfoItem),
-	offsetof(struct MeasurementInfoItem, _asn_ctx),
-	asn_MAP_MeasurementInfoItem_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem = {
-	"MeasurementInfoItem",
-	"MeasurementInfoItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_MeasurementInfoItem_tags_1,
-	sizeof(asn_DEF_MeasurementInfoItem_tags_1)
-		/sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */
-	asn_DEF_MeasurementInfoItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasurementInfoItem_tags_1)
-		/sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_MeasurementInfoItem_1,
-	1,	/* Elements count */
-	&asn_SPC_MeasurementInfoItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasurementInfoList.c b/e2sm/lib/MeasurementInfoList.c
deleted file mode 100644
index 9e7aed9..0000000
--- a/e2sm/lib/MeasurementInfoList.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasurementInfoList.h"
-
-#include "MeasurementInfoItem.h"
-static asn_oer_constraints_t asn_OER_type_MeasurementInfoList_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..65535)) */};
-asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_MeasurementInfoItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_MeasurementInfoList_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1 = {
-	sizeof(struct MeasurementInfoList),
-	offsetof(struct MeasurementInfoList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList = {
-	"MeasurementInfoList",
-	"MeasurementInfoList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_MeasurementInfoList_tags_1,
-	sizeof(asn_DEF_MeasurementInfoList_tags_1)
-		/sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */
-	asn_DEF_MeasurementInfoList_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasurementInfoList_tags_1)
-		/sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */
-	{ &asn_OER_type_MeasurementInfoList_constr_1, &asn_PER_type_MeasurementInfoList_constr_1, SEQUENCE_OF_constraint },
-	asn_MBR_MeasurementInfoList_1,
-	1,	/* Single element */
-	&asn_SPC_MeasurementInfoList_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasurementType.c b/e2sm/lib/MeasurementType.c
deleted file mode 100644
index 2d3e1f7..0000000
--- a/e2sm/lib/MeasurementType.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasurementType.h"
-
-static asn_oer_constraints_t asn_OER_type_MeasurementType_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_MeasurementType_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasurementType_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measName),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasurementTypeName,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measName"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measID),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasurementTypeID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"measID"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasurementType_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measID */
-};
-asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1 = {
-	sizeof(struct MeasurementType),
-	offsetof(struct MeasurementType, _asn_ctx),
-	offsetof(struct MeasurementType, present),
-	sizeof(((struct MeasurementType *)0)->present),
-	asn_MAP_MeasurementType_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0,
-	2	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasurementType = {
-	"MeasurementType",
-	"MeasurementType",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_MeasurementType_constr_1, &asn_PER_type_MeasurementType_constr_1, CHOICE_constraint },
-	asn_MBR_MeasurementType_1,
-	2,	/* Elements count */
-	&asn_SPC_MeasurementType_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MeasurementTypeID.c b/e2sm/lib/MeasurementTypeID.c
deleted file mode 100644
index 62a8a79..0000000
--- a/e2sm/lib/MeasurementTypeID.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasurementTypeID.h"
-
-int
-MeasurementTypeID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 1 && value <= 65535)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_MeasurementTypeID_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_MeasurementTypeID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID = {
-	"MeasurementTypeID",
-	"MeasurementTypeID",
-	&asn_OP_NativeInteger,
-	asn_DEF_MeasurementTypeID_tags_1,
-	sizeof(asn_DEF_MeasurementTypeID_tags_1)
-		/sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */
-	asn_DEF_MeasurementTypeID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasurementTypeID_tags_1)
-		/sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */
-	{ &asn_OER_type_MeasurementTypeID_constr_1, &asn_PER_type_MeasurementTypeID_constr_1, MeasurementTypeID_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/MeasurementTypeName.c b/e2sm/lib/MeasurementTypeName.c
deleted file mode 100644
index 1b5fd5a..0000000
--- a/e2sm/lib/MeasurementTypeName.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasurementTypeName.h"
-
-static const int permitted_alphabet_table_1[256] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
- 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,	/* .      '() +,-./ */
-10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,	/* 0123456789:  = ? */
- 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,	/*  ABCDEFGHIJKLMNO */
-38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,	/* PQRSTUVWXYZ      */
- 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,	/*  abcdefghijklmno */
-64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,	/* pqrstuvwxyz      */
-};
-static const int permitted_alphabet_code2value_1[74] = {
-32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
-55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
-75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
-97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
-113,114,115,116,117,118,119,120,121,122,};
-
-
-static int check_permitted_alphabet_1(const void *sptr) {
-	const int *table = permitted_alphabet_table_1;
-	/* The underlying type is PrintableString */
-	const PrintableString_t *st = (const PrintableString_t *)sptr;
-	const uint8_t *ch = st->buf;
-	const uint8_t *end = ch + st->size;
-	
-	for(; ch < end; ch++) {
-		uint8_t cv = *ch;
-		if(!table[cv]) return -1;
-	}
-	return 0;
-}
-
-int
-MeasurementTypeName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const PrintableString_t *st = (const PrintableString_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	size = st->size;
-	
-	if((size >= 1 && size <= 150)
-		 && !check_permitted_alphabet_1(st)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int asn_PER_MAP_MeasurementTypeName_1_v2c(unsigned int value) {
-	if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
-		return -1;
-	return permitted_alphabet_table_1[value] - 1;
-}
-static int asn_PER_MAP_MeasurementTypeName_1_c2v(unsigned int code) {
-	if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
-		return -1;
-	return permitted_alphabet_code2value_1[code];
-}
-/*
- * This type is implemented using PrintableString,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_MeasurementTypeName_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(0..MAX)) */};
-asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  32,  122 }	/* (32..122) */,
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }	/* (SIZE(1..150,...)) */,
-	asn_PER_MAP_MeasurementTypeName_1_v2c,	/* Value to PER code map */
-	asn_PER_MAP_MeasurementTypeName_1_c2v	/* PER code to value map */
-};
-static const ber_tlv_tag_t asn_DEF_MeasurementTypeName_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName = {
-	"MeasurementTypeName",
-	"MeasurementTypeName",
-	&asn_OP_PrintableString,
-	asn_DEF_MeasurementTypeName_tags_1,
-	sizeof(asn_DEF_MeasurementTypeName_tags_1)
-		/sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */
-	asn_DEF_MeasurementTypeName_tags_1,	/* Same as above */
-	sizeof(asn_DEF_MeasurementTypeName_tags_1)
-		/sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */
-	{ &asn_OER_type_MeasurementTypeName_constr_1, &asn_PER_type_MeasurementTypeName_constr_1, MeasurementTypeName_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/MeasurementValue.c b/e2sm/lib/MeasurementValue.c
deleted file mode 100644
index ed03a0b..0000000
--- a/e2sm/lib/MeasurementValue.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "MeasurementValue.h"
-
-#include "L3-RRC-Measurements.h"
-static asn_oer_constraints_t asn_OER_type_MeasurementValue_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_MeasurementValue_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MeasurementValue_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasurementValue, choice.valueInt),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"valueInt"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasurementValue, choice.valueReal),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeReal,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"valueReal"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MeasurementValue, choice.noValue),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NULL,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"noValue"
-		},
-	{ ATF_POINTER, 0, offsetof(struct MeasurementValue, choice.valueRRC),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_L3_RRC_Measurements,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"valueRRC"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_MeasurementValue_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueReal */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* noValue */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* valueRRC */
-};
-asn_CHOICE_specifics_t asn_SPC_MeasurementValue_specs_1 = {
-	sizeof(struct MeasurementValue),
-	offsetof(struct MeasurementValue, _asn_ctx),
-	offsetof(struct MeasurementValue, present),
-	sizeof(((struct MeasurementValue *)0)->present),
-	asn_MAP_MeasurementValue_tag2el_1,
-	4,	/* Count of tags in the map */
-	0, 0,
-	4	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_MeasurementValue = {
-	"MeasurementValue",
-	"MeasurementValue",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_MeasurementValue_constr_1, &asn_PER_type_MeasurementValue_constr_1, CHOICE_constraint },
-	asn_MBR_MeasurementValue_1,
-	4,	/* Elements count */
-	&asn_SPC_MeasurementValue_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/MessageType-Choice-NI.c b/e2sm/lib/MessageType-Choice-NI.c
new file mode 100644
index 0000000..7c6ded8
--- /dev/null
+++ b/e2sm/lib/MessageType-Choice-NI.c
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "MessageType-Choice-NI.h"
+
+#include "InterfaceIdentifier.h"
+#include "Interface-MessageID.h"
+asn_TYPE_member_t asn_MBR_MessageType_Choice_NI_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct MessageType_Choice_NI, nI_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_InterfaceType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nI-Type"
+		},
+	{ ATF_POINTER, 2, offsetof(struct MessageType_Choice_NI, nI_Identifier),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_InterfaceIdentifier,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nI-Identifier"
+		},
+	{ ATF_POINTER, 1, offsetof(struct MessageType_Choice_NI, nI_Message),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_Interface_MessageID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nI-Message"
+		},
+};
+static const int asn_MAP_MessageType_Choice_NI_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MessageType_Choice_NI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MessageType_Choice_NI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nI-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nI-Identifier */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nI-Message */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MessageType_Choice_NI_specs_1 = {
+	sizeof(struct MessageType_Choice_NI),
+	offsetof(struct MessageType_Choice_NI, _asn_ctx),
+	asn_MAP_MessageType_Choice_NI_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_MessageType_Choice_NI_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MessageType_Choice_NI = {
+	"MessageType-Choice-NI",
+	"MessageType-Choice-NI",
+	&asn_OP_SEQUENCE,
+	asn_DEF_MessageType_Choice_NI_tags_1,
+	sizeof(asn_DEF_MessageType_Choice_NI_tags_1)
+		/sizeof(asn_DEF_MessageType_Choice_NI_tags_1[0]), /* 1 */
+	asn_DEF_MessageType_Choice_NI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_MessageType_Choice_NI_tags_1)
+		/sizeof(asn_DEF_MessageType_Choice_NI_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_MessageType_Choice_NI_1,
+	3,	/* Elements count */
+	&asn_SPC_MessageType_Choice_NI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/MessageType-Choice-RRC.c b/e2sm/lib/MessageType-Choice-RRC.c
new file mode 100644
index 0000000..8de8dfc
--- /dev/null
+++ b/e2sm/lib/MessageType-Choice-RRC.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "MessageType-Choice-RRC.h"
+
+asn_TYPE_member_t asn_MBR_MessageType_Choice_RRC_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct MessageType_Choice_RRC, rRC_Message),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RRC_MessageID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"rRC-Message"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_MessageType_Choice_RRC_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MessageType_Choice_RRC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rRC-Message */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MessageType_Choice_RRC_specs_1 = {
+	sizeof(struct MessageType_Choice_RRC),
+	offsetof(struct MessageType_Choice_RRC, _asn_ctx),
+	asn_MAP_MessageType_Choice_RRC_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MessageType_Choice_RRC = {
+	"MessageType-Choice-RRC",
+	"MessageType-Choice-RRC",
+	&asn_OP_SEQUENCE,
+	asn_DEF_MessageType_Choice_RRC_tags_1,
+	sizeof(asn_DEF_MessageType_Choice_RRC_tags_1)
+		/sizeof(asn_DEF_MessageType_Choice_RRC_tags_1[0]), /* 1 */
+	asn_DEF_MessageType_Choice_RRC_tags_1,	/* Same as above */
+	sizeof(asn_DEF_MessageType_Choice_RRC_tags_1)
+		/sizeof(asn_DEF_MessageType_Choice_RRC_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_MessageType_Choice_RRC_1,
+	1,	/* Elements count */
+	&asn_SPC_MessageType_Choice_RRC_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/MessageType-Choice.c b/e2sm/lib/MessageType-Choice.c
new file mode 100644
index 0000000..3be3635
--- /dev/null
+++ b/e2sm/lib/MessageType-Choice.c
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "MessageType-Choice.h"
+
+#include "MessageType-Choice-NI.h"
+#include "MessageType-Choice-RRC.h"
+static asn_oer_constraints_t asn_OER_type_MessageType_Choice_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_MessageType_Choice_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MessageType_Choice_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct MessageType_Choice, choice.messageType_Choice_NI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_MessageType_Choice_NI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"messageType-Choice-NI"
+		},
+	{ ATF_POINTER, 0, offsetof(struct MessageType_Choice, choice.messageType_Choice_RRC),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_MessageType_Choice_RRC,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"messageType-Choice-RRC"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_MessageType_Choice_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* messageType-Choice-NI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageType-Choice-RRC */
+};
+asn_CHOICE_specifics_t asn_SPC_MessageType_Choice_specs_1 = {
+	sizeof(struct MessageType_Choice),
+	offsetof(struct MessageType_Choice, _asn_ctx),
+	offsetof(struct MessageType_Choice, present),
+	sizeof(((struct MessageType_Choice *)0)->present),
+	asn_MAP_MessageType_Choice_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MessageType_Choice = {
+	"MessageType-Choice",
+	"MessageType-Choice",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_MessageType_Choice_constr_1, &asn_PER_type_MessageType_Choice_constr_1, CHOICE_constraint },
+	asn_MBR_MessageType_Choice_1,
+	2,	/* Elements count */
+	&asn_SPC_MessageType_Choice_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NG-RANnodeUEXnAPID.c b/e2sm/lib/NG-RANnodeUEXnAPID.c
new file mode 100644
index 0000000..6a7a9b6
--- /dev/null
+++ b/e2sm/lib/NG-RANnodeUEXnAPID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NG-RANnodeUEXnAPID.h"
+
+int
+NG_RANnodeUEXnAPID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	/* Constraint check succeeded */
+	return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = {
+	{ 4, 1 }	/* (0..4294967295) */,
+	-1};
+asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 32, -1,  0,  4294967295 }	/* (0..4294967295) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1 = {
+	0,	0,	0,	0,	0,
+	0,	/* Native long size */
+	1	/* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_NG_RANnodeUEXnAPID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID = {
+	"NG-RANnodeUEXnAPID",
+	"NG-RANnodeUEXnAPID",
+	&asn_OP_NativeInteger,
+	asn_DEF_NG_RANnodeUEXnAPID_tags_1,
+	sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1)
+		/sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */
+	asn_DEF_NG_RANnodeUEXnAPID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1)
+		/sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NG_RANnodeUEXnAPID_constr_1, &asn_PER_type_NG_RANnodeUEXnAPID_constr_1, NG_RANnodeUEXnAPID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_NG_RANnodeUEXnAPID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NGENB-CU-UE-W1AP-ID.c b/e2sm/lib/NGENB-CU-UE-W1AP-ID.c
new file mode 100644
index 0000000..fa15e70
--- /dev/null
+++ b/e2sm/lib/NGENB-CU-UE-W1AP-ID.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NGENB-CU-UE-W1AP-ID.h"
+
+int
+NGENB_CU_UE_W1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	
+	/* Constraint check succeeded */
+	return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = {
+	{ 4, 1 }	/* (0..4294967295) */,
+	-1};
+asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 32, -1,  0,  4294967295 }	/* (0..4294967295) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1 = {
+	0,	0,	0,	0,	0,
+	0,	/* Native long size */
+	1	/* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID = {
+	"NGENB-CU-UE-W1AP-ID",
+	"NGENB-CU-UE-W1AP-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1,
+	sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1)
+		/sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */
+	asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1)
+		/sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NGENB_CU_UE_W1AP_ID_constr_1, &asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1, NGENB_CU_UE_W1AP_ID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NGENB-DU-ID.c b/e2sm/lib/NGENB-DU-ID.c
new file mode 100644
index 0000000..2effacf
--- /dev/null
+++ b/e2sm/lib/NGENB-DU-ID.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NGENB-DU-ID.h"
+
+int
+NGENB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const INTEGER_t *st = (const INTEGER_t *)sptr;
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(asn_INTEGER2long(st, &value)) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value too large (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if((value >= 0 && value <= 68719476735)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using INTEGER,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NGENB_DU_ID_constr_1 CC_NOTUSED = {
+	{ 8, 1 }	/* (0..68719476735) */,
+	-1};
+asn_per_constraints_t asn_PER_type_NGENB_DU_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 36, -1,  0,  68719476735 }	/* (0..68719476735) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NGENB_DU_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NGENB_DU_ID = {
+	"NGENB-DU-ID",
+	"NGENB-DU-ID",
+	&asn_OP_INTEGER,
+	asn_DEF_NGENB_DU_ID_tags_1,
+	sizeof(asn_DEF_NGENB_DU_ID_tags_1)
+		/sizeof(asn_DEF_NGENB_DU_ID_tags_1[0]), /* 1 */
+	asn_DEF_NGENB_DU_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NGENB_DU_ID_tags_1)
+		/sizeof(asn_DEF_NGENB_DU_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NGENB_DU_ID_constr_1, &asn_PER_type_NGENB_DU_ID_constr_1, NGENB_DU_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/NI-Type.c b/e2sm/lib/NI-Type.c
deleted file mode 100644
index 06ba425..0000000
--- a/e2sm/lib/NI-Type.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "NI-Type.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_NI_Type_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_NI_Type_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_NI_Type_value2enum_1[] = {
-	{ 0,	4,	"x2-u" },
-	{ 1,	4,	"xn-u" },
-	{ 2,	4,	"f1-u" }
-	/* This list is extensible */
-};
-static const unsigned int asn_MAP_NI_Type_enum2value_1[] = {
-	2,	/* f1-u(2) */
-	0,	/* x2-u(0) */
-	1	/* xn-u(1) */
-	/* This list is extensible */
-};
-const asn_INTEGER_specifics_t asn_SPC_NI_Type_specs_1 = {
-	asn_MAP_NI_Type_value2enum_1,	/* "tag" => N; sorted by tag */
-	asn_MAP_NI_Type_enum2value_1,	/* N => "tag"; sorted by N */
-	3,	/* Number of elements in the maps */
-	4,	/* Extensions before this member */
-	1,	/* Strict enumeration */
-	0,	/* Native long size */
-	0
-};
-static const ber_tlv_tag_t asn_DEF_NI_Type_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_NI_Type = {
-	"NI-Type",
-	"NI-Type",
-	&asn_OP_NativeEnumerated,
-	asn_DEF_NI_Type_tags_1,
-	sizeof(asn_DEF_NI_Type_tags_1)
-		/sizeof(asn_DEF_NI_Type_tags_1[0]), /* 1 */
-	asn_DEF_NI_Type_tags_1,	/* Same as above */
-	sizeof(asn_DEF_NI_Type_tags_1)
-		/sizeof(asn_DEF_NI_Type_tags_1[0]), /* 1 */
-	{ &asn_OER_type_NI_Type_constr_1, &asn_PER_type_NI_Type_constr_1, NativeEnumerated_constraint },
-	0, 0,	/* Defined elsewhere */
-	&asn_SPC_NI_Type_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/NR-ARFCN.c b/e2sm/lib/NR-ARFCN.c
new file mode 100644
index 0000000..eaaffa4
--- /dev/null
+++ b/e2sm/lib/NR-ARFCN.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NR-ARFCN.h"
+
+static int
+memb_nRARFCN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 3279165)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_nRARFCN_constr_2 CC_NOTUSED = {
+	{ 4, 1 }	/* (0..3279165) */,
+	-1};
+static asn_per_constraints_t asn_PER_memb_nRARFCN_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 22, -1,  0,  3279165 }	/* (0..3279165) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NR_ARFCN_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NR_ARFCN, nRARFCN),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_nRARFCN_constr_2, &asn_PER_memb_nRARFCN_constr_2,  memb_nRARFCN_constraint_1 },
+		0, 0, /* No default value */
+		"nRARFCN"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NR_ARFCN_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_ARFCN_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nRARFCN */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_ARFCN_specs_1 = {
+	sizeof(struct NR_ARFCN),
+	offsetof(struct NR_ARFCN, _asn_ctx),
+	asn_MAP_NR_ARFCN_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_ARFCN = {
+	"NR-ARFCN",
+	"NR-ARFCN",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NR_ARFCN_tags_1,
+	sizeof(asn_DEF_NR_ARFCN_tags_1)
+		/sizeof(asn_DEF_NR_ARFCN_tags_1[0]), /* 1 */
+	asn_DEF_NR_ARFCN_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NR_ARFCN_tags_1)
+		/sizeof(asn_DEF_NR_ARFCN_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NR_ARFCN_1,
+	1,	/* Elements count */
+	&asn_SPC_NR_ARFCN_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NR-CGI.c b/e2sm/lib/NR-CGI.c
new file mode 100644
index 0000000..e2a5d69
--- /dev/null
+++ b/e2sm/lib/NR-CGI.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NR-CGI.h"
+
+asn_TYPE_member_t asn_MBR_NR_CGI_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NR_CGI, pLMNIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PLMNIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"pLMNIdentity"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NR_CGI, nRCellIdentity),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NRCellIdentity,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nRCellIdentity"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NR_CGI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_CGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1 = {
+	sizeof(struct NR_CGI),
+	offsetof(struct NR_CGI, _asn_ctx),
+	asn_MAP_NR_CGI_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_CGI = {
+	"NR-CGI",
+	"NR-CGI",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NR_CGI_tags_1,
+	sizeof(asn_DEF_NR_CGI_tags_1)
+		/sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */
+	asn_DEF_NR_CGI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NR_CGI_tags_1)
+		/sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NR_CGI_1,
+	2,	/* Elements count */
+	&asn_SPC_NR_CGI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NR-PCI.c b/e2sm/lib/NR-PCI.c
new file mode 100644
index 0000000..ddd0e7c
--- /dev/null
+++ b/e2sm/lib/NR-PCI.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NR-PCI.h"
+
+int
+NR_PCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 1007)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NR_PCI_constr_1 CC_NOTUSED = {
+	{ 2, 1 }	/* (0..1007) */,
+	-1};
+asn_per_constraints_t asn_PER_type_NR_PCI_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 10,  10,  0,  1007 }	/* (0..1007) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NR_PCI_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NR_PCI = {
+	"NR-PCI",
+	"NR-PCI",
+	&asn_OP_NativeInteger,
+	asn_DEF_NR_PCI_tags_1,
+	sizeof(asn_DEF_NR_PCI_tags_1)
+		/sizeof(asn_DEF_NR_PCI_tags_1[0]), /* 1 */
+	asn_DEF_NR_PCI_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NR_PCI_tags_1)
+		/sizeof(asn_DEF_NR_PCI_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NR_PCI_constr_1, &asn_PER_type_NR_PCI_constr_1, NR_PCI_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/NRCGI.c b/e2sm/lib/NRCGI.c
deleted file mode 100644
index 2eaae12..0000000
--- a/e2sm/lib/NRCGI.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "NRCGI.h"
-
-asn_TYPE_member_t asn_MBR_NRCGI_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct NRCGI, pLMN_Identity),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"pLMN-Identity"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct NRCGI, nRCellIdentity),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NRCellIdentity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"nRCellIdentity"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_NRCGI_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_NRCGI_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */
-};
-asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1 = {
-	sizeof(struct NRCGI),
-	offsetof(struct NRCGI, _asn_ctx),
-	asn_MAP_NRCGI_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_NRCGI = {
-	"NRCGI",
-	"NRCGI",
-	&asn_OP_SEQUENCE,
-	asn_DEF_NRCGI_tags_1,
-	sizeof(asn_DEF_NRCGI_tags_1)
-		/sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */
-	asn_DEF_NRCGI_tags_1,	/* Same as above */
-	sizeof(asn_DEF_NRCGI_tags_1)
-		/sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_NRCGI_1,
-	2,	/* Elements count */
-	&asn_SPC_NRCGI_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/NRCellIdentity.c b/e2sm/lib/NRCellIdentity.c
index 511d128..1b99861 100644
--- a/e2sm/lib/NRCellIdentity.c
+++ b/e2sm/lib/NRCellIdentity.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/NRFrequencyBand-List.c b/e2sm/lib/NRFrequencyBand-List.c
new file mode 100644
index 0000000..3b385c0
--- /dev/null
+++ b/e2sm/lib/NRFrequencyBand-List.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NRFrequencyBand-List.h"
+
+#include "NRFrequencyBandItem.h"
+static asn_oer_constraints_t asn_OER_type_NRFrequencyBand_List_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_NRFrequencyBand_List_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 5,  5,  1,  32 }	/* (SIZE(1..32)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NRFrequencyBand_List_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_NRFrequencyBandItem,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NRFrequencyBand_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_NRFrequencyBand_List_specs_1 = {
+	sizeof(struct NRFrequencyBand_List),
+	offsetof(struct NRFrequencyBand_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_NRFrequencyBand_List = {
+	"NRFrequencyBand-List",
+	"NRFrequencyBand-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_NRFrequencyBand_List_tags_1,
+	sizeof(asn_DEF_NRFrequencyBand_List_tags_1)
+		/sizeof(asn_DEF_NRFrequencyBand_List_tags_1[0]), /* 1 */
+	asn_DEF_NRFrequencyBand_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NRFrequencyBand_List_tags_1)
+		/sizeof(asn_DEF_NRFrequencyBand_List_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NRFrequencyBand_List_constr_1, &asn_PER_type_NRFrequencyBand_List_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_NRFrequencyBand_List_1,
+	1,	/* Single element */
+	&asn_SPC_NRFrequencyBand_List_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NRFrequencyBandItem.c b/e2sm/lib/NRFrequencyBandItem.c
new file mode 100644
index 0000000..1179aa1
--- /dev/null
+++ b/e2sm/lib/NRFrequencyBandItem.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NRFrequencyBandItem.h"
+
+static int
+memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 1024)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  10,  10,  1,  1024 }	/* (1..1024,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NRFrequencyBandItem_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NRFrequencyBandItem, freqBandIndicatorNr),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_freqBandIndicatorNr_constr_2, &asn_PER_memb_freqBandIndicatorNr_constr_2,  memb_freqBandIndicatorNr_constraint_1 },
+		0, 0, /* No default value */
+		"freqBandIndicatorNr"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NRFrequencyBandItem, supportedSULBandList),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_SupportedSULBandList,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"supportedSULBandList"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NRFrequencyBandItem_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NRFrequencyBandItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNr */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* supportedSULBandList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NRFrequencyBandItem_specs_1 = {
+	sizeof(struct NRFrequencyBandItem),
+	offsetof(struct NRFrequencyBandItem, _asn_ctx),
+	asn_MAP_NRFrequencyBandItem_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NRFrequencyBandItem = {
+	"NRFrequencyBandItem",
+	"NRFrequencyBandItem",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NRFrequencyBandItem_tags_1,
+	sizeof(asn_DEF_NRFrequencyBandItem_tags_1)
+		/sizeof(asn_DEF_NRFrequencyBandItem_tags_1[0]), /* 1 */
+	asn_DEF_NRFrequencyBandItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NRFrequencyBandItem_tags_1)
+		/sizeof(asn_DEF_NRFrequencyBandItem_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NRFrequencyBandItem_1,
+	2,	/* Elements count */
+	&asn_SPC_NRFrequencyBandItem_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NRFrequencyInfo.c b/e2sm/lib/NRFrequencyInfo.c
new file mode 100644
index 0000000..d74281a
--- /dev/null
+++ b/e2sm/lib/NRFrequencyInfo.c
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NRFrequencyInfo.h"
+
+static asn_TYPE_member_t asn_MBR_NRFrequencyInfo_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NRFrequencyInfo, nrARFCN),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_ARFCN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nrARFCN"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NRFrequencyInfo, frequencyBand_List),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NRFrequencyBand_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"frequencyBand-List"
+		},
+	{ ATF_POINTER, 1, offsetof(struct NRFrequencyInfo, frequencyShift7p5khz),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NRFrequencyShift7p5khz,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"frequencyShift7p5khz"
+		},
+};
+static const int asn_MAP_NRFrequencyInfo_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_NRFrequencyInfo_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NRFrequencyInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrARFCN */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyBand-List */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* frequencyShift7p5khz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_NRFrequencyInfo_specs_1 = {
+	sizeof(struct NRFrequencyInfo),
+	offsetof(struct NRFrequencyInfo, _asn_ctx),
+	asn_MAP_NRFrequencyInfo_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_NRFrequencyInfo_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NRFrequencyInfo = {
+	"NRFrequencyInfo",
+	"NRFrequencyInfo",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NRFrequencyInfo_tags_1,
+	sizeof(asn_DEF_NRFrequencyInfo_tags_1)
+		/sizeof(asn_DEF_NRFrequencyInfo_tags_1[0]), /* 1 */
+	asn_DEF_NRFrequencyInfo_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NRFrequencyInfo_tags_1)
+		/sizeof(asn_DEF_NRFrequencyInfo_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NRFrequencyInfo_1,
+	3,	/* Elements count */
+	&asn_SPC_NRFrequencyInfo_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NRFrequencyShift7p5khz.c b/e2sm/lib/NRFrequencyShift7p5khz.c
new file mode 100644
index 0000000..2d66419
--- /dev/null
+++ b/e2sm/lib/NRFrequencyShift7p5khz.c
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NRFrequencyShift7p5khz.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NRFrequencyShift7p5khz_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_NRFrequencyShift7p5khz_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_NRFrequencyShift7p5khz_value2enum_1[] = {
+	{ 0,	5,	"false" },
+	{ 1,	4,	"true" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_NRFrequencyShift7p5khz_enum2value_1[] = {
+	0,	/* false(0) */
+	1	/* true(1) */
+	/* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_NRFrequencyShift7p5khz_specs_1 = {
+	asn_MAP_NRFrequencyShift7p5khz_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_NRFrequencyShift7p5khz_enum2value_1,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_NRFrequencyShift7p5khz_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NRFrequencyShift7p5khz = {
+	"NRFrequencyShift7p5khz",
+	"NRFrequencyShift7p5khz",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_NRFrequencyShift7p5khz_tags_1,
+	sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1)
+		/sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1[0]), /* 1 */
+	asn_DEF_NRFrequencyShift7p5khz_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1)
+		/sizeof(asn_DEF_NRFrequencyShift7p5khz_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NRFrequencyShift7p5khz_constr_1, &asn_PER_type_NRFrequencyShift7p5khz_constr_1, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_NRFrequencyShift7p5khz_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NULL.c b/e2sm/lib/NULL.c
deleted file mode 100644
index 4a2914f..0000000
--- a/e2sm/lib/NULL.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*-
- * Copyright (c) 2003, 2005 Lev Walkin <vlm@lionet.info>. All rights reserved.
- * Redistribution and modifications are permitted subject to BSD license.
- */
-#include <asn_internal.h>
-#include <asn_codecs_prim.h>
-#include <NULL.h>
-#include <BOOLEAN.h>	/* Implemented in terms of BOOLEAN type */
-
-/*
- * NULL basic type description.
- */
-static const ber_tlv_tag_t asn_DEF_NULL_tags[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (5 << 2))
-};
-asn_TYPE_operation_t asn_OP_NULL = {
-	BOOLEAN_free,
-	NULL_print,
-	NULL_compare,
-	BOOLEAN_decode_ber,	/* Implemented in terms of BOOLEAN */
-	NULL_encode_der,	/* Special handling of DER encoding */
-	NULL_decode_xer,
-	NULL_encode_xer,
-#ifdef	ASN_DISABLE_OER_SUPPORT
-	0,
-	0,
-#else
-	NULL_decode_oer,
-	NULL_encode_oer,
-#endif  /* ASN_DISABLE_OER_SUPPORT */
-#ifdef	ASN_DISABLE_PER_SUPPORT
-	0,
-	0,
-	0,
-	0,
-#else
-	NULL_decode_uper,	/* Unaligned PER decoder */
-	NULL_encode_uper,	/* Unaligned PER encoder */
-	NULL_decode_aper,	/* Aligned PER decoder */
-	NULL_encode_aper,	/* Aligned PER encoder */
-#endif	/* ASN_DISABLE_PER_SUPPORT */
-	NULL_random_fill,
-	0	/* Use generic outmost tag fetcher */
-};
-asn_TYPE_descriptor_t asn_DEF_NULL = {
-	"NULL",
-	"NULL",
-	&asn_OP_NULL,
-	asn_DEF_NULL_tags,
-	sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
-	asn_DEF_NULL_tags,	/* Same as above */
-	sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
-	{ 0, 0, asn_generic_no_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
-asn_enc_rval_t
-NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode,
-                ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) {
-	asn_enc_rval_t erval = {0,0,0};
-
-	erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key);
-	if(erval.encoded == -1) {
-		erval.failed_type = td;
-		erval.structure_ptr = ptr;
-	}
-
-	ASN__ENCODED_OK(erval);
-}
-
-asn_enc_rval_t
-NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
-                enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
-                void *app_key) {
-	asn_enc_rval_t er = {0,0,0};
-
-	(void)td;
-	(void)sptr;
-	(void)ilevel;
-	(void)flags;
-	(void)cb;
-	(void)app_key;
-
-	/* XMLNullValue is empty */
-	er.encoded = 0;
-	ASN__ENCODED_OK(er);
-}
-
-
-static enum xer_pbd_rval
-NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
-                      const void *chunk_buf, size_t chunk_size) {
-    (void)td;
-	(void)sptr;
-	(void)chunk_buf;    /* Going to be empty according to the rules below. */
-
-	/*
-	 * There must be no content in self-terminating <NULL/> tag.
-	 */
-	if(chunk_size)
-		return XPBD_BROKEN_ENCODING;
-	else
-		return XPBD_BODY_CONSUMED;
-}
-
-asn_dec_rval_t
-NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
-                const asn_TYPE_descriptor_t *td, void **sptr,
-                const char *opt_mname, const void *buf_ptr, size_t size) {
-    return xer_decode_primitive(opt_codec_ctx, td,
-		sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
-		NULL__xer_body_decode);
-}
-
-int
-NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) {
-    (void)td;
-    (void)a;
-    (void)b;
-    return 0;
-}
-
-int
-NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
-           asn_app_consume_bytes_f *cb, void *app_key) {
-    (void)td;	/* Unused argument */
-	(void)ilevel;	/* Unused argument */
-
-	if(sptr) {
-		return (cb("<present>", 9, app_key) < 0) ? -1 : 0;
-	} else {
-		return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
-	}
-}
-
-#ifndef ASN_DISABLE_OER_SUPPORT
-
-asn_dec_rval_t
-NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
-                const asn_TYPE_descriptor_t *td,
-                const asn_oer_constraints_t *constraints, void **sptr,
-                const void *ptr, size_t size) {
-    asn_dec_rval_t rv = {RC_OK, 0};
-    (void)opt_codec_ctx;
-    (void)td;
-    (void)constraints;
-    (void)ptr;
-    (void)size;
-
-    if(!*sptr) {
-        *sptr = MALLOC(sizeof(NULL_t));
-        if(*sptr) {
-            *(NULL_t *)*sptr = 0;
-        } else {
-            ASN__DECODE_FAILED;
-        }
-    }
-
-    return rv;
-}
-
-asn_enc_rval_t
-NULL_encode_oer(const asn_TYPE_descriptor_t *td,
-                const asn_oer_constraints_t *constraints, const void *sptr,
-                asn_app_consume_bytes_f *cb, void *app_key) {
-    asn_enc_rval_t er = {0,0,0};
-
-    (void)td;
-    (void)sptr;
-    (void)constraints;
-    (void)cb;
-    (void)app_key;
-
-    er.encoded = 0; /* Encoding in 0 bytes. */
-
-    ASN__ENCODED_OK(er);
-}
-
-#endif /* ASN_DISABLE_OER_SUPPORT */
-
-#ifndef ASN_DISABLE_PER_SUPPORT
-
-asn_dec_rval_t
-NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
-                 const asn_TYPE_descriptor_t *td,
-                 const asn_per_constraints_t *constraints, void **sptr,
-                 asn_per_data_t *pd) {
-    asn_dec_rval_t rv;
-
-	(void)opt_codec_ctx;
-	(void)td;
-	(void)constraints;
-	(void)pd;
-
-	if(!*sptr) {
-		*sptr = MALLOC(sizeof(NULL_t));
-		if(*sptr) {
-			*(NULL_t *)*sptr = 0;
-		} else {
-			ASN__DECODE_FAILED;
-		}
-	}
-
-	/*
-	 * NULL type does not have content octets.
-	 */
-
-	rv.code = RC_OK;
-	rv.consumed = 0;
-	return rv;
-}
-
-asn_enc_rval_t
-NULL_encode_uper(const asn_TYPE_descriptor_t *td,
-                 const asn_per_constraints_t *constraints, const void *sptr,
-                 asn_per_outp_t *po) {
-	asn_enc_rval_t er = {0,0,0};
-
-	(void)td;
-	(void)constraints;
-	(void)sptr;
-	(void)po;
-
-	er.encoded = 0;
-	ASN__ENCODED_OK(er);
-}
-
-asn_dec_rval_t
-NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
-                 const asn_TYPE_descriptor_t *td,
-                 const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
-	asn_dec_rval_t rv = {RC_OK, 0};
-
-	(void)opt_codec_ctx;
-	(void)td;
-	(void)constraints;
-	(void)pd;
-
-	if(!*sptr) {
-		*sptr = MALLOC(sizeof(NULL_t));
-		if(*sptr) {
-			*(NULL_t *)*sptr = 0;
-		} else {
-			ASN__DECODE_FAILED;
-		}
-	}
-
-	/*
-	 * NULL type does not have content octets.
-	 */
-
-	rv.code = RC_OK;
-	rv.consumed = 0;
-	return rv;
-}
-
-
-asn_enc_rval_t
-NULL_encode_aper(const asn_TYPE_descriptor_t *td,
-                 const asn_per_constraints_t *constraints,
-                 const void *sptr, asn_per_outp_t *po) {
-	asn_enc_rval_t er = {0,0,0};
-
-	(void)td;
-	(void)constraints;
-	(void)sptr;
-	(void)po;
-
-	er.encoded = 0;
-	ASN__ENCODED_OK(er);
-}
-
-#endif  /* ASN_DISABLE_PER_SUPPORT */
-
-asn_random_fill_result_t
-NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
-                    const asn_encoding_constraints_t *constr,
-                    size_t max_length) {
-    asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
-    asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
-    asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
-    NULL_t *st = *sptr;
-
-    (void)td;
-    (void)constr;
-
-    if(max_length == 0) return result_skipped;
-
-    if(st == NULL) {
-        st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st)));
-        if(st == NULL) {
-            return result_failed;
-        }
-    }
-
-    return result_ok;
-}
-
diff --git a/e2sm/lib/NeighborCell-Item-Choice-E-UTRA.c b/e2sm/lib/NeighborCell-Item-Choice-E-UTRA.c
new file mode 100644
index 0000000..f0f2f1e
--- /dev/null
+++ b/e2sm/lib/NeighborCell-Item-Choice-E-UTRA.c
@@ -0,0 +1,245 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NeighborCell-Item-Choice-E-UTRA.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_version_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_x2_Xn_established_constr_6 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_x2_Xn_established_constr_6 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_hO_validated_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_hO_validated_constr_10 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_version_constr_14 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_version_constr_14 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_x2_Xn_established_value2enum_6[] = {
+	{ 0,	4,	"true" },
+	{ 1,	5,	"false" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_x2_Xn_established_enum2value_6[] = {
+	1,	/* false(1) */
+	0	/* true(0) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_x2_Xn_established_specs_6 = {
+	asn_MAP_x2_Xn_established_value2enum_6,	/* "tag" => N; sorted by tag */
+	asn_MAP_x2_Xn_established_enum2value_6,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_x2_Xn_established_tags_6[] = {
+	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_x2_Xn_established_6 = {
+	"x2-Xn-established",
+	"x2-Xn-established",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_x2_Xn_established_tags_6,
+	sizeof(asn_DEF_x2_Xn_established_tags_6)
+		/sizeof(asn_DEF_x2_Xn_established_tags_6[0]) - 1, /* 1 */
+	asn_DEF_x2_Xn_established_tags_6,	/* Same as above */
+	sizeof(asn_DEF_x2_Xn_established_tags_6)
+		/sizeof(asn_DEF_x2_Xn_established_tags_6[0]), /* 2 */
+	{ &asn_OER_type_x2_Xn_established_constr_6, &asn_PER_type_x2_Xn_established_constr_6, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_x2_Xn_established_specs_6	/* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_hO_validated_value2enum_10[] = {
+	{ 0,	4,	"true" },
+	{ 1,	5,	"false" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_hO_validated_enum2value_10[] = {
+	1,	/* false(1) */
+	0	/* true(0) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_hO_validated_specs_10 = {
+	asn_MAP_hO_validated_value2enum_10,	/* "tag" => N; sorted by tag */
+	asn_MAP_hO_validated_enum2value_10,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_hO_validated_tags_10[] = {
+	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hO_validated_10 = {
+	"hO-validated",
+	"hO-validated",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_hO_validated_tags_10,
+	sizeof(asn_DEF_hO_validated_tags_10)
+		/sizeof(asn_DEF_hO_validated_tags_10[0]) - 1, /* 1 */
+	asn_DEF_hO_validated_tags_10,	/* Same as above */
+	sizeof(asn_DEF_hO_validated_tags_10)
+		/sizeof(asn_DEF_hO_validated_tags_10[0]), /* 2 */
+	{ &asn_OER_type_hO_validated_constr_10, &asn_PER_type_hO_validated_constr_10, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_hO_validated_specs_10	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_NeighborCell_Item_Choice_E_UTRA_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, eUTRA_CGI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_EUTRA_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA-CGI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, eUTRA_PCI),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E_UTRA_PCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA-PCI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, eUTRA_ARFCN),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E_UTRA_ARFCN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA-ARFCN"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, eUTRA_TAC),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E_UTRA_TAC,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA-TAC"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, x2_Xn_established),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_x2_Xn_established_6,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"x2-Xn-established"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, hO_validated),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_hO_validated_10,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"hO-validated"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_E_UTRA, version),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_version_constr_14, &asn_PER_memb_version_constr_14,  memb_version_constraint_1 },
+		0, 0, /* No default value */
+		"version"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NeighborCell_Item_Choice_E_UTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eUTRA-CGI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eUTRA-PCI */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eUTRA-ARFCN */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* eUTRA-TAC */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* x2-Xn-established */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* hO-validated */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* version */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NeighborCell_Item_Choice_E_UTRA_specs_1 = {
+	sizeof(struct NeighborCell_Item_Choice_E_UTRA),
+	offsetof(struct NeighborCell_Item_Choice_E_UTRA, _asn_ctx),
+	asn_MAP_NeighborCell_Item_Choice_E_UTRA_tag2el_1,
+	7,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	7,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighborCell_Item_Choice_E_UTRA = {
+	"NeighborCell-Item-Choice-E-UTRA",
+	"NeighborCell-Item-Choice-E-UTRA",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1,
+	sizeof(asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1)
+		/sizeof(asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1[0]), /* 1 */
+	asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1)
+		/sizeof(asn_DEF_NeighborCell_Item_Choice_E_UTRA_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NeighborCell_Item_Choice_E_UTRA_1,
+	7,	/* Elements count */
+	&asn_SPC_NeighborCell_Item_Choice_E_UTRA_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NeighborCell-Item-Choice-NR.c b/e2sm/lib/NeighborCell-Item-Choice-NR.c
new file mode 100644
index 0000000..3ed4da7
--- /dev/null
+++ b/e2sm/lib/NeighborCell-Item-Choice-NR.c
@@ -0,0 +1,306 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NeighborCell-Item-Choice-NR.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_version_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_nR_mode_info_constr_5 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_nR_mode_info_constr_5 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_x2_Xn_established_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_x2_Xn_established_constr_10 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_hO_validated_constr_14 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_hO_validated_constr_14 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_version_constr_18 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_version_constr_18 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_nR_mode_info_value2enum_5[] = {
+	{ 0,	3,	"fdd" },
+	{ 1,	3,	"tdd" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_nR_mode_info_enum2value_5[] = {
+	0,	/* fdd(0) */
+	1	/* tdd(1) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nR_mode_info_specs_5 = {
+	asn_MAP_nR_mode_info_value2enum_5,	/* "tag" => N; sorted by tag */
+	asn_MAP_nR_mode_info_enum2value_5,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_nR_mode_info_tags_5[] = {
+	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nR_mode_info_5 = {
+	"nR-mode-info",
+	"nR-mode-info",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_nR_mode_info_tags_5,
+	sizeof(asn_DEF_nR_mode_info_tags_5)
+		/sizeof(asn_DEF_nR_mode_info_tags_5[0]) - 1, /* 1 */
+	asn_DEF_nR_mode_info_tags_5,	/* Same as above */
+	sizeof(asn_DEF_nR_mode_info_tags_5)
+		/sizeof(asn_DEF_nR_mode_info_tags_5[0]), /* 2 */
+	{ &asn_OER_type_nR_mode_info_constr_5, &asn_PER_type_nR_mode_info_constr_5, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_nR_mode_info_specs_5	/* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_x2_Xn_established_value2enum_10[] = {
+	{ 0,	4,	"true" },
+	{ 1,	5,	"false" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_x2_Xn_established_enum2value_10[] = {
+	1,	/* false(1) */
+	0	/* true(0) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_x2_Xn_established_specs_10 = {
+	asn_MAP_x2_Xn_established_value2enum_10,	/* "tag" => N; sorted by tag */
+	asn_MAP_x2_Xn_established_enum2value_10,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_x2_Xn_established_tags_10[] = {
+	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_x2_Xn_established_10 = {
+	"x2-Xn-established",
+	"x2-Xn-established",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_x2_Xn_established_tags_10,
+	sizeof(asn_DEF_x2_Xn_established_tags_10)
+		/sizeof(asn_DEF_x2_Xn_established_tags_10[0]) - 1, /* 1 */
+	asn_DEF_x2_Xn_established_tags_10,	/* Same as above */
+	sizeof(asn_DEF_x2_Xn_established_tags_10)
+		/sizeof(asn_DEF_x2_Xn_established_tags_10[0]), /* 2 */
+	{ &asn_OER_type_x2_Xn_established_constr_10, &asn_PER_type_x2_Xn_established_constr_10, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_x2_Xn_established_specs_10	/* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_hO_validated_value2enum_14[] = {
+	{ 0,	4,	"true" },
+	{ 1,	5,	"false" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_hO_validated_enum2value_14[] = {
+	1,	/* false(1) */
+	0	/* true(0) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_hO_validated_specs_14 = {
+	asn_MAP_hO_validated_value2enum_14,	/* "tag" => N; sorted by tag */
+	asn_MAP_hO_validated_enum2value_14,	/* N => "tag"; sorted by N */
+	2,	/* Number of elements in the maps */
+	3,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_hO_validated_tags_14[] = {
+	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_hO_validated_14 = {
+	"hO-validated",
+	"hO-validated",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_hO_validated_tags_14,
+	sizeof(asn_DEF_hO_validated_tags_14)
+		/sizeof(asn_DEF_hO_validated_tags_14[0]) - 1, /* 1 */
+	asn_DEF_hO_validated_tags_14,	/* Same as above */
+	sizeof(asn_DEF_hO_validated_tags_14)
+		/sizeof(asn_DEF_hO_validated_tags_14[0]), /* 2 */
+	{ &asn_OER_type_hO_validated_constr_14, &asn_PER_type_hO_validated_constr_14, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_hO_validated_specs_14	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_NeighborCell_Item_Choice_NR_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, nR_CGI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_CGI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR-CGI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, nR_PCI),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_PCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR-PCI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, fiveGS_TAC),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_FiveGS_TAC,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"fiveGS-TAC"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, nR_mode_info),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_nR_mode_info_5,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR-mode-info"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, nR_ARFCN),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_ARFCN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR-ARFCN"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, x2_Xn_established),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_x2_Xn_established_10,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"x2-Xn-established"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, hO_validated),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_hO_validated_14,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"hO-validated"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborCell_Item_Choice_NR, version),
+		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_version_constr_18, &asn_PER_memb_version_constr_18,  memb_version_constraint_1 },
+		0, 0, /* No default value */
+		"version"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NeighborCell_Item_Choice_NR_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NeighborCell_Item_Choice_NR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nR-PCI */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* fiveGS-TAC */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nR-mode-info */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nR-ARFCN */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* x2-Xn-established */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* hO-validated */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* version */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NeighborCell_Item_Choice_NR_specs_1 = {
+	sizeof(struct NeighborCell_Item_Choice_NR),
+	offsetof(struct NeighborCell_Item_Choice_NR, _asn_ctx),
+	asn_MAP_NeighborCell_Item_Choice_NR_tag2el_1,
+	8,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	8,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighborCell_Item_Choice_NR = {
+	"NeighborCell-Item-Choice-NR",
+	"NeighborCell-Item-Choice-NR",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NeighborCell_Item_Choice_NR_tags_1,
+	sizeof(asn_DEF_NeighborCell_Item_Choice_NR_tags_1)
+		/sizeof(asn_DEF_NeighborCell_Item_Choice_NR_tags_1[0]), /* 1 */
+	asn_DEF_NeighborCell_Item_Choice_NR_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NeighborCell_Item_Choice_NR_tags_1)
+		/sizeof(asn_DEF_NeighborCell_Item_Choice_NR_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NeighborCell_Item_Choice_NR_1,
+	8,	/* Elements count */
+	&asn_SPC_NeighborCell_Item_Choice_NR_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NeighborCell-Item.c b/e2sm/lib/NeighborCell-Item.c
new file mode 100644
index 0000000..b68fcd5
--- /dev/null
+++ b/e2sm/lib/NeighborCell-Item.c
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NeighborCell-Item.h"
+
+#include "NeighborCell-Item-Choice-NR.h"
+#include "NeighborCell-Item-Choice-E-UTRA.h"
+static asn_oer_constraints_t asn_OER_type_NeighborCell_Item_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_NeighborCell_Item_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NeighborCell_Item_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct NeighborCell_Item, choice.ranType_Choice_NR),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NeighborCell_Item_Choice_NR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranType-Choice-NR"
+		},
+	{ ATF_POINTER, 0, offsetof(struct NeighborCell_Item, choice.ranType_Choice_EUTRA),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NeighborCell_Item_Choice_E_UTRA,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranType-Choice-EUTRA"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_NeighborCell_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranType-Choice-NR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranType-Choice-EUTRA */
+};
+asn_CHOICE_specifics_t asn_SPC_NeighborCell_Item_specs_1 = {
+	sizeof(struct NeighborCell_Item),
+	offsetof(struct NeighborCell_Item, _asn_ctx),
+	offsetof(struct NeighborCell_Item, present),
+	sizeof(((struct NeighborCell_Item *)0)->present),
+	asn_MAP_NeighborCell_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighborCell_Item = {
+	"NeighborCell-Item",
+	"NeighborCell-Item",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_NeighborCell_Item_constr_1, &asn_PER_type_NeighborCell_Item_constr_1, CHOICE_constraint },
+	asn_MBR_NeighborCell_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_NeighborCell_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NeighborCell-List.c b/e2sm/lib/NeighborCell-List.c
new file mode 100644
index 0000000..5acf37c
--- /dev/null
+++ b/e2sm/lib/NeighborCell-List.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NeighborCell-List.h"
+
+#include "NeighborCell-Item.h"
+static asn_oer_constraints_t asn_OER_type_NeighborCell_List_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_NeighborCell_List_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NeighborCell_List_1[] = {
+	{ ATF_POINTER, 0, 0,
+		-1 /* Ambiguous tag (CHOICE?) */,
+		0,
+		&asn_DEF_NeighborCell_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NeighborCell_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_NeighborCell_List_specs_1 = {
+	sizeof(struct NeighborCell_List),
+	offsetof(struct NeighborCell_List, _asn_ctx),
+	2,	/* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighborCell_List = {
+	"NeighborCell-List",
+	"NeighborCell-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_NeighborCell_List_tags_1,
+	sizeof(asn_DEF_NeighborCell_List_tags_1)
+		/sizeof(asn_DEF_NeighborCell_List_tags_1[0]), /* 1 */
+	asn_DEF_NeighborCell_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NeighborCell_List_tags_1)
+		/sizeof(asn_DEF_NeighborCell_List_tags_1[0]), /* 1 */
+	{ &asn_OER_type_NeighborCell_List_constr_1, &asn_PER_type_NeighborCell_List_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_NeighborCell_List_1,
+	1,	/* Single element */
+	&asn_SPC_NeighborCell_List_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NeighborRelation-Info.c b/e2sm/lib/NeighborRelation-Info.c
new file mode 100644
index 0000000..4de6ca1
--- /dev/null
+++ b/e2sm/lib/NeighborRelation-Info.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NeighborRelation-Info.h"
+
+asn_TYPE_member_t asn_MBR_NeighborRelation_Info_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborRelation_Info, servingCellPCI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ServingCell_PCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"servingCellPCI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborRelation_Info, servingCellARFCN),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ServingCell_ARFCN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"servingCellARFCN"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NeighborRelation_Info, neighborCell_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NeighborCell_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"neighborCell-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_NeighborRelation_Info_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NeighborRelation_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servingCellPCI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servingCellARFCN */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighborCell-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NeighborRelation_Info_specs_1 = {
+	sizeof(struct NeighborRelation_Info),
+	offsetof(struct NeighborRelation_Info, _asn_ctx),
+	asn_MAP_NeighborRelation_Info_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NeighborRelation_Info = {
+	"NeighborRelation-Info",
+	"NeighborRelation-Info",
+	&asn_OP_SEQUENCE,
+	asn_DEF_NeighborRelation_Info_tags_1,
+	sizeof(asn_DEF_NeighborRelation_Info_tags_1)
+		/sizeof(asn_DEF_NeighborRelation_Info_tags_1[0]), /* 1 */
+	asn_DEF_NeighborRelation_Info_tags_1,	/* Same as above */
+	sizeof(asn_DEF_NeighborRelation_Info_tags_1)
+		/sizeof(asn_DEF_NeighborRelation_Info_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_NeighborRelation_Info_1,
+	3,	/* Elements count */
+	&asn_SPC_NeighborRelation_Info_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/NgENB-ID.c b/e2sm/lib/NgENB-ID.c
new file mode 100644
index 0000000..31ee4ac
--- /dev/null
+++ b/e2sm/lib/NgENB-ID.c
@@ -0,0 +1,192 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "NgENB-ID.h"
+
+static int
+memb_macroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 20)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_shortMacroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 18)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_longMacroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	if(st->size > 0) {
+		/* Size in bits */
+		size = 8 * st->size - (st->bits_unused & 0x07);
+	} else {
+		size = 0;
+	}
+	
+	if((size == 21)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	20	/* (SIZE(20..20)) */};
+static asn_per_constraints_t asn_PER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  20,  20 }	/* (SIZE(20..20)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	18	/* (SIZE(18..18)) */};
+static asn_per_constraints_t asn_PER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  18,  18 }	/* (SIZE(18..18)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	21	/* (SIZE(21..21)) */};
+static asn_per_constraints_t asn_PER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  21,  21 }	/* (SIZE(21..21)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_NgENB_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NgENB_ID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.macroNgENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BIT_STRING,
+		0,
+		{ &asn_OER_memb_macroNgENB_ID_constr_2, &asn_PER_memb_macroNgENB_ID_constr_2,  memb_macroNgENB_ID_constraint_1 },
+		0, 0, /* No default value */
+		"macroNgENB-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.shortMacroNgENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BIT_STRING,
+		0,
+		{ &asn_OER_memb_shortMacroNgENB_ID_constr_3, &asn_PER_memb_shortMacroNgENB_ID_constr_3,  memb_shortMacroNgENB_ID_constraint_1 },
+		0, 0, /* No default value */
+		"shortMacroNgENB-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.longMacroNgENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BIT_STRING,
+		0,
+		{ &asn_OER_memb_longMacroNgENB_ID_constr_4, &asn_PER_memb_longMacroNgENB_ID_constr_4,  memb_longMacroNgENB_ID_constraint_1 },
+		0, 0, /* No default value */
+		"longMacroNgENB-ID"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_NgENB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroNgENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* shortMacroNgENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* longMacroNgENB-ID */
+};
+asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1 = {
+	sizeof(struct NgENB_ID),
+	offsetof(struct NgENB_ID, _asn_ctx),
+	offsetof(struct NgENB_ID, present),
+	sizeof(((struct NgENB_ID *)0)->present),
+	asn_MAP_NgENB_ID_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0,
+	3	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_NgENB_ID = {
+	"NgENB-ID",
+	"NgENB-ID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_NgENB_ID_constr_1, &asn_PER_type_NgENB_ID_constr_1, CHOICE_constraint },
+	asn_MBR_NgENB_ID_1,
+	3,	/* Elements count */
+	&asn_SPC_NgENB_ID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/OCUCP-PF-Container.c b/e2sm/lib/OCUCP-PF-Container.c
deleted file mode 100644
index 8788478..0000000
--- a/e2sm/lib/OCUCP-PF-Container.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "OCUCP-PF-Container.h"
-
-static int
-memb_numberOfActive_UEs_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 1 && value <= 65535)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_numberOfActive_UEs_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_memb_numberOfActive_UEs_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_cu_CP_Resource_Status_2[] = {
-	{ ATF_POINTER, 1, offsetof(struct OCUCP_PF_Container__cu_CP_Resource_Status, numberOfActive_UEs),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_numberOfActive_UEs_constr_3, &asn_PER_memb_numberOfActive_UEs_constr_3,  memb_numberOfActive_UEs_constraint_2 },
-		0, 0, /* No default value */
-		"numberOfActive-UEs"
-		},
-};
-static const int asn_MAP_cu_CP_Resource_Status_oms_2[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_cu_CP_Resource_Status_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_cu_CP_Resource_Status_tag2el_2[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* numberOfActive-UEs */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_cu_CP_Resource_Status_specs_2 = {
-	sizeof(struct OCUCP_PF_Container__cu_CP_Resource_Status),
-	offsetof(struct OCUCP_PF_Container__cu_CP_Resource_Status, _asn_ctx),
-	asn_MAP_cu_CP_Resource_Status_tag2el_2,
-	1,	/* Count of tags in the map */
-	asn_MAP_cu_CP_Resource_Status_oms_2,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	-1,	/* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_cu_CP_Resource_Status_2 = {
-	"cu-CP-Resource-Status",
-	"cu-CP-Resource-Status",
-	&asn_OP_SEQUENCE,
-	asn_DEF_cu_CP_Resource_Status_tags_2,
-	sizeof(asn_DEF_cu_CP_Resource_Status_tags_2)
-		/sizeof(asn_DEF_cu_CP_Resource_Status_tags_2[0]) - 1, /* 1 */
-	asn_DEF_cu_CP_Resource_Status_tags_2,	/* Same as above */
-	sizeof(asn_DEF_cu_CP_Resource_Status_tags_2)
-		/sizeof(asn_DEF_cu_CP_Resource_Status_tags_2[0]), /* 2 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_cu_CP_Resource_Status_2,
-	1,	/* Elements count */
-	&asn_SPC_cu_CP_Resource_Status_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_OCUCP_PF_Container_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct OCUCP_PF_Container, cu_CP_Resource_Status),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_cu_CP_Resource_Status_2,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"cu-CP-Resource-Status"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_OCUCP_PF_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_OCUCP_PF_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cu-CP-Resource-Status */
-};
-asn_SEQUENCE_specifics_t asn_SPC_OCUCP_PF_Container_specs_1 = {
-	sizeof(struct OCUCP_PF_Container),
-	offsetof(struct OCUCP_PF_Container, _asn_ctx),
-	asn_MAP_OCUCP_PF_Container_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	-1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_OCUCP_PF_Container = {
-	"OCUCP-PF-Container",
-	"OCUCP-PF-Container",
-	&asn_OP_SEQUENCE,
-	asn_DEF_OCUCP_PF_Container_tags_1,
-	sizeof(asn_DEF_OCUCP_PF_Container_tags_1)
-		/sizeof(asn_DEF_OCUCP_PF_Container_tags_1[0]), /* 1 */
-	asn_DEF_OCUCP_PF_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_OCUCP_PF_Container_tags_1)
-		/sizeof(asn_DEF_OCUCP_PF_Container_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_OCUCP_PF_Container_1,
-	1,	/* Elements count */
-	&asn_SPC_OCUCP_PF_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/OCUUP-PF-Container.c b/e2sm/lib/OCUUP-PF-Container.c
deleted file mode 100644
index 8ccc575..0000000
--- a/e2sm/lib/OCUUP-PF-Container.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "OCUUP-PF-Container.h"
-
-#include "PF-ContainerListItem.h"
-static int
-memb_pf_ContainerList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 3)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_pf_ContainerList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..3)) */};
-static asn_per_constraints_t asn_PER_type_pf_ContainerList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 2,  2,  1,  3 }	/* (SIZE(1..3)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_pf_ContainerList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..3)) */};
-static asn_per_constraints_t asn_PER_memb_pf_ContainerList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 2,  2,  1,  3 }	/* (SIZE(1..3)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_pf_ContainerList_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PF_ContainerListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_pf_ContainerList_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_pf_ContainerList_specs_2 = {
-	sizeof(struct OCUUP_PF_Container__pf_ContainerList),
-	offsetof(struct OCUUP_PF_Container__pf_ContainerList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_pf_ContainerList_2 = {
-	"pf-ContainerList",
-	"pf-ContainerList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_pf_ContainerList_tags_2,
-	sizeof(asn_DEF_pf_ContainerList_tags_2)
-		/sizeof(asn_DEF_pf_ContainerList_tags_2[0]) - 1, /* 1 */
-	asn_DEF_pf_ContainerList_tags_2,	/* Same as above */
-	sizeof(asn_DEF_pf_ContainerList_tags_2)
-		/sizeof(asn_DEF_pf_ContainerList_tags_2[0]), /* 2 */
-	{ &asn_OER_type_pf_ContainerList_constr_2, &asn_PER_type_pf_ContainerList_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_pf_ContainerList_2,
-	1,	/* Single element */
-	&asn_SPC_pf_ContainerList_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_OCUUP_PF_Container_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct OCUUP_PF_Container, pf_ContainerList),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_pf_ContainerList_2,
-		0,
-		{ &asn_OER_memb_pf_ContainerList_constr_2, &asn_PER_memb_pf_ContainerList_constr_2,  memb_pf_ContainerList_constraint_1 },
-		0, 0, /* No default value */
-		"pf-ContainerList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_OCUUP_PF_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_OCUUP_PF_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pf-ContainerList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_OCUUP_PF_Container_specs_1 = {
-	sizeof(struct OCUUP_PF_Container),
-	offsetof(struct OCUUP_PF_Container, _asn_ctx),
-	asn_MAP_OCUUP_PF_Container_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_OCUUP_PF_Container = {
-	"OCUUP-PF-Container",
-	"OCUUP-PF-Container",
-	&asn_OP_SEQUENCE,
-	asn_DEF_OCUUP_PF_Container_tags_1,
-	sizeof(asn_DEF_OCUUP_PF_Container_tags_1)
-		/sizeof(asn_DEF_OCUUP_PF_Container_tags_1[0]), /* 1 */
-	asn_DEF_OCUUP_PF_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_OCUUP_PF_Container_tags_1)
-		/sizeof(asn_DEF_OCUUP_PF_Container_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_OCUUP_PF_Container_1,
-	1,	/* Elements count */
-	&asn_SPC_OCUUP_PF_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ODU-PF-Container.c b/e2sm/lib/ODU-PF-Container.c
deleted file mode 100644
index 4aeaa6c..0000000
--- a/e2sm/lib/ODU-PF-Container.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ODU-PF-Container.h"
-
-#include "CellResourceReportListItem.h"
-static int
-memb_cellResourceReportList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 512)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..512)) */};
-static asn_per_constraints_t asn_PER_type_cellResourceReportList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 9,  9,  1,  512 }	/* (SIZE(1..512)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..512)) */};
-static asn_per_constraints_t asn_PER_memb_cellResourceReportList_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 9,  9,  1,  512 }	/* (SIZE(1..512)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_cellResourceReportList_2[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_CellResourceReportListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_cellResourceReportList_tags_2[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_cellResourceReportList_specs_2 = {
-	sizeof(struct ODU_PF_Container__cellResourceReportList),
-	offsetof(struct ODU_PF_Container__cellResourceReportList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_cellResourceReportList_2 = {
-	"cellResourceReportList",
-	"cellResourceReportList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_cellResourceReportList_tags_2,
-	sizeof(asn_DEF_cellResourceReportList_tags_2)
-		/sizeof(asn_DEF_cellResourceReportList_tags_2[0]) - 1, /* 1 */
-	asn_DEF_cellResourceReportList_tags_2,	/* Same as above */
-	sizeof(asn_DEF_cellResourceReportList_tags_2)
-		/sizeof(asn_DEF_cellResourceReportList_tags_2[0]), /* 2 */
-	{ &asn_OER_type_cellResourceReportList_constr_2, &asn_PER_type_cellResourceReportList_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_cellResourceReportList_2,
-	1,	/* Single element */
-	&asn_SPC_cellResourceReportList_specs_2	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_ODU_PF_Container_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ODU_PF_Container, cellResourceReportList),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		0,
-		&asn_DEF_cellResourceReportList_2,
-		0,
-		{ &asn_OER_memb_cellResourceReportList_constr_2, &asn_PER_memb_cellResourceReportList_constr_2,  memb_cellResourceReportList_constraint_1 },
-		0, 0, /* No default value */
-		"cellResourceReportList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ODU_PF_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ODU_PF_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellResourceReportList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ODU_PF_Container_specs_1 = {
-	sizeof(struct ODU_PF_Container),
-	offsetof(struct ODU_PF_Container, _asn_ctx),
-	asn_MAP_ODU_PF_Container_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ODU_PF_Container = {
-	"ODU-PF-Container",
-	"ODU-PF-Container",
-	&asn_OP_SEQUENCE,
-	asn_DEF_ODU_PF_Container_tags_1,
-	sizeof(asn_DEF_ODU_PF_Container_tags_1)
-		/sizeof(asn_DEF_ODU_PF_Container_tags_1[0]), /* 1 */
-	asn_DEF_ODU_PF_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ODU_PF_Container_tags_1)
-		/sizeof(asn_DEF_ODU_PF_Container_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_ODU_PF_Container_1,
-	1,	/* Elements count */
-	&asn_SPC_ODU_PF_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PF-Container.c b/e2sm/lib/PF-Container.c
deleted file mode 100644
index c4034f8..0000000
--- a/e2sm/lib/PF-Container.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PF-Container.h"
-
-#include "ODU-PF-Container.h"
-#include "OCUCP-PF-Container.h"
-#include "OCUUP-PF-Container.h"
-static asn_oer_constraints_t asn_OER_type_PF_Container_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_PF_Container_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_PF_Container_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct PF_Container, choice.oDU),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_ODU_PF_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"oDU"
-		},
-	{ ATF_POINTER, 0, offsetof(struct PF_Container, choice.oCU_CP),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_OCUCP_PF_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"oCU-CP"
-		},
-	{ ATF_POINTER, 0, offsetof(struct PF_Container, choice.oCU_UP),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_OCUUP_PF_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"oCU-UP"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_PF_Container_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oDU */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oCU-CP */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* oCU-UP */
-};
-asn_CHOICE_specifics_t asn_SPC_PF_Container_specs_1 = {
-	sizeof(struct PF_Container),
-	offsetof(struct PF_Container, _asn_ctx),
-	offsetof(struct PF_Container, present),
-	sizeof(((struct PF_Container *)0)->present),
-	asn_MAP_PF_Container_tag2el_1,
-	3,	/* Count of tags in the map */
-	0, 0,
-	-1	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_PF_Container = {
-	"PF-Container",
-	"PF-Container",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_PF_Container_constr_1, &asn_PER_type_PF_Container_constr_1, CHOICE_constraint },
-	asn_MBR_PF_Container_1,
-	3,	/* Elements count */
-	&asn_SPC_PF_Container_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PF-ContainerListItem.c b/e2sm/lib/PF-ContainerListItem.c
deleted file mode 100644
index 112175c..0000000
--- a/e2sm/lib/PF-ContainerListItem.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PF-ContainerListItem.h"
-
-asn_TYPE_member_t asn_MBR_PF_ContainerListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct PF_ContainerListItem, interface_type),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NI_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"interface-type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct PF_ContainerListItem, o_CU_UP_PM_Container),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_CUUPMeasurement_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"o-CU-UP-PM-Container"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_PF_ContainerListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PF_ContainerListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-type */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* o-CU-UP-PM-Container */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PF_ContainerListItem_specs_1 = {
-	sizeof(struct PF_ContainerListItem),
-	offsetof(struct PF_ContainerListItem, _asn_ctx),
-	asn_MAP_PF_ContainerListItem_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PF_ContainerListItem = {
-	"PF-ContainerListItem",
-	"PF-ContainerListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PF_ContainerListItem_tags_1,
-	sizeof(asn_DEF_PF_ContainerListItem_tags_1)
-		/sizeof(asn_DEF_PF_ContainerListItem_tags_1[0]), /* 1 */
-	asn_DEF_PF_ContainerListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PF_ContainerListItem_tags_1)
-		/sizeof(asn_DEF_PF_ContainerListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PF_ContainerListItem_1,
-	2,	/* Elements count */
-	&asn_SPC_PF_ContainerListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PLMN-Identity.c b/e2sm/lib/PLMN-Identity.c
deleted file mode 100644
index 023b1f7..0000000
--- a/e2sm/lib/PLMN-Identity.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PLMN-Identity.h"
-
-int
-PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	size = st->size;
-	
-	if((size == 3)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using OCTET_STRING,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_PLMN_Identity_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	3	/* (SIZE(3..3)) */};
-asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  3,  3 }	/* (SIZE(3..3)) */,
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = {
-	"PLMN-Identity",
-	"PLMN-Identity",
-	&asn_OP_OCTET_STRING,
-	asn_DEF_PLMN_Identity_tags_1,
-	sizeof(asn_DEF_PLMN_Identity_tags_1)
-		/sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */
-	asn_DEF_PLMN_Identity_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PLMN_Identity_tags_1)
-		/sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */
-	{ &asn_OER_type_PLMN_Identity_constr_1, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint },
-	0, 0,	/* No members */
-	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PLMNIdentity.c b/e2sm/lib/PLMNIdentity.c
new file mode 100644
index 0000000..d713421
--- /dev/null
+++ b/e2sm/lib/PLMNIdentity.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "PLMNIdentity.h"
+
+int
+PLMNIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 3)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PLMNIdentity_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	3	/* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_PLMNIdentity_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  3,  3 }	/* (SIZE(3..3)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PLMNIdentity_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PLMNIdentity = {
+	"PLMNIdentity",
+	"PLMNIdentity",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_PLMNIdentity_tags_1,
+	sizeof(asn_DEF_PLMNIdentity_tags_1)
+		/sizeof(asn_DEF_PLMNIdentity_tags_1[0]), /* 1 */
+	asn_DEF_PLMNIdentity_tags_1,	/* Same as above */
+	sizeof(asn_DEF_PLMNIdentity_tags_1)
+		/sizeof(asn_DEF_PLMNIdentity_tags_1[0]), /* 1 */
+	{ &asn_OER_type_PLMNIdentity_constr_1, &asn_PER_type_PLMNIdentity_constr_1, PLMNIdentity_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/PM-Containers-Item.c b/e2sm/lib/PM-Containers-Item.c
deleted file mode 100644
index 2116f5a..0000000
--- a/e2sm/lib/PM-Containers-Item.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PM-Containers-Item.h"
-
-#include "PF-Container.h"
-asn_TYPE_member_t asn_MBR_PM_Containers_Item_1[] = {
-	{ ATF_POINTER, 2, offsetof(struct PM_Containers_Item, performanceContainer),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_PF_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"performanceContainer"
-		},
-	{ ATF_POINTER, 1, offsetof(struct PM_Containers_Item, theRANContainer),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RAN_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"theRANContainer"
-		},
-};
-static const int asn_MAP_PM_Containers_Item_oms_1[] = { 0, 1 };
-static const ber_tlv_tag_t asn_DEF_PM_Containers_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PM_Containers_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* performanceContainer */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* theRANContainer */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PM_Containers_Item_specs_1 = {
-	sizeof(struct PM_Containers_Item),
-	offsetof(struct PM_Containers_Item, _asn_ctx),
-	asn_MAP_PM_Containers_Item_tag2el_1,
-	2,	/* Count of tags in the map */
-	asn_MAP_PM_Containers_Item_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PM_Containers_Item = {
-	"PM-Containers-Item",
-	"PM-Containers-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PM_Containers_Item_tags_1,
-	sizeof(asn_DEF_PM_Containers_Item_tags_1)
-		/sizeof(asn_DEF_PM_Containers_Item_tags_1[0]), /* 1 */
-	asn_DEF_PM_Containers_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PM_Containers_Item_tags_1)
-		/sizeof(asn_DEF_PM_Containers_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PM_Containers_Item_1,
-	2,	/* Elements count */
-	&asn_SPC_PM_Containers_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PM-Info-Item.c b/e2sm/lib/PM-Info-Item.c
deleted file mode 100644
index e469eb6..0000000
--- a/e2sm/lib/PM-Info-Item.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PM-Info-Item.h"
-
-asn_TYPE_member_t asn_MBR_PM_Info_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct PM_Info_Item, pmType),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_MeasurementType,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"pmType"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct PM_Info_Item, pmVal),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_MeasurementValue,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"pmVal"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_PM_Info_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PM_Info_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pmType */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pmVal */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PM_Info_Item_specs_1 = {
-	sizeof(struct PM_Info_Item),
-	offsetof(struct PM_Info_Item, _asn_ctx),
-	asn_MAP_PM_Info_Item_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PM_Info_Item = {
-	"PM-Info-Item",
-	"PM-Info-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PM_Info_Item_tags_1,
-	sizeof(asn_DEF_PM_Info_Item_tags_1)
-		/sizeof(asn_DEF_PM_Info_Item_tags_1[0]), /* 1 */
-	asn_DEF_PM_Info_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PM_Info_Item_tags_1)
-		/sizeof(asn_DEF_PM_Info_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PM_Info_Item_1,
-	2,	/* Elements count */
-	&asn_SPC_PM_Info_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PerQCIReportListItem.c b/e2sm/lib/PerQCIReportListItem.c
deleted file mode 100644
index 45935bd..0000000
--- a/e2sm/lib/PerQCIReportListItem.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PerQCIReportListItem.h"
-
-static int
-memb_dl_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 100)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_ul_PRBUsage_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 100)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..100) */,
-	-1};
-static asn_per_constraints_t asn_PER_memb_dl_PRBUsage_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  100 }	/* (0..100) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..100) */,
-	-1};
-static asn_per_constraints_t asn_PER_memb_ul_PRBUsage_constr_4 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  100 }	/* (0..100) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_PerQCIReportListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct PerQCIReportListItem, qci),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_QCI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"qci"
-		},
-	{ ATF_POINTER, 2, offsetof(struct PerQCIReportListItem, dl_PRBUsage),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_dl_PRBUsage_constr_3, &asn_PER_memb_dl_PRBUsage_constr_3,  memb_dl_PRBUsage_constraint_1 },
-		0, 0, /* No default value */
-		"dl-PRBUsage"
-		},
-	{ ATF_POINTER, 1, offsetof(struct PerQCIReportListItem, ul_PRBUsage),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_NativeInteger,
-		0,
-		{ &asn_OER_memb_ul_PRBUsage_constr_4, &asn_PER_memb_ul_PRBUsage_constr_4,  memb_ul_PRBUsage_constraint_1 },
-		0, 0, /* No default value */
-		"ul-PRBUsage"
-		},
-};
-static const int asn_MAP_PerQCIReportListItem_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_PerQCIReportListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PerQCIReportListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qci */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-PRBUsage */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ul-PRBUsage */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItem_specs_1 = {
-	sizeof(struct PerQCIReportListItem),
-	offsetof(struct PerQCIReportListItem, _asn_ctx),
-	asn_MAP_PerQCIReportListItem_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_PerQCIReportListItem_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItem = {
-	"PerQCIReportListItem",
-	"PerQCIReportListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PerQCIReportListItem_tags_1,
-	sizeof(asn_DEF_PerQCIReportListItem_tags_1)
-		/sizeof(asn_DEF_PerQCIReportListItem_tags_1[0]), /* 1 */
-	asn_DEF_PerQCIReportListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PerQCIReportListItem_tags_1)
-		/sizeof(asn_DEF_PerQCIReportListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PerQCIReportListItem_1,
-	3,	/* Elements count */
-	&asn_SPC_PerQCIReportListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PerQCIReportListItemFormat.c b/e2sm/lib/PerQCIReportListItemFormat.c
deleted file mode 100644
index 86f8bb4..0000000
--- a/e2sm/lib/PerQCIReportListItemFormat.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PerQCIReportListItemFormat.h"
-
-static int
-memb_pDCPBytesDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const INTEGER_t *st = (const INTEGER_t *)sptr;
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(asn_INTEGER2long(st, &value)) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value too large (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if((value >= 0 && value <= 10000000000)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_pDCPBytesUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const INTEGER_t *st = (const INTEGER_t *)sptr;
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if(asn_INTEGER2long(st, &value)) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value too large (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	if((value >= 0 && value <= 10000000000)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_memb_pDCPBytesDL_constr_3 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  34, -1,  0,  10000000000 }	/* (0..10000000000,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_memb_pDCPBytesUL_constr_4 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  34, -1,  0,  10000000000 }	/* (0..10000000000,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_PerQCIReportListItemFormat_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct PerQCIReportListItemFormat, drbqci),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_QCI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"drbqci"
-		},
-	{ ATF_POINTER, 2, offsetof(struct PerQCIReportListItemFormat, pDCPBytesDL),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_INTEGER,
-		0,
-		{ &asn_OER_memb_pDCPBytesDL_constr_3, &asn_PER_memb_pDCPBytesDL_constr_3,  memb_pDCPBytesDL_constraint_1 },
-		0, 0, /* No default value */
-		"pDCPBytesDL"
-		},
-	{ ATF_POINTER, 1, offsetof(struct PerQCIReportListItemFormat, pDCPBytesUL),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_INTEGER,
-		0,
-		{ &asn_OER_memb_pDCPBytesUL_constr_4, &asn_PER_memb_pDCPBytesUL_constr_4,  memb_pDCPBytesUL_constraint_1 },
-		0, 0, /* No default value */
-		"pDCPBytesUL"
-		},
-};
-static const int asn_MAP_PerQCIReportListItemFormat_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_PerQCIReportListItemFormat_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PerQCIReportListItemFormat_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drbqci */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pDCPBytesDL */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pDCPBytesUL */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PerQCIReportListItemFormat_specs_1 = {
-	sizeof(struct PerQCIReportListItemFormat),
-	offsetof(struct PerQCIReportListItemFormat, _asn_ctx),
-	asn_MAP_PerQCIReportListItemFormat_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_PerQCIReportListItemFormat_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PerQCIReportListItemFormat = {
-	"PerQCIReportListItemFormat",
-	"PerQCIReportListItemFormat",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PerQCIReportListItemFormat_tags_1,
-	sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1)
-		/sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1[0]), /* 1 */
-	asn_DEF_PerQCIReportListItemFormat_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1)
-		/sizeof(asn_DEF_PerQCIReportListItemFormat_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PerQCIReportListItemFormat_1,
-	3,	/* Elements count */
-	&asn_SPC_PerQCIReportListItemFormat_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PerUE-PM-Item.c b/e2sm/lib/PerUE-PM-Item.c
deleted file mode 100644
index 9ecc2df..0000000
--- a/e2sm/lib/PerUE-PM-Item.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PerUE-PM-Item.h"
-
-#include "PM-Info-Item.h"
-static int
-memb_list_of_PM_Information_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 2147483647)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_list_of_PM_Information_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..2147483647)) */};
-static asn_per_constraints_t asn_PER_type_list_of_PM_Information_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 31, -1,  1,  2147483647 }	/* (SIZE(1..2147483647)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_list_of_PM_Information_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..2147483647)) */};
-static asn_per_constraints_t asn_PER_memb_list_of_PM_Information_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 31, -1,  1,  2147483647 }	/* (SIZE(1..2147483647)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_list_of_PM_Information_3[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_PM_Info_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_list_of_PM_Information_tags_3[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_list_of_PM_Information_specs_3 = {
-	sizeof(struct PerUE_PM_Item__list_of_PM_Information),
-	offsetof(struct PerUE_PM_Item__list_of_PM_Information, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_list_of_PM_Information_3 = {
-	"list-of-PM-Information",
-	"list-of-PM-Information",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_list_of_PM_Information_tags_3,
-	sizeof(asn_DEF_list_of_PM_Information_tags_3)
-		/sizeof(asn_DEF_list_of_PM_Information_tags_3[0]) - 1, /* 1 */
-	asn_DEF_list_of_PM_Information_tags_3,	/* Same as above */
-	sizeof(asn_DEF_list_of_PM_Information_tags_3)
-		/sizeof(asn_DEF_list_of_PM_Information_tags_3[0]), /* 2 */
-	{ &asn_OER_type_list_of_PM_Information_constr_3, &asn_PER_type_list_of_PM_Information_constr_3, SEQUENCE_OF_constraint },
-	asn_MBR_list_of_PM_Information_3,
-	1,	/* Single element */
-	&asn_SPC_list_of_PM_Information_specs_3	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PerUE_PM_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct PerUE_PM_Item, ueId),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_UE_Identity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ueId"
-		},
-	{ ATF_POINTER, 1, offsetof(struct PerUE_PM_Item, list_of_PM_Information),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		0,
-		&asn_DEF_list_of_PM_Information_3,
-		0,
-		{ &asn_OER_memb_list_of_PM_Information_constr_3, &asn_PER_memb_list_of_PM_Information_constr_3,  memb_list_of_PM_Information_constraint_1 },
-		0, 0, /* No default value */
-		"list-of-PM-Information"
-		},
-};
-static const int asn_MAP_PerUE_PM_Item_oms_1[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_PerUE_PM_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PerUE_PM_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* list-of-PM-Information */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PerUE_PM_Item_specs_1 = {
-	sizeof(struct PerUE_PM_Item),
-	offsetof(struct PerUE_PM_Item, _asn_ctx),
-	asn_MAP_PerUE_PM_Item_tag2el_1,
-	2,	/* Count of tags in the map */
-	asn_MAP_PerUE_PM_Item_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PerUE_PM_Item = {
-	"PerUE-PM-Item",
-	"PerUE-PM-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PerUE_PM_Item_tags_1,
-	sizeof(asn_DEF_PerUE_PM_Item_tags_1)
-		/sizeof(asn_DEF_PerUE_PM_Item_tags_1[0]), /* 1 */
-	asn_DEF_PerUE_PM_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PerUE_PM_Item_tags_1)
-		/sizeof(asn_DEF_PerUE_PM_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PerUE_PM_Item_1,
-	2,	/* Elements count */
-	&asn_SPC_PerUE_PM_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PhysCellId.c b/e2sm/lib/PhysCellId.c
deleted file mode 100644
index bb61e1d..0000000
--- a/e2sm/lib/PhysCellId.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PhysCellId.h"
-
-int
-PhysCellId_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 1007)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_PhysCellId_constr_1 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..1007) */,
-	-1};
-asn_per_constraints_t asn_PER_type_PhysCellId_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 10,  10,  0,  1007 }	/* (0..1007) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_PhysCellId_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_PhysCellId = {
-	"PhysCellId",
-	"PhysCellId",
-	&asn_OP_NativeInteger,
-	asn_DEF_PhysCellId_tags_1,
-	sizeof(asn_DEF_PhysCellId_tags_1)
-		/sizeof(asn_DEF_PhysCellId_tags_1[0]), /* 1 */
-	asn_DEF_PhysCellId_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PhysCellId_tags_1)
-		/sizeof(asn_DEF_PhysCellId_tags_1[0]), /* 1 */
-	{ &asn_OER_type_PhysCellId_constr_1, &asn_PER_type_PhysCellId_constr_1, PhysCellId_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/PlmnID-Item.c b/e2sm/lib/PlmnID-Item.c
deleted file mode 100644
index 5aad6cb..0000000
--- a/e2sm/lib/PlmnID-Item.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "PlmnID-Item.h"
-
-#include "FGC-CUUP-PM-Format.h"
-#include "EPC-CUUP-PM-Format.h"
-asn_TYPE_member_t asn_MBR_PlmnID_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct PlmnID_Item, pLMN_Identity),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"pLMN-Identity"
-		},
-	{ ATF_POINTER, 2, offsetof(struct PlmnID_Item, cu_UP_PM_5GC),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_FGC_CUUP_PM_Format,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"cu-UP-PM-5GC"
-		},
-	{ ATF_POINTER, 1, offsetof(struct PlmnID_Item, cu_UP_PM_EPC),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_EPC_CUUP_PM_Format,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"cu-UP-PM-EPC"
-		},
-};
-static const int asn_MAP_PlmnID_Item_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_PlmnID_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PlmnID_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cu-UP-PM-5GC */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cu-UP-PM-EPC */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PlmnID_Item_specs_1 = {
-	sizeof(struct PlmnID_Item),
-	offsetof(struct PlmnID_Item, _asn_ctx),
-	asn_MAP_PlmnID_Item_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_PlmnID_Item_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PlmnID_Item = {
-	"PlmnID-Item",
-	"PlmnID-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_PlmnID_Item_tags_1,
-	sizeof(asn_DEF_PlmnID_Item_tags_1)
-		/sizeof(asn_DEF_PlmnID_Item_tags_1[0]), /* 1 */
-	asn_DEF_PlmnID_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_PlmnID_Item_tags_1)
-		/sizeof(asn_DEF_PlmnID_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_PlmnID_Item_1,
-	3,	/* Elements count */
-	&asn_SPC_PlmnID_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/PolicyAction-RANParameter-Item.c b/e2sm/lib/PolicyAction-RANParameter-Item.c
new file mode 100644
index 0000000..85b1dfc
--- /dev/null
+++ b/e2sm/lib/PolicyAction-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "PolicyAction-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_PolicyAction_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct PolicyAction_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct PolicyAction_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct PolicyAction_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_PolicyAction_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_PolicyAction_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PolicyAction_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PolicyAction_RANParameter_Item_specs_1 = {
+	sizeof(struct PolicyAction_RANParameter_Item),
+	offsetof(struct PolicyAction_RANParameter_Item, _asn_ctx),
+	asn_MAP_PolicyAction_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_PolicyAction_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PolicyAction_RANParameter_Item = {
+	"PolicyAction-RANParameter-Item",
+	"PolicyAction-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_PolicyAction_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_PolicyAction_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_PolicyAction_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_PolicyAction_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_PolicyAction_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_PolicyAction_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_PolicyAction_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_PolicyAction_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/PolicyCondition-RANParameter-Item.c b/e2sm/lib/PolicyCondition-RANParameter-Item.c
new file mode 100644
index 0000000..33f64df
--- /dev/null
+++ b/e2sm/lib/PolicyCondition-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "PolicyCondition-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_PolicyCondition_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct PolicyCondition_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct PolicyCondition_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct PolicyCondition_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_PolicyCondition_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_PolicyCondition_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PolicyCondition_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PolicyCondition_RANParameter_Item_specs_1 = {
+	sizeof(struct PolicyCondition_RANParameter_Item),
+	offsetof(struct PolicyCondition_RANParameter_Item, _asn_ctx),
+	asn_MAP_PolicyCondition_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_PolicyCondition_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PolicyCondition_RANParameter_Item = {
+	"PolicyCondition-RANParameter-Item",
+	"PolicyCondition-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_PolicyCondition_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_PolicyCondition_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_PolicyCondition_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_PolicyCondition_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_PolicyCondition_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_PolicyCondition_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_PolicyCondition_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_PolicyCondition_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/Presence.c b/e2sm/lib/Presence.c
deleted file mode 100644
index b2e8cda..0000000
--- a/e2sm/lib/Presence.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "Presence.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_Presence_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = {
-	{ 0,	8,	"optional" },
-	{ 1,	11,	"conditional" },
-	{ 2,	9,	"mandatory" }
-};
-static const unsigned int asn_MAP_Presence_enum2value_1[] = {
-	1,	/* conditional(1) */
-	2,	/* mandatory(2) */
-	0	/* optional(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = {
-	asn_MAP_Presence_value2enum_1,	/* "tag" => N; sorted by tag */
-	asn_MAP_Presence_enum2value_1,	/* N => "tag"; sorted by N */
-	3,	/* Number of elements in the maps */
-	0,	/* Enumeration is not extensible */
-	1,	/* Strict enumeration */
-	0,	/* Native long size */
-	0
-};
-static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_Presence = {
-	"Presence",
-	"Presence",
-	&asn_OP_NativeEnumerated,
-	asn_DEF_Presence_tags_1,
-	sizeof(asn_DEF_Presence_tags_1)
-		/sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */
-	asn_DEF_Presence_tags_1,	/* Same as above */
-	sizeof(asn_DEF_Presence_tags_1)
-		/sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */
-	{ &asn_OER_type_Presence_constr_1, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint },
-	0, 0,	/* Defined elsewhere */
-	&asn_SPC_Presence_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ProcedureCode.c b/e2sm/lib/ProcedureCode.c
deleted file mode 100644
index a3ef61a..0000000
--- a/e2sm/lib/ProcedureCode.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ProcedureCode.h"
-
-int
-ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 255)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_ProcedureCode_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..255) */,
-	-1};
-static asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 8,  8,  0,  255 }	/* (0..255) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_ProcedureCode = {
-	"ProcedureCode",
-	"ProcedureCode",
-	&asn_OP_NativeInteger,
-	asn_DEF_ProcedureCode_tags_1,
-	sizeof(asn_DEF_ProcedureCode_tags_1)
-		/sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */
-	asn_DEF_ProcedureCode_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ProcedureCode_tags_1)
-		/sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */
-	{ &asn_OER_type_ProcedureCode_constr_1, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/ProtocolIE-ID.c b/e2sm/lib/ProtocolIE-ID.c
deleted file mode 100644
index fd10d9c..0000000
--- a/e2sm/lib/ProtocolIE-ID.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ProtocolIE-ID.h"
-
-int
-ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 65535)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..65535) */,
-	-1};
-asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (0..65535) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = {
-	"ProtocolIE-ID",
-	"ProtocolIE-ID",
-	&asn_OP_NativeInteger,
-	asn_DEF_ProtocolIE_ID_tags_1,
-	sizeof(asn_DEF_ProtocolIE_ID_tags_1)
-		/sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */
-	asn_DEF_ProtocolIE_ID_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ProtocolIE_ID_tags_1)
-		/sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */
-	{ &asn_OER_type_ProtocolIE_ID_constr_1, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/QCI.c b/e2sm/lib/QCI.c
index 61627ee..0261082 100644
--- a/e2sm/lib/QCI.c
+++ b/e2sm/lib/QCI.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -37,10 +37,10 @@
  * so here we adjust the DEF accordingly.
  */
 static asn_oer_constraints_t asn_OER_type_QCI_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
+	{ 1, 1 }	/* (0..255) */,
 	-1};
 asn_per_constraints_t asn_PER_type_QCI_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  0,  255 }	/* (0..255,...) */,
+	{ APC_CONSTRAINED,	 8,  8,  0,  255 }	/* (0..255) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
diff --git a/e2sm/lib/QoSID.c b/e2sm/lib/QoSID.c
new file mode 100644
index 0000000..ea37ef5
--- /dev/null
+++ b/e2sm/lib/QoSID.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "QoSID.h"
+
+static asn_oer_constraints_t asn_OER_type_QoSID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_QoSID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_QoSID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct QoSID, choice.fiveGC),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_FiveQI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"fiveGC"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct QoSID, choice.ePC),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_QCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ePC"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_QoSID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fiveGC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ePC */
+};
+static asn_CHOICE_specifics_t asn_SPC_QoSID_specs_1 = {
+	sizeof(struct QoSID),
+	offsetof(struct QoSID, _asn_ctx),
+	offsetof(struct QoSID, present),
+	sizeof(((struct QoSID *)0)->present),
+	asn_MAP_QoSID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_QoSID = {
+	"QoSID",
+	"QoSID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_QoSID_constr_1, &asn_PER_type_QoSID_constr_1, CHOICE_constraint },
+	asn_MBR_QoSID_1,
+	2,	/* Elements count */
+	&asn_SPC_QoSID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/QosFlowIdentifier.c b/e2sm/lib/QosFlowIdentifier.c
new file mode 100644
index 0000000..f2bf382
--- /dev/null
+++ b/e2sm/lib/QosFlowIdentifier.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "QosFlowIdentifier.h"
+
+int
+QosFlowIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 0 && value <= 63)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  6,  6,  0,  63 }	/* (0..63,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_QosFlowIdentifier_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier = {
+	"QosFlowIdentifier",
+	"QosFlowIdentifier",
+	&asn_OP_NativeInteger,
+	asn_DEF_QosFlowIdentifier_tags_1,
+	sizeof(asn_DEF_QosFlowIdentifier_tags_1)
+		/sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */
+	asn_DEF_QosFlowIdentifier_tags_1,	/* Same as above */
+	sizeof(asn_DEF_QosFlowIdentifier_tags_1)
+		/sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */
+	{ &asn_OER_type_QosFlowIdentifier_constr_1, &asn_PER_type_QosFlowIdentifier_constr_1, QosFlowIdentifier_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RAN-CallProcess-ID.c b/e2sm/lib/RAN-CallProcess-ID.c
new file mode 100644
index 0000000..20284f3
--- /dev/null
+++ b/e2sm/lib/RAN-CallProcess-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RAN-CallProcess-ID.h"
+
+int
+RAN_CallProcess_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 232)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RAN_CallProcess_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RAN_CallProcess_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  232 }	/* (1..232,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RAN_CallProcess_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RAN_CallProcess_ID = {
+	"RAN-CallProcess-ID",
+	"RAN-CallProcess-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RAN_CallProcess_ID_tags_1,
+	sizeof(asn_DEF_RAN_CallProcess_ID_tags_1)
+		/sizeof(asn_DEF_RAN_CallProcess_ID_tags_1[0]), /* 1 */
+	asn_DEF_RAN_CallProcess_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RAN_CallProcess_ID_tags_1)
+		/sizeof(asn_DEF_RAN_CallProcess_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RAN_CallProcess_ID_constr_1, &asn_PER_type_RAN_CallProcess_ID_constr_1, RAN_CallProcess_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RAN-Container.c b/e2sm/lib/RAN-Container.c
deleted file mode 100644
index 00ae3b9..0000000
--- a/e2sm/lib/RAN-Container.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RAN-Container.h"
-
-/*
- * This type is implemented using OCTET_STRING,
- * so here we adjust the DEF accordingly.
- */
-static const ber_tlv_tag_t asn_DEF_RAN_Container_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RAN_Container = {
-	"RAN-Container",
-	"RAN-Container",
-	&asn_OP_OCTET_STRING,
-	asn_DEF_RAN_Container_tags_1,
-	sizeof(asn_DEF_RAN_Container_tags_1)
-		/sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */
-	asn_DEF_RAN_Container_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RAN_Container_tags_1)
-		/sizeof(asn_DEF_RAN_Container_tags_1[0]), /* 1 */
-	{ 0, 0, OCTET_STRING_constraint },
-	0, 0,	/* No members */
-	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RAN-ControlParameter-Item.c b/e2sm/lib/RAN-ControlParameter-Item.c
deleted file mode 100644
index 4ae973e..0000000
--- a/e2sm/lib/RAN-ControlParameter-Item.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RAN-ControlParameter-Item.h"
-
-asn_TYPE_member_t asn_MBR_RAN_ControlParameter_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RAN_ControlParameter_Item, ranParameter_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANParameter_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ranParameter-ID"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RAN_ControlParameter_Item, ranParameter_Name),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANParameter_Name,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ranParameter-Name"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_RAN_ControlParameter_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RAN_ControlParameter_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-Name */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RAN_ControlParameter_Item_specs_1 = {
-	sizeof(struct RAN_ControlParameter_Item),
-	offsetof(struct RAN_ControlParameter_Item, _asn_ctx),
-	asn_MAP_RAN_ControlParameter_Item_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RAN_ControlParameter_Item = {
-	"RAN-ControlParameter-Item",
-	"RAN-ControlParameter-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RAN_ControlParameter_Item_tags_1,
-	sizeof(asn_DEF_RAN_ControlParameter_Item_tags_1)
-		/sizeof(asn_DEF_RAN_ControlParameter_Item_tags_1[0]), /* 1 */
-	asn_DEF_RAN_ControlParameter_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RAN_ControlParameter_Item_tags_1)
-		/sizeof(asn_DEF_RAN_ControlParameter_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RAN_ControlParameter_Item_1,
-	2,	/* Elements count */
-	&asn_SPC_RAN_ControlParameter_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RANFunctionDefinition-Control-Action-Item.c b/e2sm/lib/RANFunctionDefinition-Control-Action-Item.c
new file mode 100644
index 0000000..8cfa771
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Control-Action-Item.c
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Control-Action-Item.h"
+
+#include "ControlAction-RANParameter-Item.h"
+static int
+memb_ran_ControlActionParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ran_ControlActionParameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_ControlActionParameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_ControlActionParameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_ControlActionParameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_ControlActionParameters_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ControlAction_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_ControlActionParameters_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_ControlActionParameters_List_specs_4 = {
+	sizeof(struct RANFunctionDefinition_Control_Action_Item__ran_ControlActionParameters_List),
+	offsetof(struct RANFunctionDefinition_Control_Action_Item__ran_ControlActionParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_ControlActionParameters_List_4 = {
+	"ran-ControlActionParameters-List",
+	"ran-ControlActionParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_ControlActionParameters_List_tags_4,
+	sizeof(asn_DEF_ran_ControlActionParameters_List_tags_4)
+		/sizeof(asn_DEF_ran_ControlActionParameters_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_ran_ControlActionParameters_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_ran_ControlActionParameters_List_tags_4)
+		/sizeof(asn_DEF_ran_ControlActionParameters_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_ran_ControlActionParameters_List_constr_4, &asn_PER_type_ran_ControlActionParameters_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_ran_ControlActionParameters_List_4,
+	1,	/* Single element */
+	&asn_SPC_ran_ControlActionParameters_List_specs_4	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Control_Action_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Action_Item, ric_ControlAction_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_ControlAction_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlAction-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Action_Item, ric_ControlAction_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_ControlAction_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlAction-Name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Control_Action_Item, ran_ControlActionParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_ran_ControlActionParameters_List_4,
+		0,
+		{ &asn_OER_memb_ran_ControlActionParameters_List_constr_4, &asn_PER_memb_ran_ControlActionParameters_List_constr_4,  memb_ran_ControlActionParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-ControlActionParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Control_Action_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Control_Action_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlAction-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlAction-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ran-ControlActionParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Control_Action_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Control_Action_Item),
+	offsetof(struct RANFunctionDefinition_Control_Action_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Control_Action_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Control_Action_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Control_Action_Item = {
+	"RANFunctionDefinition-Control-Action-Item",
+	"RANFunctionDefinition-Control-Action-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Control_Action_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Control_Action_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Control_Action_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Control-Item.c b/e2sm/lib/RANFunctionDefinition-Control-Item.c
new file mode 100644
index 0000000..4497d29
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Control-Item.c
@@ -0,0 +1,282 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Control-Item.h"
+
+#include "RANFunctionDefinition-Control-Action-Item.h"
+#include "ControlOutcome-RANParameter-Item.h"
+static int
+memb_ric_ControlAction_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_ran_ControlOutcomeParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 255)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_ControlAction_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ric_ControlAction_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ran_ControlOutcomeParameters_List_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..255)) */};
+static asn_per_constraints_t asn_PER_type_ran_ControlOutcomeParameters_List_constr_10 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  1,  255 }	/* (SIZE(1..255)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_ControlAction_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ric_ControlAction_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_ControlOutcomeParameters_List_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..255)) */};
+static asn_per_constraints_t asn_PER_memb_ran_ControlOutcomeParameters_List_constr_10 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  1,  255 }	/* (SIZE(1..255)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_ControlAction_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Control_Action_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_ControlAction_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_ControlAction_List_specs_4 = {
+	sizeof(struct RANFunctionDefinition_Control_Item__ric_ControlAction_List),
+	offsetof(struct RANFunctionDefinition_Control_Item__ric_ControlAction_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_ControlAction_List_4 = {
+	"ric-ControlAction-List",
+	"ric-ControlAction-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_ControlAction_List_tags_4,
+	sizeof(asn_DEF_ric_ControlAction_List_tags_4)
+		/sizeof(asn_DEF_ric_ControlAction_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_ric_ControlAction_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_ric_ControlAction_List_tags_4)
+		/sizeof(asn_DEF_ric_ControlAction_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_ric_ControlAction_List_constr_4, &asn_PER_type_ric_ControlAction_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_ric_ControlAction_List_4,
+	1,	/* Single element */
+	&asn_SPC_ric_ControlAction_List_specs_4	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ran_ControlOutcomeParameters_List_10[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ControlOutcome_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_ControlOutcomeParameters_List_tags_10[] = {
+	(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_ControlOutcomeParameters_List_specs_10 = {
+	sizeof(struct RANFunctionDefinition_Control_Item__ran_ControlOutcomeParameters_List),
+	offsetof(struct RANFunctionDefinition_Control_Item__ran_ControlOutcomeParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_ControlOutcomeParameters_List_10 = {
+	"ran-ControlOutcomeParameters-List",
+	"ran-ControlOutcomeParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_ControlOutcomeParameters_List_tags_10,
+	sizeof(asn_DEF_ran_ControlOutcomeParameters_List_tags_10)
+		/sizeof(asn_DEF_ran_ControlOutcomeParameters_List_tags_10[0]) - 1, /* 1 */
+	asn_DEF_ran_ControlOutcomeParameters_List_tags_10,	/* Same as above */
+	sizeof(asn_DEF_ran_ControlOutcomeParameters_List_tags_10)
+		/sizeof(asn_DEF_ran_ControlOutcomeParameters_List_tags_10[0]), /* 2 */
+	{ &asn_OER_type_ran_ControlOutcomeParameters_List_constr_10, &asn_PER_type_ran_ControlOutcomeParameters_List_constr_10, SEQUENCE_OF_constraint },
+	asn_MBR_ran_ControlOutcomeParameters_List_10,
+	1,	/* Single element */
+	&asn_SPC_ran_ControlOutcomeParameters_List_specs_10	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Control_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Item, ric_ControlStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Item, ric_ControlStyle_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlStyle-Name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Control_Item, ric_ControlAction_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_ric_ControlAction_List_4,
+		0,
+		{ &asn_OER_memb_ric_ControlAction_List_constr_4, &asn_PER_memb_ric_ControlAction_List_constr_4,  memb_ric_ControlAction_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-ControlAction-List"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Item, ric_ControlHeaderFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlHeaderFormat-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Item, ric_ControlMessageFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlMessageFormat-Type"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Control_Item, ric_CallProcessIDFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-CallProcessIDFormat-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control_Item, ric_ControlOutcomeFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ControlOutcomeFormat-Type"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Control_Item, ran_ControlOutcomeParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+		0,
+		&asn_DEF_ran_ControlOutcomeParameters_List_10,
+		0,
+		{ &asn_OER_memb_ran_ControlOutcomeParameters_List_constr_10, &asn_PER_memb_ran_ControlOutcomeParameters_List_constr_10,  memb_ran_ControlOutcomeParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-ControlOutcomeParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Control_Item_oms_1[] = { 2, 5, 7 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Control_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Control_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ControlAction-List */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ControlHeaderFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-ControlMessageFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ric-CallProcessIDFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ric-ControlOutcomeFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ran-ControlOutcomeParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Control_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Control_Item),
+	offsetof(struct RANFunctionDefinition_Control_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Control_Item_tag2el_1,
+	8,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Control_Item_oms_1,	/* Optional members */
+	3, 0,	/* Root/Additions */
+	8,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Control_Item = {
+	"RANFunctionDefinition-Control-Item",
+	"RANFunctionDefinition-Control-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Control_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Control_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Control_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Control_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Control_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Control_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Control_Item_1,
+	8,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Control_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Control.c b/e2sm/lib/RANFunctionDefinition-Control.c
new file mode 100644
index 0000000..ca30d07
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Control.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Control.h"
+
+#include "RANFunctionDefinition-Control-Item.h"
+static int
+memb_ric_ControlStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 63)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_ControlStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_ControlStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_ControlStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_ControlStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_ControlStyle_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Control_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_ControlStyle_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_ControlStyle_List_specs_2 = {
+	sizeof(struct RANFunctionDefinition_Control__ric_ControlStyle_List),
+	offsetof(struct RANFunctionDefinition_Control__ric_ControlStyle_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_ControlStyle_List_2 = {
+	"ric-ControlStyle-List",
+	"ric-ControlStyle-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_ControlStyle_List_tags_2,
+	sizeof(asn_DEF_ric_ControlStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_ControlStyle_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ric_ControlStyle_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ric_ControlStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_ControlStyle_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ric_ControlStyle_List_constr_2, &asn_PER_type_ric_ControlStyle_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ric_ControlStyle_List_2,
+	1,	/* Single element */
+	&asn_SPC_ric_ControlStyle_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Control_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Control, ric_ControlStyle_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ric_ControlStyle_List_2,
+		0,
+		{ &asn_OER_memb_ric_ControlStyle_List_constr_2, &asn_PER_memb_ric_ControlStyle_List_constr_2,  memb_ric_ControlStyle_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-ControlStyle-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Control_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Control_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-ControlStyle-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Control_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Control),
+	offsetof(struct RANFunctionDefinition_Control, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Control_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Control = {
+	"RANFunctionDefinition-Control",
+	"RANFunctionDefinition-Control",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Control_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Control_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Control_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Control_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Control_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Control_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Control_1,
+	1,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Control_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-EventTrigger-Breakpoint-Item.c b/e2sm/lib/RANFunctionDefinition-EventTrigger-Breakpoint-Item.c
new file mode 100644
index 0000000..e70a4f4
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-EventTrigger-Breakpoint-Item.c
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-EventTrigger-Breakpoint-Item.h"
+
+#include "CallProcessBreakpoint-RANParameter-Item.h"
+static int
+memb_ran_CallProcessBreakpointParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ran_CallProcessBreakpointParameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_CallProcessBreakpointParameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_CallProcessBreakpointParameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_CallProcessBreakpointParameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_CallProcessBreakpointParameters_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CallProcessBreakpoint_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_CallProcessBreakpointParameters_List_specs_4 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item__ran_CallProcessBreakpointParameters_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item__ran_CallProcessBreakpointParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_CallProcessBreakpointParameters_List_4 = {
+	"ran-CallProcessBreakpointParameters-List",
+	"ran-CallProcessBreakpointParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4,
+	sizeof(asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4)
+		/sizeof(asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4)
+		/sizeof(asn_DEF_ran_CallProcessBreakpointParameters_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_ran_CallProcessBreakpointParameters_List_constr_4, &asn_PER_type_ran_CallProcessBreakpointParameters_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_ran_CallProcessBreakpointParameters_List_4,
+	1,	/* Single element */
+	&asn_SPC_ran_CallProcessBreakpointParameters_List_specs_4	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_EventTrigger_Breakpoint_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item, callProcessBreakpoint_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_CallProcessBreakpoint_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"callProcessBreakpoint-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item, callProcessBreakpoint_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_CallProcessBreakpoint_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"callProcessBreakpoint-Name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item, ran_CallProcessBreakpointParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_ran_CallProcessBreakpointParameters_List_4,
+		0,
+		{ &asn_OER_memb_ran_CallProcessBreakpointParameters_List_constr_4, &asn_PER_memb_ran_CallProcessBreakpointParameters_List_constr_4,  memb_ran_CallProcessBreakpointParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-CallProcessBreakpointParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_EventTrigger_Breakpoint_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* callProcessBreakpoint-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* callProcessBreakpoint-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ran-CallProcessBreakpointParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_EventTrigger_Breakpoint_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item),
+	offsetof(struct RANFunctionDefinition_EventTrigger_Breakpoint_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_EventTrigger_Breakpoint_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item = {
+	"RANFunctionDefinition-EventTrigger-Breakpoint-Item",
+	"RANFunctionDefinition-EventTrigger-Breakpoint-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_EventTrigger_Breakpoint_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_EventTrigger_Breakpoint_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-EventTrigger-CallProcess-Item.c b/e2sm/lib/RANFunctionDefinition-EventTrigger-CallProcess-Item.c
new file mode 100644
index 0000000..58e1815
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-EventTrigger-CallProcess-Item.c
@@ -0,0 +1,150 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-EventTrigger-CallProcess-Item.h"
+
+#include "RANFunctionDefinition-EventTrigger-Breakpoint-Item.h"
+static int
+memb_callProcessBreakpoints_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_callProcessBreakpoints_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_callProcessBreakpoints_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_callProcessBreakpoints_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_callProcessBreakpoints_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_callProcessBreakpoints_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_EventTrigger_Breakpoint_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_callProcessBreakpoints_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_callProcessBreakpoints_List_specs_4 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item__callProcessBreakpoints_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item__callProcessBreakpoints_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_callProcessBreakpoints_List_4 = {
+	"callProcessBreakpoints-List",
+	"callProcessBreakpoints-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_callProcessBreakpoints_List_tags_4,
+	sizeof(asn_DEF_callProcessBreakpoints_List_tags_4)
+		/sizeof(asn_DEF_callProcessBreakpoints_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_callProcessBreakpoints_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_callProcessBreakpoints_List_tags_4)
+		/sizeof(asn_DEF_callProcessBreakpoints_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_callProcessBreakpoints_List_constr_4, &asn_PER_type_callProcessBreakpoints_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_callProcessBreakpoints_List_4,
+	1,	/* Single element */
+	&asn_SPC_callProcessBreakpoints_List_specs_4	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_EventTrigger_CallProcess_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item, callProcessType_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_CallProcessType_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"callProcessType-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item, callProcessType_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_CallProcessType_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"callProcessType-Name"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item, callProcessBreakpoints_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_callProcessBreakpoints_List_4,
+		0,
+		{ &asn_OER_memb_callProcessBreakpoints_List_constr_4, &asn_PER_memb_callProcessBreakpoints_List_constr_4,  memb_callProcessBreakpoints_List_constraint_1 },
+		0, 0, /* No default value */
+		"callProcessBreakpoints-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_EventTrigger_CallProcess_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* callProcessType-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* callProcessType-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* callProcessBreakpoints-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_EventTrigger_CallProcess_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item),
+	offsetof(struct RANFunctionDefinition_EventTrigger_CallProcess_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_EventTrigger_CallProcess_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item = {
+	"RANFunctionDefinition-EventTrigger-CallProcess-Item",
+	"RANFunctionDefinition-EventTrigger-CallProcess-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_EventTrigger_CallProcess_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_EventTrigger_CallProcess_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-EventTrigger-Style-Item.c b/e2sm/lib/RANFunctionDefinition-EventTrigger-Style-Item.c
new file mode 100644
index 0000000..2181f74
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-EventTrigger-Style-Item.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-EventTrigger-Style-Item.h"
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_EventTrigger_Style_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_Style_Item, ric_EventTriggerStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-EventTriggerStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_Style_Item, ric_EventTriggerStyle_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-EventTriggerStyle-Name"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger_Style_Item, ric_EventTriggerFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-EventTriggerFormat-Type"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_EventTrigger_Style_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_EventTrigger_Style_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger_Style_Item),
+	offsetof(struct RANFunctionDefinition_EventTrigger_Style_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_EventTrigger_Style_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item = {
+	"RANFunctionDefinition-EventTrigger-Style-Item",
+	"RANFunctionDefinition-EventTrigger-Style-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_EventTrigger_Style_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_EventTrigger_Style_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-EventTrigger.c b/e2sm/lib/RANFunctionDefinition-EventTrigger.c
new file mode 100644
index 0000000..fab4046
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-EventTrigger.c
@@ -0,0 +1,492 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-EventTrigger.h"
+
+#include "RANFunctionDefinition-EventTrigger-Style-Item.h"
+#include "L2Parameters-RANParameter-Item.h"
+#include "RANFunctionDefinition-EventTrigger-CallProcess-Item.h"
+#include "UEIdentification-RANParameter-Item.h"
+#include "CellIdentification-RANParameter-Item.h"
+static int
+memb_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 63)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_ran_L2Parameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_ran_CallProcessTypes_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_ran_UEIdentificationParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_ran_CellIdentificationParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ran_L2Parameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_L2Parameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ran_CallProcessTypes_List_constr_6 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_CallProcessTypes_List_constr_6 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ran_UEIdentificationParameters_List_constr_8 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_UEIdentificationParameters_List_constr_8 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ran_CellIdentificationParameters_List_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_CellIdentificationParameters_List_constr_10 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_L2Parameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_L2Parameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_CallProcessTypes_List_constr_6 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_CallProcessTypes_List_constr_6 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_UEIdentificationParameters_List_constr_8 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_UEIdentificationParameters_List_constr_8 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_CellIdentificationParameters_List_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_CellIdentificationParameters_List_constr_10 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_EventTrigger_Style_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_2 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger__ric_EventTriggerStyle_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger__ric_EventTriggerStyle_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_2 = {
+	"ric-EventTriggerStyle-List",
+	"ric-EventTriggerStyle-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_EventTriggerStyle_List_tags_2,
+	sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ric_EventTriggerStyle_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ric_EventTriggerStyle_List_constr_2, &asn_PER_type_ric_EventTriggerStyle_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ric_EventTriggerStyle_List_2,
+	1,	/* Single element */
+	&asn_SPC_ric_EventTriggerStyle_List_specs_2	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ran_L2Parameters_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_L2Parameters_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_L2Parameters_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_L2Parameters_List_specs_4 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger__ran_L2Parameters_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger__ran_L2Parameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_L2Parameters_List_4 = {
+	"ran-L2Parameters-List",
+	"ran-L2Parameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_L2Parameters_List_tags_4,
+	sizeof(asn_DEF_ran_L2Parameters_List_tags_4)
+		/sizeof(asn_DEF_ran_L2Parameters_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_ran_L2Parameters_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_ran_L2Parameters_List_tags_4)
+		/sizeof(asn_DEF_ran_L2Parameters_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_ran_L2Parameters_List_constr_4, &asn_PER_type_ran_L2Parameters_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_ran_L2Parameters_List_4,
+	1,	/* Single element */
+	&asn_SPC_ran_L2Parameters_List_specs_4	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ran_CallProcessTypes_List_6[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_EventTrigger_CallProcess_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_CallProcessTypes_List_tags_6[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_CallProcessTypes_List_specs_6 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger__ran_CallProcessTypes_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger__ran_CallProcessTypes_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_CallProcessTypes_List_6 = {
+	"ran-CallProcessTypes-List",
+	"ran-CallProcessTypes-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_CallProcessTypes_List_tags_6,
+	sizeof(asn_DEF_ran_CallProcessTypes_List_tags_6)
+		/sizeof(asn_DEF_ran_CallProcessTypes_List_tags_6[0]) - 1, /* 1 */
+	asn_DEF_ran_CallProcessTypes_List_tags_6,	/* Same as above */
+	sizeof(asn_DEF_ran_CallProcessTypes_List_tags_6)
+		/sizeof(asn_DEF_ran_CallProcessTypes_List_tags_6[0]), /* 2 */
+	{ &asn_OER_type_ran_CallProcessTypes_List_constr_6, &asn_PER_type_ran_CallProcessTypes_List_constr_6, SEQUENCE_OF_constraint },
+	asn_MBR_ran_CallProcessTypes_List_6,
+	1,	/* Single element */
+	&asn_SPC_ran_CallProcessTypes_List_specs_6	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ran_UEIdentificationParameters_List_8[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_UEIdentification_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_UEIdentificationParameters_List_tags_8[] = {
+	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_UEIdentificationParameters_List_specs_8 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger__ran_UEIdentificationParameters_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger__ran_UEIdentificationParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_UEIdentificationParameters_List_8 = {
+	"ran-UEIdentificationParameters-List",
+	"ran-UEIdentificationParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_UEIdentificationParameters_List_tags_8,
+	sizeof(asn_DEF_ran_UEIdentificationParameters_List_tags_8)
+		/sizeof(asn_DEF_ran_UEIdentificationParameters_List_tags_8[0]) - 1, /* 1 */
+	asn_DEF_ran_UEIdentificationParameters_List_tags_8,	/* Same as above */
+	sizeof(asn_DEF_ran_UEIdentificationParameters_List_tags_8)
+		/sizeof(asn_DEF_ran_UEIdentificationParameters_List_tags_8[0]), /* 2 */
+	{ &asn_OER_type_ran_UEIdentificationParameters_List_constr_8, &asn_PER_type_ran_UEIdentificationParameters_List_constr_8, SEQUENCE_OF_constraint },
+	asn_MBR_ran_UEIdentificationParameters_List_8,
+	1,	/* Single element */
+	&asn_SPC_ran_UEIdentificationParameters_List_specs_8	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ran_CellIdentificationParameters_List_10[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CellIdentification_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_CellIdentificationParameters_List_tags_10[] = {
+	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_CellIdentificationParameters_List_specs_10 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger__ran_CellIdentificationParameters_List),
+	offsetof(struct RANFunctionDefinition_EventTrigger__ran_CellIdentificationParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_CellIdentificationParameters_List_10 = {
+	"ran-CellIdentificationParameters-List",
+	"ran-CellIdentificationParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_CellIdentificationParameters_List_tags_10,
+	sizeof(asn_DEF_ran_CellIdentificationParameters_List_tags_10)
+		/sizeof(asn_DEF_ran_CellIdentificationParameters_List_tags_10[0]) - 1, /* 1 */
+	asn_DEF_ran_CellIdentificationParameters_List_tags_10,	/* Same as above */
+	sizeof(asn_DEF_ran_CellIdentificationParameters_List_tags_10)
+		/sizeof(asn_DEF_ran_CellIdentificationParameters_List_tags_10[0]), /* 2 */
+	{ &asn_OER_type_ran_CellIdentificationParameters_List_constr_10, &asn_PER_type_ran_CellIdentificationParameters_List_constr_10, SEQUENCE_OF_constraint },
+	asn_MBR_ran_CellIdentificationParameters_List_10,
+	1,	/* Single element */
+	&asn_SPC_ran_CellIdentificationParameters_List_specs_10	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_EventTrigger_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_EventTrigger, ric_EventTriggerStyle_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ric_EventTriggerStyle_List_2,
+		0,
+		{ &asn_OER_memb_ric_EventTriggerStyle_List_constr_2, &asn_PER_memb_ric_EventTriggerStyle_List_constr_2,  memb_ric_EventTriggerStyle_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-EventTriggerStyle-List"
+		},
+	{ ATF_POINTER, 4, offsetof(struct RANFunctionDefinition_EventTrigger, ran_L2Parameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_ran_L2Parameters_List_4,
+		0,
+		{ &asn_OER_memb_ran_L2Parameters_List_constr_4, &asn_PER_memb_ran_L2Parameters_List_constr_4,  memb_ran_L2Parameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-L2Parameters-List"
+		},
+	{ ATF_POINTER, 3, offsetof(struct RANFunctionDefinition_EventTrigger, ran_CallProcessTypes_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_ran_CallProcessTypes_List_6,
+		0,
+		{ &asn_OER_memb_ran_CallProcessTypes_List_constr_6, &asn_PER_memb_ran_CallProcessTypes_List_constr_6,  memb_ran_CallProcessTypes_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-CallProcessTypes-List"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANFunctionDefinition_EventTrigger, ran_UEIdentificationParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		0,
+		&asn_DEF_ran_UEIdentificationParameters_List_8,
+		0,
+		{ &asn_OER_memb_ran_UEIdentificationParameters_List_constr_8, &asn_PER_memb_ran_UEIdentificationParameters_List_constr_8,  memb_ran_UEIdentificationParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-UEIdentificationParameters-List"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_EventTrigger, ran_CellIdentificationParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		0,
+		&asn_DEF_ran_CellIdentificationParameters_List_10,
+		0,
+		{ &asn_OER_memb_ran_CellIdentificationParameters_List_constr_10, &asn_PER_memb_ran_CellIdentificationParameters_List_constr_10,  memb_ran_CellIdentificationParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-CellIdentificationParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_EventTrigger_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_EventTrigger_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_EventTrigger_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ran-L2Parameters-List */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ran-CallProcessTypes-List */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ran-UEIdentificationParameters-List */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ran-CellIdentificationParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_EventTrigger_specs_1 = {
+	sizeof(struct RANFunctionDefinition_EventTrigger),
+	offsetof(struct RANFunctionDefinition_EventTrigger, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_EventTrigger_tag2el_1,
+	5,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_EventTrigger_oms_1,	/* Optional members */
+	4, 0,	/* Root/Additions */
+	5,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_EventTrigger = {
+	"RANFunctionDefinition-EventTrigger",
+	"RANFunctionDefinition-EventTrigger",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_EventTrigger_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_EventTrigger_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_EventTrigger_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_EventTrigger_1,
+	5,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_EventTrigger_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Insert-Indication-Item.c b/e2sm/lib/RANFunctionDefinition-Insert-Indication-Item.c
new file mode 100644
index 0000000..b26f955
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Insert-Indication-Item.c
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Insert-Indication-Item.h"
+
+#include "InsertIndication-RANParameter-Item.h"
+static int
+memb_ran_InsertIndicationParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ran_InsertIndicationParameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_InsertIndicationParameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_InsertIndicationParameters_List_constr_4 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_InsertIndicationParameters_List_constr_4 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_InsertIndicationParameters_List_4[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_InsertIndication_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_InsertIndicationParameters_List_tags_4[] = {
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_InsertIndicationParameters_List_specs_4 = {
+	sizeof(struct RANFunctionDefinition_Insert_Indication_Item__ran_InsertIndicationParameters_List),
+	offsetof(struct RANFunctionDefinition_Insert_Indication_Item__ran_InsertIndicationParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_InsertIndicationParameters_List_4 = {
+	"ran-InsertIndicationParameters-List",
+	"ran-InsertIndicationParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_InsertIndicationParameters_List_tags_4,
+	sizeof(asn_DEF_ran_InsertIndicationParameters_List_tags_4)
+		/sizeof(asn_DEF_ran_InsertIndicationParameters_List_tags_4[0]) - 1, /* 1 */
+	asn_DEF_ran_InsertIndicationParameters_List_tags_4,	/* Same as above */
+	sizeof(asn_DEF_ran_InsertIndicationParameters_List_tags_4)
+		/sizeof(asn_DEF_ran_InsertIndicationParameters_List_tags_4[0]), /* 2 */
+	{ &asn_OER_type_ran_InsertIndicationParameters_List_constr_4, &asn_PER_type_ran_InsertIndicationParameters_List_constr_4, SEQUENCE_OF_constraint },
+	asn_MBR_ran_InsertIndicationParameters_List_4,
+	1,	/* Single element */
+	&asn_SPC_ran_InsertIndicationParameters_List_specs_4	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Insert_Indication_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Indication_Item, ric_InsertIndication_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_InsertIndication_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertIndication-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Indication_Item, ric_InsertIndication_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_InsertIndication_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertIndication-Name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Insert_Indication_Item, ran_InsertIndicationParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		0,
+		&asn_DEF_ran_InsertIndicationParameters_List_4,
+		0,
+		{ &asn_OER_memb_ran_InsertIndicationParameters_List_constr_4, &asn_PER_memb_ran_InsertIndicationParameters_List_constr_4,  memb_ran_InsertIndicationParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-InsertIndicationParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Insert_Indication_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Insert_Indication_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-InsertIndication-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-InsertIndication-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ran-InsertIndicationParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Insert_Indication_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Insert_Indication_Item),
+	offsetof(struct RANFunctionDefinition_Insert_Indication_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Insert_Indication_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Insert_Indication_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Insert_Indication_Item = {
+	"RANFunctionDefinition-Insert-Indication-Item",
+	"RANFunctionDefinition-Insert-Indication-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Insert_Indication_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Insert_Indication_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Insert_Indication_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Insert-Item.c b/e2sm/lib/RANFunctionDefinition-Insert-Item.c
new file mode 100644
index 0000000..009195a
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Insert-Item.c
@@ -0,0 +1,202 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Insert-Item.h"
+
+#include "RANFunctionDefinition-Insert-Indication-Item.h"
+static int
+memb_ric_InsertIndication_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_InsertIndication_List_constr_6 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ric_InsertIndication_List_constr_6 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_InsertIndication_List_constr_6 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ric_InsertIndication_List_constr_6 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_InsertIndication_List_6[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Insert_Indication_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_InsertIndication_List_tags_6[] = {
+	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_InsertIndication_List_specs_6 = {
+	sizeof(struct RANFunctionDefinition_Insert_Item__ric_InsertIndication_List),
+	offsetof(struct RANFunctionDefinition_Insert_Item__ric_InsertIndication_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_InsertIndication_List_6 = {
+	"ric-InsertIndication-List",
+	"ric-InsertIndication-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_InsertIndication_List_tags_6,
+	sizeof(asn_DEF_ric_InsertIndication_List_tags_6)
+		/sizeof(asn_DEF_ric_InsertIndication_List_tags_6[0]) - 1, /* 1 */
+	asn_DEF_ric_InsertIndication_List_tags_6,	/* Same as above */
+	sizeof(asn_DEF_ric_InsertIndication_List_tags_6)
+		/sizeof(asn_DEF_ric_InsertIndication_List_tags_6[0]), /* 2 */
+	{ &asn_OER_type_ric_InsertIndication_List_constr_6, &asn_PER_type_ric_InsertIndication_List_constr_6, SEQUENCE_OF_constraint },
+	asn_MBR_ric_InsertIndication_List_6,
+	1,	/* Single element */
+	&asn_SPC_ric_InsertIndication_List_specs_6	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Insert_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_InsertStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_InsertStyle_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-InsertStyle-Name"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_SupportedEventTriggerStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-SupportedEventTriggerStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_ActionDefinitionFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ActionDefinitionFormat-Type"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Insert_Item, ric_InsertIndication_List),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		0,
+		&asn_DEF_ric_InsertIndication_List_6,
+		0,
+		{ &asn_OER_memb_ric_InsertIndication_List_constr_6, &asn_PER_memb_ric_InsertIndication_List_constr_6,  memb_ric_InsertIndication_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-InsertIndication-List"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_IndicationHeaderFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-IndicationHeaderFormat-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_IndicationMessageFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-IndicationMessageFormat-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert_Item, ric_CallProcessIDFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-CallProcessIDFormat-Type"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Insert_Item_oms_1[] = { 4 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Insert_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Insert_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-InsertStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-InsertStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-SupportedEventTriggerStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ActionDefinitionFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-InsertIndication-List */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ric-IndicationHeaderFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ric-IndicationMessageFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ric-CallProcessIDFormat-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Insert_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Insert_Item),
+	offsetof(struct RANFunctionDefinition_Insert_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Insert_Item_tag2el_1,
+	8,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Insert_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	8,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Insert_Item = {
+	"RANFunctionDefinition-Insert-Item",
+	"RANFunctionDefinition-Insert-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Insert_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Insert_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Insert_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Insert_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Insert_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Insert_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Insert_Item_1,
+	8,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Insert_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Insert.c b/e2sm/lib/RANFunctionDefinition-Insert.c
new file mode 100644
index 0000000..462454f
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Insert.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Insert.h"
+
+#include "RANFunctionDefinition-Insert-Item.h"
+static int
+memb_ric_InsertStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 63)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_InsertStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_InsertStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_InsertStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_InsertStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_InsertStyle_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Insert_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_InsertStyle_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_InsertStyle_List_specs_2 = {
+	sizeof(struct RANFunctionDefinition_Insert__ric_InsertStyle_List),
+	offsetof(struct RANFunctionDefinition_Insert__ric_InsertStyle_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_InsertStyle_List_2 = {
+	"ric-InsertStyle-List",
+	"ric-InsertStyle-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_InsertStyle_List_tags_2,
+	sizeof(asn_DEF_ric_InsertStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_InsertStyle_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ric_InsertStyle_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ric_InsertStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_InsertStyle_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ric_InsertStyle_List_constr_2, &asn_PER_type_ric_InsertStyle_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ric_InsertStyle_List_2,
+	1,	/* Single element */
+	&asn_SPC_ric_InsertStyle_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Insert_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Insert, ric_InsertStyle_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ric_InsertStyle_List_2,
+		0,
+		{ &asn_OER_memb_ric_InsertStyle_List_constr_2, &asn_PER_memb_ric_InsertStyle_List_constr_2,  memb_ric_InsertStyle_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-InsertStyle-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Insert_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Insert_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-InsertStyle-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Insert_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Insert),
+	offsetof(struct RANFunctionDefinition_Insert, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Insert_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Insert = {
+	"RANFunctionDefinition-Insert",
+	"RANFunctionDefinition-Insert",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Insert_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Insert_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Insert_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Insert_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Insert_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Insert_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Insert_1,
+	1,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Insert_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Policy-Action-Item.c b/e2sm/lib/RANFunctionDefinition-Policy-Action-Item.c
new file mode 100644
index 0000000..81fd3a8
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Policy-Action-Item.c
@@ -0,0 +1,252 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Policy-Action-Item.h"
+
+#include "PolicyAction-RANParameter-Item.h"
+#include "PolicyCondition-RANParameter-Item.h"
+static int
+memb_ran_PolicyActionParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static int
+memb_ran_PolicyConditionParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ran_PolicyActionParameters_List_constr_5 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_PolicyActionParameters_List_constr_5 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ran_PolicyConditionParameters_List_constr_7 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_PolicyConditionParameters_List_constr_7 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_PolicyActionParameters_List_constr_5 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_PolicyActionParameters_List_constr_5 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_PolicyConditionParameters_List_constr_7 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_PolicyConditionParameters_List_constr_7 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_PolicyActionParameters_List_5[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_PolicyAction_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_PolicyActionParameters_List_tags_5[] = {
+	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_PolicyActionParameters_List_specs_5 = {
+	sizeof(struct RANFunctionDefinition_Policy_Action_Item__ran_PolicyActionParameters_List),
+	offsetof(struct RANFunctionDefinition_Policy_Action_Item__ran_PolicyActionParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_PolicyActionParameters_List_5 = {
+	"ran-PolicyActionParameters-List",
+	"ran-PolicyActionParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_PolicyActionParameters_List_tags_5,
+	sizeof(asn_DEF_ran_PolicyActionParameters_List_tags_5)
+		/sizeof(asn_DEF_ran_PolicyActionParameters_List_tags_5[0]) - 1, /* 1 */
+	asn_DEF_ran_PolicyActionParameters_List_tags_5,	/* Same as above */
+	sizeof(asn_DEF_ran_PolicyActionParameters_List_tags_5)
+		/sizeof(asn_DEF_ran_PolicyActionParameters_List_tags_5[0]), /* 2 */
+	{ &asn_OER_type_ran_PolicyActionParameters_List_constr_5, &asn_PER_type_ran_PolicyActionParameters_List_constr_5, SEQUENCE_OF_constraint },
+	asn_MBR_ran_PolicyActionParameters_List_5,
+	1,	/* Single element */
+	&asn_SPC_ran_PolicyActionParameters_List_specs_5	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ran_PolicyConditionParameters_List_7[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_PolicyCondition_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_PolicyConditionParameters_List_tags_7[] = {
+	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_PolicyConditionParameters_List_specs_7 = {
+	sizeof(struct RANFunctionDefinition_Policy_Action_Item__ran_PolicyConditionParameters_List),
+	offsetof(struct RANFunctionDefinition_Policy_Action_Item__ran_PolicyConditionParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_PolicyConditionParameters_List_7 = {
+	"ran-PolicyConditionParameters-List",
+	"ran-PolicyConditionParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_PolicyConditionParameters_List_tags_7,
+	sizeof(asn_DEF_ran_PolicyConditionParameters_List_tags_7)
+		/sizeof(asn_DEF_ran_PolicyConditionParameters_List_tags_7[0]) - 1, /* 1 */
+	asn_DEF_ran_PolicyConditionParameters_List_tags_7,	/* Same as above */
+	sizeof(asn_DEF_ran_PolicyConditionParameters_List_tags_7)
+		/sizeof(asn_DEF_ran_PolicyConditionParameters_List_tags_7[0]), /* 2 */
+	{ &asn_OER_type_ran_PolicyConditionParameters_List_constr_7, &asn_PER_type_ran_PolicyConditionParameters_List_constr_7, SEQUENCE_OF_constraint },
+	asn_MBR_ran_PolicyConditionParameters_List_7,
+	1,	/* Single element */
+	&asn_SPC_ran_PolicyConditionParameters_List_specs_7	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Policy_Action_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy_Action_Item, ric_PolicyAction_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_ControlAction_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyAction-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy_Action_Item, ric_PolicyAction_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_ControlAction_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyAction-Name"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy_Action_Item, ric_ActionDefinitionFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ActionDefinitionFormat-Type"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANFunctionDefinition_Policy_Action_Item, ran_PolicyActionParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		0,
+		&asn_DEF_ran_PolicyActionParameters_List_5,
+		0,
+		{ &asn_OER_memb_ran_PolicyActionParameters_List_constr_5, &asn_PER_memb_ran_PolicyActionParameters_List_constr_5,  memb_ran_PolicyActionParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-PolicyActionParameters-List"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Policy_Action_Item, ran_PolicyConditionParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		0,
+		&asn_DEF_ran_PolicyConditionParameters_List_7,
+		0,
+		{ &asn_OER_memb_ran_PolicyConditionParameters_List_constr_7, &asn_PER_memb_ran_PolicyConditionParameters_List_constr_7,  memb_ran_PolicyConditionParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-PolicyConditionParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Policy_Action_Item_oms_1[] = { 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Policy_Action_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyAction-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-PolicyAction-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ActionDefinitionFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ran-PolicyActionParameters-List */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ran-PolicyConditionParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Policy_Action_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Policy_Action_Item),
+	offsetof(struct RANFunctionDefinition_Policy_Action_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Policy_Action_Item_tag2el_1,
+	5,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Policy_Action_Item_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	5,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Policy_Action_Item = {
+	"RANFunctionDefinition-Policy-Action-Item",
+	"RANFunctionDefinition-Policy-Action-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Policy_Action_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Policy_Action_Item_1,
+	5,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Policy_Action_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Policy-Item.c b/e2sm/lib/RANFunctionDefinition-Policy-Item.c
new file mode 100644
index 0000000..77b82ec
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Policy-Item.c
@@ -0,0 +1,162 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Policy-Item.h"
+
+#include "RANFunctionDefinition-Policy-Action-Item.h"
+static int
+memb_ric_PolicyAction_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_PolicyAction_List_constr_5 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ric_PolicyAction_List_constr_5 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_PolicyAction_List_constr_5 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ric_PolicyAction_List_constr_5 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_PolicyAction_List_5[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Policy_Action_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_PolicyAction_List_tags_5[] = {
+	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_PolicyAction_List_specs_5 = {
+	sizeof(struct RANFunctionDefinition_Policy_Item__ric_PolicyAction_List),
+	offsetof(struct RANFunctionDefinition_Policy_Item__ric_PolicyAction_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_PolicyAction_List_5 = {
+	"ric-PolicyAction-List",
+	"ric-PolicyAction-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_PolicyAction_List_tags_5,
+	sizeof(asn_DEF_ric_PolicyAction_List_tags_5)
+		/sizeof(asn_DEF_ric_PolicyAction_List_tags_5[0]) - 1, /* 1 */
+	asn_DEF_ric_PolicyAction_List_tags_5,	/* Same as above */
+	sizeof(asn_DEF_ric_PolicyAction_List_tags_5)
+		/sizeof(asn_DEF_ric_PolicyAction_List_tags_5[0]), /* 2 */
+	{ &asn_OER_type_ric_PolicyAction_List_constr_5, &asn_PER_type_ric_PolicyAction_List_constr_5, SEQUENCE_OF_constraint },
+	asn_MBR_ric_PolicyAction_List_5,
+	1,	/* Single element */
+	&asn_SPC_ric_PolicyAction_List_specs_5	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Policy_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy_Item, ric_PolicyStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy_Item, ric_PolicyStyle_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyStyle-Name"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy_Item, ric_SupportedEventTriggerStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-SupportedEventTriggerStyle-Type"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Policy_Item, ric_PolicyAction_List),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		0,
+		&asn_DEF_ric_PolicyAction_List_5,
+		0,
+		{ &asn_OER_memb_ric_PolicyAction_List_constr_5, &asn_PER_memb_ric_PolicyAction_List_constr_5,  memb_ric_PolicyAction_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-PolicyAction-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Policy_Item_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Policy_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Policy_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-PolicyStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-SupportedEventTriggerStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-PolicyAction-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Policy_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Policy_Item),
+	offsetof(struct RANFunctionDefinition_Policy_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Policy_Item_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Policy_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	4,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Policy_Item = {
+	"RANFunctionDefinition-Policy-Item",
+	"RANFunctionDefinition-Policy-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Policy_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Policy_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Policy_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Policy_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Policy_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Policy_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Policy_Item_1,
+	4,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Policy_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Policy.c b/e2sm/lib/RANFunctionDefinition-Policy.c
new file mode 100644
index 0000000..f809dec
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Policy.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Policy.h"
+
+#include "RANFunctionDefinition-Policy-Item.h"
+static int
+memb_ric_PolicyStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 63)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_PolicyStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_PolicyStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_PolicyStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_PolicyStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_PolicyStyle_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Policy_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_PolicyStyle_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_PolicyStyle_List_specs_2 = {
+	sizeof(struct RANFunctionDefinition_Policy__ric_PolicyStyle_List),
+	offsetof(struct RANFunctionDefinition_Policy__ric_PolicyStyle_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_PolicyStyle_List_2 = {
+	"ric-PolicyStyle-List",
+	"ric-PolicyStyle-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_PolicyStyle_List_tags_2,
+	sizeof(asn_DEF_ric_PolicyStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_PolicyStyle_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ric_PolicyStyle_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ric_PolicyStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_PolicyStyle_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ric_PolicyStyle_List_constr_2, &asn_PER_type_ric_PolicyStyle_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ric_PolicyStyle_List_2,
+	1,	/* Single element */
+	&asn_SPC_ric_PolicyStyle_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Policy_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Policy, ric_PolicyStyle_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ric_PolicyStyle_List_2,
+		0,
+		{ &asn_OER_memb_ric_PolicyStyle_List_constr_2, &asn_PER_memb_ric_PolicyStyle_List_constr_2,  memb_ric_PolicyStyle_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-PolicyStyle-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Policy_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Policy_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-PolicyStyle-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Policy_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Policy),
+	offsetof(struct RANFunctionDefinition_Policy, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Policy_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Policy = {
+	"RANFunctionDefinition-Policy",
+	"RANFunctionDefinition-Policy",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Policy_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Policy_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Policy_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Policy_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Policy_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Policy_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Policy_1,
+	1,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Policy_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Report-Item.c b/e2sm/lib/RANFunctionDefinition-Report-Item.c
new file mode 100644
index 0000000..131b739
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Report-Item.c
@@ -0,0 +1,192 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Report-Item.h"
+
+#include "Report-RANParameter-Item.h"
+static int
+memb_ran_ReportParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ran_ReportParameters_List_constr_8 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ran_ReportParameters_List_constr_8 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_ReportParameters_List_constr_8 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ran_ReportParameters_List_constr_8 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_ReportParameters_List_8[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_Report_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ran_ReportParameters_List_tags_8[] = {
+	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_ReportParameters_List_specs_8 = {
+	sizeof(struct RANFunctionDefinition_Report_Item__ran_ReportParameters_List),
+	offsetof(struct RANFunctionDefinition_Report_Item__ran_ReportParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_ReportParameters_List_8 = {
+	"ran-ReportParameters-List",
+	"ran-ReportParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ran_ReportParameters_List_tags_8,
+	sizeof(asn_DEF_ran_ReportParameters_List_tags_8)
+		/sizeof(asn_DEF_ran_ReportParameters_List_tags_8[0]) - 1, /* 1 */
+	asn_DEF_ran_ReportParameters_List_tags_8,	/* Same as above */
+	sizeof(asn_DEF_ran_ReportParameters_List_tags_8)
+		/sizeof(asn_DEF_ran_ReportParameters_List_tags_8[0]), /* 2 */
+	{ &asn_OER_type_ran_ReportParameters_List_constr_8, &asn_PER_type_ran_ReportParameters_List_constr_8, SEQUENCE_OF_constraint },
+	asn_MBR_ran_ReportParameters_List_8,
+	1,	/* Single element */
+	&asn_SPC_ran_ReportParameters_List_specs_8	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Report_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report_Item, ric_ReportStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ReportStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report_Item, ric_ReportStyle_Name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ReportStyle-Name"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report_Item, ric_SupportedEventTriggerStyle_Type),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Style_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-SupportedEventTriggerStyle-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report_Item, ric_ReportActionFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-ReportActionFormat-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report_Item, ric_IndicationHeaderFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-IndicationHeaderFormat-Type"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report_Item, ric_IndicationMessageFormat_Type),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_Format_Type,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-IndicationMessageFormat-Type"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANFunctionDefinition_Report_Item, ran_ReportParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		0,
+		&asn_DEF_ran_ReportParameters_List_8,
+		0,
+		{ &asn_OER_memb_ran_ReportParameters_List_constr_8, &asn_PER_memb_ran_ReportParameters_List_constr_8,  memb_ran_ReportParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ran-ReportParameters-List"
+		},
+};
+static const int asn_MAP_RANFunctionDefinition_Report_Item_oms_1[] = { 6 };
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Report_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Report_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-SupportedEventTriggerStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ReportActionFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ric-IndicationMessageFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ran-ReportParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Report_Item_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Report_Item),
+	offsetof(struct RANFunctionDefinition_Report_Item, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Report_Item_tag2el_1,
+	7,	/* Count of tags in the map */
+	asn_MAP_RANFunctionDefinition_Report_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	7,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Report_Item = {
+	"RANFunctionDefinition-Report-Item",
+	"RANFunctionDefinition-Report-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Report_Item_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Report_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Report_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Report_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Report_Item_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Report_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Report_Item_1,
+	7,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Report_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANFunctionDefinition-Report.c b/e2sm/lib/RANFunctionDefinition-Report.c
new file mode 100644
index 0000000..15ec43d
--- /dev/null
+++ b/e2sm/lib/RANFunctionDefinition-Report.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANFunctionDefinition-Report.h"
+
+#include "RANFunctionDefinition-Report-Item.h"
+static int
+memb_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 63)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_ReportStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_ReportStyle_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  1,  63 }	/* (SIZE(1..63)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANFunctionDefinition_Report_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_2 = {
+	sizeof(struct RANFunctionDefinition_Report__ric_ReportStyle_List),
+	offsetof(struct RANFunctionDefinition_Report__ric_ReportStyle_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_2 = {
+	"ric-ReportStyle-List",
+	"ric-ReportStyle-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ric_ReportStyle_List_tags_2,
+	sizeof(asn_DEF_ric_ReportStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_ReportStyle_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ric_ReportStyle_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ric_ReportStyle_List_tags_2)
+		/sizeof(asn_DEF_ric_ReportStyle_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ric_ReportStyle_List_constr_2, &asn_PER_type_ric_ReportStyle_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ric_ReportStyle_List_2,
+	1,	/* Single element */
+	&asn_SPC_ric_ReportStyle_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANFunctionDefinition_Report_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANFunctionDefinition_Report, ric_ReportStyle_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ric_ReportStyle_List_2,
+		0,
+		{ &asn_OER_memb_ric_ReportStyle_List_constr_2, &asn_PER_memb_ric_ReportStyle_List_constr_2,  memb_ric_ReportStyle_List_constraint_1 },
+		0, 0, /* No default value */
+		"ric-ReportStyle-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANFunctionDefinition_Report_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANFunctionDefinition_Report_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ric-ReportStyle-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANFunctionDefinition_Report_specs_1 = {
+	sizeof(struct RANFunctionDefinition_Report),
+	offsetof(struct RANFunctionDefinition_Report, _asn_ctx),
+	asn_MAP_RANFunctionDefinition_Report_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANFunctionDefinition_Report = {
+	"RANFunctionDefinition-Report",
+	"RANFunctionDefinition-Report",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANFunctionDefinition_Report_tags_1,
+	sizeof(asn_DEF_RANFunctionDefinition_Report_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Report_tags_1[0]), /* 1 */
+	asn_DEF_RANFunctionDefinition_Report_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANFunctionDefinition_Report_tags_1)
+		/sizeof(asn_DEF_RANFunctionDefinition_Report_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANFunctionDefinition_Report_1,
+	1,	/* Elements count */
+	&asn_SPC_RANFunctionDefinition_Report_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Definition-Choice-LIST-Item.c b/e2sm/lib/RANParameter-Definition-Choice-LIST-Item.c
new file mode 100644
index 0000000..e009483
--- /dev/null
+++ b/e2sm/lib/RANParameter-Definition-Choice-LIST-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Definition-Choice-LIST-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_RANParameter_Definition_Choice_LIST_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Definition_Choice_LIST_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Definition_Choice_LIST_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANParameter_Definition_Choice_LIST_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_RANParameter_Definition_Choice_LIST_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Definition_Choice_LIST_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Definition_Choice_LIST_Item_specs_1 = {
+	sizeof(struct RANParameter_Definition_Choice_LIST_Item),
+	offsetof(struct RANParameter_Definition_Choice_LIST_Item, _asn_ctx),
+	asn_MAP_RANParameter_Definition_Choice_LIST_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANParameter_Definition_Choice_LIST_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Definition_Choice_LIST_Item = {
+	"RANParameter-Definition-Choice-LIST-Item",
+	"RANParameter-Definition-Choice-LIST-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1,
+	sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Definition_Choice_LIST_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANParameter_Definition_Choice_LIST_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Definition-Choice-LIST.c b/e2sm/lib/RANParameter-Definition-Choice-LIST.c
new file mode 100644
index 0000000..7852c16
--- /dev/null
+++ b/e2sm/lib/RANParameter-Definition-Choice-LIST.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Definition-Choice-LIST.h"
+
+#include "RANParameter-Definition-Choice-LIST-Item.h"
+static int
+memb_ranParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranParameter_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranParameter_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranParameter_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranParameter_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranParameter_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANParameter_Definition_Choice_LIST_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranParameter_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranParameter_List_specs_2 = {
+	sizeof(struct RANParameter_Definition_Choice_LIST__ranParameter_List),
+	offsetof(struct RANParameter_Definition_Choice_LIST__ranParameter_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranParameter_List_2 = {
+	"ranParameter-List",
+	"ranParameter-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranParameter_List_tags_2,
+	sizeof(asn_DEF_ranParameter_List_tags_2)
+		/sizeof(asn_DEF_ranParameter_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranParameter_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranParameter_List_tags_2)
+		/sizeof(asn_DEF_ranParameter_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranParameter_List_constr_2, &asn_PER_type_ranParameter_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranParameter_List_2,
+	1,	/* Single element */
+	&asn_SPC_ranParameter_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANParameter_Definition_Choice_LIST_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Definition_Choice_LIST, ranParameter_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ranParameter_List_2,
+		0,
+		{ &asn_OER_memb_ranParameter_List_constr_2, &asn_PER_memb_ranParameter_List_constr_2,  memb_ranParameter_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranParameter-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Definition_Choice_LIST_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Definition_Choice_LIST_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Definition_Choice_LIST_specs_1 = {
+	sizeof(struct RANParameter_Definition_Choice_LIST),
+	offsetof(struct RANParameter_Definition_Choice_LIST, _asn_ctx),
+	asn_MAP_RANParameter_Definition_Choice_LIST_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Definition_Choice_LIST = {
+	"RANParameter-Definition-Choice-LIST",
+	"RANParameter-Definition-Choice-LIST",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Definition_Choice_LIST_tags_1,
+	sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Definition_Choice_LIST_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_LIST_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Definition_Choice_LIST_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_Definition_Choice_LIST_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Definition-Choice-STRUCTURE-Item.c b/e2sm/lib/RANParameter-Definition-Choice-STRUCTURE-Item.c
new file mode 100644
index 0000000..5af88e5
--- /dev/null
+++ b/e2sm/lib/RANParameter-Definition-Choice-STRUCTURE-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Definition-Choice-STRUCTURE-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_RANParameter_Definition_Choice_STRUCTURE_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Definition_Choice_STRUCTURE_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Definition_Choice_STRUCTURE_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANParameter_Definition_Choice_STRUCTURE_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_RANParameter_Definition_Choice_STRUCTURE_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Definition_Choice_STRUCTURE_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Definition_Choice_STRUCTURE_Item_specs_1 = {
+	sizeof(struct RANParameter_Definition_Choice_STRUCTURE_Item),
+	offsetof(struct RANParameter_Definition_Choice_STRUCTURE_Item, _asn_ctx),
+	asn_MAP_RANParameter_Definition_Choice_STRUCTURE_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANParameter_Definition_Choice_STRUCTURE_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item = {
+	"RANParameter-Definition-Choice-STRUCTURE-Item",
+	"RANParameter-Definition-Choice-STRUCTURE-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1,
+	sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Definition_Choice_STRUCTURE_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_RANParameter_Definition_Choice_STRUCTURE_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Definition-Choice-STRUCTURE.c b/e2sm/lib/RANParameter-Definition-Choice-STRUCTURE.c
new file mode 100644
index 0000000..c6c0679
--- /dev/null
+++ b/e2sm/lib/RANParameter-Definition-Choice-STRUCTURE.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Definition-Choice-STRUCTURE.h"
+
+#include "RANParameter-Definition-Choice-STRUCTURE-Item.h"
+static int
+memb_ranParameter_STRUCTURE_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranParameter_STRUCTURE_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranParameter_STRUCTURE_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranParameter_STRUCTURE_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranParameter_STRUCTURE_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranParameter_STRUCTURE_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANParameter_Definition_Choice_STRUCTURE_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranParameter_STRUCTURE_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranParameter_STRUCTURE_specs_2 = {
+	sizeof(struct RANParameter_Definition_Choice_STRUCTURE__ranParameter_STRUCTURE),
+	offsetof(struct RANParameter_Definition_Choice_STRUCTURE__ranParameter_STRUCTURE, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranParameter_STRUCTURE_2 = {
+	"ranParameter-STRUCTURE",
+	"ranParameter-STRUCTURE",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranParameter_STRUCTURE_tags_2,
+	sizeof(asn_DEF_ranParameter_STRUCTURE_tags_2)
+		/sizeof(asn_DEF_ranParameter_STRUCTURE_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranParameter_STRUCTURE_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranParameter_STRUCTURE_tags_2)
+		/sizeof(asn_DEF_ranParameter_STRUCTURE_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranParameter_STRUCTURE_constr_2, &asn_PER_type_ranParameter_STRUCTURE_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_ranParameter_STRUCTURE_2,
+	1,	/* Single element */
+	&asn_SPC_ranParameter_STRUCTURE_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANParameter_Definition_Choice_STRUCTURE_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Definition_Choice_STRUCTURE, ranParameter_STRUCTURE),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_ranParameter_STRUCTURE_2,
+		0,
+		{ &asn_OER_memb_ranParameter_STRUCTURE_constr_2, &asn_PER_memb_ranParameter_STRUCTURE_constr_2,  memb_ranParameter_STRUCTURE_constraint_1 },
+		0, 0, /* No default value */
+		"ranParameter-STRUCTURE"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Definition_Choice_STRUCTURE_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-STRUCTURE */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Definition_Choice_STRUCTURE_specs_1 = {
+	sizeof(struct RANParameter_Definition_Choice_STRUCTURE),
+	offsetof(struct RANParameter_Definition_Choice_STRUCTURE, _asn_ctx),
+	asn_MAP_RANParameter_Definition_Choice_STRUCTURE_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Definition_Choice_STRUCTURE = {
+	"RANParameter-Definition-Choice-STRUCTURE",
+	"RANParameter-Definition-Choice-STRUCTURE",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1,
+	sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_Choice_STRUCTURE_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Definition_Choice_STRUCTURE_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_Definition_Choice_STRUCTURE_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Definition-Choice.c b/e2sm/lib/RANParameter-Definition-Choice.c
new file mode 100644
index 0000000..4dd0a8c
--- /dev/null
+++ b/e2sm/lib/RANParameter-Definition-Choice.c
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Definition-Choice.h"
+
+#include "RANParameter-Definition-Choice-LIST.h"
+#include "RANParameter-Definition-Choice-STRUCTURE.h"
+static asn_oer_constraints_t asn_OER_type_RANParameter_Definition_Choice_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RANParameter_Definition_Choice_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RANParameter_Definition_Choice_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Definition_Choice, choice.choiceLIST),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition_Choice_LIST,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"choiceLIST"
+		},
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Definition_Choice, choice.choiceSTRUCTURE),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition_Choice_STRUCTURE,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"choiceSTRUCTURE"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Definition_Choice_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* choiceLIST */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* choiceSTRUCTURE */
+};
+asn_CHOICE_specifics_t asn_SPC_RANParameter_Definition_Choice_specs_1 = {
+	sizeof(struct RANParameter_Definition_Choice),
+	offsetof(struct RANParameter_Definition_Choice, _asn_ctx),
+	offsetof(struct RANParameter_Definition_Choice, present),
+	sizeof(((struct RANParameter_Definition_Choice *)0)->present),
+	asn_MAP_RANParameter_Definition_Choice_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Definition_Choice = {
+	"RANParameter-Definition-Choice",
+	"RANParameter-Definition-Choice",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_RANParameter_Definition_Choice_constr_1, &asn_PER_type_RANParameter_Definition_Choice_constr_1, CHOICE_constraint },
+	asn_MBR_RANParameter_Definition_Choice_1,
+	2,	/* Elements count */
+	&asn_SPC_RANParameter_Definition_Choice_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Definition.c b/e2sm/lib/RANParameter-Definition.c
new file mode 100644
index 0000000..7298790
--- /dev/null
+++ b/e2sm/lib/RANParameter-Definition.c
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Definition.h"
+
+#include "RANParameter-Definition-Choice.h"
+asn_TYPE_member_t asn_MBR_RANParameter_Definition_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Definition, ranParameter_Definition_Choice),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition_Choice,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition-Choice"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Definition_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Definition_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-Definition-Choice */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Definition_specs_1 = {
+	sizeof(struct RANParameter_Definition),
+	offsetof(struct RANParameter_Definition, _asn_ctx),
+	asn_MAP_RANParameter_Definition_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Definition = {
+	"RANParameter-Definition",
+	"RANParameter-Definition",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Definition_tags_1,
+	sizeof(asn_DEF_RANParameter_Definition_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Definition_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Definition_tags_1)
+		/sizeof(asn_DEF_RANParameter_Definition_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Definition_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_Definition_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-ELEMENT.c b/e2sm/lib/RANParameter-ELEMENT.c
deleted file mode 100644
index 63edc16..0000000
--- a/e2sm/lib/RANParameter-ELEMENT.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RANParameter-ELEMENT.h"
-
-asn_TYPE_member_t asn_MBR_RANParameter_ELEMENT_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_ELEMENT, keyFlag),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_BOOLEAN,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"keyFlag"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_ELEMENT, ranParameter_Value),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_RANParameter_Value,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ranParameter-Value"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_RANParameter_ELEMENT_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RANParameter_ELEMENT_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* keyFlag */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-Value */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RANParameter_ELEMENT_specs_1 = {
-	sizeof(struct RANParameter_ELEMENT),
-	offsetof(struct RANParameter_ELEMENT, _asn_ctx),
-	asn_MAP_RANParameter_ELEMENT_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RANParameter_ELEMENT = {
-	"RANParameter-ELEMENT",
-	"RANParameter-ELEMENT",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RANParameter_ELEMENT_tags_1,
-	sizeof(asn_DEF_RANParameter_ELEMENT_tags_1)
-		/sizeof(asn_DEF_RANParameter_ELEMENT_tags_1[0]), /* 1 */
-	asn_DEF_RANParameter_ELEMENT_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RANParameter_ELEMENT_tags_1)
-		/sizeof(asn_DEF_RANParameter_ELEMENT_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RANParameter_ELEMENT_1,
-	2,	/* Elements count */
-	&asn_SPC_RANParameter_ELEMENT_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RANParameter-ID.c b/e2sm/lib/RANParameter-ID.c
index 4965d59..684cc0e 100644
--- a/e2sm/lib/RANParameter-ID.c
+++ b/e2sm/lib/RANParameter-ID.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -19,8 +19,11 @@
 	}
 	
 	
-	/* Constraint check succeeded */
-	return 0;
+	if(1 /* No applicable constraints whatsoever */) {
+		/* Nothing is here. See below */
+	}
+	
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
 }
 
 /*
@@ -28,18 +31,13 @@
  * so here we adjust the DEF accordingly.
  */
 static asn_oer_constraints_t asn_OER_type_RANParameter_ID_constr_1 CC_NOTUSED = {
-	{ 4, 1 }	/* (0..4294967295) */,
+	{ 0, 0 },
 	-1};
 asn_per_constraints_t asn_PER_type_RANParameter_ID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 32, -1,  0,  4294967295 }	/* (0..4294967295) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
-const asn_INTEGER_specifics_t asn_SPC_RANParameter_ID_specs_1 = {
-	0,	0,	0,	0,	0,
-	0,	/* Native long size */
-	1	/* Unsigned representation */
-};
 static const ber_tlv_tag_t asn_DEF_RANParameter_ID_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
 };
@@ -55,6 +53,6 @@
 		/sizeof(asn_DEF_RANParameter_ID_tags_1[0]), /* 1 */
 	{ &asn_OER_type_RANParameter_ID_constr_1, &asn_PER_type_RANParameter_ID_constr_1, RANParameter_ID_constraint },
 	0, 0,	/* No members */
-	&asn_SPC_RANParameter_ID_specs_1	/* Additional specs */
+	0	/* No specifics */
 };
 
diff --git a/e2sm/lib/RANParameter-Item.c b/e2sm/lib/RANParameter-Item.c
deleted file mode 100644
index 0da6978..0000000
--- a/e2sm/lib/RANParameter-Item.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RANParameter-Item.h"
-
-#include "RANParameter-ValueType.h"
-asn_TYPE_member_t asn_MBR_RANParameter_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Item, ranParameterItem_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANParameter_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ranParameterItem-ID"
-		},
-	{ ATF_POINTER, 0, offsetof(struct RANParameter_Item, ranParameterItem_valueType),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		+1,	/* EXPLICIT tag at current level */
-		&asn_DEF_RANParameter_ValueType,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ranParameterItem-valueType"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_RANParameter_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameterItem-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameterItem-valueType */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Item_specs_1 = {
-	sizeof(struct RANParameter_Item),
-	offsetof(struct RANParameter_Item, _asn_ctx),
-	asn_MAP_RANParameter_Item_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RANParameter_Item = {
-	"RANParameter-Item",
-	"RANParameter-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RANParameter_Item_tags_1,
-	sizeof(asn_DEF_RANParameter_Item_tags_1)
-		/sizeof(asn_DEF_RANParameter_Item_tags_1[0]), /* 1 */
-	asn_DEF_RANParameter_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RANParameter_Item_tags_1)
-		/sizeof(asn_DEF_RANParameter_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RANParameter_Item_1,
-	2,	/* Elements count */
-	&asn_SPC_RANParameter_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RANParameter-LIST.c b/e2sm/lib/RANParameter-LIST.c
index 501db25..22fa28f 100644
--- a/e2sm/lib/RANParameter-LIST.c
+++ b/e2sm/lib/RANParameter-LIST.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -9,7 +9,7 @@
 
 #include "RANParameter-STRUCTURE.h"
 static int
-memb_list_of_ranParameter_Structures_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+memb_list_of_ranParameter_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	size_t size;
 	
@@ -23,7 +23,7 @@
 	/* Determine the number of elements */
 	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
 	
-	if((size >= 1 && size <= 4294967295)) {
+	if((size >= 1 && size <= 65535)) {
 		/* Perform validation of the inner elements */
 		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
 	} else {
@@ -34,23 +34,23 @@
 	}
 }
 
-static asn_oer_constraints_t asn_OER_type_list_of_ranParameter_Structures_constr_2 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_list_of_ranParameter_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
-static asn_per_constraints_t asn_PER_type_list_of_ranParameter_Structures_constr_2 CC_NOTUSED = {
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_list_of_ranParameter_constr_2 CC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
 	0, 0	/* No PER value map */
 };
-static asn_oer_constraints_t asn_OER_memb_list_of_ranParameter_Structures_constr_2 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_memb_list_of_ranParameter_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
-static asn_per_constraints_t asn_PER_memb_list_of_ranParameter_Structures_constr_2 CC_NOTUSED = {
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_list_of_ranParameter_constr_2 CC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
 	0, 0	/* No PER value map */
 };
-static asn_TYPE_member_t asn_MBR_list_of_ranParameter_Structures_2[] = {
+static asn_TYPE_member_t asn_MBR_list_of_ranParameter_2[] = {
 	{ ATF_POINTER, 0, 0,
 		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		0,
@@ -61,48 +61,48 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_list_of_ranParameter_Structures_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_list_of_ranParameter_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_list_of_ranParameter_Structures_specs_2 = {
-	sizeof(struct RANParameter_LIST__list_of_ranParameter_Structures),
-	offsetof(struct RANParameter_LIST__list_of_ranParameter_Structures, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_list_of_ranParameter_specs_2 = {
+	sizeof(struct RANParameter_LIST__list_of_ranParameter),
+	offsetof(struct RANParameter_LIST__list_of_ranParameter, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_list_of_ranParameter_Structures_2 = {
-	"list-of-ranParameter-Structures",
-	"list-of-ranParameter-Structures",
+asn_TYPE_descriptor_t asn_DEF_list_of_ranParameter_2 = {
+	"list-of-ranParameter",
+	"list-of-ranParameter",
 	&asn_OP_SEQUENCE_OF,
-	asn_DEF_list_of_ranParameter_Structures_tags_2,
-	sizeof(asn_DEF_list_of_ranParameter_Structures_tags_2)
-		/sizeof(asn_DEF_list_of_ranParameter_Structures_tags_2[0]) - 1, /* 1 */
-	asn_DEF_list_of_ranParameter_Structures_tags_2,	/* Same as above */
-	sizeof(asn_DEF_list_of_ranParameter_Structures_tags_2)
-		/sizeof(asn_DEF_list_of_ranParameter_Structures_tags_2[0]), /* 2 */
-	{ &asn_OER_type_list_of_ranParameter_Structures_constr_2, &asn_PER_type_list_of_ranParameter_Structures_constr_2, SEQUENCE_OF_constraint },
-	asn_MBR_list_of_ranParameter_Structures_2,
+	asn_DEF_list_of_ranParameter_tags_2,
+	sizeof(asn_DEF_list_of_ranParameter_tags_2)
+		/sizeof(asn_DEF_list_of_ranParameter_tags_2[0]) - 1, /* 1 */
+	asn_DEF_list_of_ranParameter_tags_2,	/* Same as above */
+	sizeof(asn_DEF_list_of_ranParameter_tags_2)
+		/sizeof(asn_DEF_list_of_ranParameter_tags_2[0]), /* 2 */
+	{ &asn_OER_type_list_of_ranParameter_constr_2, &asn_PER_type_list_of_ranParameter_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_list_of_ranParameter_2,
 	1,	/* Single element */
-	&asn_SPC_list_of_ranParameter_Structures_specs_2	/* Additional specs */
+	&asn_SPC_list_of_ranParameter_specs_2	/* Additional specs */
 };
 
 asn_TYPE_member_t asn_MBR_RANParameter_LIST_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_LIST, list_of_ranParameter_Structures),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_LIST, list_of_ranParameter),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_list_of_ranParameter_Structures_2,
+		&asn_DEF_list_of_ranParameter_2,
 		0,
-		{ &asn_OER_memb_list_of_ranParameter_Structures_constr_2, &asn_PER_memb_list_of_ranParameter_Structures_constr_2,  memb_list_of_ranParameter_Structures_constraint_1 },
+		{ &asn_OER_memb_list_of_ranParameter_constr_2, &asn_PER_memb_list_of_ranParameter_constr_2,  memb_list_of_ranParameter_constraint_1 },
 		0, 0, /* No default value */
-		"list-of-ranParameter-Structures"
+		"list-of-ranParameter"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANParameter_LIST_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANParameter_LIST_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* list-of-ranParameter-Structures */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* list-of-ranParameter */
 };
 asn_SEQUENCE_specifics_t asn_SPC_RANParameter_LIST_specs_1 = {
 	sizeof(struct RANParameter_LIST),
diff --git a/e2sm/lib/RANParameter-Name.c b/e2sm/lib/RANParameter-Name.c
index fdd2f4c..30b6e4f 100644
--- a/e2sm/lib/RANParameter-Name.c
+++ b/e2sm/lib/RANParameter-Name.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/RANParameter-STRUCTURE-Item.c b/e2sm/lib/RANParameter-STRUCTURE-Item.c
new file mode 100644
index 0000000..e630ad4
--- /dev/null
+++ b/e2sm/lib/RANParameter-STRUCTURE-Item.c
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-STRUCTURE-Item.h"
+
+#include "RANParameter-ValueType.h"
+asn_TYPE_member_t asn_MBR_RANParameter_STRUCTURE_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_STRUCTURE_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_STRUCTURE_Item, ranParameter_valueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-valueType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_STRUCTURE_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_STRUCTURE_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-valueType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_STRUCTURE_Item_specs_1 = {
+	sizeof(struct RANParameter_STRUCTURE_Item),
+	offsetof(struct RANParameter_STRUCTURE_Item, _asn_ctx),
+	asn_MAP_RANParameter_STRUCTURE_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_STRUCTURE_Item = {
+	"RANParameter-STRUCTURE-Item",
+	"RANParameter-STRUCTURE-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_STRUCTURE_Item_tags_1,
+	sizeof(asn_DEF_RANParameter_STRUCTURE_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_STRUCTURE_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_STRUCTURE_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_STRUCTURE_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_STRUCTURE_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_STRUCTURE_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_RANParameter_STRUCTURE_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-STRUCTURE.c b/e2sm/lib/RANParameter-STRUCTURE.c
index 89aa285..03a0695 100644
--- a/e2sm/lib/RANParameter-STRUCTURE.c
+++ b/e2sm/lib/RANParameter-STRUCTURE.c
@@ -1,13 +1,13 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "RANParameter-STRUCTURE.h"
 
-#include "RANParameter-Item.h"
+#include "RANParameter-STRUCTURE-Item.h"
 static int
 memb_sequence_of_ranParameters_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
@@ -23,7 +23,7 @@
 	/* Determine the number of elements */
 	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
 	
-	if((size >= 1 && size <= 4294967295)) {
+	if((size >= 1 && size <= 65535)) {
 		/* Perform validation of the inner elements */
 		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
 	} else {
@@ -36,25 +36,25 @@
 
 static asn_oer_constraints_t asn_OER_type_sequence_of_ranParameters_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
+	-1	/* (SIZE(1..65535)) */};
 static asn_per_constraints_t asn_PER_type_sequence_of_ranParameters_constr_2 CC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
 	0, 0	/* No PER value map */
 };
 static asn_oer_constraints_t asn_OER_memb_sequence_of_ranParameters_constr_2 CC_NOTUSED = {
 	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
+	-1	/* (SIZE(1..65535)) */};
 static asn_per_constraints_t asn_PER_memb_sequence_of_ranParameters_constr_2 CC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
 	0, 0	/* No PER value map */
 };
 static asn_TYPE_member_t asn_MBR_sequence_of_ranParameters_2[] = {
 	{ ATF_POINTER, 0, 0,
 		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		0,
-		&asn_DEF_RANParameter_Item,
+		&asn_DEF_RANParameter_STRUCTURE_Item,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
@@ -88,7 +88,7 @@
 };
 
 asn_TYPE_member_t asn_MBR_RANParameter_STRUCTURE_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_STRUCTURE, sequence_of_ranParameters),
+	{ ATF_POINTER, 1, offsetof(struct RANParameter_STRUCTURE, sequence_of_ranParameters),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
 		&asn_DEF_sequence_of_ranParameters_2,
@@ -98,6 +98,7 @@
 		"sequence-of-ranParameters"
 		},
 };
+static const int asn_MAP_RANParameter_STRUCTURE_oms_1[] = { 0 };
 static const ber_tlv_tag_t asn_DEF_RANParameter_STRUCTURE_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
@@ -109,7 +110,8 @@
 	offsetof(struct RANParameter_STRUCTURE, _asn_ctx),
 	asn_MAP_RANParameter_STRUCTURE_tag2el_1,
 	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
+	asn_MAP_RANParameter_STRUCTURE_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
 	1,	/* First extension addition */
 };
 asn_TYPE_descriptor_t asn_DEF_RANParameter_STRUCTURE = {
diff --git a/e2sm/lib/RANParameter-Testing-Item-Choice-ElementFalse.c b/e2sm/lib/RANParameter-Testing-Item-Choice-ElementFalse.c
new file mode 100644
index 0000000..e50e5db
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-Item-Choice-ElementFalse.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-Item-Choice-ElementFalse.h"
+
+#include "RANParameter-Value.h"
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_Item_Choice_ElementFalse_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Testing_Item_Choice_ElementFalse, ranParameter_TestCondition),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_TestingCondition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-TestCondition"
+		},
+	{ ATF_POINTER, 2, offsetof(struct RANParameter_Testing_Item_Choice_ElementFalse, ranParameter_Value),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_Value,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Value"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANParameter_Testing_Item_Choice_ElementFalse, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_RANParameter_Testing_Item_Choice_ElementFalse_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Testing_Item_Choice_ElementFalse_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-TestCondition */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Value */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Testing_Item_Choice_ElementFalse_specs_1 = {
+	sizeof(struct RANParameter_Testing_Item_Choice_ElementFalse),
+	offsetof(struct RANParameter_Testing_Item_Choice_ElementFalse, _asn_ctx),
+	asn_MAP_RANParameter_Testing_Item_Choice_ElementFalse_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_RANParameter_Testing_Item_Choice_ElementFalse_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	3,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse = {
+	"RANParameter-Testing-Item-Choice-ElementFalse",
+	"RANParameter-Testing-Item-Choice-ElementFalse",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Testing_Item_Choice_ElementFalse_1,
+	3,	/* Elements count */
+	&asn_SPC_RANParameter_Testing_Item_Choice_ElementFalse_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing-Item-Choice-ElementTrue.c b/e2sm/lib/RANParameter-Testing-Item-Choice-ElementTrue.c
new file mode 100644
index 0000000..03b10ff
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-Item-Choice-ElementTrue.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-Item-Choice-ElementTrue.h"
+
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_Item_Choice_ElementTrue_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Testing_Item_Choice_ElementTrue, ranParameter_value),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_Value,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Testing_Item_Choice_ElementTrue_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-value */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Testing_Item_Choice_ElementTrue_specs_1 = {
+	sizeof(struct RANParameter_Testing_Item_Choice_ElementTrue),
+	offsetof(struct RANParameter_Testing_Item_Choice_ElementTrue, _asn_ctx),
+	asn_MAP_RANParameter_Testing_Item_Choice_ElementTrue_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue = {
+	"RANParameter-Testing-Item-Choice-ElementTrue",
+	"RANParameter-Testing-Item-Choice-ElementTrue",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Testing_Item_Choice_ElementTrue_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_Testing_Item_Choice_ElementTrue_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing-Item-Choice-List.c b/e2sm/lib/RANParameter-Testing-Item-Choice-List.c
new file mode 100644
index 0000000..ea685da
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-Item-Choice-List.c
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-Item-Choice-List.h"
+
+#include "RANParameter-Testing-LIST.h"
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_Item_Choice_List_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Testing_Item_Choice_List, ranParameter_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing_LIST,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Testing_Item_Choice_List_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Testing_Item_Choice_List_specs_1 = {
+	sizeof(struct RANParameter_Testing_Item_Choice_List),
+	offsetof(struct RANParameter_Testing_Item_Choice_List, _asn_ctx),
+	asn_MAP_RANParameter_Testing_Item_Choice_List_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_Item_Choice_List = {
+	"RANParameter-Testing-Item-Choice-List",
+	"RANParameter-Testing-Item-Choice-List",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_List_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Testing_Item_Choice_List_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_Testing_Item_Choice_List_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing-Item-Choice-Structure.c b/e2sm/lib/RANParameter-Testing-Item-Choice-Structure.c
new file mode 100644
index 0000000..ae75fd4
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-Item-Choice-Structure.c
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-Item-Choice-Structure.h"
+
+#include "RANParameter-Testing-STRUCTURE.h"
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_Item_Choice_Structure_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Testing_Item_Choice_Structure, ranParameter_Structure),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing_STRUCTURE,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Structure"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Testing_Item_Choice_Structure_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-Structure */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Testing_Item_Choice_Structure_specs_1 = {
+	sizeof(struct RANParameter_Testing_Item_Choice_Structure),
+	offsetof(struct RANParameter_Testing_Item_Choice_Structure, _asn_ctx),
+	asn_MAP_RANParameter_Testing_Item_Choice_Structure_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_Item_Choice_Structure = {
+	"RANParameter-Testing-Item-Choice-Structure",
+	"RANParameter-Testing-Item-Choice-Structure",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_Choice_Structure_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Testing_Item_Choice_Structure_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_Testing_Item_Choice_Structure_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing-Item.c b/e2sm/lib/RANParameter-Testing-Item.c
new file mode 100644
index 0000000..d81b410
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-Item.c
@@ -0,0 +1,141 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-Item.h"
+
+#include "RANParameter-Testing-Item-Choice-List.h"
+#include "RANParameter-Testing-Item-Choice-Structure.h"
+#include "RANParameter-Testing-Item-Choice-ElementTrue.h"
+#include "RANParameter-Testing-Item-Choice-ElementFalse.h"
+static asn_oer_constraints_t asn_OER_type_ranParameter_Type_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ranParameter_Type_constr_3 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranParameter_Type_3[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Testing_Item__ranParameter_Type, choice.ranP_Choice_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing_Item_Choice_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-List"
+		},
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Testing_Item__ranParameter_Type, choice.ranP_Choice_Structure),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing_Item_Choice_Structure,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-Structure"
+		},
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Testing_Item__ranParameter_Type, choice.ranP_Choice_ElementTrue),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing_Item_Choice_ElementTrue,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-ElementTrue"
+		},
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_Testing_Item__ranParameter_Type, choice.ranP_Choice_ElementFalse),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing_Item_Choice_ElementFalse,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-ElementFalse"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ranParameter_Type_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranP-Choice-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranP-Choice-Structure */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranP-Choice-ElementTrue */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranP-Choice-ElementFalse */
+};
+static asn_CHOICE_specifics_t asn_SPC_ranParameter_Type_specs_3 = {
+	sizeof(struct RANParameter_Testing_Item__ranParameter_Type),
+	offsetof(struct RANParameter_Testing_Item__ranParameter_Type, _asn_ctx),
+	offsetof(struct RANParameter_Testing_Item__ranParameter_Type, present),
+	sizeof(((struct RANParameter_Testing_Item__ranParameter_Type *)0)->present),
+	asn_MAP_ranParameter_Type_tag2el_3,
+	4,	/* Count of tags in the map */
+	0, 0,
+	4	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranParameter_Type_3 = {
+	"ranParameter-Type",
+	"ranParameter-Type",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ranParameter_Type_constr_3, &asn_PER_type_ranParameter_Type_constr_3, CHOICE_constraint },
+	asn_MBR_ranParameter_Type_3,
+	4,	/* Elements count */
+	&asn_SPC_ranParameter_Type_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Testing_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Testing_Item, ranParameter_Type),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_ranParameter_Type_3,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Type"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Testing_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_Testing_Item_specs_1 = {
+	sizeof(struct RANParameter_Testing_Item),
+	offsetof(struct RANParameter_Testing_Item, _asn_ctx),
+	asn_MAP_RANParameter_Testing_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_Item = {
+	"RANParameter-Testing-Item",
+	"RANParameter-Testing-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_Testing_Item_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_Item_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_Testing_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_RANParameter_Testing_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing-LIST.c b/e2sm/lib/RANParameter-Testing-LIST.c
new file mode 100644
index 0000000..c4e4abc
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-LIST.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-LIST.h"
+
+#include "RANParameter-Testing-Item.h"
+static asn_oer_constraints_t asn_OER_type_RANParameter_Testing_LIST_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_RANParameter_Testing_LIST_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_LIST_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANParameter_Testing_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_LIST_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_RANParameter_Testing_LIST_specs_1 = {
+	sizeof(struct RANParameter_Testing_LIST),
+	offsetof(struct RANParameter_Testing_LIST, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_LIST = {
+	"RANParameter-Testing-LIST",
+	"RANParameter-Testing-LIST",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_RANParameter_Testing_LIST_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_LIST_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_LIST_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_LIST_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_LIST_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_LIST_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RANParameter_Testing_LIST_constr_1, &asn_PER_type_RANParameter_Testing_LIST_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_RANParameter_Testing_LIST_1,
+	1,	/* Single element */
+	&asn_SPC_RANParameter_Testing_LIST_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing-STRUCTURE.c b/e2sm/lib/RANParameter-Testing-STRUCTURE.c
new file mode 100644
index 0000000..2080910
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing-STRUCTURE.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing-STRUCTURE.h"
+
+#include "RANParameter-Testing-Item.h"
+static asn_oer_constraints_t asn_OER_type_RANParameter_Testing_STRUCTURE_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_RANParameter_Testing_STRUCTURE_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_STRUCTURE_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANParameter_Testing_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_STRUCTURE_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_RANParameter_Testing_STRUCTURE_specs_1 = {
+	sizeof(struct RANParameter_Testing_STRUCTURE),
+	offsetof(struct RANParameter_Testing_STRUCTURE, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing_STRUCTURE = {
+	"RANParameter-Testing-STRUCTURE",
+	"RANParameter-Testing-STRUCTURE",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_RANParameter_Testing_STRUCTURE_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_STRUCTURE_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_STRUCTURE_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_STRUCTURE_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_STRUCTURE_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_STRUCTURE_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RANParameter_Testing_STRUCTURE_constr_1, &asn_PER_type_RANParameter_Testing_STRUCTURE_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_RANParameter_Testing_STRUCTURE_1,
+	1,	/* Single element */
+	&asn_SPC_RANParameter_Testing_STRUCTURE_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Testing.c b/e2sm/lib/RANParameter-Testing.c
new file mode 100644
index 0000000..6aa8873
--- /dev/null
+++ b/e2sm/lib/RANParameter-Testing.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-Testing.h"
+
+#include "RANParameter-Testing-Item.h"
+static asn_oer_constraints_t asn_OER_type_RANParameter_Testing_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..255)) */};
+asn_per_constraints_t asn_PER_type_RANParameter_Testing_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 8,  8,  1,  255 }	/* (SIZE(1..255)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RANParameter_Testing_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RANParameter_Testing_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_Testing_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_RANParameter_Testing_specs_1 = {
+	sizeof(struct RANParameter_Testing),
+	offsetof(struct RANParameter_Testing, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_Testing = {
+	"RANParameter-Testing",
+	"RANParameter-Testing",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_RANParameter_Testing_tags_1,
+	sizeof(asn_DEF_RANParameter_Testing_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_Testing_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_Testing_tags_1)
+		/sizeof(asn_DEF_RANParameter_Testing_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RANParameter_Testing_constr_1, &asn_PER_type_RANParameter_Testing_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_RANParameter_Testing_1,
+	1,	/* Single element */
+	&asn_SPC_RANParameter_Testing_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-TestingCondition.c b/e2sm/lib/RANParameter-TestingCondition.c
new file mode 100644
index 0000000..35db21f
--- /dev/null
+++ b/e2sm/lib/RANParameter-TestingCondition.c
@@ -0,0 +1,179 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-TestingCondition.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ranP_Choice_comparison_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ranP_Choice_comparison_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  5 }	/* (0..5,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ranP_Choice_presence_constr_10 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_ranP_Choice_presence_constr_10 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_RANParameter_TestingCondition_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RANParameter_TestingCondition_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ranP_Choice_comparison_value2enum_2[] = {
+	{ 0,	5,	"equal" },
+	{ 1,	10,	"difference" },
+	{ 2,	11,	"greaterthan" },
+	{ 3,	8,	"lessthan" },
+	{ 4,	8,	"contains" },
+	{ 5,	11,	"starts-with" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_ranP_Choice_comparison_enum2value_2[] = {
+	4,	/* contains(4) */
+	1,	/* difference(1) */
+	0,	/* equal(0) */
+	2,	/* greaterthan(2) */
+	3,	/* lessthan(3) */
+	5	/* starts-with(5) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ranP_Choice_comparison_specs_2 = {
+	asn_MAP_ranP_Choice_comparison_value2enum_2,	/* "tag" => N; sorted by tag */
+	asn_MAP_ranP_Choice_comparison_enum2value_2,	/* N => "tag"; sorted by N */
+	6,	/* Number of elements in the maps */
+	7,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_ranP_Choice_comparison_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_Choice_comparison_2 = {
+	"ranP-Choice-comparison",
+	"ranP-Choice-comparison",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_ranP_Choice_comparison_tags_2,
+	sizeof(asn_DEF_ranP_Choice_comparison_tags_2)
+		/sizeof(asn_DEF_ranP_Choice_comparison_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ranP_Choice_comparison_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ranP_Choice_comparison_tags_2)
+		/sizeof(asn_DEF_ranP_Choice_comparison_tags_2[0]), /* 2 */
+	{ &asn_OER_type_ranP_Choice_comparison_constr_2, &asn_PER_type_ranP_Choice_comparison_constr_2, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_ranP_Choice_comparison_specs_2	/* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ranP_Choice_presence_value2enum_10[] = {
+	{ 0,	7,	"present" },
+	{ 1,	10,	"configured" },
+	{ 2,	8,	"rollover" },
+	{ 3,	8,	"non-zero" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_ranP_Choice_presence_enum2value_10[] = {
+	1,	/* configured(1) */
+	3,	/* non-zero(3) */
+	0,	/* present(0) */
+	2	/* rollover(2) */
+	/* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ranP_Choice_presence_specs_10 = {
+	asn_MAP_ranP_Choice_presence_value2enum_10,	/* "tag" => N; sorted by tag */
+	asn_MAP_ranP_Choice_presence_enum2value_10,	/* N => "tag"; sorted by N */
+	4,	/* Number of elements in the maps */
+	5,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_ranP_Choice_presence_tags_10[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranP_Choice_presence_10 = {
+	"ranP-Choice-presence",
+	"ranP-Choice-presence",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_ranP_Choice_presence_tags_10,
+	sizeof(asn_DEF_ranP_Choice_presence_tags_10)
+		/sizeof(asn_DEF_ranP_Choice_presence_tags_10[0]) - 1, /* 1 */
+	asn_DEF_ranP_Choice_presence_tags_10,	/* Same as above */
+	sizeof(asn_DEF_ranP_Choice_presence_tags_10)
+		/sizeof(asn_DEF_ranP_Choice_presence_tags_10[0]), /* 2 */
+	{ &asn_OER_type_ranP_Choice_presence_constr_10, &asn_PER_type_ranP_Choice_presence_constr_10, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_ranP_Choice_presence_specs_10	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RANParameter_TestingCondition_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_TestingCondition, choice.ranP_Choice_comparison),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ranP_Choice_comparison_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-comparison"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_TestingCondition, choice.ranP_Choice_presence),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ranP_Choice_presence_10,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-presence"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_TestingCondition_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranP-Choice-comparison */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranP-Choice-presence */
+};
+asn_CHOICE_specifics_t asn_SPC_RANParameter_TestingCondition_specs_1 = {
+	sizeof(struct RANParameter_TestingCondition),
+	offsetof(struct RANParameter_TestingCondition, _asn_ctx),
+	offsetof(struct RANParameter_TestingCondition, present),
+	sizeof(((struct RANParameter_TestingCondition *)0)->present),
+	asn_MAP_RANParameter_TestingCondition_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_TestingCondition = {
+	"RANParameter-TestingCondition",
+	"RANParameter-TestingCondition",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_RANParameter_TestingCondition_constr_1, &asn_PER_type_RANParameter_TestingCondition_constr_1, CHOICE_constraint },
+	asn_MBR_RANParameter_TestingCondition_1,
+	2,	/* Elements count */
+	&asn_SPC_RANParameter_TestingCondition_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-Value.c b/e2sm/lib/RANParameter-Value.c
index 91f2bc9..f3cc00c 100644
--- a/e2sm/lib/RANParameter-Value.c
+++ b/e2sm/lib/RANParameter-Value.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -11,22 +11,49 @@
 	{ 0, 0 },
 	-1};
 asn_per_constraints_t asn_PER_type_RANParameter_Value_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  5 }	/* (0..5,...) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
 asn_TYPE_member_t asn_MBR_RANParameter_Value_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valueInt),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valueBoolean),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BOOLEAN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"valueBoolean"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valueInt),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
 		&asn_DEF_NativeInteger,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
 		"valueInt"
 		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valueReal),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeReal,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"valueReal"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valueBitS),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_BIT_STRING,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"valueBitS"
+		},
 	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valueOctS),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 		-1,	/* IMPLICIT tag at current level */
 		&asn_DEF_OCTET_STRING,
 		0,
@@ -34,10 +61,23 @@
 		0, 0, /* No default value */
 		"valueOctS"
 		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_Value, choice.valuePrintableString),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_PrintableString,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"valuePrintableString"
+		},
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANParameter_Value_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* valueOctS */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueBoolean */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueInt */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueReal */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrintableString */
 };
 asn_CHOICE_specifics_t asn_SPC_RANParameter_Value_specs_1 = {
 	sizeof(struct RANParameter_Value),
@@ -45,9 +85,9 @@
 	offsetof(struct RANParameter_Value, present),
 	sizeof(((struct RANParameter_Value *)0)->present),
 	asn_MAP_RANParameter_Value_tag2el_1,
-	2,	/* Count of tags in the map */
+	6,	/* Count of tags in the map */
 	0, 0,
-	2	/* Extensions start */
+	6	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_RANParameter_Value = {
 	"RANParameter-Value",
@@ -59,7 +99,7 @@
 	0,	/* No tags (count) */
 	{ &asn_OER_type_RANParameter_Value_constr_1, &asn_PER_type_RANParameter_Value_constr_1, CHOICE_constraint },
 	asn_MBR_RANParameter_Value_1,
-	2,	/* Elements count */
+	6,	/* Elements count */
 	&asn_SPC_RANParameter_Value_specs_1	/* Additional specs */
 };
 
diff --git a/e2sm/lib/RANParameter-ValueType-Choice-ElementFalse.c b/e2sm/lib/RANParameter-ValueType-Choice-ElementFalse.c
new file mode 100644
index 0000000..943ee92
--- /dev/null
+++ b/e2sm/lib/RANParameter-ValueType-Choice-ElementFalse.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-ValueType-Choice-ElementFalse.h"
+
+#include "RANParameter-Value.h"
+asn_TYPE_member_t asn_MBR_RANParameter_ValueType_Choice_ElementFalse_1[] = {
+	{ ATF_POINTER, 1, offsetof(struct RANParameter_ValueType_Choice_ElementFalse, ranParameter_value),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_Value,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-value"
+		},
+};
+static const int asn_MAP_RANParameter_ValueType_Choice_ElementFalse_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_ValueType_Choice_ElementFalse_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-value */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_ValueType_Choice_ElementFalse_specs_1 = {
+	sizeof(struct RANParameter_ValueType_Choice_ElementFalse),
+	offsetof(struct RANParameter_ValueType_Choice_ElementFalse, _asn_ctx),
+	asn_MAP_RANParameter_ValueType_Choice_ElementFalse_tag2el_1,
+	1,	/* Count of tags in the map */
+	asn_MAP_RANParameter_ValueType_Choice_ElementFalse_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_ValueType_Choice_ElementFalse = {
+	"RANParameter-ValueType-Choice-ElementFalse",
+	"RANParameter-ValueType-Choice-ElementFalse",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1,
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementFalse_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_ValueType_Choice_ElementFalse_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_ValueType_Choice_ElementFalse_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-ValueType-Choice-ElementTrue.c b/e2sm/lib/RANParameter-ValueType-Choice-ElementTrue.c
new file mode 100644
index 0000000..2cb2bcd
--- /dev/null
+++ b/e2sm/lib/RANParameter-ValueType-Choice-ElementTrue.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-ValueType-Choice-ElementTrue.h"
+
+asn_TYPE_member_t asn_MBR_RANParameter_ValueType_Choice_ElementTrue_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANParameter_ValueType_Choice_ElementTrue, ranParameter_value),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_Value,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-value"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_ValueType_Choice_ElementTrue_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-value */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_ValueType_Choice_ElementTrue_specs_1 = {
+	sizeof(struct RANParameter_ValueType_Choice_ElementTrue),
+	offsetof(struct RANParameter_ValueType_Choice_ElementTrue, _asn_ctx),
+	asn_MAP_RANParameter_ValueType_Choice_ElementTrue_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_ValueType_Choice_ElementTrue = {
+	"RANParameter-ValueType-Choice-ElementTrue",
+	"RANParameter-ValueType-Choice-ElementTrue",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1,
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_ElementTrue_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_ValueType_Choice_ElementTrue_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_ValueType_Choice_ElementTrue_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-ValueType-Choice-List.c b/e2sm/lib/RANParameter-ValueType-Choice-List.c
new file mode 100644
index 0000000..f4572e2
--- /dev/null
+++ b/e2sm/lib/RANParameter-ValueType-Choice-List.c
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-ValueType-Choice-List.h"
+
+#include "RANParameter-LIST.h"
+asn_TYPE_member_t asn_MBR_RANParameter_ValueType_Choice_List_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType_Choice_List, ranParameter_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_LIST,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_ValueType_Choice_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_ValueType_Choice_List_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_ValueType_Choice_List_specs_1 = {
+	sizeof(struct RANParameter_ValueType_Choice_List),
+	offsetof(struct RANParameter_ValueType_Choice_List, _asn_ctx),
+	asn_MAP_RANParameter_ValueType_Choice_List_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_ValueType_Choice_List = {
+	"RANParameter-ValueType-Choice-List",
+	"RANParameter-ValueType-Choice-List",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_ValueType_Choice_List_tags_1,
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_List_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_List_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_ValueType_Choice_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_List_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_List_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_ValueType_Choice_List_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_ValueType_Choice_List_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-ValueType-Choice-Structure.c b/e2sm/lib/RANParameter-ValueType-Choice-Structure.c
new file mode 100644
index 0000000..bea8294
--- /dev/null
+++ b/e2sm/lib/RANParameter-ValueType-Choice-Structure.c
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANParameter-ValueType-Choice-Structure.h"
+
+#include "RANParameter-STRUCTURE.h"
+asn_TYPE_member_t asn_MBR_RANParameter_ValueType_Choice_Structure_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType_Choice_Structure, ranParameter_Structure),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_STRUCTURE,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Structure"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANParameter_ValueType_Choice_Structure_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-Structure */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANParameter_ValueType_Choice_Structure_specs_1 = {
+	sizeof(struct RANParameter_ValueType_Choice_Structure),
+	offsetof(struct RANParameter_ValueType_Choice_Structure, _asn_ctx),
+	asn_MAP_RANParameter_ValueType_Choice_Structure_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANParameter_ValueType_Choice_Structure = {
+	"RANParameter-ValueType-Choice-Structure",
+	"RANParameter-ValueType-Choice-Structure",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1,
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1[0]), /* 1 */
+	asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1)
+		/sizeof(asn_DEF_RANParameter_ValueType_Choice_Structure_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RANParameter_ValueType_Choice_Structure_1,
+	1,	/* Elements count */
+	&asn_SPC_RANParameter_ValueType_Choice_Structure_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANParameter-ValueType.c b/e2sm/lib/RANParameter-ValueType.c
index ebbf953..8852e86 100644
--- a/e2sm/lib/RANParameter-ValueType.c
+++ b/e2sm/lib/RANParameter-ValueType.c
@@ -1,56 +1,67 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "RANParameter-ValueType.h"
 
-#include "RANParameter-ELEMENT.h"
-#include "RANParameter-STRUCTURE.h"
-#include "RANParameter-LIST.h"
+#include "RANParameter-ValueType-Choice-ElementTrue.h"
+#include "RANParameter-ValueType-Choice-ElementFalse.h"
+#include "RANParameter-ValueType-Choice-Structure.h"
+#include "RANParameter-ValueType-Choice-List.h"
 static asn_oer_constraints_t asn_OER_type_RANParameter_ValueType_constr_1 CC_NOTUSED = {
 	{ 0, 0 },
 	-1};
 asn_per_constraints_t asn_PER_type_RANParameter_ValueType_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
 asn_TYPE_member_t asn_MBR_RANParameter_ValueType_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranParameter_Element),
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranP_Choice_ElementTrue),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANParameter_ELEMENT,
+		&asn_DEF_RANParameter_ValueType_Choice_ElementTrue,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ranParameter-Element"
+		"ranP-Choice-ElementTrue"
 		},
-	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranParameter_Structure),
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranP_Choice_ElementFalse),
 		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANParameter_STRUCTURE,
+		&asn_DEF_RANParameter_ValueType_Choice_ElementFalse,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ranParameter-Structure"
+		"ranP-Choice-ElementFalse"
 		},
-	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranParameter_List),
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranP_Choice_Structure),
 		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANParameter_LIST,
+		&asn_DEF_RANParameter_ValueType_Choice_Structure,
 		0,
 		{ 0, 0, 0 },
 		0, 0, /* No default value */
-		"ranParameter-List"
+		"ranP-Choice-Structure"
+		},
+	{ ATF_POINTER, 0, offsetof(struct RANParameter_ValueType, choice.ranP_Choice_List),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType_Choice_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranP-Choice-List"
 		},
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANParameter_ValueType_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-Element */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Structure */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-List */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranP-Choice-ElementTrue */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranP-Choice-ElementFalse */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranP-Choice-Structure */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranP-Choice-List */
 };
 asn_CHOICE_specifics_t asn_SPC_RANParameter_ValueType_specs_1 = {
 	sizeof(struct RANParameter_ValueType),
@@ -58,9 +69,9 @@
 	offsetof(struct RANParameter_ValueType, present),
 	sizeof(((struct RANParameter_ValueType *)0)->present),
 	asn_MAP_RANParameter_ValueType_tag2el_1,
-	3,	/* Count of tags in the map */
+	4,	/* Count of tags in the map */
 	0, 0,
-	3	/* Extensions start */
+	4	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_RANParameter_ValueType = {
 	"RANParameter-ValueType",
@@ -72,7 +83,7 @@
 	0,	/* No tags (count) */
 	{ &asn_OER_type_RANParameter_ValueType_constr_1, &asn_PER_type_RANParameter_ValueType_constr_1, CHOICE_constraint },
 	asn_MBR_RANParameter_ValueType_1,
-	3,	/* Elements count */
+	4,	/* Elements count */
 	&asn_SPC_RANParameter_ValueType_specs_1	/* Additional specs */
 };
 
diff --git a/e2sm/lib/RANUEID.c b/e2sm/lib/RANUEID.c
new file mode 100644
index 0000000..f1fe907
--- /dev/null
+++ b/e2sm/lib/RANUEID.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RANUEID.h"
+
+int
+RANUEID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 8)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RANUEID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	8	/* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_RANUEID_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANUEID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANUEID = {
+	"RANUEID",
+	"RANUEID",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_RANUEID_tags_1,
+	sizeof(asn_DEF_RANUEID_tags_1)
+		/sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */
+	asn_DEF_RANUEID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANUEID_tags_1)
+		/sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RANUEID_constr_1, &asn_PER_type_RANUEID_constr_1, RANUEID_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RANfunction-Name.c b/e2sm/lib/RANfunction-Name.c
index a56189d..d467e01 100644
--- a/e2sm/lib/RANfunction-Name.c
+++ b/e2sm/lib/RANfunction-Name.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -155,7 +155,7 @@
 	
 	size = st->size;
 	
-	if((size >= 1 && size <= 150)
+	if((size >= 1 && size <= 1000)
 		 && !check_permitted_alphabet_3(st)) {
 		/* Constraint check succeeded */
 		return 0;
@@ -228,7 +228,7 @@
 	-1	/* (SIZE(0..MAX)) */};
 static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = {
 	{ APC_CONSTRAINED,	 7,  7,  32,  122 }	/* (32..122) */,
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }	/* (SIZE(1..150,...)) */,
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  10,  10,  1,  1000 }	/* (SIZE(1..1000,...)) */,
 	asn_PER_MAP_ranFunction_E2SM_OID_3_v2c,	/* Value to PER code map */
 	asn_PER_MAP_ranFunction_E2SM_OID_3_c2v	/* PER code to value map */
 };
diff --git a/e2sm/lib/RIC-CallProcessBreakpoint-ID.c b/e2sm/lib/RIC-CallProcessBreakpoint-ID.c
new file mode 100644
index 0000000..bd9f37b
--- /dev/null
+++ b/e2sm/lib/RIC-CallProcessBreakpoint-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-CallProcessBreakpoint-ID.h"
+
+int
+RIC_CallProcessBreakpoint_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_CallProcessBreakpoint_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_CallProcessBreakpoint_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_CallProcessBreakpoint_ID = {
+	"RIC-CallProcessBreakpoint-ID",
+	"RIC-CallProcessBreakpoint-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1,
+	sizeof(asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessBreakpoint_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_CallProcessBreakpoint_ID_constr_1, &asn_PER_type_RIC_CallProcessBreakpoint_ID_constr_1, RIC_CallProcessBreakpoint_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RANcallProcess-ID-string.c b/e2sm/lib/RIC-CallProcessBreakpoint-Name.c
similarity index 65%
copy from e2sm/lib/RANcallProcess-ID-string.c
copy to e2sm/lib/RIC-CallProcessBreakpoint-Name.c
index 69092be..85d59b2 100644
--- a/e2sm/lib/RANcallProcess-ID-string.c
+++ b/e2sm/lib/RIC-CallProcessBreakpoint-Name.c
@@ -1,11 +1,11 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
-#include "RANcallProcess-ID-string.h"
+#include "RIC-CallProcessBreakpoint-Name.h"
 
 static const int permitted_alphabet_table_1[256] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
@@ -40,7 +40,7 @@
 }
 
 int
-RANcallProcess_ID_string_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+RIC_CallProcessBreakpoint_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	const PrintableString_t *st = (const PrintableString_t *)sptr;
 	size_t size;
@@ -66,12 +66,12 @@
 	}
 }
 
-static int asn_PER_MAP_RANcallProcess_ID_string_1_v2c(unsigned int value) {
+static int asn_PER_MAP_RIC_CallProcessBreakpoint_Name_1_v2c(unsigned int value) {
 	if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
 		return -1;
 	return permitted_alphabet_table_1[value] - 1;
 }
-static int asn_PER_MAP_RANcallProcess_ID_string_1_c2v(unsigned int code) {
+static int asn_PER_MAP_RIC_CallProcessBreakpoint_Name_1_c2v(unsigned int code) {
 	if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
 		return -1;
 	return permitted_alphabet_code2value_1[code];
@@ -80,29 +80,29 @@
  * This type is implemented using PrintableString,
  * so here we adjust the DEF accordingly.
  */
-static asn_oer_constraints_t asn_OER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_RIC_CallProcessBreakpoint_Name_constr_1 CC_NOTUSED = {
 	{ 0, 0 },
 	-1	/* (SIZE(0..MAX)) */};
-static asn_per_constraints_t asn_PER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = {
+asn_per_constraints_t asn_PER_type_RIC_CallProcessBreakpoint_Name_constr_1 CC_NOTUSED = {
 	{ APC_CONSTRAINED,	 7,  7,  32,  122 }	/* (32..122) */,
 	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }	/* (SIZE(1..150,...)) */,
-	asn_PER_MAP_RANcallProcess_ID_string_1_v2c,	/* Value to PER code map */
-	asn_PER_MAP_RANcallProcess_ID_string_1_c2v	/* PER code to value map */
+	asn_PER_MAP_RIC_CallProcessBreakpoint_Name_1_v2c,	/* Value to PER code map */
+	asn_PER_MAP_RIC_CallProcessBreakpoint_Name_1_c2v	/* PER code to value map */
 };
-static const ber_tlv_tag_t asn_DEF_RANcallProcess_ID_string_tags_1[] = {
+static const ber_tlv_tag_t asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
 };
-asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string = {
-	"RANcallProcess-ID-string",
-	"RANcallProcess-ID-string",
+asn_TYPE_descriptor_t asn_DEF_RIC_CallProcessBreakpoint_Name = {
+	"RIC-CallProcessBreakpoint-Name",
+	"RIC-CallProcessBreakpoint-Name",
 	&asn_OP_PrintableString,
-	asn_DEF_RANcallProcess_ID_string_tags_1,
-	sizeof(asn_DEF_RANcallProcess_ID_string_tags_1)
-		/sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */
-	asn_DEF_RANcallProcess_ID_string_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RANcallProcess_ID_string_tags_1)
-		/sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RANcallProcess_ID_string_constr_1, &asn_PER_type_RANcallProcess_ID_string_constr_1, RANcallProcess_ID_string_constraint },
+	asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1,
+	sizeof(asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1[0]), /* 1 */
+	asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessBreakpoint_Name_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_CallProcessBreakpoint_Name_constr_1, &asn_PER_type_RIC_CallProcessBreakpoint_Name_constr_1, RIC_CallProcessBreakpoint_Name_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
diff --git a/e2sm/lib/RIC-CallProcessType-ID.c b/e2sm/lib/RIC-CallProcessType-ID.c
new file mode 100644
index 0000000..8cdeed4
--- /dev/null
+++ b/e2sm/lib/RIC-CallProcessType-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-CallProcessType-ID.h"
+
+int
+RIC_CallProcessType_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_CallProcessType_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_CallProcessType_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_CallProcessType_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_CallProcessType_ID = {
+	"RIC-CallProcessType-ID",
+	"RIC-CallProcessType-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_CallProcessType_ID_tags_1,
+	sizeof(asn_DEF_RIC_CallProcessType_ID_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessType_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_CallProcessType_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_CallProcessType_ID_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessType_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_CallProcessType_ID_constr_1, &asn_PER_type_RIC_CallProcessType_ID_constr_1, RIC_CallProcessType_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RANcallProcess-ID-string.c b/e2sm/lib/RIC-CallProcessType-Name.c
similarity index 69%
rename from e2sm/lib/RANcallProcess-ID-string.c
rename to e2sm/lib/RIC-CallProcessType-Name.c
index 69092be..419f264 100644
--- a/e2sm/lib/RANcallProcess-ID-string.c
+++ b/e2sm/lib/RIC-CallProcessType-Name.c
@@ -1,11 +1,11 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
-#include "RANcallProcess-ID-string.h"
+#include "RIC-CallProcessType-Name.h"
 
 static const int permitted_alphabet_table_1[256] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
@@ -40,7 +40,7 @@
 }
 
 int
-RANcallProcess_ID_string_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+RIC_CallProcessType_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	const PrintableString_t *st = (const PrintableString_t *)sptr;
 	size_t size;
@@ -66,12 +66,12 @@
 	}
 }
 
-static int asn_PER_MAP_RANcallProcess_ID_string_1_v2c(unsigned int value) {
+static int asn_PER_MAP_RIC_CallProcessType_Name_1_v2c(unsigned int value) {
 	if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
 		return -1;
 	return permitted_alphabet_table_1[value] - 1;
 }
-static int asn_PER_MAP_RANcallProcess_ID_string_1_c2v(unsigned int code) {
+static int asn_PER_MAP_RIC_CallProcessType_Name_1_c2v(unsigned int code) {
 	if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
 		return -1;
 	return permitted_alphabet_code2value_1[code];
@@ -80,29 +80,29 @@
  * This type is implemented using PrintableString,
  * so here we adjust the DEF accordingly.
  */
-static asn_oer_constraints_t asn_OER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_RIC_CallProcessType_Name_constr_1 CC_NOTUSED = {
 	{ 0, 0 },
 	-1	/* (SIZE(0..MAX)) */};
-static asn_per_constraints_t asn_PER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = {
+asn_per_constraints_t asn_PER_type_RIC_CallProcessType_Name_constr_1 CC_NOTUSED = {
 	{ APC_CONSTRAINED,	 7,  7,  32,  122 }	/* (32..122) */,
 	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }	/* (SIZE(1..150,...)) */,
-	asn_PER_MAP_RANcallProcess_ID_string_1_v2c,	/* Value to PER code map */
-	asn_PER_MAP_RANcallProcess_ID_string_1_c2v	/* PER code to value map */
+	asn_PER_MAP_RIC_CallProcessType_Name_1_v2c,	/* Value to PER code map */
+	asn_PER_MAP_RIC_CallProcessType_Name_1_c2v	/* PER code to value map */
 };
-static const ber_tlv_tag_t asn_DEF_RANcallProcess_ID_string_tags_1[] = {
+static const ber_tlv_tag_t asn_DEF_RIC_CallProcessType_Name_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
 };
-asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string = {
-	"RANcallProcess-ID-string",
-	"RANcallProcess-ID-string",
+asn_TYPE_descriptor_t asn_DEF_RIC_CallProcessType_Name = {
+	"RIC-CallProcessType-Name",
+	"RIC-CallProcessType-Name",
 	&asn_OP_PrintableString,
-	asn_DEF_RANcallProcess_ID_string_tags_1,
-	sizeof(asn_DEF_RANcallProcess_ID_string_tags_1)
-		/sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */
-	asn_DEF_RANcallProcess_ID_string_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RANcallProcess_ID_string_tags_1)
-		/sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RANcallProcess_ID_string_constr_1, &asn_PER_type_RANcallProcess_ID_string_constr_1, RANcallProcess_ID_string_constraint },
+	asn_DEF_RIC_CallProcessType_Name_tags_1,
+	sizeof(asn_DEF_RIC_CallProcessType_Name_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessType_Name_tags_1[0]), /* 1 */
+	asn_DEF_RIC_CallProcessType_Name_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_CallProcessType_Name_tags_1)
+		/sizeof(asn_DEF_RIC_CallProcessType_Name_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_CallProcessType_Name_constr_1, &asn_PER_type_RIC_CallProcessType_Name_constr_1, RIC_CallProcessType_Name_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
diff --git a/e2sm/lib/RIC-ControlAction-ID.c b/e2sm/lib/RIC-ControlAction-ID.c
index b0a0178..839a7b2 100644
--- a/e2sm/lib/RIC-ControlAction-ID.c
+++ b/e2sm/lib/RIC-ControlAction-ID.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
@@ -21,7 +21,7 @@
 	
 	value = *(const long *)sptr;
 	
-	if((value >= 0 && value <= 65535)) {
+	if((value >= 1 && value <= 65535)) {
 		/* Constraint check succeeded */
 		return 0;
 	} else {
@@ -37,10 +37,10 @@
  * so here we adjust the DEF accordingly.
  */
 static asn_oer_constraints_t asn_OER_type_RIC_ControlAction_ID_constr_1 CC_NOTUSED = {
-	{ 2, 1 }	/* (0..65535) */,
+	{ 0, 0 },
 	-1};
 asn_per_constraints_t asn_PER_type_RIC_ControlAction_ID_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (0..65535) */,
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	0, 0	/* No PER value map */
 };
diff --git a/e2sm/lib/RIC-ControlAction-Item.c b/e2sm/lib/RIC-ControlAction-Item.c
deleted file mode 100644
index cc89d2d..0000000
--- a/e2sm/lib/RIC-ControlAction-Item.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RIC-ControlAction-Item.h"
-
-#include "RAN-ControlParameter-Item.h"
-static int
-memb_ran_ControlParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 4294967295)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_ran_ControlParameters_List_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
-static asn_per_constraints_t asn_PER_type_ran_ControlParameters_List_constr_4 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ran_ControlParameters_List_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..4294967295)) */};
-static asn_per_constraints_t asn_PER_memb_ran_ControlParameters_List_constr_4 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 32, -1,  1,  4294967295 }	/* (SIZE(1..4294967295)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_ran_ControlParameters_List_4[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_RAN_ControlParameter_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ran_ControlParameters_List_tags_4[] = {
-	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_ran_ControlParameters_List_specs_4 = {
-	sizeof(struct RIC_ControlAction_Item__ran_ControlParameters_List),
-	offsetof(struct RIC_ControlAction_Item__ran_ControlParameters_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ran_ControlParameters_List_4 = {
-	"ran-ControlParameters-List",
-	"ran-ControlParameters-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ran_ControlParameters_List_tags_4,
-	sizeof(asn_DEF_ran_ControlParameters_List_tags_4)
-		/sizeof(asn_DEF_ran_ControlParameters_List_tags_4[0]) - 1, /* 1 */
-	asn_DEF_ran_ControlParameters_List_tags_4,	/* Same as above */
-	sizeof(asn_DEF_ran_ControlParameters_List_tags_4)
-		/sizeof(asn_DEF_ran_ControlParameters_List_tags_4[0]), /* 2 */
-	{ &asn_OER_type_ran_ControlParameters_List_constr_4, &asn_PER_type_ran_ControlParameters_List_constr_4, SEQUENCE_OF_constraint },
-	asn_MBR_ran_ControlParameters_List_4,
-	1,	/* Single element */
-	&asn_SPC_ran_ControlParameters_List_specs_4	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_RIC_ControlAction_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ControlAction_Item, ric_ControlAction_ID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_ControlAction_ID,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ControlAction-ID"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ControlAction_Item, ric_ControlAction_Name),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_ControlAction_Name,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ControlAction-Name"
-		},
-	{ ATF_POINTER, 1, offsetof(struct RIC_ControlAction_Item, ran_ControlParameters_List),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		0,
-		&asn_DEF_ran_ControlParameters_List_4,
-		0,
-		{ &asn_OER_memb_ran_ControlParameters_List_constr_4, &asn_PER_memb_ran_ControlParameters_List_constr_4,  memb_ran_ControlParameters_List_constraint_1 },
-		0, 0, /* No default value */
-		"ran-ControlParameters-List"
-		},
-};
-static const int asn_MAP_RIC_ControlAction_Item_oms_1[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_RIC_ControlAction_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RIC_ControlAction_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlAction-ID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlAction-Name */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ran-ControlParameters-List */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RIC_ControlAction_Item_specs_1 = {
-	sizeof(struct RIC_ControlAction_Item),
-	offsetof(struct RIC_ControlAction_Item, _asn_ctx),
-	asn_MAP_RIC_ControlAction_Item_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_RIC_ControlAction_Item_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RIC_ControlAction_Item = {
-	"RIC-ControlAction-Item",
-	"RIC-ControlAction-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RIC_ControlAction_Item_tags_1,
-	sizeof(asn_DEF_RIC_ControlAction_Item_tags_1)
-		/sizeof(asn_DEF_RIC_ControlAction_Item_tags_1[0]), /* 1 */
-	asn_DEF_RIC_ControlAction_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RIC_ControlAction_Item_tags_1)
-		/sizeof(asn_DEF_RIC_ControlAction_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RIC_ControlAction_Item_1,
-	3,	/* Elements count */
-	&asn_SPC_RIC_ControlAction_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RIC-ControlAction-Name.c b/e2sm/lib/RIC-ControlAction-Name.c
index 346ea42..8a6bd62 100644
--- a/e2sm/lib/RIC-ControlAction-Name.c
+++ b/e2sm/lib/RIC-ControlAction-Name.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/RIC-ControlStyle-Item.c b/e2sm/lib/RIC-ControlStyle-Item.c
deleted file mode 100644
index 9aae0c9..0000000
--- a/e2sm/lib/RIC-ControlStyle-Item.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RIC-ControlStyle-Item.h"
-
-#include "RIC-ControlAction-Item.h"
-static int
-memb_ric_ControlAction_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 65535)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_ric_ControlAction_List_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..65535)) */};
-static asn_per_constraints_t asn_PER_type_ric_ControlAction_List_constr_4 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ric_ControlAction_List_constr_4 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..65535)) */};
-static asn_per_constraints_t asn_PER_memb_ric_ControlAction_List_constr_4 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_ric_ControlAction_List_4[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_RIC_ControlAction_Item,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ric_ControlAction_List_tags_4[] = {
-	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_ric_ControlAction_List_specs_4 = {
-	sizeof(struct RIC_ControlStyle_Item__ric_ControlAction_List),
-	offsetof(struct RIC_ControlStyle_Item__ric_ControlAction_List, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ric_ControlAction_List_4 = {
-	"ric-ControlAction-List",
-	"ric-ControlAction-List",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ric_ControlAction_List_tags_4,
-	sizeof(asn_DEF_ric_ControlAction_List_tags_4)
-		/sizeof(asn_DEF_ric_ControlAction_List_tags_4[0]) - 1, /* 1 */
-	asn_DEF_ric_ControlAction_List_tags_4,	/* Same as above */
-	sizeof(asn_DEF_ric_ControlAction_List_tags_4)
-		/sizeof(asn_DEF_ric_ControlAction_List_tags_4[0]), /* 2 */
-	{ &asn_OER_type_ric_ControlAction_List_constr_4, &asn_PER_type_ric_ControlAction_List_constr_4, SEQUENCE_OF_constraint },
-	asn_MBR_ric_ControlAction_List_4,
-	1,	/* Single element */
-	&asn_SPC_ric_ControlAction_List_specs_4	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_RIC_ControlStyle_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_Item, ric_ControlStyle_Type),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ControlStyle-Type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_Item, ric_ControlStyle_Name),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Name,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ControlStyle-Name"
-		},
-	{ ATF_POINTER, 1, offsetof(struct RIC_ControlStyle_Item, ric_ControlAction_List),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		0,
-		&asn_DEF_ric_ControlAction_List_4,
-		0,
-		{ &asn_OER_memb_ric_ControlAction_List_constr_4, &asn_PER_memb_ric_ControlAction_List_constr_4,  memb_ric_ControlAction_List_constraint_1 },
-		0, 0, /* No default value */
-		"ric-ControlAction-List"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_Item, ric_ControlHeaderFormat_Type),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Format_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ControlHeaderFormat-Type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_Item, ric_ControlMessageFormat_Type),
-		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Format_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ControlMessageFormat-Type"
-		},
-};
-static const int asn_MAP_RIC_ControlStyle_Item_oms_1[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_RIC_ControlStyle_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RIC_ControlStyle_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlStyle-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlStyle-Name */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ControlAction-List */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ControlHeaderFormat-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ric-ControlMessageFormat-Type */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RIC_ControlStyle_Item_specs_1 = {
-	sizeof(struct RIC_ControlStyle_Item),
-	offsetof(struct RIC_ControlStyle_Item, _asn_ctx),
-	asn_MAP_RIC_ControlStyle_Item_tag2el_1,
-	5,	/* Count of tags in the map */
-	asn_MAP_RIC_ControlStyle_Item_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	5,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RIC_ControlStyle_Item = {
-	"RIC-ControlStyle-Item",
-	"RIC-ControlStyle-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RIC_ControlStyle_Item_tags_1,
-	sizeof(asn_DEF_RIC_ControlStyle_Item_tags_1)
-		/sizeof(asn_DEF_RIC_ControlStyle_Item_tags_1[0]), /* 1 */
-	asn_DEF_RIC_ControlStyle_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RIC_ControlStyle_Item_tags_1)
-		/sizeof(asn_DEF_RIC_ControlStyle_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RIC_ControlStyle_Item_1,
-	5,	/* Elements count */
-	&asn_SPC_RIC_ControlStyle_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RIC-EventTrigger-Cell-ID.c b/e2sm/lib/RIC-EventTrigger-Cell-ID.c
new file mode 100644
index 0000000..1a3e811
--- /dev/null
+++ b/e2sm/lib/RIC-EventTrigger-Cell-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-EventTrigger-Cell-ID.h"
+
+int
+RIC_EventTrigger_Cell_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_EventTrigger_Cell_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_EventTrigger_Cell_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_EventTrigger_Cell_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_EventTrigger_Cell_ID = {
+	"RIC-EventTrigger-Cell-ID",
+	"RIC-EventTrigger-Cell-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_EventTrigger_Cell_ID_tags_1,
+	sizeof(asn_DEF_RIC_EventTrigger_Cell_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTrigger_Cell_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_EventTrigger_Cell_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_EventTrigger_Cell_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTrigger_Cell_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_EventTrigger_Cell_ID_constr_1, &asn_PER_type_RIC_EventTrigger_Cell_ID_constr_1, RIC_EventTrigger_Cell_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RIC-EventTrigger-UE-ID.c b/e2sm/lib/RIC-EventTrigger-UE-ID.c
new file mode 100644
index 0000000..ff95b0f
--- /dev/null
+++ b/e2sm/lib/RIC-EventTrigger-UE-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-EventTrigger-UE-ID.h"
+
+int
+RIC_EventTrigger_UE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_EventTrigger_UE_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_EventTrigger_UE_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_EventTrigger_UE_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_EventTrigger_UE_ID = {
+	"RIC-EventTrigger-UE-ID",
+	"RIC-EventTrigger-UE-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_EventTrigger_UE_ID_tags_1,
+	sizeof(asn_DEF_RIC_EventTrigger_UE_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTrigger_UE_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_EventTrigger_UE_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_EventTrigger_UE_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTrigger_UE_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_EventTrigger_UE_ID_constr_1, &asn_PER_type_RIC_EventTrigger_UE_ID_constr_1, RIC_EventTrigger_UE_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RIC-EventTrigger-UEevent-ID.c b/e2sm/lib/RIC-EventTrigger-UEevent-ID.c
new file mode 100644
index 0000000..18a1dfc
--- /dev/null
+++ b/e2sm/lib/RIC-EventTrigger-UEevent-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-EventTrigger-UEevent-ID.h"
+
+int
+RIC_EventTrigger_UEevent_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_EventTrigger_UEevent_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_EventTrigger_UEevent_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_EventTrigger_UEevent_ID = {
+	"RIC-EventTrigger-UEevent-ID",
+	"RIC-EventTrigger-UEevent-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1,
+	sizeof(asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTrigger_UEevent_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_EventTrigger_UEevent_ID_constr_1, &asn_PER_type_RIC_EventTrigger_UEevent_ID_constr_1, RIC_EventTrigger_UEevent_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RIC-EventTriggerCondition-ID.c b/e2sm/lib/RIC-EventTriggerCondition-ID.c
new file mode 100644
index 0000000..de6d3e6
--- /dev/null
+++ b/e2sm/lib/RIC-EventTriggerCondition-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-EventTriggerCondition-ID.h"
+
+int
+RIC_EventTriggerCondition_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_EventTriggerCondition_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_EventTriggerCondition_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerCondition_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerCondition_ID = {
+	"RIC-EventTriggerCondition-ID",
+	"RIC-EventTriggerCondition-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_EventTriggerCondition_ID_tags_1,
+	sizeof(asn_DEF_RIC_EventTriggerCondition_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTriggerCondition_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_EventTriggerCondition_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_EventTriggerCondition_ID_tags_1)
+		/sizeof(asn_DEF_RIC_EventTriggerCondition_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_EventTriggerCondition_ID_constr_1, &asn_PER_type_RIC_EventTriggerCondition_ID_constr_1, RIC_EventTriggerCondition_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RIC-EventTriggerStyle-Item.c b/e2sm/lib/RIC-EventTriggerStyle-Item.c
deleted file mode 100644
index 029f300..0000000
--- a/e2sm/lib/RIC-EventTriggerStyle-Item.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RIC-EventTriggerStyle-Item.h"
-
-asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Type),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-EventTriggerStyle-Type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Name),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Name,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-EventTriggerStyle-Name"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerFormat_Type),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Format_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-EventTriggerFormat-Type"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1 = {
-	sizeof(struct RIC_EventTriggerStyle_Item),
-	offsetof(struct RIC_EventTriggerStyle_Item, _asn_ctx),
-	asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1,
-	3,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item = {
-	"RIC-EventTriggerStyle-Item",
-	"RIC-EventTriggerStyle-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RIC_EventTriggerStyle_Item_tags_1,
-	sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1)
-		/sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */
-	asn_DEF_RIC_EventTriggerStyle_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1)
-		/sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RIC_EventTriggerStyle_Item_1,
-	3,	/* Elements count */
-	&asn_SPC_RIC_EventTriggerStyle_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RIC-Format-Type.c b/e2sm/lib/RIC-Format-Type.c
index 8242722..e2f2a7a 100644
--- a/e2sm/lib/RIC-Format-Type.c
+++ b/e2sm/lib/RIC-Format-Type.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/RIC-InsertIndication-ID.c b/e2sm/lib/RIC-InsertIndication-ID.c
new file mode 100644
index 0000000..6cf61e3
--- /dev/null
+++ b/e2sm/lib/RIC-InsertIndication-ID.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-InsertIndication-ID.h"
+
+int
+RIC_InsertIndication_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 65535)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_InsertIndication_ID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RIC_InsertIndication_ID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }	/* (1..65535,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_InsertIndication_ID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_InsertIndication_ID = {
+	"RIC-InsertIndication-ID",
+	"RIC-InsertIndication-ID",
+	&asn_OP_NativeInteger,
+	asn_DEF_RIC_InsertIndication_ID_tags_1,
+	sizeof(asn_DEF_RIC_InsertIndication_ID_tags_1)
+		/sizeof(asn_DEF_RIC_InsertIndication_ID_tags_1[0]), /* 1 */
+	asn_DEF_RIC_InsertIndication_ID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_InsertIndication_ID_tags_1)
+		/sizeof(asn_DEF_RIC_InsertIndication_ID_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_InsertIndication_ID_constr_1, &asn_PER_type_RIC_InsertIndication_ID_constr_1, RIC_InsertIndication_ID_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/RANcallProcess-ID-string.c b/e2sm/lib/RIC-InsertIndication-Name.c
similarity index 67%
copy from e2sm/lib/RANcallProcess-ID-string.c
copy to e2sm/lib/RIC-InsertIndication-Name.c
index 69092be..ddc9c47 100644
--- a/e2sm/lib/RANcallProcess-ID-string.c
+++ b/e2sm/lib/RIC-InsertIndication-Name.c
@@ -1,11 +1,11 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
-#include "RANcallProcess-ID-string.h"
+#include "RIC-InsertIndication-Name.h"
 
 static const int permitted_alphabet_table_1[256] = {
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/*                  */
@@ -40,7 +40,7 @@
 }
 
 int
-RANcallProcess_ID_string_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+RIC_InsertIndication_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	const PrintableString_t *st = (const PrintableString_t *)sptr;
 	size_t size;
@@ -66,12 +66,12 @@
 	}
 }
 
-static int asn_PER_MAP_RANcallProcess_ID_string_1_v2c(unsigned int value) {
+static int asn_PER_MAP_RIC_InsertIndication_Name_1_v2c(unsigned int value) {
 	if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
 		return -1;
 	return permitted_alphabet_table_1[value] - 1;
 }
-static int asn_PER_MAP_RANcallProcess_ID_string_1_c2v(unsigned int code) {
+static int asn_PER_MAP_RIC_InsertIndication_Name_1_c2v(unsigned int code) {
 	if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
 		return -1;
 	return permitted_alphabet_code2value_1[code];
@@ -80,29 +80,29 @@
  * This type is implemented using PrintableString,
  * so here we adjust the DEF accordingly.
  */
-static asn_oer_constraints_t asn_OER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = {
+static asn_oer_constraints_t asn_OER_type_RIC_InsertIndication_Name_constr_1 CC_NOTUSED = {
 	{ 0, 0 },
 	-1	/* (SIZE(0..MAX)) */};
-static asn_per_constraints_t asn_PER_type_RANcallProcess_ID_string_constr_1 CC_NOTUSED = {
+asn_per_constraints_t asn_PER_type_RIC_InsertIndication_Name_constr_1 CC_NOTUSED = {
 	{ APC_CONSTRAINED,	 7,  7,  32,  122 }	/* (32..122) */,
 	{ APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }	/* (SIZE(1..150,...)) */,
-	asn_PER_MAP_RANcallProcess_ID_string_1_v2c,	/* Value to PER code map */
-	asn_PER_MAP_RANcallProcess_ID_string_1_c2v	/* PER code to value map */
+	asn_PER_MAP_RIC_InsertIndication_Name_1_v2c,	/* Value to PER code map */
+	asn_PER_MAP_RIC_InsertIndication_Name_1_c2v	/* PER code to value map */
 };
-static const ber_tlv_tag_t asn_DEF_RANcallProcess_ID_string_tags_1[] = {
+static const ber_tlv_tag_t asn_DEF_RIC_InsertIndication_Name_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
 };
-asn_TYPE_descriptor_t asn_DEF_RANcallProcess_ID_string = {
-	"RANcallProcess-ID-string",
-	"RANcallProcess-ID-string",
+asn_TYPE_descriptor_t asn_DEF_RIC_InsertIndication_Name = {
+	"RIC-InsertIndication-Name",
+	"RIC-InsertIndication-Name",
 	&asn_OP_PrintableString,
-	asn_DEF_RANcallProcess_ID_string_tags_1,
-	sizeof(asn_DEF_RANcallProcess_ID_string_tags_1)
-		/sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */
-	asn_DEF_RANcallProcess_ID_string_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RANcallProcess_ID_string_tags_1)
-		/sizeof(asn_DEF_RANcallProcess_ID_string_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RANcallProcess_ID_string_constr_1, &asn_PER_type_RANcallProcess_ID_string_constr_1, RANcallProcess_ID_string_constraint },
+	asn_DEF_RIC_InsertIndication_Name_tags_1,
+	sizeof(asn_DEF_RIC_InsertIndication_Name_tags_1)
+		/sizeof(asn_DEF_RIC_InsertIndication_Name_tags_1[0]), /* 1 */
+	asn_DEF_RIC_InsertIndication_Name_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_InsertIndication_Name_tags_1)
+		/sizeof(asn_DEF_RIC_InsertIndication_Name_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RIC_InsertIndication_Name_constr_1, &asn_PER_type_RIC_InsertIndication_Name_constr_1, RIC_InsertIndication_Name_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
diff --git a/e2sm/lib/RIC-PolicyAction-RANParameter-Item.c b/e2sm/lib/RIC-PolicyAction-RANParameter-Item.c
new file mode 100644
index 0000000..d146925
--- /dev/null
+++ b/e2sm/lib/RIC-PolicyAction-RANParameter-Item.c
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-PolicyAction-RANParameter-Item.h"
+
+asn_TYPE_member_t asn_MBR_RIC_PolicyAction_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyAction_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyAction_RANParameter_Item, ranParameter_valueType),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_RANParameter_ValueType,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-valueType"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RIC_PolicyAction_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-valueType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RIC_PolicyAction_RANParameter_Item_specs_1 = {
+	sizeof(struct RIC_PolicyAction_RANParameter_Item),
+	offsetof(struct RIC_PolicyAction_RANParameter_Item, _asn_ctx),
+	asn_MAP_RIC_PolicyAction_RANParameter_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_PolicyAction_RANParameter_Item = {
+	"RIC-PolicyAction-RANParameter-Item",
+	"RIC-PolicyAction-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_RIC_PolicyAction_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RIC_PolicyAction_RANParameter_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_RIC_PolicyAction_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RIC-PolicyAction.c b/e2sm/lib/RIC-PolicyAction.c
new file mode 100644
index 0000000..8b93916
--- /dev/null
+++ b/e2sm/lib/RIC-PolicyAction.c
@@ -0,0 +1,142 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RIC-PolicyAction.h"
+
+#include "RIC-PolicyAction-RANParameter-Item.h"
+static int
+memb_ranParameters_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 65535)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_ranParameters_List_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_type_ranParameters_List_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranParameters_List_constr_3 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+static asn_per_constraints_t asn_PER_memb_ranParameters_List_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ranParameters_List_3[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RIC_PolicyAction_RANParameter_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ranParameters_List_tags_3[] = {
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ranParameters_List_specs_3 = {
+	sizeof(struct RIC_PolicyAction__ranParameters_List),
+	offsetof(struct RIC_PolicyAction__ranParameters_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ranParameters_List_3 = {
+	"ranParameters-List",
+	"ranParameters-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ranParameters_List_tags_3,
+	sizeof(asn_DEF_ranParameters_List_tags_3)
+		/sizeof(asn_DEF_ranParameters_List_tags_3[0]) - 1, /* 1 */
+	asn_DEF_ranParameters_List_tags_3,	/* Same as above */
+	sizeof(asn_DEF_ranParameters_List_tags_3)
+		/sizeof(asn_DEF_ranParameters_List_tags_3[0]), /* 2 */
+	{ &asn_OER_type_ranParameters_List_constr_3, &asn_PER_type_ranParameters_List_constr_3, SEQUENCE_OF_constraint },
+	asn_MBR_ranParameters_List_3,
+	1,	/* Single element */
+	&asn_SPC_ranParameters_List_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RIC_PolicyAction_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyAction, ric_PolicyAction_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RIC_ControlAction_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ric-PolicyAction-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RIC_PolicyAction, ranParameters_List),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		0,
+		&asn_DEF_ranParameters_List_3,
+		0,
+		{ &asn_OER_memb_ranParameters_List_constr_3, &asn_PER_memb_ranParameters_List_constr_3,  memb_ranParameters_List_constraint_1 },
+		0, 0, /* No default value */
+		"ranParameters-List"
+		},
+};
+static const int asn_MAP_RIC_PolicyAction_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RIC_PolicyAction_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RIC_PolicyAction_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyAction-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameters-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RIC_PolicyAction_specs_1 = {
+	sizeof(struct RIC_PolicyAction),
+	offsetof(struct RIC_PolicyAction, _asn_ctx),
+	asn_MAP_RIC_PolicyAction_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_RIC_PolicyAction_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_PolicyAction = {
+	"RIC-PolicyAction",
+	"RIC-PolicyAction",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RIC_PolicyAction_tags_1,
+	sizeof(asn_DEF_RIC_PolicyAction_tags_1)
+		/sizeof(asn_DEF_RIC_PolicyAction_tags_1[0]), /* 1 */
+	asn_DEF_RIC_PolicyAction_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RIC_PolicyAction_tags_1)
+		/sizeof(asn_DEF_RIC_PolicyAction_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RIC_PolicyAction_1,
+	2,	/* Elements count */
+	&asn_SPC_RIC_PolicyAction_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RIC-ReportStyle-Item.c b/e2sm/lib/RIC-ReportStyle-Item.c
deleted file mode 100644
index 9efe8c3..0000000
--- a/e2sm/lib/RIC-ReportStyle-Item.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RIC-ReportStyle-Item.h"
-
-asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Type),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ReportStyle-Type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Name),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Style_Name,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ReportStyle-Name"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportIndicationHeaderFormat_Type),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Format_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ReportIndicationHeaderFormat-Type"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportIndicationMessageFormat_Type),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RIC_Format_Type,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ric-ReportIndicationMessageFormat-Type"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportIndicationHeaderFormat-Type */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-ReportIndicationMessageFormat-Type */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1 = {
-	sizeof(struct RIC_ReportStyle_Item),
-	offsetof(struct RIC_ReportStyle_Item, _asn_ctx),
-	asn_MAP_RIC_ReportStyle_Item_tag2el_1,
-	4,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	4,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item = {
-	"RIC-ReportStyle-Item",
-	"RIC-ReportStyle-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_RIC_ReportStyle_Item_tags_1,
-	sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1)
-		/sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */
-	asn_DEF_RIC_ReportStyle_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1)
-		/sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_RIC_ReportStyle_Item_1,
-	4,	/* Elements count */
-	&asn_SPC_RIC_ReportStyle_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RIC-Style-Name.c b/e2sm/lib/RIC-Style-Name.c
index 7cc5fcc..f8c4660 100644
--- a/e2sm/lib/RIC-Style-Name.c
+++ b/e2sm/lib/RIC-Style-Name.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/RIC-Style-Type.c b/e2sm/lib/RIC-Style-Type.c
index 14475b8..467c568 100644
--- a/e2sm/lib/RIC-Style-Type.c
+++ b/e2sm/lib/RIC-Style-Type.c
@@ -1,7 +1,7 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
diff --git a/e2sm/lib/RRC-MessageID.c b/e2sm/lib/RRC-MessageID.c
new file mode 100644
index 0000000..075db39
--- /dev/null
+++ b/e2sm/lib/RRC-MessageID.c
@@ -0,0 +1,117 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RRC-MessageID.h"
+
+static asn_oer_constraints_t asn_OER_type_rrcType_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_type_rrcType_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_rrcType_2[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID__rrcType, choice.lTE),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RRCclass_LTE,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"lTE"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID__rrcType, choice.nR),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RRCclass_NR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_rrcType_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lTE */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nR */
+};
+static asn_CHOICE_specifics_t asn_SPC_rrcType_specs_2 = {
+	sizeof(struct RRC_MessageID__rrcType),
+	offsetof(struct RRC_MessageID__rrcType, _asn_ctx),
+	offsetof(struct RRC_MessageID__rrcType, present),
+	sizeof(((struct RRC_MessageID__rrcType *)0)->present),
+	asn_MAP_rrcType_tag2el_2,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rrcType_2 = {
+	"rrcType",
+	"rrcType",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_rrcType_constr_2, &asn_PER_type_rrcType_constr_2, CHOICE_constraint },
+	asn_MBR_rrcType_2,
+	2,	/* Elements count */
+	&asn_SPC_rrcType_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRC_MessageID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID, rrcType),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_rrcType_2,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"rrcType"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RRC_MessageID, messageID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"messageID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_RRC_MessageID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRC_MessageID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRC_MessageID_specs_1 = {
+	sizeof(struct RRC_MessageID),
+	offsetof(struct RRC_MessageID, _asn_ctx),
+	asn_MAP_RRC_MessageID_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRC_MessageID = {
+	"RRC-MessageID",
+	"RRC-MessageID",
+	&asn_OP_SEQUENCE,
+	asn_DEF_RRC_MessageID_tags_1,
+	sizeof(asn_DEF_RRC_MessageID_tags_1)
+		/sizeof(asn_DEF_RRC_MessageID_tags_1[0]), /* 1 */
+	asn_DEF_RRC_MessageID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RRC_MessageID_tags_1)
+		/sizeof(asn_DEF_RRC_MessageID_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_RRC_MessageID_1,
+	2,	/* Elements count */
+	&asn_SPC_RRC_MessageID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RRC-State.c b/e2sm/lib/RRC-State.c
new file mode 100644
index 0000000..391c70d
--- /dev/null
+++ b/e2sm/lib/RRC-State.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RRC-State.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RRC_State_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RRC_State_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RRC_State_value2enum_1[] = {
+	{ 0,	13,	"rrc-connected" },
+	{ 1,	12,	"rrc-inactive" },
+	{ 2,	8,	"rrc-idle" },
+	{ 3,	3,	"any" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RRC_State_enum2value_1[] = {
+	3,	/* any(3) */
+	0,	/* rrc-connected(0) */
+	2,	/* rrc-idle(2) */
+	1	/* rrc-inactive(1) */
+	/* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_RRC_State_specs_1 = {
+	asn_MAP_RRC_State_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RRC_State_enum2value_1,	/* N => "tag"; sorted by N */
+	4,	/* Number of elements in the maps */
+	5,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RRC_State_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RRC_State = {
+	"RRC-State",
+	"RRC-State",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_RRC_State_tags_1,
+	sizeof(asn_DEF_RRC_State_tags_1)
+		/sizeof(asn_DEF_RRC_State_tags_1[0]), /* 1 */
+	asn_DEF_RRC_State_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RRC_State_tags_1)
+		/sizeof(asn_DEF_RRC_State_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RRC_State_constr_1, &asn_PER_type_RRC_State_constr_1, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RRC_State_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RRCEvent.c b/e2sm/lib/RRCEvent.c
deleted file mode 100644
index 8113c36..0000000
--- a/e2sm/lib/RRCEvent.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RRCEvent.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_RRCEvent_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_RRCEvent_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }	/* (0..3,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_RRCEvent_value2enum_1[] = {
-	{ 0,	2,	"b1" },
-	{ 1,	2,	"a3" },
-	{ 2,	2,	"a5" },
-	{ 3,	8,	"periodic" }
-	/* This list is extensible */
-};
-static const unsigned int asn_MAP_RRCEvent_enum2value_1[] = {
-	1,	/* a3(1) */
-	2,	/* a5(2) */
-	0,	/* b1(0) */
-	3	/* periodic(3) */
-	/* This list is extensible */
-};
-const asn_INTEGER_specifics_t asn_SPC_RRCEvent_specs_1 = {
-	asn_MAP_RRCEvent_value2enum_1,	/* "tag" => N; sorted by tag */
-	asn_MAP_RRCEvent_enum2value_1,	/* N => "tag"; sorted by N */
-	4,	/* Number of elements in the maps */
-	5,	/* Extensions before this member */
-	1,	/* Strict enumeration */
-	0,	/* Native long size */
-	0
-};
-static const ber_tlv_tag_t asn_DEF_RRCEvent_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RRCEvent = {
-	"RRCEvent",
-	"RRCEvent",
-	&asn_OP_NativeEnumerated,
-	asn_DEF_RRCEvent_tags_1,
-	sizeof(asn_DEF_RRCEvent_tags_1)
-		/sizeof(asn_DEF_RRCEvent_tags_1[0]), /* 1 */
-	asn_DEF_RRCEvent_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RRCEvent_tags_1)
-		/sizeof(asn_DEF_RRCEvent_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RRCEvent_constr_1, &asn_PER_type_RRCEvent_constr_1, NativeEnumerated_constraint },
-	0, 0,	/* Defined elsewhere */
-	&asn_SPC_RRCEvent_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/RRCclass-LTE.c b/e2sm/lib/RRCclass-LTE.c
new file mode 100644
index 0000000..39c575f
--- /dev/null
+++ b/e2sm/lib/RRCclass-LTE.c
@@ -0,0 +1,78 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RRCclass-LTE.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RRCclass_LTE_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RRCclass_LTE_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  11 }	/* (0..11,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RRCclass_LTE_value2enum_1[] = {
+	{ 0,	8,	"bCCH-BCH" },
+	{ 1,	13,	"bCCH-BCH-MBMS" },
+	{ 2,	11,	"bCCH-DL-SCH" },
+	{ 3,	14,	"bCCH-DL-SCH-BR" },
+	{ 4,	16,	"bCCH-DL-SCH-MBMS" },
+	{ 5,	4,	"mCCH" },
+	{ 6,	4,	"pCCH" },
+	{ 7,	7,	"dL-CCCH" },
+	{ 8,	7,	"dL-DCCH" },
+	{ 9,	7,	"uL-CCCH" },
+	{ 10,	7,	"uL-DCCH" },
+	{ 11,	7,	"sC-MCCH" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RRCclass_LTE_enum2value_1[] = {
+	0,	/* bCCH-BCH(0) */
+	1,	/* bCCH-BCH-MBMS(1) */
+	2,	/* bCCH-DL-SCH(2) */
+	3,	/* bCCH-DL-SCH-BR(3) */
+	4,	/* bCCH-DL-SCH-MBMS(4) */
+	7,	/* dL-CCCH(7) */
+	8,	/* dL-DCCH(8) */
+	5,	/* mCCH(5) */
+	6,	/* pCCH(6) */
+	11,	/* sC-MCCH(11) */
+	9,	/* uL-CCCH(9) */
+	10	/* uL-DCCH(10) */
+	/* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_RRCclass_LTE_specs_1 = {
+	asn_MAP_RRCclass_LTE_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RRCclass_LTE_enum2value_1,	/* N => "tag"; sorted by N */
+	12,	/* Number of elements in the maps */
+	13,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RRCclass_LTE_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RRCclass_LTE = {
+	"RRCclass-LTE",
+	"RRCclass-LTE",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_RRCclass_LTE_tags_1,
+	sizeof(asn_DEF_RRCclass_LTE_tags_1)
+		/sizeof(asn_DEF_RRCclass_LTE_tags_1[0]), /* 1 */
+	asn_DEF_RRCclass_LTE_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RRCclass_LTE_tags_1)
+		/sizeof(asn_DEF_RRCclass_LTE_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RRCclass_LTE_constr_1, &asn_PER_type_RRCclass_LTE_constr_1, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RRCclass_LTE_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RRCclass-NR.c b/e2sm/lib/RRCclass-NR.c
new file mode 100644
index 0000000..b4bf12c
--- /dev/null
+++ b/e2sm/lib/RRCclass-NR.c
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "RRCclass-NR.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RRCclass_NR_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_RRCclass_NR_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  7 }	/* (0..7,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RRCclass_NR_value2enum_1[] = {
+	{ 0,	8,	"bCCH-BCH" },
+	{ 1,	11,	"bCCH-DL-SCH" },
+	{ 2,	7,	"dL-CCCH" },
+	{ 3,	7,	"dL-DCCH" },
+	{ 4,	4,	"pCCH" },
+	{ 5,	7,	"uL-CCCH" },
+	{ 6,	8,	"uL-CCCH1" },
+	{ 7,	7,	"uL-DCCH" }
+	/* This list is extensible */
+};
+static const unsigned int asn_MAP_RRCclass_NR_enum2value_1[] = {
+	0,	/* bCCH-BCH(0) */
+	1,	/* bCCH-DL-SCH(1) */
+	2,	/* dL-CCCH(2) */
+	3,	/* dL-DCCH(3) */
+	4,	/* pCCH(4) */
+	5,	/* uL-CCCH(5) */
+	6,	/* uL-CCCH1(6) */
+	7	/* uL-DCCH(7) */
+	/* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_RRCclass_NR_specs_1 = {
+	asn_MAP_RRCclass_NR_value2enum_1,	/* "tag" => N; sorted by tag */
+	asn_MAP_RRCclass_NR_enum2value_1,	/* N => "tag"; sorted by N */
+	8,	/* Number of elements in the maps */
+	9,	/* Extensions before this member */
+	1,	/* Strict enumeration */
+	0,	/* Native long size */
+	0
+};
+static const ber_tlv_tag_t asn_DEF_RRCclass_NR_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RRCclass_NR = {
+	"RRCclass-NR",
+	"RRCclass-NR",
+	&asn_OP_NativeEnumerated,
+	asn_DEF_RRCclass_NR_tags_1,
+	sizeof(asn_DEF_RRCclass_NR_tags_1)
+		/sizeof(asn_DEF_RRCclass_NR_tags_1[0]), /* 1 */
+	asn_DEF_RRCclass_NR_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RRCclass_NR_tags_1)
+		/sizeof(asn_DEF_RRCclass_NR_tags_1[0]), /* 1 */
+	{ &asn_OER_type_RRCclass_NR_constr_1, &asn_PER_type_RRCclass_NR_constr_1, NativeEnumerated_constraint },
+	0, 0,	/* Defined elsewhere */
+	&asn_SPC_RRCclass_NR_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/RSRP-Range.c b/e2sm/lib/RSRP-Range.c
deleted file mode 100644
index 31f13c4..0000000
--- a/e2sm/lib/RSRP-Range.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RSRP-Range.h"
-
-int
-RSRP_Range_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 127)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_RSRP_Range_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..127) */,
-	-1};
-asn_per_constraints_t asn_PER_type_RSRP_Range_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  127 }	/* (0..127) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_RSRP_Range_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RSRP_Range = {
-	"RSRP-Range",
-	"RSRP-Range",
-	&asn_OP_NativeInteger,
-	asn_DEF_RSRP_Range_tags_1,
-	sizeof(asn_DEF_RSRP_Range_tags_1)
-		/sizeof(asn_DEF_RSRP_Range_tags_1[0]), /* 1 */
-	asn_DEF_RSRP_Range_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RSRP_Range_tags_1)
-		/sizeof(asn_DEF_RSRP_Range_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RSRP_Range_constr_1, &asn_PER_type_RSRP_Range_constr_1, RSRP_Range_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/RSRP-RangeEUTRA.c b/e2sm/lib/RSRP-RangeEUTRA.c
deleted file mode 100644
index 5c646f7..0000000
--- a/e2sm/lib/RSRP-RangeEUTRA.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RSRP-RangeEUTRA.h"
-
-int
-RSRP_RangeEUTRA_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 97)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_RSRP_RangeEUTRA_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..97) */,
-	-1};
-asn_per_constraints_t asn_PER_type_RSRP_RangeEUTRA_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  97 }	/* (0..97) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_RSRP_RangeEUTRA_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RSRP_RangeEUTRA = {
-	"RSRP-RangeEUTRA",
-	"RSRP-RangeEUTRA",
-	&asn_OP_NativeInteger,
-	asn_DEF_RSRP_RangeEUTRA_tags_1,
-	sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1)
-		/sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1[0]), /* 1 */
-	asn_DEF_RSRP_RangeEUTRA_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1)
-		/sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RSRP_RangeEUTRA_constr_1, &asn_PER_type_RSRP_RangeEUTRA_constr_1, RSRP_RangeEUTRA_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/RSRQ-Range.c b/e2sm/lib/RSRQ-Range.c
deleted file mode 100644
index 0782d80..0000000
--- a/e2sm/lib/RSRQ-Range.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RSRQ-Range.h"
-
-int
-RSRQ_Range_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 127)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_RSRQ_Range_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..127) */,
-	-1};
-asn_per_constraints_t asn_PER_type_RSRQ_Range_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  127 }	/* (0..127) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_RSRQ_Range_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RSRQ_Range = {
-	"RSRQ-Range",
-	"RSRQ-Range",
-	&asn_OP_NativeInteger,
-	asn_DEF_RSRQ_Range_tags_1,
-	sizeof(asn_DEF_RSRQ_Range_tags_1)
-		/sizeof(asn_DEF_RSRQ_Range_tags_1[0]), /* 1 */
-	asn_DEF_RSRQ_Range_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RSRQ_Range_tags_1)
-		/sizeof(asn_DEF_RSRQ_Range_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RSRQ_Range_constr_1, &asn_PER_type_RSRQ_Range_constr_1, RSRQ_Range_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/RSRQ-RangeEUTRA.c b/e2sm/lib/RSRQ-RangeEUTRA.c
deleted file mode 100644
index 1de3c4e..0000000
--- a/e2sm/lib/RSRQ-RangeEUTRA.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RSRQ-RangeEUTRA.h"
-
-int
-RSRQ_RangeEUTRA_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 34)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_RSRQ_RangeEUTRA_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..34) */,
-	-1};
-asn_per_constraints_t asn_PER_type_RSRQ_RangeEUTRA_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 6,  6,  0,  34 }	/* (0..34) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_RSRQ_RangeEUTRA_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RSRQ_RangeEUTRA = {
-	"RSRQ-RangeEUTRA",
-	"RSRQ-RangeEUTRA",
-	&asn_OP_NativeInteger,
-	asn_DEF_RSRQ_RangeEUTRA_tags_1,
-	sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1)
-		/sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1[0]), /* 1 */
-	asn_DEF_RSRQ_RangeEUTRA_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1)
-		/sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RSRQ_RangeEUTRA_constr_1, &asn_PER_type_RSRQ_RangeEUTRA_constr_1, RSRQ_RangeEUTRA_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/RT-Period-IE.c b/e2sm/lib/RT-Period-IE.c
deleted file mode 100644
index 7edf20d..0000000
--- a/e2sm/lib/RT-Period-IE.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "RT-Period-IE.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_RT_Period_IE_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_RT_Period_IE_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  5,  5,  0,  19 }	/* (0..19,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_RT_Period_IE_value2enum_1[] = {
-	{ 0,	4,	"ms10" },
-	{ 1,	4,	"ms20" },
-	{ 2,	4,	"ms32" },
-	{ 3,	4,	"ms40" },
-	{ 4,	4,	"ms60" },
-	{ 5,	4,	"ms64" },
-	{ 6,	4,	"ms70" },
-	{ 7,	4,	"ms80" },
-	{ 8,	5,	"ms128" },
-	{ 9,	5,	"ms160" },
-	{ 10,	5,	"ms256" },
-	{ 11,	5,	"ms320" },
-	{ 12,	5,	"ms512" },
-	{ 13,	5,	"ms640" },
-	{ 14,	6,	"ms1024" },
-	{ 15,	6,	"ms1280" },
-	{ 16,	6,	"ms2048" },
-	{ 17,	6,	"ms2560" },
-	{ 18,	6,	"ms5120" },
-	{ 19,	7,	"ms10240" }
-	/* This list is extensible */
-};
-static const unsigned int asn_MAP_RT_Period_IE_enum2value_1[] = {
-	0,	/* ms10(0) */
-	14,	/* ms1024(14) */
-	19,	/* ms10240(19) */
-	8,	/* ms128(8) */
-	15,	/* ms1280(15) */
-	9,	/* ms160(9) */
-	1,	/* ms20(1) */
-	16,	/* ms2048(16) */
-	10,	/* ms256(10) */
-	17,	/* ms2560(17) */
-	2,	/* ms32(2) */
-	11,	/* ms320(11) */
-	3,	/* ms40(3) */
-	12,	/* ms512(12) */
-	18,	/* ms5120(18) */
-	4,	/* ms60(4) */
-	5,	/* ms64(5) */
-	13,	/* ms640(13) */
-	6,	/* ms70(6) */
-	7	/* ms80(7) */
-	/* This list is extensible */
-};
-const asn_INTEGER_specifics_t asn_SPC_RT_Period_IE_specs_1 = {
-	asn_MAP_RT_Period_IE_value2enum_1,	/* "tag" => N; sorted by tag */
-	asn_MAP_RT_Period_IE_enum2value_1,	/* N => "tag"; sorted by N */
-	20,	/* Number of elements in the maps */
-	21,	/* Extensions before this member */
-	1,	/* Strict enumeration */
-	0,	/* Native long size */
-	0
-};
-static const ber_tlv_tag_t asn_DEF_RT_Period_IE_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RT_Period_IE = {
-	"RT-Period-IE",
-	"RT-Period-IE",
-	&asn_OP_NativeEnumerated,
-	asn_DEF_RT_Period_IE_tags_1,
-	sizeof(asn_DEF_RT_Period_IE_tags_1)
-		/sizeof(asn_DEF_RT_Period_IE_tags_1[0]), /* 1 */
-	asn_DEF_RT_Period_IE_tags_1,	/* Same as above */
-	sizeof(asn_DEF_RT_Period_IE_tags_1)
-		/sizeof(asn_DEF_RT_Period_IE_tags_1[0]), /* 1 */
-	{ &asn_OER_type_RT_Period_IE_constr_1, &asn_PER_type_RT_Period_IE_constr_1, NativeEnumerated_constraint },
-	0, 0,	/* Defined elsewhere */
-	&asn_SPC_RT_Period_IE_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/Report-RANParameter-Item.c b/e2sm/lib/Report-RANParameter-Item.c
new file mode 100644
index 0000000..772e65e
--- /dev/null
+++ b/e2sm/lib/Report-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "Report-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_Report_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct Report_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Report_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct Report_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_Report_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_Report_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Report_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Report_RANParameter_Item_specs_1 = {
+	sizeof(struct Report_RANParameter_Item),
+	offsetof(struct Report_RANParameter_Item, _asn_ctx),
+	asn_MAP_Report_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_Report_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Report_RANParameter_Item = {
+	"Report-RANParameter-Item",
+	"Report-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_Report_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_Report_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_Report_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_Report_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_Report_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_Report_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_Report_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_Report_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/ResultsPerCSI-RS-Index.c b/e2sm/lib/ResultsPerCSI-RS-Index.c
deleted file mode 100644
index 36abbd9..0000000
--- a/e2sm/lib/ResultsPerCSI-RS-Index.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ResultsPerCSI-RS-Index.h"
-
-#include "MeasQuantityResults.h"
-asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_Index_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ResultsPerCSI_RS_Index, csi_RS_Index),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_CSI_RS_Index,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"csi-RS-Index"
-		},
-	{ ATF_POINTER, 1, offsetof(struct ResultsPerCSI_RS_Index, csi_RS_Results),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasQuantityResults,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"csi-RS-Results"
-		},
-};
-static const int asn_MAP_ResultsPerCSI_RS_Index_oms_1[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_ResultsPerCSI_RS_Index_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ResultsPerCSI_RS_Index_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-RS-Index */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-Results */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ResultsPerCSI_RS_Index_specs_1 = {
-	sizeof(struct ResultsPerCSI_RS_Index),
-	offsetof(struct ResultsPerCSI_RS_Index, _asn_ctx),
-	asn_MAP_ResultsPerCSI_RS_Index_tag2el_1,
-	2,	/* Count of tags in the map */
-	asn_MAP_ResultsPerCSI_RS_Index_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_Index = {
-	"ResultsPerCSI-RS-Index",
-	"ResultsPerCSI-RS-Index",
-	&asn_OP_SEQUENCE,
-	asn_DEF_ResultsPerCSI_RS_Index_tags_1,
-	sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1)
-		/sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1[0]), /* 1 */
-	asn_DEF_ResultsPerCSI_RS_Index_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1)
-		/sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_ResultsPerCSI_RS_Index_1,
-	2,	/* Elements count */
-	&asn_SPC_ResultsPerCSI_RS_Index_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ResultsPerCSI-RS-IndexList.c b/e2sm/lib/ResultsPerCSI-RS-IndexList.c
deleted file mode 100644
index d98d4d1..0000000
--- a/e2sm/lib/ResultsPerCSI-RS-IndexList.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ResultsPerCSI-RS-IndexList.h"
-
-#include "ResultsPerCSI-RS-Index.h"
-static asn_oer_constraints_t asn_OER_type_ResultsPerCSI_RS_IndexList_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..64)) */};
-asn_per_constraints_t asn_PER_type_ResultsPerCSI_RS_IndexList_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  64 }	/* (SIZE(1..64)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_IndexList_1[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_ResultsPerCSI_RS_Index,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ResultsPerCSI_RS_IndexList_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_ResultsPerCSI_RS_IndexList_specs_1 = {
-	sizeof(struct ResultsPerCSI_RS_IndexList),
-	offsetof(struct ResultsPerCSI_RS_IndexList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_IndexList = {
-	"ResultsPerCSI-RS-IndexList",
-	"ResultsPerCSI-RS-IndexList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ResultsPerCSI_RS_IndexList_tags_1,
-	sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1)
-		/sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1[0]), /* 1 */
-	asn_DEF_ResultsPerCSI_RS_IndexList_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1)
-		/sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1[0]), /* 1 */
-	{ &asn_OER_type_ResultsPerCSI_RS_IndexList_constr_1, &asn_PER_type_ResultsPerCSI_RS_IndexList_constr_1, SEQUENCE_OF_constraint },
-	asn_MBR_ResultsPerCSI_RS_IndexList_1,
-	1,	/* Single element */
-	&asn_SPC_ResultsPerCSI_RS_IndexList_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ResultsPerSSB-Index.c b/e2sm/lib/ResultsPerSSB-Index.c
deleted file mode 100644
index 5aca175..0000000
--- a/e2sm/lib/ResultsPerSSB-Index.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ResultsPerSSB-Index.h"
-
-#include "MeasQuantityResults.h"
-asn_TYPE_member_t asn_MBR_ResultsPerSSB_Index_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ResultsPerSSB_Index, ssb_Index),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_SSB_Index,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ssb-Index"
-		},
-	{ ATF_POINTER, 1, offsetof(struct ResultsPerSSB_Index, ssb_Results),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasQuantityResults,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"ssb-Results"
-		},
-};
-static const int asn_MAP_ResultsPerSSB_Index_oms_1[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_ResultsPerSSB_Index_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ResultsPerSSB_Index_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ssb-Results */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ResultsPerSSB_Index_specs_1 = {
-	sizeof(struct ResultsPerSSB_Index),
-	offsetof(struct ResultsPerSSB_Index, _asn_ctx),
-	asn_MAP_ResultsPerSSB_Index_tag2el_1,
-	2,	/* Count of tags in the map */
-	asn_MAP_ResultsPerSSB_Index_oms_1,	/* Optional members */
-	1, 0,	/* Root/Additions */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_Index = {
-	"ResultsPerSSB-Index",
-	"ResultsPerSSB-Index",
-	&asn_OP_SEQUENCE,
-	asn_DEF_ResultsPerSSB_Index_tags_1,
-	sizeof(asn_DEF_ResultsPerSSB_Index_tags_1)
-		/sizeof(asn_DEF_ResultsPerSSB_Index_tags_1[0]), /* 1 */
-	asn_DEF_ResultsPerSSB_Index_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ResultsPerSSB_Index_tags_1)
-		/sizeof(asn_DEF_ResultsPerSSB_Index_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_ResultsPerSSB_Index_1,
-	2,	/* Elements count */
-	&asn_SPC_ResultsPerSSB_Index_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ResultsPerSSB-IndexList.c b/e2sm/lib/ResultsPerSSB-IndexList.c
deleted file mode 100644
index 2d7e1ab..0000000
--- a/e2sm/lib/ResultsPerSSB-IndexList.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ResultsPerSSB-IndexList.h"
-
-#include "ResultsPerSSB-Index.h"
-static asn_oer_constraints_t asn_OER_type_ResultsPerSSB_IndexList_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..64)) */};
-asn_per_constraints_t asn_PER_type_ResultsPerSSB_IndexList_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  64 }	/* (SIZE(1..64)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_ResultsPerSSB_IndexList_1[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_ResultsPerSSB_Index,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_ResultsPerSSB_IndexList_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_ResultsPerSSB_IndexList_specs_1 = {
-	sizeof(struct ResultsPerSSB_IndexList),
-	offsetof(struct ResultsPerSSB_IndexList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_IndexList = {
-	"ResultsPerSSB-IndexList",
-	"ResultsPerSSB-IndexList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_ResultsPerSSB_IndexList_tags_1,
-	sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1)
-		/sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1[0]), /* 1 */
-	asn_DEF_ResultsPerSSB_IndexList_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1)
-		/sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1[0]), /* 1 */
-	{ &asn_OER_type_ResultsPerSSB_IndexList_constr_1, &asn_PER_type_ResultsPerSSB_IndexList_constr_1, SEQUENCE_OF_constraint },
-	asn_MBR_ResultsPerSSB_IndexList_1,
-	1,	/* Single element */
-	&asn_SPC_ResultsPerSSB_IndexList_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/S-NSSAI.c b/e2sm/lib/S-NSSAI.c
index 29b31b2..8f0588e 100644
--- a/e2sm/lib/S-NSSAI.c
+++ b/e2sm/lib/S-NSSAI.c
@@ -1,96 +1,28 @@
 /*
  * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
  * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
  */
 
 #include "S-NSSAI.h"
 
-static int
-memb_sST_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	size = st->size;
-	
-	if((size == 1)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static int
-memb_sD_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	size = st->size;
-	
-	if((size == 3)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_memb_sST_constr_2 CC_NOTUSED = {
-	{ 0, 0 },
-	1	/* (SIZE(1..1)) */};
-static asn_per_constraints_t asn_PER_memb_sST_constr_2 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  1,  1 }	/* (SIZE(1..1)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sD_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	3	/* (SIZE(3..3)) */};
-static asn_per_constraints_t asn_PER_memb_sD_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  3,  3 }	/* (SIZE(3..3)) */,
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_S_NSSAI_1[] = {
+static asn_TYPE_member_t asn_MBR_S_NSSAI_1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct S_NSSAI, sST),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_OCTET_STRING,
+		&asn_DEF_SST,
 		0,
-		{ &asn_OER_memb_sST_constr_2, &asn_PER_memb_sST_constr_2,  memb_sST_constraint_1 },
+		{ 0, 0, 0 },
 		0, 0, /* No default value */
 		"sST"
 		},
 	{ ATF_POINTER, 1, offsetof(struct S_NSSAI, sD),
 		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_OCTET_STRING,
+		&asn_DEF_SD,
 		0,
-		{ &asn_OER_memb_sD_constr_3, &asn_PER_memb_sD_constr_3,  memb_sD_constraint_1 },
+		{ 0, 0, 0 },
 		0, 0, /* No default value */
 		"sD"
 		},
@@ -103,14 +35,14 @@
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sST */
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sD */
 };
-asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1 = {
+static asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1 = {
 	sizeof(struct S_NSSAI),
 	offsetof(struct S_NSSAI, _asn_ctx),
 	asn_MAP_S_NSSAI_tag2el_1,
 	2,	/* Count of tags in the map */
 	asn_MAP_S_NSSAI_oms_1,	/* Optional members */
 	1, 0,	/* Root/Additions */
-	-1,	/* First extension addition */
+	2,	/* First extension addition */
 };
 asn_TYPE_descriptor_t asn_DEF_S_NSSAI = {
 	"S-NSSAI",
diff --git a/e2sm/lib/SD.c b/e2sm/lib/SD.c
new file mode 100644
index 0000000..aa3655d
--- /dev/null
+++ b/e2sm/lib/SD.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "SD.h"
+
+int
+SD_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 3)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SD_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	3	/* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_SD_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  3,  3 }	/* (SIZE(3..3)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SD_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SD = {
+	"SD",
+	"SD",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_SD_tags_1,
+	sizeof(asn_DEF_SD_tags_1)
+		/sizeof(asn_DEF_SD_tags_1[0]), /* 1 */
+	asn_DEF_SD_tags_1,	/* Same as above */
+	sizeof(asn_DEF_SD_tags_1)
+		/sizeof(asn_DEF_SD_tags_1[0]), /* 1 */
+	{ &asn_OER_type_SD_constr_1, &asn_PER_type_SD_constr_1, SD_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/SINR-Range.c b/e2sm/lib/SINR-Range.c
deleted file mode 100644
index 5c1f4ba..0000000
--- a/e2sm/lib/SINR-Range.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "SINR-Range.h"
-
-int
-SINR_Range_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 127)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_SINR_Range_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..127) */,
-	-1};
-asn_per_constraints_t asn_PER_type_SINR_Range_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  127 }	/* (0..127) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_SINR_Range_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_SINR_Range = {
-	"SINR-Range",
-	"SINR-Range",
-	&asn_OP_NativeInteger,
-	asn_DEF_SINR_Range_tags_1,
-	sizeof(asn_DEF_SINR_Range_tags_1)
-		/sizeof(asn_DEF_SINR_Range_tags_1[0]), /* 1 */
-	asn_DEF_SINR_Range_tags_1,	/* Same as above */
-	sizeof(asn_DEF_SINR_Range_tags_1)
-		/sizeof(asn_DEF_SINR_Range_tags_1[0]), /* 1 */
-	{ &asn_OER_type_SINR_Range_constr_1, &asn_PER_type_SINR_Range_constr_1, SINR_Range_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/SINR-RangeEUTRA.c b/e2sm/lib/SINR-RangeEUTRA.c
deleted file mode 100644
index fdee3e7..0000000
--- a/e2sm/lib/SINR-RangeEUTRA.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "SINR-RangeEUTRA.h"
-
-int
-SINR_RangeEUTRA_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 127)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_SINR_RangeEUTRA_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..127) */,
-	-1};
-asn_per_constraints_t asn_PER_type_SINR_RangeEUTRA_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 7,  7,  0,  127 }	/* (0..127) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_SINR_RangeEUTRA_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_SINR_RangeEUTRA = {
-	"SINR-RangeEUTRA",
-	"SINR-RangeEUTRA",
-	&asn_OP_NativeInteger,
-	asn_DEF_SINR_RangeEUTRA_tags_1,
-	sizeof(asn_DEF_SINR_RangeEUTRA_tags_1)
-		/sizeof(asn_DEF_SINR_RangeEUTRA_tags_1[0]), /* 1 */
-	asn_DEF_SINR_RangeEUTRA_tags_1,	/* Same as above */
-	sizeof(asn_DEF_SINR_RangeEUTRA_tags_1)
-		/sizeof(asn_DEF_SINR_RangeEUTRA_tags_1[0]), /* 1 */
-	{ &asn_OER_type_SINR_RangeEUTRA_constr_1, &asn_PER_type_SINR_RangeEUTRA_constr_1, SINR_RangeEUTRA_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/SSB-Index.c b/e2sm/lib/SSB-Index.c
deleted file mode 100644
index 3f9975e..0000000
--- a/e2sm/lib/SSB-Index.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "SSB-Index.h"
-
-int
-SSB_Index_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 63)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_SSB_Index_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..63) */,
-	-1};
-asn_per_constraints_t asn_PER_type_SSB_Index_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 6,  6,  0,  63 }	/* (0..63) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_SSB_Index_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_SSB_Index = {
-	"SSB-Index",
-	"SSB-Index",
-	&asn_OP_NativeInteger,
-	asn_DEF_SSB_Index_tags_1,
-	sizeof(asn_DEF_SSB_Index_tags_1)
-		/sizeof(asn_DEF_SSB_Index_tags_1[0]), /* 1 */
-	asn_DEF_SSB_Index_tags_1,	/* Same as above */
-	sizeof(asn_DEF_SSB_Index_tags_1)
-		/sizeof(asn_DEF_SSB_Index_tags_1[0]), /* 1 */
-	{ &asn_OER_type_SSB_Index_constr_1, &asn_PER_type_SSB_Index_constr_1, SSB_Index_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/SST.c b/e2sm/lib/SST.c
new file mode 100644
index 0000000..2712cd1
--- /dev/null
+++ b/e2sm/lib/SST.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "SST.h"
+
+int
+SST_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	size = st->size;
+	
+	if((size == 1)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SST_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	1	/* (SIZE(1..1)) */};
+asn_per_constraints_t asn_PER_type_SST_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 0,  0,  1,  1 }	/* (SIZE(1..1)) */,
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SST_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SST = {
+	"SST",
+	"SST",
+	&asn_OP_OCTET_STRING,
+	asn_DEF_SST_tags_1,
+	sizeof(asn_DEF_SST_tags_1)
+		/sizeof(asn_DEF_SST_tags_1[0]), /* 1 */
+	asn_DEF_SST_tags_1,	/* Same as above */
+	sizeof(asn_DEF_SST_tags_1)
+		/sizeof(asn_DEF_SST_tags_1[0]), /* 1 */
+	{ &asn_OER_type_SST_constr_1, &asn_PER_type_SST_constr_1, SST_constraint },
+	0, 0,	/* No members */
+	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
+};
+
diff --git a/e2sm/lib/ServCellIndex.c b/e2sm/lib/ServCellIndex.c
deleted file mode 100644
index a7dec96..0000000
--- a/e2sm/lib/ServCellIndex.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ServCellIndex.h"
-
-int
-ServCellIndex_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	long value;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	value = *(const long *)sptr;
-	
-	if((value >= 0 && value <= 31)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_ServCellIndex_constr_1 CC_NOTUSED = {
-	{ 1, 1 }	/* (0..31) */,
-	-1};
-asn_per_constraints_t asn_PER_type_ServCellIndex_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 5,  5,  0,  31 }	/* (0..31) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_ServCellIndex_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_ServCellIndex = {
-	"ServCellIndex",
-	"ServCellIndex",
-	&asn_OP_NativeInteger,
-	asn_DEF_ServCellIndex_tags_1,
-	sizeof(asn_DEF_ServCellIndex_tags_1)
-		/sizeof(asn_DEF_ServCellIndex_tags_1[0]), /* 1 */
-	asn_DEF_ServCellIndex_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ServCellIndex_tags_1)
-		/sizeof(asn_DEF_ServCellIndex_tags_1[0]), /* 1 */
-	{ &asn_OER_type_ServCellIndex_constr_1, &asn_PER_type_ServCellIndex_constr_1, ServCellIndex_constraint },
-	0, 0,	/* No members */
-	0	/* No specifics */
-};
-
diff --git a/e2sm/lib/ServedPlmnPerCellListItem.c b/e2sm/lib/ServedPlmnPerCellListItem.c
deleted file mode 100644
index 4f10db7..0000000
--- a/e2sm/lib/ServedPlmnPerCellListItem.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ServedPlmnPerCellListItem.h"
-
-#include "FGC-DU-PM-Container.h"
-#include "EPC-DU-PM-Container.h"
-asn_TYPE_member_t asn_MBR_ServedPlmnPerCellListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct ServedPlmnPerCellListItem, pLMN_Identity),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_PLMN_Identity,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"pLMN-Identity"
-		},
-	{ ATF_POINTER, 2, offsetof(struct ServedPlmnPerCellListItem, du_PM_5GC),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_FGC_DU_PM_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"du-PM-5GC"
-		},
-	{ ATF_POINTER, 1, offsetof(struct ServedPlmnPerCellListItem, du_PM_EPC),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_EPC_DU_PM_Container,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"du-PM-EPC"
-		},
-};
-static const int asn_MAP_ServedPlmnPerCellListItem_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_ServedPlmnPerCellListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ServedPlmnPerCellListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* du-PM-5GC */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* du-PM-EPC */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ServedPlmnPerCellListItem_specs_1 = {
-	sizeof(struct ServedPlmnPerCellListItem),
-	offsetof(struct ServedPlmnPerCellListItem, _asn_ctx),
-	asn_MAP_ServedPlmnPerCellListItem_tag2el_1,
-	3,	/* Count of tags in the map */
-	asn_MAP_ServedPlmnPerCellListItem_oms_1,	/* Optional members */
-	2, 0,	/* Root/Additions */
-	3,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ServedPlmnPerCellListItem = {
-	"ServedPlmnPerCellListItem",
-	"ServedPlmnPerCellListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_ServedPlmnPerCellListItem_tags_1,
-	sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1)
-		/sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1[0]), /* 1 */
-	asn_DEF_ServedPlmnPerCellListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1)
-		/sizeof(asn_DEF_ServedPlmnPerCellListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_ServedPlmnPerCellListItem_1,
-	3,	/* Elements count */
-	&asn_SPC_ServedPlmnPerCellListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/ServingCell-ARFCN.c b/e2sm/lib/ServingCell-ARFCN.c
new file mode 100644
index 0000000..1e6bf06
--- /dev/null
+++ b/e2sm/lib/ServingCell-ARFCN.c
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "ServingCell-ARFCN.h"
+
+#include "NR-ARFCN.h"
+static asn_oer_constraints_t asn_OER_type_ServingCell_ARFCN_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_ServingCell_ARFCN_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ServingCell_ARFCN_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct ServingCell_ARFCN, choice.nR),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_ARFCN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct ServingCell_ARFCN, choice.eUTRA),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E_UTRA_ARFCN,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ServingCell_ARFCN_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA */
+};
+asn_CHOICE_specifics_t asn_SPC_ServingCell_ARFCN_specs_1 = {
+	sizeof(struct ServingCell_ARFCN),
+	offsetof(struct ServingCell_ARFCN, _asn_ctx),
+	offsetof(struct ServingCell_ARFCN, present),
+	sizeof(((struct ServingCell_ARFCN *)0)->present),
+	asn_MAP_ServingCell_ARFCN_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_ServingCell_ARFCN = {
+	"ServingCell-ARFCN",
+	"ServingCell-ARFCN",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ServingCell_ARFCN_constr_1, &asn_PER_type_ServingCell_ARFCN_constr_1, CHOICE_constraint },
+	asn_MBR_ServingCell_ARFCN_1,
+	2,	/* Elements count */
+	&asn_SPC_ServingCell_ARFCN_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/ServingCell-PCI.c b/e2sm/lib/ServingCell-PCI.c
new file mode 100644
index 0000000..191d27f
--- /dev/null
+++ b/e2sm/lib/ServingCell-PCI.c
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "ServingCell-PCI.h"
+
+static asn_oer_constraints_t asn_OER_type_ServingCell_PCI_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_ServingCell_PCI_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ServingCell_PCI_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct ServingCell_PCI, choice.nR),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NR_PCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"nR"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct ServingCell_PCI, choice.eUTRA),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_E_UTRA_PCI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eUTRA"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_ServingCell_PCI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA */
+};
+asn_CHOICE_specifics_t asn_SPC_ServingCell_PCI_specs_1 = {
+	sizeof(struct ServingCell_PCI),
+	offsetof(struct ServingCell_PCI, _asn_ctx),
+	offsetof(struct ServingCell_PCI, present),
+	sizeof(((struct ServingCell_PCI *)0)->present),
+	asn_MAP_ServingCell_PCI_tag2el_1,
+	2,	/* Count of tags in the map */
+	0, 0,
+	2	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_ServingCell_PCI = {
+	"ServingCell-PCI",
+	"ServingCell-PCI",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_ServingCell_PCI_constr_1, &asn_PER_type_ServingCell_PCI_constr_1, CHOICE_constraint },
+	asn_MBR_ServingCell_PCI_1,
+	2,	/* Elements count */
+	&asn_SPC_ServingCell_PCI_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/ServingCellMeasurements.c b/e2sm/lib/ServingCellMeasurements.c
deleted file mode 100644
index 8ff6d3b..0000000
--- a/e2sm/lib/ServingCellMeasurements.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "ServingCellMeasurements.h"
-
-#include "MeasResultServMOList.h"
-#include "MeasResultPCell.h"
-static asn_oer_constraints_t asn_OER_type_ServingCellMeasurements_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-asn_per_constraints_t asn_PER_type_ServingCellMeasurements_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }	/* (0..1,...) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_ServingCellMeasurements_1[] = {
-	{ ATF_POINTER, 0, offsetof(struct ServingCellMeasurements, choice.nr_measResultServingMOList),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasResultServMOList,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"nr-measResultServingMOList"
-		},
-	{ ATF_POINTER, 0, offsetof(struct ServingCellMeasurements, choice.eutra_measResultPCell),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_MeasResultPCell,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"eutra-measResultPCell"
-		},
-};
-static const asn_TYPE_tag2member_t asn_MAP_ServingCellMeasurements_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nr-measResultServingMOList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eutra-measResultPCell */
-};
-asn_CHOICE_specifics_t asn_SPC_ServingCellMeasurements_specs_1 = {
-	sizeof(struct ServingCellMeasurements),
-	offsetof(struct ServingCellMeasurements, _asn_ctx),
-	offsetof(struct ServingCellMeasurements, present),
-	sizeof(((struct ServingCellMeasurements *)0)->present),
-	asn_MAP_ServingCellMeasurements_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0,
-	2	/* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_ServingCellMeasurements = {
-	"ServingCellMeasurements",
-	"ServingCellMeasurements",
-	&asn_OP_CHOICE,
-	0,	/* No effective tags (pointer) */
-	0,	/* No effective tags (count) */
-	0,	/* No tags (pointer) */
-	0,	/* No tags (count) */
-	{ &asn_OER_type_ServingCellMeasurements_constr_1, &asn_PER_type_ServingCellMeasurements_constr_1, CHOICE_constraint },
-	asn_MBR_ServingCellMeasurements_1,
-	2,	/* Elements count */
-	&asn_SPC_ServingCellMeasurements_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/SlicePerPlmnPerCellListItem.c b/e2sm/lib/SlicePerPlmnPerCellListItem.c
deleted file mode 100644
index 021489f..0000000
--- a/e2sm/lib/SlicePerPlmnPerCellListItem.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "SlicePerPlmnPerCellListItem.h"
-
-#include "FQIPERSlicesPerPlmnPerCellListItem.h"
-static int
-memb_fQIPERSlicesPerPlmnPerCellList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 64)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_type_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  64 }	/* (SIZE(1..64)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  64 }	/* (SIZE(1..64)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_fQIPERSlicesPerPlmnPerCellList_3[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_FQIPERSlicesPerPlmnPerCellListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_fQIPERSlicesPerPlmnPerCellList_specs_3 = {
-	sizeof(struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList),
-	offsetof(struct SlicePerPlmnPerCellListItem__fQIPERSlicesPerPlmnPerCellList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_fQIPERSlicesPerPlmnPerCellList_3 = {
-	"fQIPERSlicesPerPlmnPerCellList",
-	"fQIPERSlicesPerPlmnPerCellList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3,
-	sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3)
-		/sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[0]) - 1, /* 1 */
-	asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3,	/* Same as above */
-	sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3)
-		/sizeof(asn_DEF_fQIPERSlicesPerPlmnPerCellList_tags_3[0]), /* 2 */
-	{ &asn_OER_type_fQIPERSlicesPerPlmnPerCellList_constr_3, &asn_PER_type_fQIPERSlicesPerPlmnPerCellList_constr_3, SEQUENCE_OF_constraint },
-	asn_MBR_fQIPERSlicesPerPlmnPerCellList_3,
-	1,	/* Single element */
-	&asn_SPC_fQIPERSlicesPerPlmnPerCellList_specs_3	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SlicePerPlmnPerCellListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct SlicePerPlmnPerCellListItem, sliceID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_S_NSSAI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"sliceID"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct SlicePerPlmnPerCellListItem, fQIPERSlicesPerPlmnPerCellList),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		0,
-		&asn_DEF_fQIPERSlicesPerPlmnPerCellList_3,
-		0,
-		{ &asn_OER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3, &asn_PER_memb_fQIPERSlicesPerPlmnPerCellList_constr_3,  memb_fQIPERSlicesPerPlmnPerCellList_constraint_1 },
-		0, 0, /* No default value */
-		"fQIPERSlicesPerPlmnPerCellList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_SlicePerPlmnPerCellListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SlicePerPlmnPerCellListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sliceID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fQIPERSlicesPerPlmnPerCellList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SlicePerPlmnPerCellListItem_specs_1 = {
-	sizeof(struct SlicePerPlmnPerCellListItem),
-	offsetof(struct SlicePerPlmnPerCellListItem, _asn_ctx),
-	asn_MAP_SlicePerPlmnPerCellListItem_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SlicePerPlmnPerCellListItem = {
-	"SlicePerPlmnPerCellListItem",
-	"SlicePerPlmnPerCellListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_SlicePerPlmnPerCellListItem_tags_1,
-	sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1)
-		/sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1[0]), /* 1 */
-	asn_DEF_SlicePerPlmnPerCellListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1)
-		/sizeof(asn_DEF_SlicePerPlmnPerCellListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_SlicePerPlmnPerCellListItem_1,
-	2,	/* Elements count */
-	&asn_SPC_SlicePerPlmnPerCellListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/SliceToReportListItem.c b/e2sm/lib/SliceToReportListItem.c
deleted file mode 100644
index b466fc3..0000000
--- a/e2sm/lib/SliceToReportListItem.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "SliceToReportListItem.h"
-
-#include "FQIPERSlicesPerPlmnListItem.h"
-static int
-memb_fQIPERSlicesPerPlmnList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	/* Determine the number of elements */
-	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
-	
-	if((size >= 1 && size <= 64)) {
-		/* Perform validation of the inner elements */
-		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-static asn_oer_constraints_t asn_OER_type_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_type_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  64 }	/* (SIZE(1..64)) */,
-	0, 0	/* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = {
-	{ 0, 0 },
-	-1	/* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_memb_fQIPERSlicesPerPlmnList_constr_3 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 6,  6,  1,  64 }	/* (SIZE(1..64)) */,
-	0, 0	/* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_fQIPERSlicesPerPlmnList_3[] = {
-	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-		0,
-		&asn_DEF_FQIPERSlicesPerPlmnListItem,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		""
-		},
-};
-static const ber_tlv_tag_t asn_DEF_fQIPERSlicesPerPlmnList_tags_3[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_fQIPERSlicesPerPlmnList_specs_3 = {
-	sizeof(struct SliceToReportListItem__fQIPERSlicesPerPlmnList),
-	offsetof(struct SliceToReportListItem__fQIPERSlicesPerPlmnList, _asn_ctx),
-	0,	/* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_fQIPERSlicesPerPlmnList_3 = {
-	"fQIPERSlicesPerPlmnList",
-	"fQIPERSlicesPerPlmnList",
-	&asn_OP_SEQUENCE_OF,
-	asn_DEF_fQIPERSlicesPerPlmnList_tags_3,
-	sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3)
-		/sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3[0]) - 1, /* 1 */
-	asn_DEF_fQIPERSlicesPerPlmnList_tags_3,	/* Same as above */
-	sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3)
-		/sizeof(asn_DEF_fQIPERSlicesPerPlmnList_tags_3[0]), /* 2 */
-	{ &asn_OER_type_fQIPERSlicesPerPlmnList_constr_3, &asn_PER_type_fQIPERSlicesPerPlmnList_constr_3, SEQUENCE_OF_constraint },
-	asn_MBR_fQIPERSlicesPerPlmnList_3,
-	1,	/* Single element */
-	&asn_SPC_fQIPERSlicesPerPlmnList_specs_3	/* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SliceToReportListItem_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct SliceToReportListItem, sliceID),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_S_NSSAI,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"sliceID"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct SliceToReportListItem, fQIPERSlicesPerPlmnList),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		0,
-		&asn_DEF_fQIPERSlicesPerPlmnList_3,
-		0,
-		{ &asn_OER_memb_fQIPERSlicesPerPlmnList_constr_3, &asn_PER_memb_fQIPERSlicesPerPlmnList_constr_3,  memb_fQIPERSlicesPerPlmnList_constraint_1 },
-		0, 0, /* No default value */
-		"fQIPERSlicesPerPlmnList"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_SliceToReportListItem_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SliceToReportListItem_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sliceID */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fQIPERSlicesPerPlmnList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SliceToReportListItem_specs_1 = {
-	sizeof(struct SliceToReportListItem),
-	offsetof(struct SliceToReportListItem, _asn_ctx),
-	asn_MAP_SliceToReportListItem_tag2el_1,
-	2,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	2,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SliceToReportListItem = {
-	"SliceToReportListItem",
-	"SliceToReportListItem",
-	&asn_OP_SEQUENCE,
-	asn_DEF_SliceToReportListItem_tags_1,
-	sizeof(asn_DEF_SliceToReportListItem_tags_1)
-		/sizeof(asn_DEF_SliceToReportListItem_tags_1[0]), /* 1 */
-	asn_DEF_SliceToReportListItem_tags_1,	/* Same as above */
-	sizeof(asn_DEF_SliceToReportListItem_tags_1)
-		/sizeof(asn_DEF_SliceToReportListItem_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_SliceToReportListItem_1,
-	2,	/* Elements count */
-	&asn_SPC_SliceToReportListItem_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/SubscriberProfileIDforRFP.c b/e2sm/lib/SubscriberProfileIDforRFP.c
new file mode 100644
index 0000000..ab0182d
--- /dev/null
+++ b/e2sm/lib/SubscriberProfileIDforRFP.c
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "SubscriberProfileIDforRFP.h"
+
+int
+SubscriberProfileIDforRFP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 256)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = {
+	{ 2, 1 }	/* (1..256) */,
+	-1};
+static asn_per_constraints_t asn_PER_type_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED,	 8,  8,  1,  256 }	/* (1..256) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SubscriberProfileIDforRFP_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP = {
+	"SubscriberProfileIDforRFP",
+	"SubscriberProfileIDforRFP",
+	&asn_OP_NativeInteger,
+	asn_DEF_SubscriberProfileIDforRFP_tags_1,
+	sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1)
+		/sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */
+	asn_DEF_SubscriberProfileIDforRFP_tags_1,	/* Same as above */
+	sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1)
+		/sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */
+	{ &asn_OER_type_SubscriberProfileIDforRFP_constr_1, &asn_PER_type_SubscriberProfileIDforRFP_constr_1, SubscriberProfileIDforRFP_constraint },
+	0, 0,	/* No members */
+	0	/* No specifics */
+};
+
diff --git a/e2sm/lib/SupportedSULBandList.c b/e2sm/lib/SupportedSULBandList.c
new file mode 100644
index 0000000..7e74326
--- /dev/null
+++ b/e2sm/lib/SupportedSULBandList.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "SupportedSULBandList.h"
+
+#include "SupportedSULFreqBandItem.h"
+static asn_oer_constraints_t asn_OER_type_SupportedSULBandList_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(0..32)) */};
+asn_per_constraints_t asn_PER_type_SupportedSULBandList_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 6,  6,  0,  32 }	/* (SIZE(0..32)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SupportedSULBandList_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_SupportedSULFreqBandItem,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_SupportedSULBandList_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_SupportedSULBandList_specs_1 = {
+	sizeof(struct SupportedSULBandList),
+	offsetof(struct SupportedSULBandList, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_SupportedSULBandList = {
+	"SupportedSULBandList",
+	"SupportedSULBandList",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_SupportedSULBandList_tags_1,
+	sizeof(asn_DEF_SupportedSULBandList_tags_1)
+		/sizeof(asn_DEF_SupportedSULBandList_tags_1[0]), /* 1 */
+	asn_DEF_SupportedSULBandList_tags_1,	/* Same as above */
+	sizeof(asn_DEF_SupportedSULBandList_tags_1)
+		/sizeof(asn_DEF_SupportedSULBandList_tags_1[0]), /* 1 */
+	{ &asn_OER_type_SupportedSULBandList_constr_1, &asn_PER_type_SupportedSULBandList_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_SupportedSULBandList_1,
+	1,	/* Single element */
+	&asn_SPC_SupportedSULBandList_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/SupportedSULFreqBandItem.c b/e2sm/lib/SupportedSULFreqBandItem.c
new file mode 100644
index 0000000..ea7192f
--- /dev/null
+++ b/e2sm/lib/SupportedSULFreqBandItem.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "SupportedSULFreqBandItem.h"
+
+static int
+memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 1024)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  10,  10,  1,  1024 }	/* (1..1024,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem, freqBandIndicatorNr),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_freqBandIndicatorNr_constr_2, &asn_PER_memb_freqBandIndicatorNr_constr_2,  memb_freqBandIndicatorNr_constraint_1 },
+		0, 0, /* No default value */
+		"freqBandIndicatorNr"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_SupportedSULFreqBandItem_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SupportedSULFreqBandItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* freqBandIndicatorNr */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1 = {
+	sizeof(struct SupportedSULFreqBandItem),
+	offsetof(struct SupportedSULFreqBandItem, _asn_ctx),
+	asn_MAP_SupportedSULFreqBandItem_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem = {
+	"SupportedSULFreqBandItem",
+	"SupportedSULFreqBandItem",
+	&asn_OP_SEQUENCE,
+	asn_DEF_SupportedSULFreqBandItem_tags_1,
+	sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1)
+		/sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */
+	asn_DEF_SupportedSULFreqBandItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1)
+		/sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_SupportedSULFreqBandItem_1,
+	1,	/* Elements count */
+	&asn_SPC_SupportedSULFreqBandItem_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/TimeStamp.c b/e2sm/lib/TimeStamp.c
deleted file mode 100644
index 6d6fd9c..0000000
--- a/e2sm/lib/TimeStamp.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "TimeStamp.h"
-
-int
-TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
-			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
-	const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
-	size_t size;
-	
-	if(!sptr) {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: value not given (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-	
-	size = st->size;
-	
-	if((size == 8)) {
-		/* Constraint check succeeded */
-		return 0;
-	} else {
-		ASN__CTFAIL(app_key, td, sptr,
-			"%s: constraint failed (%s:%d)",
-			td->name, __FILE__, __LINE__);
-		return -1;
-	}
-}
-
-/*
- * This type is implemented using OCTET_STRING,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_TimeStamp_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	8	/* (SIZE(8..8)) */};
-asn_per_constraints_t asn_PER_type_TimeStamp_constr_1 CC_NOTUSED = {
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	{ APC_CONSTRAINED,	 0,  0,  8,  8 }	/* (SIZE(8..8)) */,
-	0, 0	/* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_TimeStamp_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_TimeStamp = {
-	"TimeStamp",
-	"TimeStamp",
-	&asn_OP_OCTET_STRING,
-	asn_DEF_TimeStamp_tags_1,
-	sizeof(asn_DEF_TimeStamp_tags_1)
-		/sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */
-	asn_DEF_TimeStamp_tags_1,	/* Same as above */
-	sizeof(asn_DEF_TimeStamp_tags_1)
-		/sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */
-	{ &asn_OER_type_TimeStamp_constr_1, &asn_PER_type_TimeStamp_constr_1, TimeStamp_constraint },
-	0, 0,	/* No members */
-	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
-};
-
diff --git a/e2sm/lib/Trigger-ConditionIE-Item.c b/e2sm/lib/Trigger-ConditionIE-Item.c
deleted file mode 100644
index dd0e6f4..0000000
--- a/e2sm/lib/Trigger-ConditionIE-Item.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "Trigger-ConditionIE-Item.h"
-
-asn_TYPE_member_t asn_MBR_Trigger_ConditionIE_Item_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct Trigger_ConditionIE_Item, report_Period_IE),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RT_Period_IE,
-		0,
-		{ 0, 0, 0 },
-		0, 0, /* No default value */
-		"report-Period-IE"
-		},
-};
-static const ber_tlv_tag_t asn_DEF_Trigger_ConditionIE_Item_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_Trigger_ConditionIE_Item_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* report-Period-IE */
-};
-asn_SEQUENCE_specifics_t asn_SPC_Trigger_ConditionIE_Item_specs_1 = {
-	sizeof(struct Trigger_ConditionIE_Item),
-	offsetof(struct Trigger_ConditionIE_Item, _asn_ctx),
-	asn_MAP_Trigger_ConditionIE_Item_tag2el_1,
-	1,	/* Count of tags in the map */
-	0, 0, 0,	/* Optional elements (not needed) */
-	1,	/* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_Trigger_ConditionIE_Item = {
-	"Trigger-ConditionIE-Item",
-	"Trigger-ConditionIE-Item",
-	&asn_OP_SEQUENCE,
-	asn_DEF_Trigger_ConditionIE_Item_tags_1,
-	sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1)
-		/sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1[0]), /* 1 */
-	asn_DEF_Trigger_ConditionIE_Item_tags_1,	/* Same as above */
-	sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1)
-		/sizeof(asn_DEF_Trigger_ConditionIE_Item_tags_1[0]), /* 1 */
-	{ 0, 0, SEQUENCE_constraint },
-	asn_MBR_Trigger_ConditionIE_Item_1,
-	1,	/* Elements count */
-	&asn_SPC_Trigger_ConditionIE_Item_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/TriggerType-Choice-L2state.c b/e2sm/lib/TriggerType-Choice-L2state.c
new file mode 100644
index 0000000..bfb7433
--- /dev/null
+++ b/e2sm/lib/TriggerType-Choice-L2state.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "TriggerType-Choice-L2state.h"
+
+asn_TYPE_member_t asn_MBR_TriggerType_Choice_L2state_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct TriggerType_Choice_L2state, associatedL2variables),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Testing,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"associatedL2variables"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_TriggerType_Choice_L2state_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TriggerType_Choice_L2state_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* associatedL2variables */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TriggerType_Choice_L2state_specs_1 = {
+	sizeof(struct TriggerType_Choice_L2state),
+	offsetof(struct TriggerType_Choice_L2state, _asn_ctx),
+	asn_MAP_TriggerType_Choice_L2state_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TriggerType_Choice_L2state = {
+	"TriggerType-Choice-L2state",
+	"TriggerType-Choice-L2state",
+	&asn_OP_SEQUENCE,
+	asn_DEF_TriggerType_Choice_L2state_tags_1,
+	sizeof(asn_DEF_TriggerType_Choice_L2state_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_L2state_tags_1[0]), /* 1 */
+	asn_DEF_TriggerType_Choice_L2state_tags_1,	/* Same as above */
+	sizeof(asn_DEF_TriggerType_Choice_L2state_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_L2state_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_TriggerType_Choice_L2state_1,
+	1,	/* Elements count */
+	&asn_SPC_TriggerType_Choice_L2state_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/TriggerType-Choice-RRCstate-Item.c b/e2sm/lib/TriggerType-Choice-RRCstate-Item.c
new file mode 100644
index 0000000..5d95e41
--- /dev/null
+++ b/e2sm/lib/TriggerType-Choice-RRCstate-Item.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "TriggerType-Choice-RRCstate-Item.h"
+
+asn_TYPE_member_t asn_MBR_TriggerType_Choice_RRCstate_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct TriggerType_Choice_RRCstate_Item, stateChangedTo),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RRC_State,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"stateChangedTo"
+		},
+	{ ATF_POINTER, 1, offsetof(struct TriggerType_Choice_RRCstate_Item, logicalOR),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_LogicalOR,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"logicalOR"
+		},
+};
+static const int asn_MAP_TriggerType_Choice_RRCstate_Item_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TriggerType_Choice_RRCstate_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* stateChangedTo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TriggerType_Choice_RRCstate_Item_specs_1 = {
+	sizeof(struct TriggerType_Choice_RRCstate_Item),
+	offsetof(struct TriggerType_Choice_RRCstate_Item, _asn_ctx),
+	asn_MAP_TriggerType_Choice_RRCstate_Item_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_TriggerType_Choice_RRCstate_Item_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TriggerType_Choice_RRCstate_Item = {
+	"TriggerType-Choice-RRCstate-Item",
+	"TriggerType-Choice-RRCstate-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1,
+	sizeof(asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1[0]), /* 1 */
+	asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_RRCstate_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_TriggerType_Choice_RRCstate_Item_1,
+	2,	/* Elements count */
+	&asn_SPC_TriggerType_Choice_RRCstate_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/TriggerType-Choice-RRCstate.c b/e2sm/lib/TriggerType-Choice-RRCstate.c
new file mode 100644
index 0000000..b62aef3
--- /dev/null
+++ b/e2sm/lib/TriggerType-Choice-RRCstate.c
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "TriggerType-Choice-RRCstate.h"
+
+#include "TriggerType-Choice-RRCstate-Item.h"
+static int
+memb_rrcState_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	size_t size;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	/* Determine the number of elements */
+	size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+	
+	if((size >= 1 && size <= 8)) {
+		/* Perform validation of the inner elements */
+		return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_type_rrcState_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_rrcState_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 3,  3,  1,  8 }	/* (SIZE(1..8)) */,
+	0, 0	/* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rrcState_List_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_rrcState_List_constr_2 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 3,  3,  1,  8 }	/* (SIZE(1..8)) */,
+	0, 0	/* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_rrcState_List_2[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_TriggerType_Choice_RRCstate_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_rrcState_List_tags_2[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rrcState_List_specs_2 = {
+	sizeof(struct TriggerType_Choice_RRCstate__rrcState_List),
+	offsetof(struct TriggerType_Choice_RRCstate__rrcState_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rrcState_List_2 = {
+	"rrcState-List",
+	"rrcState-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_rrcState_List_tags_2,
+	sizeof(asn_DEF_rrcState_List_tags_2)
+		/sizeof(asn_DEF_rrcState_List_tags_2[0]) - 1, /* 1 */
+	asn_DEF_rrcState_List_tags_2,	/* Same as above */
+	sizeof(asn_DEF_rrcState_List_tags_2)
+		/sizeof(asn_DEF_rrcState_List_tags_2[0]), /* 2 */
+	{ &asn_OER_type_rrcState_List_constr_2, &asn_PER_type_rrcState_List_constr_2, SEQUENCE_OF_constraint },
+	asn_MBR_rrcState_List_2,
+	1,	/* Single element */
+	&asn_SPC_rrcState_List_specs_2	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TriggerType_Choice_RRCstate_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct TriggerType_Choice_RRCstate, rrcState_List),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		0,
+		&asn_DEF_rrcState_List_2,
+		0,
+		{ &asn_OER_memb_rrcState_List_constr_2, &asn_PER_memb_rrcState_List_constr_2,  memb_rrcState_List_constraint_1 },
+		0, 0, /* No default value */
+		"rrcState-List"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_TriggerType_Choice_RRCstate_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TriggerType_Choice_RRCstate_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rrcState-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TriggerType_Choice_RRCstate_specs_1 = {
+	sizeof(struct TriggerType_Choice_RRCstate),
+	offsetof(struct TriggerType_Choice_RRCstate, _asn_ctx),
+	asn_MAP_TriggerType_Choice_RRCstate_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TriggerType_Choice_RRCstate = {
+	"TriggerType-Choice-RRCstate",
+	"TriggerType-Choice-RRCstate",
+	&asn_OP_SEQUENCE,
+	asn_DEF_TriggerType_Choice_RRCstate_tags_1,
+	sizeof(asn_DEF_TriggerType_Choice_RRCstate_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_RRCstate_tags_1[0]), /* 1 */
+	asn_DEF_TriggerType_Choice_RRCstate_tags_1,	/* Same as above */
+	sizeof(asn_DEF_TriggerType_Choice_RRCstate_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_RRCstate_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_TriggerType_Choice_RRCstate_1,
+	1,	/* Elements count */
+	&asn_SPC_TriggerType_Choice_RRCstate_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/TriggerType-Choice-UEID.c b/e2sm/lib/TriggerType-Choice-UEID.c
new file mode 100644
index 0000000..26967e1
--- /dev/null
+++ b/e2sm/lib/TriggerType-Choice-UEID.c
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "TriggerType-Choice-UEID.h"
+
+static int
+memb_ueIDchange_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+	long value;
+	
+	if(!sptr) {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: value not given (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+	
+	value = *(const long *)sptr;
+	
+	if((value >= 1 && value <= 512)) {
+		/* Constraint check succeeded */
+		return 0;
+	} else {
+		ASN__CTFAIL(app_key, td, sptr,
+			"%s: constraint failed (%s:%d)",
+			td->name, __FILE__, __LINE__);
+		return -1;
+	}
+}
+
+static asn_oer_constraints_t asn_OER_memb_ueIDchange_ID_constr_2 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+static asn_per_constraints_t asn_PER_memb_ueIDchange_ID_constr_2 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  9,  9,  1,  512 }	/* (1..512,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_TriggerType_Choice_UEID_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct TriggerType_Choice_UEID, ueIDchange_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NativeInteger,
+		0,
+		{ &asn_OER_memb_ueIDchange_ID_constr_2, &asn_PER_memb_ueIDchange_ID_constr_2,  memb_ueIDchange_ID_constraint_1 },
+		0, 0, /* No default value */
+		"ueIDchange-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_TriggerType_Choice_UEID_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TriggerType_Choice_UEID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueIDchange-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TriggerType_Choice_UEID_specs_1 = {
+	sizeof(struct TriggerType_Choice_UEID),
+	offsetof(struct TriggerType_Choice_UEID, _asn_ctx),
+	asn_MAP_TriggerType_Choice_UEID_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TriggerType_Choice_UEID = {
+	"TriggerType-Choice-UEID",
+	"TriggerType-Choice-UEID",
+	&asn_OP_SEQUENCE,
+	asn_DEF_TriggerType_Choice_UEID_tags_1,
+	sizeof(asn_DEF_TriggerType_Choice_UEID_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_UEID_tags_1[0]), /* 1 */
+	asn_DEF_TriggerType_Choice_UEID_tags_1,	/* Same as above */
+	sizeof(asn_DEF_TriggerType_Choice_UEID_tags_1)
+		/sizeof(asn_DEF_TriggerType_Choice_UEID_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_TriggerType_Choice_UEID_1,
+	1,	/* Elements count */
+	&asn_SPC_TriggerType_Choice_UEID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/TriggerType-Choice.c b/e2sm/lib/TriggerType-Choice.c
new file mode 100644
index 0000000..230194b
--- /dev/null
+++ b/e2sm/lib/TriggerType-Choice.c
@@ -0,0 +1,78 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "TriggerType-Choice.h"
+
+#include "TriggerType-Choice-RRCstate.h"
+#include "TriggerType-Choice-UEID.h"
+#include "TriggerType-Choice-L2state.h"
+static asn_oer_constraints_t asn_OER_type_TriggerType_Choice_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_TriggerType_Choice_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }	/* (0..2,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_TriggerType_Choice_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct TriggerType_Choice, choice.triggerType_Choice_RRCstate),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_TriggerType_Choice_RRCstate,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"triggerType-Choice-RRCstate"
+		},
+	{ ATF_POINTER, 0, offsetof(struct TriggerType_Choice, choice.triggerType_Choice_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_TriggerType_Choice_UEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"triggerType-Choice-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct TriggerType_Choice, choice.triggerType_Choice_L2state),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_TriggerType_Choice_L2state,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"triggerType-Choice-L2state"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_TriggerType_Choice_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* triggerType-Choice-RRCstate */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggerType-Choice-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* triggerType-Choice-L2state */
+};
+asn_CHOICE_specifics_t asn_SPC_TriggerType_Choice_specs_1 = {
+	sizeof(struct TriggerType_Choice),
+	offsetof(struct TriggerType_Choice, _asn_ctx),
+	offsetof(struct TriggerType_Choice, present),
+	sizeof(((struct TriggerType_Choice *)0)->present),
+	asn_MAP_TriggerType_Choice_tag2el_1,
+	3,	/* Count of tags in the map */
+	0, 0,
+	3	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_TriggerType_Choice = {
+	"TriggerType-Choice",
+	"TriggerType-Choice",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_TriggerType_Choice_constr_1, &asn_PER_type_TriggerType_Choice_constr_1, CHOICE_constraint },
+	asn_MBR_TriggerType_Choice_1,
+	3,	/* Elements count */
+	&asn_SPC_TriggerType_Choice_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/TriggeringMessage.c b/e2sm/lib/TriggeringMessage.c
deleted file mode 100644
index 4af15f3..0000000
--- a/e2sm/lib/TriggeringMessage.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "TriggeringMessage.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_TriggeringMessage_constr_1 CC_NOTUSED = {
-	{ 0, 0 },
-	-1};
-static asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = {
-	{ APC_CONSTRAINED,	 2,  2,  0,  2 }	/* (0..2) */,
-	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
-	0, 0	/* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = {
-	{ 0,	18,	"initiating-message" },
-	{ 1,	18,	"successful-outcome" },
-	{ 2,	21,	"unsuccessfull-outcome" }
-};
-static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = {
-	0,	/* initiating-message(0) */
-	1,	/* successful-outcome(1) */
-	2	/* unsuccessfull-outcome(2) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = {
-	asn_MAP_TriggeringMessage_value2enum_1,	/* "tag" => N; sorted by tag */
-	asn_MAP_TriggeringMessage_enum2value_1,	/* N => "tag"; sorted by N */
-	3,	/* Number of elements in the maps */
-	0,	/* Enumeration is not extensible */
-	1,	/* Strict enumeration */
-	0,	/* Native long size */
-	0
-};
-static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = {
-	"TriggeringMessage",
-	"TriggeringMessage",
-	&asn_OP_NativeEnumerated,
-	asn_DEF_TriggeringMessage_tags_1,
-	sizeof(asn_DEF_TriggeringMessage_tags_1)
-		/sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */
-	asn_DEF_TriggeringMessage_tags_1,	/* Same as above */
-	sizeof(asn_DEF_TriggeringMessage_tags_1)
-		/sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */
-	{ &asn_OER_type_TriggeringMessage_constr_1, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint },
-	0, 0,	/* Defined elsewhere */
-	&asn_SPC_TriggeringMessage_specs_1	/* Additional specs */
-};
-
diff --git a/e2sm/lib/UE-Identity.c b/e2sm/lib/UE-Identity.c
deleted file mode 100644
index f0c1410..0000000
--- a/e2sm/lib/UE-Identity.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "E2SM-KPM-RC"
- * 	found in "e2sm-kpm-rc.asn"
- * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
- */
-
-#include "UE-Identity.h"
-
-/*
- * This type is implemented using OCTET_STRING,
- * so here we adjust the DEF accordingly.
- */
-static const ber_tlv_tag_t asn_DEF_UE_Identity_tags_1[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_UE_Identity = {
-	"UE-Identity",
-	"UE-Identity",
-	&asn_OP_OCTET_STRING,
-	asn_DEF_UE_Identity_tags_1,
-	sizeof(asn_DEF_UE_Identity_tags_1)
-		/sizeof(asn_DEF_UE_Identity_tags_1[0]), /* 1 */
-	asn_DEF_UE_Identity_tags_1,	/* Same as above */
-	sizeof(asn_DEF_UE_Identity_tags_1)
-		/sizeof(asn_DEF_UE_Identity_tags_1[0]), /* 1 */
-	{ 0, 0, OCTET_STRING_constraint },
-	0, 0,	/* No members */
-	&asn_SPC_OCTET_STRING_specs	/* Additional specs */
-};
-
diff --git a/e2sm/lib/UEID-EN-GNB.c b/e2sm/lib/UEID-EN-GNB.c
new file mode 100644
index 0000000..e5da432
--- /dev/null
+++ b/e2sm/lib/UEID-EN-GNB.c
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-EN-GNB.h"
+
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ENB_UE_X2AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"m-eNB-UE-X2AP-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID_Extension),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ENB_UE_X2AP_ID_Extension,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"m-eNB-UE-X2AP-ID-Extension"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, globalENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalENB-ID"
+		},
+	{ ATF_POINTER, 3, offsetof(struct UEID_EN_GNB, gNB_CU_UE_F1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_CU_UE_F1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-UE-F1AP-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct UEID_EN_GNB, gNB_CU_CP_UE_E1AP_ID_List),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-CP-UE-E1AP-ID-List"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, ran_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANUEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ran-UEID"
+		},
+};
+static const int asn_MAP_UEID_EN_GNB_oms_1[] = { 1, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_UEID_EN_GNB_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_EN_GNB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m-eNB-UE-X2AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* globalENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-UE-F1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1 = {
+	sizeof(struct UEID_EN_GNB),
+	offsetof(struct UEID_EN_GNB, _asn_ctx),
+	asn_MAP_UEID_EN_GNB_tag2el_1,
+	6,	/* Count of tags in the map */
+	asn_MAP_UEID_EN_GNB_oms_1,	/* Optional members */
+	4, 0,	/* Root/Additions */
+	6,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB = {
+	"UEID-EN-GNB",
+	"UEID-EN-GNB",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_EN_GNB_tags_1,
+	sizeof(asn_DEF_UEID_EN_GNB_tags_1)
+		/sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */
+	asn_DEF_UEID_EN_GNB_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_EN_GNB_tags_1)
+		/sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_EN_GNB_1,
+	6,	/* Elements count */
+	&asn_SPC_UEID_EN_GNB_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-ENB.c b/e2sm/lib/UEID-ENB.c
new file mode 100644
index 0000000..bdf2af8
--- /dev/null
+++ b/e2sm/lib/UEID-ENB.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-ENB.h"
+
+#include "GlobalENB-ID.h"
+asn_TYPE_member_t asn_MBR_UEID_ENB_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, mME_UE_S1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_MME_UE_S1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"mME-UE-S1AP-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, gUMMEI),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUMMEI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gUMMEI"
+		},
+	{ ATF_POINTER, 3, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ENB_UE_X2AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"m-eNB-UE-X2AP-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID_Extension),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_ENB_UE_X2AP_ID_Extension,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"m-eNB-UE-X2AP-ID-Extension"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_ENB, globalENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalENB-ID"
+		},
+};
+static const int asn_MAP_UEID_ENB_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_UEID_ENB_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_ENB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gUMMEI */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m-eNB-UE-X2AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* globalENB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1 = {
+	sizeof(struct UEID_ENB),
+	offsetof(struct UEID_ENB, _asn_ctx),
+	asn_MAP_UEID_ENB_tag2el_1,
+	5,	/* Count of tags in the map */
+	asn_MAP_UEID_ENB_oms_1,	/* Optional members */
+	3, 0,	/* Root/Additions */
+	5,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_ENB = {
+	"UEID-ENB",
+	"UEID-ENB",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_ENB_tags_1,
+	sizeof(asn_DEF_UEID_ENB_tags_1)
+		/sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */
+	asn_DEF_UEID_ENB_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_ENB_tags_1)
+		/sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_ENB_1,
+	5,	/* Elements count */
+	&asn_SPC_UEID_ENB_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB-CU-CP-E1AP-ID-Item.c b/e2sm/lib/UEID-GNB-CU-CP-E1AP-ID-Item.c
new file mode 100644
index 0000000..893be77
--- /dev/null
+++ b/e2sm/lib/UEID-GNB-CU-CP-E1AP-ID-Item.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB-CU-CP-E1AP-ID-Item.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, gNB_CU_CP_UE_E1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_CU_CP_UE_E1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-CP-UE-E1AP-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-CP-UE-E1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1 = {
+	sizeof(struct UEID_GNB_CU_CP_E1AP_ID_Item),
+	offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, _asn_ctx),
+	asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item = {
+	"UEID-GNB-CU-CP-E1AP-ID-Item",
+	"UEID-GNB-CU-CP-E1AP-ID-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1,
+	sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1,
+	1,	/* Elements count */
+	&asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB-CU-CP-E1AP-ID-List.c b/e2sm/lib/UEID-GNB-CU-CP-E1AP-ID-List.c
new file mode 100644
index 0000000..d6d6bc2
--- /dev/null
+++ b/e2sm/lib/UEID-GNB-CU-CP-E1AP-ID-List.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+
+#include "UEID-GNB-CU-CP-E1AP-ID-Item.h"
+static asn_oer_constraints_t asn_OER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1 = {
+	sizeof(struct UEID_GNB_CU_CP_E1AP_ID_List),
+	offsetof(struct UEID_GNB_CU_CP_E1AP_ID_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List = {
+	"UEID-GNB-CU-CP-E1AP-ID-List",
+	"UEID-GNB-CU-CP-E1AP-ID-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1,
+	sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */
+	{ &asn_OER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, &asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1,
+	1,	/* Single element */
+	&asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB-CU-CP-F1AP-ID-Item.c b/e2sm/lib/UEID-GNB-CU-CP-F1AP-ID-Item.c
new file mode 100644
index 0000000..0a893b4
--- /dev/null
+++ b/e2sm/lib/UEID-GNB-CU-CP-F1AP-ID-Item.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB-CU-CP-F1AP-ID-Item.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, gNB_CU_UE_F1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_CU_UE_F1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-UE-F1AP-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-UE-F1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1 = {
+	sizeof(struct UEID_GNB_CU_CP_F1AP_ID_Item),
+	offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, _asn_ctx),
+	asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item = {
+	"UEID-GNB-CU-CP-F1AP-ID-Item",
+	"UEID-GNB-CU-CP-F1AP-ID-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1,
+	sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1,
+	1,	/* Elements count */
+	&asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB-CU-F1AP-ID-List.c b/e2sm/lib/UEID-GNB-CU-F1AP-ID-List.c
new file mode 100644
index 0000000..98da296
--- /dev/null
+++ b/e2sm/lib/UEID-GNB-CU-F1AP-ID-List.c
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB-CU-F1AP-ID-List.h"
+
+#include "UEID-GNB-CU-CP-F1AP-ID-Item.h"
+static asn_oer_constraints_t asn_OER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1	/* (SIZE(1..4)) */};
+asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 2,  2,  1,  4 }	/* (SIZE(1..4)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1 = {
+	sizeof(struct UEID_GNB_CU_F1AP_ID_List),
+	offsetof(struct UEID_GNB_CU_F1AP_ID_List, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List = {
+	"UEID-GNB-CU-F1AP-ID-List",
+	"UEID-GNB-CU-F1AP-ID-List",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1,
+	sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */
+	{ &asn_OER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, &asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_UEID_GNB_CU_F1AP_ID_List_1,
+	1,	/* Single element */
+	&asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB-CU-UP.c b/e2sm/lib/UEID-GNB-CU-UP.c
new file mode 100644
index 0000000..169b1b5
--- /dev/null
+++ b/e2sm/lib/UEID-GNB-CU-UP.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB-CU-UP.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_UP, gNB_CU_CP_UE_E1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_CU_CP_UE_E1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-CP-UE-E1AP-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_GNB_CU_UP, ran_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANUEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ran-UEID"
+		},
+};
+static const int asn_MAP_UEID_GNB_CU_UP_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_UP_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_UP_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1 = {
+	sizeof(struct UEID_GNB_CU_UP),
+	offsetof(struct UEID_GNB_CU_UP, _asn_ctx),
+	asn_MAP_UEID_GNB_CU_UP_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_UEID_GNB_CU_UP_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP = {
+	"UEID-GNB-CU-UP",
+	"UEID-GNB-CU-UP",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_GNB_CU_UP_tags_1,
+	sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_CU_UP_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_GNB_CU_UP_1,
+	2,	/* Elements count */
+	&asn_SPC_UEID_GNB_CU_UP_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB-DU.c b/e2sm/lib/UEID-GNB-DU.c
new file mode 100644
index 0000000..4bc5c7f
--- /dev/null
+++ b/e2sm/lib/UEID-GNB-DU.c
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB-DU.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_DU, gNB_CU_UE_F1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GNB_CU_UE_F1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-UE-F1AP-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_GNB_DU, ran_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANUEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ran-UEID"
+		},
+};
+static const int asn_MAP_UEID_GNB_DU_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_DU_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_DU_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-UE-F1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1 = {
+	sizeof(struct UEID_GNB_DU),
+	offsetof(struct UEID_GNB_DU, _asn_ctx),
+	asn_MAP_UEID_GNB_DU_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_UEID_GNB_DU_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU = {
+	"UEID-GNB-DU",
+	"UEID-GNB-DU",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_GNB_DU_tags_1,
+	sizeof(asn_DEF_UEID_GNB_DU_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_DU_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_DU_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_GNB_DU_1,
+	2,	/* Elements count */
+	&asn_SPC_UEID_GNB_DU_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-GNB.c b/e2sm/lib/UEID-GNB.c
new file mode 100644
index 0000000..f529b8b
--- /dev/null
+++ b/e2sm/lib/UEID-GNB.c
@@ -0,0 +1,126 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-GNB.h"
+
+#include "UEID-GNB-CU-F1AP-ID-List.h"
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+#include "GlobalGNB-ID.h"
+#include "GlobalNGRANNodeID.h"
+asn_TYPE_member_t asn_MBR_UEID_GNB_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, amf_UE_NGAP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_AMF_UE_NGAP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"amf-UE-NGAP-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, guami),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUAMI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"guami"
+		},
+	{ ATF_POINTER, 6, offsetof(struct UEID_GNB, gNB_CU_UE_F1AP_ID_List),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_GNB_CU_F1AP_ID_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-UE-F1AP-ID-List"
+		},
+	{ ATF_POINTER, 5, offsetof(struct UEID_GNB, gNB_CU_CP_UE_E1AP_ID_List),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-CP-UE-E1AP-ID-List"
+		},
+	{ ATF_POINTER, 4, offsetof(struct UEID_GNB, ran_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANUEID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ran-UEID"
+		},
+	{ ATF_POINTER, 3, offsetof(struct UEID_GNB, m_NG_RAN_UE_XnAP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NG_RANnodeUEXnAPID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"m-NG-RAN-UE-XnAP-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct UEID_GNB, globalGNB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalGNB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalGNB-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_GNB, globalNG_RANNode_ID),
+		(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_GlobalNGRANNodeID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalNG-RANNode-ID"
+		},
+};
+static const int asn_MAP_UEID_GNB_oms_1[] = { 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UE-F1AP-ID-List */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ran-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* globalGNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* globalNG-RANNode-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1 = {
+	sizeof(struct UEID_GNB),
+	offsetof(struct UEID_GNB, _asn_ctx),
+	asn_MAP_UEID_GNB_tag2el_1,
+	8,	/* Count of tags in the map */
+	asn_MAP_UEID_GNB_oms_1,	/* Optional members */
+	5, 1,	/* Root/Additions */
+	7,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB = {
+	"UEID-GNB",
+	"UEID-GNB",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_GNB_tags_1,
+	sizeof(asn_DEF_UEID_GNB_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */
+	asn_DEF_UEID_GNB_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_GNB_tags_1)
+		/sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_GNB_1,
+	8,	/* Elements count */
+	&asn_SPC_UEID_GNB_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-NG-ENB-DU.c b/e2sm/lib/UEID-NG-ENB-DU.c
new file mode 100644
index 0000000..bba9b70
--- /dev/null
+++ b/e2sm/lib/UEID-NG-ENB-DU.c
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-NG-ENB-DU.h"
+
+asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB_DU, ng_eNB_CU_UE_W1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NGENB_CU_UE_W1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ng-eNB-CU-UE-W1AP-ID"
+		},
+};
+static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_DU_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_DU_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-CU-UE-W1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1 = {
+	sizeof(struct UEID_NG_ENB_DU),
+	offsetof(struct UEID_NG_ENB_DU, _asn_ctx),
+	asn_MAP_UEID_NG_ENB_DU_tag2el_1,
+	1,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
+	1,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU = {
+	"UEID-NG-ENB-DU",
+	"UEID-NG-ENB-DU",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_NG_ENB_DU_tags_1,
+	sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1)
+		/sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */
+	asn_DEF_UEID_NG_ENB_DU_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1)
+		/sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_NG_ENB_DU_1,
+	1,	/* Elements count */
+	&asn_SPC_UEID_NG_ENB_DU_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID-NG-ENB.c b/e2sm/lib/UEID-NG-ENB.c
new file mode 100644
index 0000000..5681365
--- /dev/null
+++ b/e2sm/lib/UEID-NG-ENB.c
@@ -0,0 +1,104 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID-NG-ENB.h"
+
+#include "GlobalNgENB-ID.h"
+#include "GlobalNGRANNodeID.h"
+asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, amf_UE_NGAP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_AMF_UE_NGAP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"amf-UE-NGAP-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, guami),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GUAMI,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"guami"
+		},
+	{ ATF_POINTER, 4, offsetof(struct UEID_NG_ENB, ng_eNB_CU_UE_W1AP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NGENB_CU_UE_W1AP_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ng-eNB-CU-UE-W1AP-ID"
+		},
+	{ ATF_POINTER, 3, offsetof(struct UEID_NG_ENB, m_NG_RAN_UE_XnAP_ID),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_NG_RANnodeUEXnAPID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"m-NG-RAN-UE-XnAP-ID"
+		},
+	{ ATF_POINTER, 2, offsetof(struct UEID_NG_ENB, globalNgENB_ID),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_GlobalNgENB_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalNgENB-ID"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEID_NG_ENB, globalNG_RANNode_ID),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		+1,	/* EXPLICIT tag at current level */
+		&asn_DEF_GlobalNGRANNodeID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"globalNG-RANNode-ID"
+		},
+};
+static const int asn_MAP_UEID_NG_ENB_oms_1[] = { 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB-CU-UE-W1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* globalNgENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* globalNG-RANNode-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1 = {
+	sizeof(struct UEID_NG_ENB),
+	offsetof(struct UEID_NG_ENB, _asn_ctx),
+	asn_MAP_UEID_NG_ENB_tag2el_1,
+	6,	/* Count of tags in the map */
+	asn_MAP_UEID_NG_ENB_oms_1,	/* Optional members */
+	3, 1,	/* Root/Additions */
+	5,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB = {
+	"UEID-NG-ENB",
+	"UEID-NG-ENB",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEID_NG_ENB_tags_1,
+	sizeof(asn_DEF_UEID_NG_ENB_tags_1)
+		/sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */
+	asn_DEF_UEID_NG_ENB_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEID_NG_ENB_tags_1)
+		/sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEID_NG_ENB_1,
+	6,	/* Elements count */
+	&asn_SPC_UEID_NG_ENB_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEID.c b/e2sm/lib/UEID.c
new file mode 100644
index 0000000..42c27ab
--- /dev/null
+++ b/e2sm/lib/UEID.c
@@ -0,0 +1,122 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEID.h"
+
+#include "UEID-GNB.h"
+#include "UEID-GNB-DU.h"
+#include "UEID-GNB-CU-UP.h"
+#include "UEID-NG-ENB.h"
+#include "UEID-NG-ENB-DU.h"
+#include "UEID-EN-GNB.h"
+#include "UEID-ENB.h"
+static asn_oer_constraints_t asn_OER_type_UEID_constr_1 CC_NOTUSED = {
+	{ 0, 0 },
+	-1};
+asn_per_constraints_t asn_PER_type_UEID_constr_1 CC_NOTUSED = {
+	{ APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  6 }	/* (0..6,...) */,
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_GNB,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_DU_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_GNB_DU,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-DU-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_CU_UP_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_GNB_CU_UP,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"gNB-CU-UP-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_NG_ENB,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ng-eNB-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_DU_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_NG_ENB_DU,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ng-eNB-DU-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.en_gNB_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_EN_GNB,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"en-gNB-UEID"
+		},
+	{ ATF_POINTER, 0, offsetof(struct UEID, choice.eNB_UEID),
+		(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_UEID_ENB,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"eNB-UEID"
+		},
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-DU-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ng-eNB-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ng-eNB-DU-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* en-gNB-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* eNB-UEID */
+};
+asn_CHOICE_specifics_t asn_SPC_UEID_specs_1 = {
+	sizeof(struct UEID),
+	offsetof(struct UEID, _asn_ctx),
+	offsetof(struct UEID, present),
+	sizeof(((struct UEID *)0)->present),
+	asn_MAP_UEID_tag2el_1,
+	7,	/* Count of tags in the map */
+	0, 0,
+	7	/* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID = {
+	"UEID",
+	"UEID",
+	&asn_OP_CHOICE,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	{ &asn_OER_type_UEID_constr_1, &asn_PER_type_UEID_constr_1, CHOICE_constraint },
+	asn_MBR_UEID_1,
+	7,	/* Elements count */
+	&asn_SPC_UEID_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/UEIdentification-RANParameter-Item.c b/e2sm/lib/UEIdentification-RANParameter-Item.c
new file mode 100644
index 0000000..7349bbd
--- /dev/null
+++ b/e2sm/lib/UEIdentification-RANParameter-Item.c
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-RC-IEs"
+ * 	found in "e2sm-rc-nov2021.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -pdu=auto -gen-PER -gen-OER -no-gen-example -D .`
+ */
+
+#include "UEIdentification-RANParameter-Item.h"
+
+#include "RANParameter-Definition.h"
+asn_TYPE_member_t asn_MBR_UEIdentification_RANParameter_Item_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct UEIdentification_RANParameter_Item, ranParameter_ID),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_ID,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-ID"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct UEIdentification_RANParameter_Item, ranParameter_name),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Name,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-name"
+		},
+	{ ATF_POINTER, 1, offsetof(struct UEIdentification_RANParameter_Item, ranParameter_Definition),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANParameter_Definition,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		"ranParameter-Definition"
+		},
+};
+static const int asn_MAP_UEIdentification_RANParameter_Item_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_UEIdentification_RANParameter_Item_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEIdentification_RANParameter_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Definition */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEIdentification_RANParameter_Item_specs_1 = {
+	sizeof(struct UEIdentification_RANParameter_Item),
+	offsetof(struct UEIdentification_RANParameter_Item, _asn_ctx),
+	asn_MAP_UEIdentification_RANParameter_Item_tag2el_1,
+	3,	/* Count of tags in the map */
+	asn_MAP_UEIdentification_RANParameter_Item_oms_1,	/* Optional members */
+	0, 1,	/* Root/Additions */
+	2,	/* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEIdentification_RANParameter_Item = {
+	"UEIdentification-RANParameter-Item",
+	"UEIdentification-RANParameter-Item",
+	&asn_OP_SEQUENCE,
+	asn_DEF_UEIdentification_RANParameter_Item_tags_1,
+	sizeof(asn_DEF_UEIdentification_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_UEIdentification_RANParameter_Item_tags_1[0]), /* 1 */
+	asn_DEF_UEIdentification_RANParameter_Item_tags_1,	/* Same as above */
+	sizeof(asn_DEF_UEIdentification_RANParameter_Item_tags_1)
+		/sizeof(asn_DEF_UEIdentification_RANParameter_Item_tags_1[0]), /* 1 */
+	{ 0, 0, SEQUENCE_constraint },
+	asn_MBR_UEIdentification_RANParameter_Item_1,
+	3,	/* Elements count */
+	&asn_SPC_UEIdentification_RANParameter_Item_specs_1	/* Additional specs */
+};
+
diff --git a/e2sm/lib/asn_random_fill.c b/e2sm/lib/asn_random_fill.c
index 2e3e892..819cf70 100644
--- a/e2sm/lib/asn_random_fill.c
+++ b/e2sm/lib/asn_random_fill.c
@@ -48,11 +48,7 @@
 
         for(; got_entropy < range;) {
             got_entropy = (got_entropy << 24) | 0xffffff;
-#ifdef WIN32
-            value = (value << 24) | (rand() % 0xffffff); //MCHECK:for building on Windows
-#else
-            value = (value << 24) | (random() % 0xffffff); //MCHECK:for building on Linux
-#endif
+            value = (value << 24) | (random() % 0xffffff);
         }
 
         return lb + (intmax_t)(value % (range + 1));
diff --git a/e2sm/lib/pdu_collection.c b/e2sm/lib/pdu_collection.c
deleted file mode 100644
index deea97d..0000000
--- a/e2sm/lib/pdu_collection.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- */
-
-struct asn_TYPE_descriptor_s;	/* Forward declaration */
-
-extern struct asn_TYPE_descriptor_s asn_DEF_Criticality;
-extern struct asn_TYPE_descriptor_s asn_DEF_Presence;
-extern struct asn_TYPE_descriptor_s asn_DEF_ProcedureCode;
-extern struct asn_TYPE_descriptor_s asn_DEF_TriggeringMessage;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_RANFunctionDefinition;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_ActionDefinition;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_IndicationHeader;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_IndicationMessage;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_RC_RANFunctionDefinition;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_RC_ControlHeader;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_RC_ControlMessage;
-extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_KPM_EventTriggerDefinition;
-extern struct asn_TYPE_descriptor_s asn_DEF_RANcallProcess_ID_string;
-
-
-struct asn_TYPE_descriptor_s *asn_pdu_collection[] = {
-	/* From module E2SM-KPM-RC in e2sm-kpm-rc.asn */
-	&asn_DEF_Criticality,	
-	&asn_DEF_Presence,	
-	&asn_DEF_ProcedureCode,	
-	&asn_DEF_TriggeringMessage,	
-	&asn_DEF_E2SM_KPM_RANFunctionDefinition,	
-	&asn_DEF_E2SM_KPM_ActionDefinition,	
-	&asn_DEF_E2SM_KPM_IndicationHeader,	
-	&asn_DEF_E2SM_KPM_IndicationMessage,	
-	&asn_DEF_E2SM_RC_RANFunctionDefinition,	
-	&asn_DEF_E2SM_RC_ControlHeader,	
-	&asn_DEF_E2SM_RC_ControlMessage,	
-	&asn_DEF_E2SM_KPM_EventTriggerDefinition,	
-	&asn_DEF_RANcallProcess_ID_string,	
-	0
-};
-