diff --git a/openair-cn/S1AP/s1ap_eNB_handlers.c b/openair-cn/S1AP/s1ap_eNB_handlers.c
index 86aca8ab74140c49a14b1c1b6225abafb6dddff9..9bc7e860ccad72be0dbc182d5a993c6a2272a543 100644
--- a/openair-cn/S1AP/s1ap_eNB_handlers.c
+++ b/openair-cn/S1AP/s1ap_eNB_handlers.c
@@ -378,6 +378,7 @@ int s1ap_eNB_handle_initial_context_request(uint32_t               assoc_id,
 
     message_p = itti_alloc_new_message(TASK_S1AP, S1AP_INITIAL_CONTEXT_SETUP_REQ);
 
+    S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).ue_initial_id  = ue_desc_p->ue_initial_id;
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).eNB_ue_s1ap_id = ue_desc_p->eNB_ue_s1ap_id;
     S1AP_INITIAL_CONTEXT_SETUP_REQ(message_p).nb_of_e_rabs =
     initialContextSetupRequest_p->e_RABToBeSetupListCtxtSUReq.s1ap_E_RABToBeSetupItemCtxtSUReq.count;
diff --git a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c
index 4ea84070674f93e835c8192ce72b9879f2f2295d..9c6b97f842fbcc061362a93a1827888ecd0f59eb 100644
--- a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c
+++ b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c
@@ -408,7 +408,8 @@ int s1ap_eNB_initial_ctxt_resp(
                          new_item);
     }
 
-    if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
+    if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0)
+    {
         S1AP_ERROR("Failed to encode uplink NAS transport\n");
         /* Encode procedure has failed... */
         return -1;
diff --git a/openair-cn/UTILS/CONF/epc_caviar.conf b/openair-cn/UTILS/CONF/epc_caviar.conf
new file mode 100644
index 0000000000000000000000000000000000000000..a3aa2df051c730c275759e5bfb12fc4e30d7b1dd
--- /dev/null
+++ b/openair-cn/UTILS/CONF/epc_caviar.conf
@@ -0,0 +1,73 @@
+S6A_CONF = "../objs/UTILS/CONF/s6a.conf";
+
+REALM = "eur";
+
+# Define the limits of the system in terms of served eNB and served UE.
+# When the limits will be reached, overload procedure will take place.
+
+MAXENB = 10;
+MAXUE = 100;
+
+RELATIVE_CAPACITY = 10;
+
+# Display statistics about whole system (expressed in seconds)
+MME_STATISTIC_TIMER = 60;
+
+# max queue size per task
+ITTI_QUEUE_SIZE = 2000000;
+
+# ------- SCTP definitions
+# Number of streams to use in input/output
+
+SCTP_INSTREAMS = 32;
+SCTP_OUTSTREAMS = 32;
+
+# ------- S1AP definitions
+
+# outcome drop timer value (seconds)
+S1AP_OUTCOME_TIMER = 10;
+
+# ------- MME served GUMMEI
+# MME code DEFAULT = 0
+# size = 8 bits
+# maximum of 256 values, comma separated
+MME_CODE = 30,56,1,8;
+
+# MME GROUP ID DEFAULT = 0
+# size = 16 bits
+# maximum of 65535 values, comma separated
+MME_GID = 3,4,5,30,8,9,50021;
+
+# TA (mcc.mnc:tracking area code) DEFAULT = 208.34:0
+# max values = 999.999:65535
+# maximum of 32 values, comma separated
+PLMN = 208.38:0,209.130:4,208.35:8;
+
+# ------- Interfaces definitions
+SGW_INTERFACE_NAME_FOR_S11            = "eth0";
+SGW_IP_ADDRESS_FOR_S11                = "192.168.12.87";
+SGW_IP_NETMASK_FOR_S11                = 24;
+
+SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP  = "eth0";
+SGW_IP_ADDRESS_FOR_S1U_S12_S4_UP      = "192.168.12.87";
+SGW_IP_NETMASK_FOR_S1U_S12_S4_UP      = 24;
+
+SGW_INTERFACE_NAME_FOR_S5_S8_UP       = "upsgw1";
+SGW_IP_ADDRESS_FOR_S5_S8_UP           = "192.168.5.2";
+SGW_IP_NETMASK_FOR_S5_S8_UP           = 24;
+
+PGW_INTERFACE_NAME_FOR_S5_S8          = "uppgw0";
+PGW_IP_ADDRESS_FOR_S5_S8              = "192.168.5.1";
+PGW_IP_NETMASK_FOR_S5_S8              = 24;
+
+PGW_INTERFACE_NAME_FOR_SGI            = "eth0";
+PGW_IP_ADDR_FOR_SGI                   = "192.168.12.87";
+PGW_IP_NETMASK_FOR_SGI                = 24;
+
+MME_INTERFACE_NAME_FOR_S1_MME         = "eth0";
+MME_IP_ADDRESS_FOR_S1_MME             = "192.168.12.87";
+MME_IP_NETMASK_FOR_S1_MME             = 24;
+
+MME_INTERFACE_NAME_FOR_S11_MME        = "eth0";
+MME_IP_ADDRESS_FOR_S11_MME            = "192.168.12.87";
+MME_IP_NETMASK_FOR_S11_MME            = 24;
diff --git a/openair2/COMMON/s1ap_messages_def.h b/openair2/COMMON/s1ap_messages_def.h
index a05951bccd3a15cd7558e242e1e0762f9eeddc3a..4be2762af8062998886979dbfe576393992209fe 100644
--- a/openair2/COMMON/s1ap_messages_def.h
+++ b/openair2/COMMON/s1ap_messages_def.h
@@ -6,6 +6,7 @@ MESSAGE_DEF(S1AP_NAS_FIRST_REQ             , MESSAGE_PRIORITY_MED, s1ap_nas_firs
 MESSAGE_DEF(S1AP_UPLINK_NAS                , MESSAGE_PRIORITY_MED, s1ap_uplink_nas_t                , s1ap_uplink_nas   )
 MESSAGE_DEF(S1AP_UE_CAPABILITIES_IND       , MESSAGE_PRIORITY_MED, s1ap_ue_cap_info_ind_t           , s1ap_ue_cap_info_ind)
 MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_RESP, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_resp_t, s1ap_initial_context_setup_resp)
+MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_FAIL, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_fail_t, s1ap_initial_context_setup_fail)
 
 /* S1AP -> RRC messages */
 MESSAGE_DEF(S1AP_DOWNLINK_NAS              , MESSAGE_PRIORITY_MED, s1ap_downlink_nas_t              , s1ap_downlink_nas )
diff --git a/openair2/COMMON/s1ap_messages_types.h b/openair2/COMMON/s1ap_messages_types.h
index f44fbe99923a0081e6f93a39f06912845f8ea905..82356edb65fb27e8d80ac8063f4f4432e51393d0 100644
--- a/openair2/COMMON/s1ap_messages_types.h
+++ b/openair2/COMMON/s1ap_messages_types.h
@@ -248,6 +248,10 @@ typedef struct s1ap_uplink_nas_s {
 typedef s1ap_uplink_nas_t s1ap_downlink_nas_t;
 
 typedef struct s1ap_initial_context_setup_req_s {
+    /* UE id for initial connection to S1AP */
+    uint16_t ue_initial_id;
+
+    /* eNB ue s1ap id as initialized by S1AP layer */
     unsigned eNB_ue_s1ap_id:24;
 
     /* UE aggregate maximum bitrate */
@@ -279,6 +283,12 @@ typedef struct s1ap_initial_context_setup_resp_s {
     e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
 } s1ap_initial_context_setup_resp_t;
 
+typedef struct s1ap_initial_context_setup_fail_s {
+    unsigned  eNB_ue_s1ap_id:24;
+
+    /* TODO add cause */
+} s1ap_initial_context_setup_fail_t;
+
 typedef struct s1ap_ue_cap_info_ind_s {
     unsigned  eNB_ue_s1ap_id:24;
     ue_radio_cap_t ue_radio_cap;