diff --git a/openair-cn/COMMON/s1ap_messages_def.h b/openair-cn/COMMON/s1ap_messages_def.h
index c53005a2d159235b92a94de17bcc24afad2fc25f..8a794f22b01949e9542fc6c34bb41290a1210711 100644
--- a/openair-cn/COMMON/s1ap_messages_def.h
+++ b/openair-cn/COMMON/s1ap_messages_def.h
@@ -43,3 +43,4 @@ MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_LOG    , MESSAGE_PRIORITY_MED, IttiMsgText
 MESSAGE_DEF(S1AP_UE_CAPABILITIES_IND       , MESSAGE_PRIORITY_MED, s1ap_ue_cap_ind_t                , s1ap_ue_cap_ind)
 MESSAGE_DEF(S1AP_ENB_DEREGISTERED_IND      , MESSAGE_PRIORITY_MED, s1ap_eNB_deregistered_ind_t      , s1ap_eNB_deregistered_ind)
 MESSAGE_DEF(S1AP_DEREGISTER_UE_REQ         , MESSAGE_PRIORITY_MED, s1ap_deregister_ue_req_t         , s1ap_deregister_ue_req)
+MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_REQ    , MESSAGE_PRIORITY_MED, s1ap_ue_context_release_req_t    , s1ap_ue_context_release_req)
diff --git a/openair-cn/COMMON/s1ap_messages_types.h b/openair-cn/COMMON/s1ap_messages_types.h
index 1d091e3429553f93545ada1ef546f55f5d74b7e3..c6f867865b9cb73ee7d1df6b08dddbefe5057439 100644
--- a/openair-cn/COMMON/s1ap_messages_types.h
+++ b/openair-cn/COMMON/s1ap_messages_types.h
@@ -29,8 +29,9 @@
 #ifndef S1AP_MESSAGES_TYPES_H_
 #define S1AP_MESSAGES_TYPES_H_
 
-#define S1AP_ENB_DEREGISTERED_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_eNB_deregistered_ind
-#define S1AP_DEREGISTER_UE_REQ(mSGpTR)    (mSGpTR)->ittiMsg.s1ap_deregister_ue_req
+#define S1AP_ENB_DEREGISTERED_IND(mSGpTR)   (mSGpTR)->ittiMsg.s1ap_eNB_deregistered_ind
+#define S1AP_DEREGISTER_UE_REQ(mSGpTR)      (mSGpTR)->ittiMsg.s1ap_deregister_ue_req
+#define S1AP_UE_CONTEXT_RELEASE_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_context_release_req
 
 typedef struct s1ap_initial_ue_message_s {
   unsigned     eNB_ue_s1ap_id:24;
@@ -80,4 +81,8 @@ typedef struct s1ap_deregister_ue_req_s {
   uint32_t mme_ue_s1ap_id;
 } s1ap_deregister_ue_req_t;
 
+typedef struct s1ap_ue_context_release_req_s {
+  uint32_t mme_ue_s1ap_id;
+} s1ap_ue_context_release_req_t;
+
 #endif /* S1AP_MESSAGES_TYPES_H_ */
diff --git a/openair-cn/COMMON/sgw_lite_def.h b/openair-cn/COMMON/sgw_lite_def.h
index 88032a138acbf49af2cb63d4425ed85d04f76e6a..3f1814b028d318fcd7afa9cb53f975b5dab12178 100644
--- a/openair-cn/COMMON/sgw_lite_def.h
+++ b/openair-cn/COMMON/sgw_lite_def.h
@@ -32,3 +32,5 @@ MESSAGE_DEF(SGW_MODIFY_BEARER_REQUEST,   MESSAGE_PRIORITY_MED, SgwModifyBearerRe
 MESSAGE_DEF(SGW_MODIFY_BEARER_RESPONSE,  MESSAGE_PRIORITY_MED, SgwModifyBearerResponse,  sgwModifyBearerResponse)
 MESSAGE_DEF(SGW_DELETE_SESSION_REQUEST,  MESSAGE_PRIORITY_MED, SgwDeleteSessionRequest,  sgwDeleteSessionRequest)
 MESSAGE_DEF(SGW_DELETE_SESSION_RESPONSE, MESSAGE_PRIORITY_MED, SgwDeleteSessionResponse, sgwDeleteSessionResponse)
+MESSAGE_DEF(SGW_RELEASE_ACCESS_BEARERS_REQUEST, MESSAGE_PRIORITY_MED, SgwReleaseAccessBearersRequest, sgwReleaseAccessBearersRequest)
+MESSAGE_DEF(SGW_RELEASE_ACCESS_BEARERS_RESPONSE, MESSAGE_PRIORITY_MED, SgwReleaseAccessBearersResponse, sgwReleaseAccessBearersResponse)
diff --git a/openair-cn/COMMON/sgw_lite_messages_types.h b/openair-cn/COMMON/sgw_lite_messages_types.h
index 83b364c412e192d42e8ef3c1575f894f5b38609c..178618423b3aeb7bdcbfe2046ae7b3317945ab81 100644
--- a/openair-cn/COMMON/sgw_lite_messages_types.h
+++ b/openair-cn/COMMON/sgw_lite_messages_types.h
@@ -42,12 +42,14 @@
 #ifndef SGW_LITE_MESSAGES_TYPES_H_
 #define SGW_LITE_MESSAGES_TYPES_H_
 
-#define SGW_CREATE_SESSION_REQUEST(mSGpTR)  (mSGpTR)->ittiMsg.sgwCreateSessionRequest
-#define SGW_CREATE_SESSION_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.sgwCreateSessionResponse
-#define SGW_MODIFY_BEARER_REQUEST(mSGpTR)   (mSGpTR)->ittiMsg.sgwModifyBearerRequest
-#define SGW_MODIFY_BEARER_RESPONSE(mSGpTR)  (mSGpTR)->ittiMsg.sgwModifyBearerResponse
-#define SGW_DELETE_SESSION_REQUEST(mSGpTR)  (mSGpTR)->ittiMsg.sgwDeleteSessionRequest
-#define SGW_DELETE_SESSION_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.sgwDeleteSessionResponse
+#define SGW_CREATE_SESSION_REQUEST(mSGpTR)         (mSGpTR)->ittiMsg.sgwCreateSessionRequest
+#define SGW_CREATE_SESSION_RESPONSE(mSGpTR)        (mSGpTR)->ittiMsg.sgwCreateSessionResponse
+#define SGW_MODIFY_BEARER_REQUEST(mSGpTR)          (mSGpTR)->ittiMsg.sgwModifyBearerRequest
+#define SGW_MODIFY_BEARER_RESPONSE(mSGpTR)         (mSGpTR)->ittiMsg.sgwModifyBearerResponse
+#define SGW_DELETE_SESSION_REQUEST(mSGpTR)         (mSGpTR)->ittiMsg.sgwDeleteSessionRequest
+#define SGW_DELETE_SESSION_RESPONSE(mSGpTR)        (mSGpTR)->ittiMsg.sgwDeleteSessionResponse
+#define SGW_RELEASE_ACCESS_BEARERS_REQUEST(mSGpTR) (mSGpTR)->ittiMsg.sgwReleaseAccessBearersRequest
+#define SGW_RELEASE_ACCESS_BEARERS_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.sgwReleaseAccessBearersResponse
 
 
 /** @struct SgwCreateSessionRequest
@@ -867,4 +869,53 @@ typedef struct SgwDeleteSessionResponse_s {
   uint32_t    peer_ip;
 } SgwDeleteSessionResponse;
 
+/** @struct SgwReleaseAccessBearersRequest
+ *  @brief Release AccessBearers Request
+ *
+ * The Release Access Bearers Request message shall sent on the S11 interface by
+ * the MME to the SGW as part of the S1 release procedure.
+ * The message shall also be sent on the S4 interface by the SGSN to the SGW as
+ * part of the procedures:
+ * -    RAB release using S4
+ * -    Iu Release using S4
+ * -    READY to STANDBY transition within the network
+ */
+typedef struct SgwReleaseAccessBearersRequest_s {
+	Teid_t     teid;                     ///< Tunnel Endpoint Identifier
+	uint32_t   num_rabs;
+	EBI_t      list_of_rabs[8]  ;        ///< Shall be present on S4 interface when this message is
+                                         ///< used to release a subset of all active RABs according to
+                                         ///< the RAB release procedure.
+                                         ///< Several IEs with this type and instance values shall be
+                                         ///< included as necessary to represent a list of RABs to be
+                                         ///< released.
+
+	node_type_t originating_node;        ///< This IE shall be sent on S11 interface, if ISR is active in the MME.
+                                         ///< This IE shall be sent on S4 interface, if ISR is active in the SGSN
+	// Private Extension Private Extension ///< optional
+
+} SgwReleaseAccessBearersRequest;
+
+/** @struct SgwReleaseAccessBearersResponse
+ *  @brief Release AccessBearers Response
+ *
+ * The Release Access Bearers Response message is sent on the S11 interface by the SGW to the MME as part of the S1
+ * release procedure.
+ * The message shall also be sent on the S4 interface by the SGW to the SGSN as part of the procedures:
+ * -  RAB release using S4
+ * -  Iu Release using S4
+ * -  READY to STANDBY transition within the network
+ * Possible Cause values are specified in Table 8.4-1. Message specific cause values are:
+ * - "Request accepted".
+ * - "Request accepted partially".
+ * - "Context not found
+ */
+typedef struct SgwReleaseAccessBearersResponse_s {
+	Teid_t      teid;                   ///< Tunnel Endpoint Identifier
+	SGWCause_t  cause;
+	// Recovery           ///< optional This IE shall be included if contacting the peer for the first time
+	// Private Extension  ///< optional
+
+} SgwReleaseAccessBearersResponse;
+
 #endif
diff --git a/openair-cn/MME_APP/mme_app_bearer.c b/openair-cn/MME_APP/mme_app_bearer.c
index 9383bbcfabad4be075ae43bd5cefc3a8c45775e3..5c027aa1a268ecd810fbcad240fe4e96f1e6a474 100644
--- a/openair-cn/MME_APP/mme_app_bearer.c
+++ b/openair-cn/MME_APP/mme_app_bearer.c
@@ -51,6 +51,46 @@
 #include "msc.h"
 
 
+int
+mme_app_send_s11_release_access_bearers_req(
+  struct ue_context_s * const ue_context_pP)
+{
+  uint8_t                     i                 = 0;
+  task_id_t                   to_task           = TASK_UNKNOWN;
+  /* Keep the identifier to the default APN */
+  context_identifier_t        context_identifier;
+  MessageDef                 *message_p         = NULL;
+  SgwReleaseAccessBearersRequest    *release_access_bearers_request_p = NULL;
+
+
+  DevAssert(ue_context_pP != NULL);
+
+#if !defined(ENABLE_STANDALONE_EPC)
+  to_task = TASK_S11;
+#else
+  to_task = TASK_SPGW_APP;
+#endif
+
+  message_p = itti_alloc_new_message(TASK_MME_APP, SGW_RELEASE_ACCESS_BEARERS_REQUEST);
+  release_access_bearers_request_p = &message_p->ittiMsg.sgwReleaseAccessBearersRequest;
+  memset(release_access_bearers_request_p, 0, sizeof(SgwReleaseAccessBearersRequest));
+
+  release_access_bearers_request_p->teid             = ue_context_pP->sgw_s11_teid;
+  release_access_bearers_request_p->num_rabs         = 1;
+  release_access_bearers_request_p->list_of_rabs[0]  = ue_context_pP->default_bearer_id;
+  release_access_bearers_request_p->originating_node = NODE_TYPE_MME;
+
+  MSC_LOG_TX_MESSAGE(
+  		MSC_MMEAPP_MME,
+  		(to_task == TASK_S11) ? MSC_S11_MME:MSC_SP_GWAPP_MME,
+  		NULL,0,
+  		"0 SGW_RELEASE_ACCESS_BEARERS_REQUEST teid %u ebi %u",
+  		SGW_RELEASE_ACCESS_BEARERS_REQUEST(message_p).teid,
+  		release_access_bearers_request_p->list_of_rabs[0]);
+
+  itti_send_msg_to_task(to_task, INSTANCE_DEFAULT, message_p);
+}
+
 
 int
 mme_app_send_s11_create_session_req(
diff --git a/openair-cn/MME_APP/mme_app_context.c b/openair-cn/MME_APP/mme_app_context.c
index 64c5893ae4ce05b0f04fc837903ace8913b76bce..589710d45ab65a1ba0f744f4b832acced8585584 100644
--- a/openair-cn/MME_APP/mme_app_context.c
+++ b/openair-cn/MME_APP/mme_app_context.c
@@ -49,6 +49,7 @@
 #include "mme_app_extern.h"
 #include "mme_app_ue_context.h"
 #include "mme_app_defs.h"
+#include "msc.h"
 
 int ue_context_compare_identifiers(struct ue_context_s *p1,
                                    struct ue_context_s *p2);
@@ -59,8 +60,10 @@ RB_PROTOTYPE(ue_context_map, ue_context_s, rb_entry,
 RB_GENERATE(ue_context_map, ue_context_s, rb_entry,
             ue_context_compare_identifiers);
 
+//------------------------------------------------------------------------------
 extern inline int ue_context_compare_identifiers(
   struct ue_context_s *p1, struct ue_context_s *p2)
+//------------------------------------------------------------------------------
 {
   MME_APP_DEBUG(" ue_context_compare_identifiers IMSI           %"SCNu64"\n", p1->imsi);
   MME_APP_DEBUG(" ue_context_compare_identifiers mme_s11_teid   %08x\n"       , p1->mme_s11_teid);
@@ -144,7 +147,9 @@ extern inline int ue_context_compare_identifiers(
   return 0;
 }
 
+//------------------------------------------------------------------------------
 ue_context_t *mme_create_new_ue_context(void)
+//------------------------------------------------------------------------------
 {
   ue_context_t *new_p;
 
@@ -159,8 +164,10 @@ ue_context_t *mme_create_new_ue_context(void)
 }
 
 
+//------------------------------------------------------------------------------
 struct ue_context_s *mme_ue_context_exists_imsi(mme_ue_context_t *mme_ue_context,
     mme_app_imsi_t imsi)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s  reference;
 
@@ -173,8 +180,10 @@ struct ue_context_s *mme_ue_context_exists_imsi(mme_ue_context_t *mme_ue_context
 }
 
 
+//------------------------------------------------------------------------------
 struct ue_context_s *mme_ue_context_exists_s11_teid(mme_ue_context_t *mme_ue_context,
     uint32_t teid)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s  reference;
 
@@ -188,9 +197,11 @@ struct ue_context_s *mme_ue_context_exists_s11_teid(mme_ue_context_t *mme_ue_con
 
 
 
+//------------------------------------------------------------------------------
 ue_context_t *mme_ue_context_exists_mme_ue_s1ap_id(
   mme_ue_context_t *mme_ue_context,
   uint32_t mme_ue_s1ap_id)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s  reference;
 
@@ -204,9 +215,11 @@ ue_context_t *mme_ue_context_exists_mme_ue_s1ap_id(
 
 
 
+//------------------------------------------------------------------------------
 ue_context_t *mme_ue_context_exists_nas_ue_id(
   mme_ue_context_t *mme_ue_context,
   uint32_t nas_ue_id)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s  reference;
 
@@ -221,8 +234,10 @@ ue_context_t *mme_ue_context_exists_nas_ue_id(
 
 
 
+//------------------------------------------------------------------------------
 ue_context_t *mme_ue_context_exists_guti(mme_ue_context_t *mme_ue_context,
     GUTI_t guti)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s  reference;
 
@@ -236,7 +251,9 @@ ue_context_t *mme_ue_context_exists_guti(mme_ue_context_t *mme_ue_context,
                  &reference);
 }
 
+//------------------------------------------------------------------------------
 int mme_insert_ue_context(mme_ue_context_t *mme_ue_context, struct ue_context_s *ue_context_p)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s *collision_p = NULL;
 
@@ -258,7 +275,9 @@ int mme_insert_ue_context(mme_ue_context_t *mme_ue_context, struct ue_context_s
   return 0;
 }
 
+//------------------------------------------------------------------------------
 void mme_app_dump_ue_contexts(mme_ue_context_t *mme_ue_context)
+//------------------------------------------------------------------------------
 {
   struct ue_context_s *context_p;
 
@@ -426,3 +445,27 @@ void mme_app_dump_ue_contexts(mme_ue_context_t *mme_ue_context)
   }
   MME_APP_DEBUG("---------------------------------------------------------\n");
 }
+
+
+//------------------------------------------------------------------------------
+void mme_app_handle_s1ap_ue_context_release_req(const s1ap_ue_context_release_req_t const *s1ap_ue_context_release_req)
+//------------------------------------------------------------------------------
+{
+  struct ue_context_s                    *ue_context_p        = NULL;
+
+  MME_APP_DEBUG("Received S1AP_UE_CONTEXT_RELEASE_REQ from S1AP\n");
+
+  ue_context_p = mme_ue_context_exists_nas_ue_id(&mme_app_desc.mme_ue_contexts, s1ap_ue_context_release_req->mme_ue_s1ap_id);
+
+
+  if (ue_context_p == NULL) {
+	MSC_LOG_EVENT(
+   		MSC_MMEAPP_MME,
+   		"S1AP_UE_CONTEXT_RELEASE_REQ Unknown ue %u",s1ap_ue_context_release_req->mme_ue_s1ap_id);
+    MME_APP_ERROR("UE context doesn't exist for UE 0x%08X/dec%u\n",
+    		s1ap_ue_context_release_req->mme_ue_s1ap_id,
+    		s1ap_ue_context_release_req->mme_ue_s1ap_id);
+    return;
+  }
+  mme_app_send_s11_release_access_bearers_req(ue_context_p);
+}
diff --git a/openair-cn/MME_APP/mme_app_main.c b/openair-cn/MME_APP/mme_app_main.c
index 8c4ffc3698cfc4cfa227adbbc04b805c5d97e961..9026532bc5a0755ce97c949137be13d02c147bcc 100644
--- a/openair-cn/MME_APP/mme_app_main.c
+++ b/openair-cn/MME_APP/mme_app_main.c
@@ -147,6 +147,11 @@ void *mme_app_thread(void *args)
     }
     break;
 
+    case S1AP_UE_CONTEXT_RELEASE_REQ: {
+        mme_app_handle_s1ap_ue_context_release_req(&received_message_p->ittiMsg.s1ap_ue_context_release_req);
+    }
+    break;
+
     default: {
       MME_APP_DEBUG("Unkwnon message ID %d:%s\n",
                     ITTI_MSG_ID(received_message_p), ITTI_MSG_NAME(received_message_p));
diff --git a/openair-cn/MME_APP/mme_app_ue_context.h b/openair-cn/MME_APP/mme_app_ue_context.h
index 682c196b334b95f0e061545f53b2333ccb7172d9..6ac65697baa4f28c19a5c43f341555c8cac4cfcb 100644
--- a/openair-cn/MME_APP/mme_app_ue_context.h
+++ b/openair-cn/MME_APP/mme_app_ue_context.h
@@ -42,6 +42,7 @@
 #include <inttypes.h>   /* For sscanf formats */
 #include <time.h>       /* to provide time_t */
 
+#include "s1ap_messages_types.h"
 #include "nas_messages_types.h"
 #include "s6a_messages_types.h"
 #include "security_types.h"
@@ -248,6 +249,9 @@ ue_context_t *mme_create_new_ue_context(void);
  **/
 void mme_app_dump_ue_contexts(mme_ue_context_t *mme_ue_context);
 
+
+void mme_app_handle_s1ap_ue_context_release_req(const s1ap_ue_context_release_req_t const *s1ap_ue_context_release_req);
+
 #endif /* MME_APP_UE_CONTEXT_H_ */
 
 /* @} */
diff --git a/openair-cn/NAS/EURECOM-NAS/src/api/network/nas_message.c b/openair-cn/NAS/EURECOM-NAS/src/api/network/nas_message.c
index 22fc6dbe1fa5e0f416daf6b0420e8e64e1246a16..9896ebfde06cca3539ac47789c26e69b6e5a679d 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/api/network/nas_message.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/api/network/nas_message.c
@@ -315,12 +315,11 @@ int nas_message_decrypt(
 
     /* Check NAS message integrity */
     if (mac != header->message_authentication_code) {
+
       LOG_TRACE(DEBUG,
-                "MAC Failure MSG:%08X(%u) <> INT ALGO:%08X(%u)",
-                header->message_authentication_code,
-                header->message_authentication_code,
-                mac,
-                mac);
+                "MAC Failure MSG:%08X(%u) <> INT ALGO:%08X(%u) Type of security context %u",
+                header->message_authentication_code,header->message_authentication_code,
+                mac,mac, (emm_security_context!=NULL)?emm_security_context->type:88);
 #if defined(NAS_MME)
       LOG_FUNC_RETURN (TLV_DECODE_MAC_MISMATCH);
 #else
diff --git a/openair-cn/NAS/EURECOM-NAS/src/util/nas_log.h b/openair-cn/NAS/EURECOM-NAS/src/util/nas_log.h
index 9c3bfb0983f966433659035d68f97a528fd46c83..b947e3356393f2adba4642a74edd155e7999a03f 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/util/nas_log.h
+++ b/openair-cn/NAS/EURECOM-NAS/src/util/nas_log.h
@@ -125,18 +125,18 @@ do {
 # define LOG_FUNC_IN                                                            \
 do {                                                                            \
     LOG_D(NAS, " %s:%d %*sEntering %s()\n", __FILE__, __LINE__, nas_log_func_indent, "", __FUNCTION__);   \
-    nas_log_func_indent += 4;                                                   \
+    nas_log_func_indent += 2;                                                   \
 } while (0)
 
 # define LOG_FUNC_OUT                                                           \
 do {                                                                            \
-    nas_log_func_indent -= 4;                                                   \
+    nas_log_func_indent -= 2;                                                   \
     LOG_D(NAS, " %s:%d %*sLeaving %s()\n", __FILE__, __LINE__, nas_log_func_indent, "", __FUNCTION__);    \
 } while (0)
 
 # define LOG_FUNC_RETURN(rETURNcODE)                                            \
 do {                                                                            \
-    nas_log_func_indent -= 4;                                                   \
+    nas_log_func_indent -= 2;                                                   \
     LOG_D(NAS, " %s:%d %*sLeaving %s(rc = %ld)\n", __FILE__, __LINE__, nas_log_func_indent, "",           \
           __FUNCTION__, (long) rETURNcODE);                                     \
     return (rETURNcODE);                                                        \
diff --git a/openair-cn/S11/s11_mme_session_manager.c b/openair-cn/S11/s11_mme_session_manager.c
index 57f752611f4e19e0ac515e2b2de75e809ccf403b..d0fe543a8cba3d44bb59502382c921933887653e 100644
--- a/openair-cn/S11/s11_mme_session_manager.c
+++ b/openair-cn/S11/s11_mme_session_manager.c
@@ -204,3 +204,20 @@ int s11_mme_handle_create_session_response(NwGtpv2cStackHandleT *stack_p,
 
   return itti_send_msg_to_task(TASK_MME_APP, INSTANCE_DEFAULT, message_p);
 }
+
+
+int s11_mme_release_access_bearers_request(NwGtpv2cStackHandleT    *stack_p,
+		SgwReleaseAccessBearersRequest *release_access_bearers_p)
+{
+  NwGtpv2cUlpApiT ulp_req;
+
+  NwRcT   rc;
+  uint8_t restart_counter = 0;
+
+  DevAssert(stack_p          != NULL);
+  DevAssert(release_access_bearers_p != NULL);
+
+  memset(&ulp_req, 0, sizeof(NwGtpv2cUlpApiT));
+
+  AssertFatal(0 == 1, "TODO s11_mme_release_access_bearers_request()");
+}
diff --git a/openair-cn/S11/s11_mme_session_manager.h b/openair-cn/S11/s11_mme_session_manager.h
index 1f7f83f065d885421cdcef81df4b34928d84c757..dd11f859bc78517987ddb00a8c604e10101e8540 100644
--- a/openair-cn/S11/s11_mme_session_manager.h
+++ b/openair-cn/S11/s11_mme_session_manager.h
@@ -35,6 +35,12 @@
 int s11_mme_create_session_request(NwGtpv2cStackHandleT    *stack_p,
                                    SgwCreateSessionRequest *create_session_p);
 
+
+/* @brief Create a new Release Access Bearers Request and send it to provided S-GW.
+ */
+int s11_mme_release_access_bearers_request(NwGtpv2cStackHandleT    *stack_p,
+		SgwReleaseAccessBearersRequest *release_access_bearers_p);
+
 /* @brief Handle a Create Session Response received from S-GW.
  */
 int s11_mme_handle_create_session_response(NwGtpv2cStackHandleT *stack_p,
diff --git a/openair-cn/S11/s11_mme_task.c b/openair-cn/S11/s11_mme_task.c
index f9cf96a1b44f6bb29a0a43d6dacbf0aa6326d91f..fad5aecda7593616f6dde0a8bb3f484343c8ec2e 100644
--- a/openair-cn/S11/s11_mme_task.c
+++ b/openair-cn/S11/s11_mme_task.c
@@ -189,6 +189,13 @@ static void *s11_mme_thread(void *args)
     }
     break;
 
+    case SGW_RELEASE_ACCESS_BEARERS_REQUEST: {
+        s11_mme_release_access_bearers_request(
+          &s11_mme_stack_handle,
+          &received_message_p->ittiMsg.sgwReleaseAccessBearersRequest);
+    }
+    break;
+
     case UDP_DATA_IND: {
       /* We received new data to handle from the UDP layer */
       NwRcT rc;
diff --git a/openair-cn/S1AP/s1ap_mme_handlers.c b/openair-cn/S1AP/s1ap_mme_handlers.c
index 0e6bd10d811ee2940a628e86f7b3e9dccbca5bec..3682bb45dfca4bde382da27e58ac2e31dbf270b8 100644
--- a/openair-cn/S1AP/s1ap_mme_handlers.c
+++ b/openair-cn/S1AP/s1ap_mme_handlers.c
@@ -598,8 +598,9 @@ int s1ap_mme_handle_initial_context_setup_response(
 int s1ap_mme_handle_ue_context_release_request(uint32_t assoc_id,
     uint32_t stream, struct s1ap_message_s *message)
 {
-  S1ap_UEContextReleaseRequestIEs_t *ueContextReleaseRequest_p;
-  ue_description_t *ue_ref = NULL;
+  S1ap_UEContextReleaseRequestIEs_t *ueContextReleaseRequest_p = NULL;
+  ue_description_t                  *ue_ref                    = NULL;
+  MessageDef                        *message_p                 = NULL;
 
   ueContextReleaseRequest_p = &message->msg.s1ap_UEContextReleaseRequestIEs;
 
@@ -638,8 +639,27 @@ int s1ap_mme_handle_ue_context_release_request(uint32_t assoc_id,
        * -> Send a UE context Release Command to eNB.
        * TODO
        */
-      s1ap_mme_generate_ue_context_release_command(ue_ref);
+      //s1ap_mme_generate_ue_context_release_command(ue_ref);
       // UE context will be removed when receiving UE_CONTEXT_RELEASE_COMPLETE
+
+      message_p = itti_alloc_new_message(TASK_S1AP, S1AP_UE_CONTEXT_RELEASE_REQ);
+
+      AssertFatal(message_p != NULL,"itti_alloc_new_message Failed");
+      memset((void*)&message_p->ittiMsg.mme_app_initial_context_setup_rsp,
+    	         0,
+    	         sizeof(mme_app_initial_context_setup_rsp_t));
+
+      S1AP_UE_CONTEXT_RELEASE_REQ(message_p).mme_ue_s1ap_id                      = ue_ref->mme_ue_s1ap_id;
+
+      MSC_LOG_TX_MESSAGE(
+    	  		MSC_S1AP_MME,
+    	  		MSC_MMEAPP_MME,
+    	  		NULL,0,
+    	  		"0 S1AP_UE_CONTEXT_RELEASE_REQ mme_ue_s1ap_id %u ",
+    	  		S1AP_UE_CONTEXT_RELEASE_REQ(message_p).mme_ue_s1ap_id);
+
+      return itti_send_msg_to_task(TASK_MME_APP, INSTANCE_DEFAULT, message_p);
+
     } else {
       // TODO
       S1AP_DEBUG("UE_CONTEXT_RELEASE_REQUEST ignored, cause mismatch eNB_ue_s1ap_id: ctxt 0x%08x != request 0x%08x",
diff --git a/openair-cn/SGW-LITE/sgw_lite_handlers.c b/openair-cn/SGW-LITE/sgw_lite_handlers.c
index eef43d1a1f2e47a04d702b0df6951a166343cf4d..ca751ad55542c5b8e1a43a56a07d3caf6572550b 100644
--- a/openair-cn/SGW-LITE/sgw_lite_handlers.c
+++ b/openair-cn/SGW-LITE/sgw_lite_handlers.c
@@ -46,6 +46,7 @@
 #include "common_types.h"
 #include "intertask_interface.h"
 #include "mme_config.h"
+#include "msc.h"
 
 #include "sgw_lite_defs.h"
 #include "sgw_lite_handlers.h"
@@ -53,7 +54,6 @@
 #include "sgw_lite.h"
 #include "pgw_lite_paa.h"
 #include "spgw_config.h"
-#include "msc.h"
 
 extern sgw_app_t     sgw_app;
 extern spgw_config_t spgw_config;
@@ -1122,3 +1122,62 @@ sgw_lite_handle_delete_session_request(
 
   return -1;
 }
+
+
+int
+sgw_lite_handle_release_access_bearers_request(
+  const SgwReleaseAccessBearersRequest * const release_access_bearers_req_pP)
+{
+  task_id_t                                     to_task;
+  hashtable_rc_t                                hash_rc;
+  SgwReleaseAccessBearersResponse              *release_access_bearers_resp_p = NULL;
+  MessageDef                                   *message_p                     = NULL;
+  s_plus_p_gw_eps_bearer_context_information_t *ctx_p                         = NULL;
+
+#if defined(ENABLE_STANDALONE_EPC)
+  to_task = TASK_MME_APP;
+#else
+  to_task = TASK_S11;
+#endif
+  message_p = itti_alloc_new_message(TASK_SPGW_APP, SGW_RELEASE_ACCESS_BEARERS_RESPONSE);
+
+  if (message_p == NULL) {
+    return -1;
+  }
+
+  release_access_bearers_resp_p = &message_p->ittiMsg.sgwReleaseAccessBearersResponse;
+
+
+  hash_rc = hashtable_get(sgw_app.s11_bearer_context_information_hashtable,
+		  release_access_bearers_req_pP->teid,
+                          (void**)&ctx_p);
+
+  if (hash_rc == HASH_TABLE_OK) {
+	release_access_bearers_resp_p->cause = REQUEST_ACCEPTED;
+	release_access_bearers_resp_p->teid  = ctx_p->sgw_eps_bearer_context_information.mme_teid_for_S11;
+
+#warning "TODO Here the release (sgw_lite_handle_release_access_bearers_request)"
+
+    MSC_LOG_TX_MESSAGE(
+  		MSC_SP_GWAPP_MME,
+  		(to_task == TASK_MME_APP) ? MSC_MMEAPP_MME:MSC_S11_MME,
+    	NULL,0,
+    	"0 SGW_RELEASE_ACCESS_BEARERS_RESPONSE teid %u cause %u",
+    	release_access_bearers_resp_p->teid,
+    	release_access_bearers_resp_p->cause);
+
+    return itti_send_msg_to_task(to_task, INSTANCE_DEFAULT, message_p);
+  } else {
+	release_access_bearers_resp_p->cause   = CONTEXT_NOT_FOUND;
+	release_access_bearers_resp_p->teid    = 0;
+	MSC_LOG_TX_MESSAGE(
+	  		MSC_SP_GWAPP_MME,
+	  		(to_task == TASK_MME_APP) ? MSC_MMEAPP_MME:MSC_S11_MME,
+	    	NULL,0,
+	    	"0 SGW_RELEASE_ACCESS_BEARERS_RESPONSE CONTEXT_NOT_FOUND");
+
+	return itti_send_msg_to_task(to_task, INSTANCE_DEFAULT, message_p);
+  }
+  return -1;
+}
+
diff --git a/openair-cn/SGW-LITE/sgw_lite_handlers.h b/openair-cn/SGW-LITE/sgw_lite_handlers.h
index ad5ee3ff78df0bb8a8c44998f07088d0f186f394..1f74f802bdf58453def8bb745dccb7e1a85e9972 100644
--- a/openair-cn/SGW-LITE/sgw_lite_handlers.h
+++ b/openair-cn/SGW-LITE/sgw_lite_handlers.h
@@ -43,5 +43,5 @@ int sgw_lite_handle_gtpv1uCreateTunnelResp(const Gtpv1uCreateTunnelResp  * const
 int sgw_lite_handle_gtpv1uUpdateTunnelResp(const Gtpv1uUpdateTunnelResp  * const endpoint_updated_p);
 int sgw_lite_handle_modify_bearer_request (const SgwModifyBearerRequest  * const modify_bearer_p);
 int sgw_lite_handle_delete_session_request(const SgwDeleteSessionRequest * const delete_session_p);
-
+int sgw_lite_handle_release_access_bearers_request(const SgwReleaseAccessBearersRequest * const release_access_bearers_req_pP);
 #endif /* SGW_LITE_HANDLERS_H_ */
diff --git a/openair-cn/SGW-LITE/sgw_lite_ie_defs.h b/openair-cn/SGW-LITE/sgw_lite_ie_defs.h
index 06180da5e411d16379e4e8d65248ee7206850a11..7e95a583988cc3760edc49337ed1c8e5a0237019 100644
--- a/openair-cn/SGW-LITE/sgw_lite_ie_defs.h
+++ b/openair-cn/SGW-LITE/sgw_lite_ie_defs.h
@@ -464,6 +464,12 @@ typedef struct {
   /* TODO: add packet filter list as defined in 3GPP TS 29.274 Table 10.5.162 */
 } tft_t;
 
+typedef enum node_type_e {
+  NODE_TYPE_MME  = 0,
+  NODE_TYPE_SGSN = 1
+} node_type_t;
+
+
 /* Cause as defined in 3GPP TS 29.274 #8.4 */
 typedef enum SGWCause_e {
   /* Request / Initial message */
diff --git a/openair-cn/SGW-LITE/sgw_lite_task.c b/openair-cn/SGW-LITE/sgw_lite_task.c
index 8a9a913550172b4dc0f51dfa22081b54bbc51a57..c2349af66c617077a00e871c4bfb96c6d32ea947 100644
--- a/openair-cn/SGW-LITE/sgw_lite_task.c
+++ b/openair-cn/SGW-LITE/sgw_lite_task.c
@@ -78,6 +78,11 @@ static void *sgw_lite_intertask_interface(void *args_p)
     }
     break;
 
+    case SGW_RELEASE_ACCESS_BEARERS_REQUEST: {
+      sgw_lite_handle_release_access_bearers_request(&received_message_p->ittiMsg.sgwReleaseAccessBearersRequest);
+    }
+    break;
+
     case SGW_DELETE_SESSION_REQUEST: {
       sgw_lite_handle_delete_session_request(&received_message_p->ittiMsg.sgwDeleteSessionRequest);
     }
diff --git a/openair-cn/UTILS/mme_config.c b/openair-cn/UTILS/mme_config.c
index 3597e657283acdf73b2e9f51300fcff7399b15c2..6f401ae5f74dbb09f85f5c5203b59d38587e805d 100644
--- a/openair-cn/UTILS/mme_config.c
+++ b/openair-cn/UTILS/mme_config.c
@@ -694,6 +694,7 @@ int config_parse_opt_line(int argc, char *argv[], mme_config_t *mme_config_p)
     break;
 
     case 'm': {
+      fprintf(stdout, "Logging Message chart(mscgen)\n");
       MSC_INIT(MSC_EPC);
     }
     break;