diff --git a/openair2/ENB_APP/MESSAGES/V2/config_common.proto b/openair2/ENB_APP/MESSAGES/V2/config_common.proto
index 7b392b6b3bbc7a89049fc5ae5708026d68064dc4..3af59c1537691b5ac40104cfab714106a770a257 100644
--- a/openair2/ENB_APP/MESSAGES/V2/config_common.proto
+++ b/openair2/ENB_APP/MESSAGES/V2/config_common.proto
@@ -58,6 +58,87 @@ enum flex_qam {
      FLEQ_MOD_64QAM = 1;
 }
 
+//
+// Slice config related structures and enums
+//
+enum flex_dl_sorting {
+
+	CR_ROUND = 0;	// Highest HARQ first
+	CR_SRB12 = 1;	// Highest SRB1+2 first
+	CR_HOL   = 2;	// Highest HOL first
+	CR_LC    = 3;	// Greatest RLC buffer first
+	CR_CQI   = 4;	// Highest CQI first
+	CR_LCP   = 5;	// Highest LC priority first
+}
+
+enum flex_ul_sorting {
+	CRU_ROUND = 0;	// Highest HARQ first
+	CRU_BUF   = 1;	// Highest BSR first
+	CRU_BTS   = 2;	// More bytes to schedule first
+	CRU_MCS   = 3;  // Highest MCS first
+	CRU_LCP   = 4;  // Highest LC priority first
+	CRU_HOL   = 5;  // Highest HOL first
+}
+
+enum flex_dl_accounting_policy {
+	POL_FAIR   = 0;
+	POL_GREEDY = 1;
+	POL_NUM    = 2;
+}
+
+enum flex_ul_accounting_policy {
+	POLU_FAIR   = 0;
+	POLU_GREEDY = 1;
+	POLU_NUM    = 2;
+}
+
+enum flex_slice_label {
+	xMBB  = 0;
+	URLLC = 1;
+	mMTC  = 2;
+	xMTC  = 3;
+	Other = 4;
+}
+
+message flex_dl_slice {
+	optional uint32 id = 1;
+	optional flex_slice_label label = 2;
+	// should be between 0 and 100
+	optional uint32 percentage = 3;
+	// whether this slice should be exempted form interslice sharing
+	optional bool   isolation = 4;
+	// increasing value means increasing prio
+	optional uint32 priority = 5;
+	// min and max RB to use (in frequency) in the range [0, N_RBG_MAX]
+	optional uint32 position_low = 6;
+	optional uint32 position_high = 7;
+	// maximum MCS to be allowed in this slice
+	optional uint32 maxmcs = 8;
+	repeated flex_dl_sorting sorting = 9;
+	optional flex_dl_accounting_policy accounting = 10;
+	optional string scheduler_name = 11;
+}
+
+message flex_ul_slice {
+	optional uint32 id = 1;
+	optional flex_slice_label label = 2;
+	// should be between 0 and 100
+	optional uint32 percentage = 3;
+	// whether this slice should be exempted form interslice sharing
+	optional bool   isolation = 4;
+	// increasing value means increasing prio
+	optional uint32 priority = 5;
+	// RB start to use (in frequency) in the range [0, N_RB_MAX]
+	optional uint32 first_rb = 6;
+	// TODO RB number
+	//optional uint32 length_rb = 7;
+	// maximum MCS to be allowed in this slice
+	optional uint32 maxmcs = 8;
+	repeated flex_ul_sorting sorting = 9;
+	optional flex_ul_accounting_policy accounting = 10;
+	optional string scheduler_name = 11;
+}
+
 //
 // UE config related structures and enums
 //
@@ -177,4 +258,4 @@ enum flex_ue_state_change_type {
      FLUESC_ACTIVATED = 1;
      FLUESC_DEACTIVATED = 2;
      FLUESC_MOVED = 3;
-}
\ No newline at end of file
+}
diff --git a/openair2/ENB_APP/MESSAGES/V2/config_messages.proto b/openair2/ENB_APP/MESSAGES/V2/config_messages.proto
index f734686f011dcb1899a3bb95a52a92f4c6076572..b186193b8c0940057ff77b6f1acac3cd4283d4e1 100644
--- a/openair2/ENB_APP/MESSAGES/V2/config_messages.proto
+++ b/openair2/ENB_APP/MESSAGES/V2/config_messages.proto
@@ -43,6 +43,19 @@ message flex_cell_config {
 	optional uint32 eutra_band= 37;       // operating band 
 	optional int32 dl_pdsch_power = 38;       // operating downlink power 
 	optional int32 ul_pusch_power = 39;       // operating uplink power
+
+	// whether remaining RBs after first intra-slice allocation will
+	// be allocated to UEs of the same slice
+	optional bool   intraslice_share_active = 40;
+	// whether remaining RBs after slice allocation will be allocated
+	// to UEs of another slice. Isolated slices will be ignored.
+	optional bool   interslice_share_active = 41;
+	optional flex_slice_config slice_config = 42;
+}
+
+message flex_slice_config {
+	repeated flex_dl_slice dl = 1;
+	repeated flex_ul_slice ul = 2;
 }
 
 message flex_ue_config {
@@ -82,6 +95,8 @@ message flex_ue_config {
 	repeated flex_scell_config scell_config = 28;  // Secondary cells configuration
 	optional uint32 scell_deactivation_timer = 29;// Deactivation timer for secondary cell
 	optional uint64 imsi = 30;
+	optional uint32 dl_slice_id = 31;
+	optional uint32 ul_slice_id = 32;
 }
 
 message flex_lc_ue_config {