diff --git a/openair-cn/NAS/nas_ue_task.c b/openair-cn/NAS/nas_ue_task.c
index 71a67185a10a8afc0742b57f0c6aecc60f76c0af..d4969f6db3eea874db602238ed66d6dcb4ac2b71 100644
--- a/openair-cn/NAS/nas_ue_task.c
+++ b/openair-cn/NAS/nas_ue_task.c
@@ -36,6 +36,7 @@
 # include "nas_user.h"
 # include "user_api.h"
 # include "nas_parser.h"
+# include "nas_proc.h"
 
 # define NAS_UE_AUTOSTART 1
 
@@ -130,9 +131,72 @@ void *nas_ue_task(void *args_p) {
           LOG_I(NAS, "[UE %d] Received %s\n", Mod_id, msg_name);
           break;
 
+        case NAS_CELL_SELECTION_CNF:
+          LOG_I(NAS, "[UE %d] Received %s: errCode %u, cellID %u, tac %u\n", Mod_id, msg_name,
+                NAS_CELL_SELECTION_CNF (msg_p).errCode, NAS_CELL_SELECTION_CNF (msg_p).cellID, NAS_CELL_SELECTION_CNF (msg_p).tac);
+
+          {
+            int cell_found = (NAS_CELL_SELECTION_CNF (msg_p).errCode == AS_SUCCESS);
+
+            nas_proc_cell_info (cell_found, NAS_CELL_SELECTION_CNF (msg_p).tac,
+                                NAS_CELL_SELECTION_CNF (msg_p).cellID, NAS_CELL_SELECTION_CNF (msg_p).rat,
+                                NAS_CELL_SELECTION_CNF (msg_p).rsrq, NAS_CELL_SELECTION_CNF (msg_p).rsrp);
+          }
+          break;
+
+        case NAS_CELL_SELECTION_IND:
+          LOG_I(NAS, "[UE %d] Received %s: cellID %u, tac %u\n", Mod_id, msg_name,
+                NAS_CELL_SELECTION_IND (msg_p).cellID, NAS_CELL_SELECTION_IND (msg_p).tac);
+
+          /* TODO not processed by NAS currently */
+          break;
+
+        case NAS_PAGING_IND:
+          LOG_I(NAS, "[UE %d] Received %s: cause %u\n", Mod_id, msg_name,
+                NAS_PAGING_IND (msg_p).cause);
+
+          /* TODO not processed by NAS currently */
+          break;
+
+        case NAS_CONN_ESTABLI_CNF:
+          LOG_I(NAS, "[UE %d] Received %s: errCode %u, length %u\n", Mod_id, msg_name,
+                NAS_CONN_ESTABLI_CNF (msg_p).errCode, NAS_CONN_ESTABLI_CNF (msg_p).nasMsg.length);
+
+          if ((NAS_CONN_ESTABLI_CNF (msg_p).errCode == AS_SUCCESS)
+              || (NAS_CONN_ESTABLI_CNF (msg_p).errCode == AS_TERMINATED_NAS)) {
+            nas_proc_establish_cnf(NAS_CONN_ESTABLI_CNF (msg_p).nasMsg.data, NAS_CONN_ESTABLI_CNF (msg_p).nasMsg.length);
+
+            /* TODO checks if NAS will free the nas message, better to do it there anyway! */
+            itti_free (ITTI_MSG_ORIGIN_ID(msg_p), NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.data);
+          }
+          break;
+
+        case NAS_CONN_RELEASE_IND:
+          LOG_I(NAS, "[UE %d] Received %s: cause %u\n", Mod_id, msg_name,
+                NAS_CONN_RELEASE_IND (msg_p).cause);
+
+          nas_proc_release_ind (NAS_CONN_RELEASE_IND (msg_p).cause);
+          break;
+
+        case NAS_UPLINK_DATA_CNF:
+          LOG_I(NAS, "[UE %d] Received %s: UEid %u, errCode %u\n", Mod_id, msg_name,
+                NAS_UPLINK_DATA_CNF (msg_p).UEid, NAS_UPLINK_DATA_CNF (msg_p).errCode);
+
+          if (NAS_UPLINK_DATA_CNF (msg_p).errCode == AS_SUCCESS) {
+            nas_proc_ul_transfer_cnf ();
+          } else {
+            nas_proc_ul_transfer_rej ();
+          }
+          break;
+
         case NAS_DOWNLINK_DATA_IND:
           LOG_I(NAS, "[UE %d] Received %s: UEid %u, length %u\n", Mod_id, msg_name,
                 NAS_DOWNLINK_DATA_IND (msg_p).UEid, NAS_DOWNLINK_DATA_IND (msg_p).nasMsg.length);
+
+          nas_proc_dl_transfer_ind (NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data, NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length);
+
+          /* TODO checks if NAS will free the nas message, better to do it there anyway! */
+          itti_free (ITTI_MSG_ORIGIN_ID(msg_p), NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data);
           break;
 
         default:
diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c
index b55779f4648b6df32fecff937889c11790213378..6288574116b52da7ca31e867748e31b8cafbf7ce 100644
--- a/openair2/RRC/LITE/rrc_UE.c
+++ b/openair2/RRC/LITE/rrc_UE.c
@@ -1206,10 +1206,10 @@ void rrc_ue_process_rrcConnectionReconfiguration(u8 Mod_id, u32 frame,
           pdu_length = rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.array[list_count]->size;
           pdu_buffer = rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.array[list_count]->buf;
 
-          msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_DOWNLINK_DATA_IND);
-          NAS_DOWNLINK_DATA_IND(msg_p).UEid = Mod_id - NB_eNB_INST;
-          NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length = pdu_length;
-          NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data = pdu_buffer;
+          msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_ESTABLI_CNF);
+          NAS_CONN_ESTABLI_CNF(msg_p).errCode = AS_SUCCESS;
+          NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.length = pdu_length;
+          NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.data = pdu_buffer;
 
           itti_send_msg_to_task(TASK_NAS_UE, Mod_id, msg_p);
         }