diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
index c752469414653c6252760e4b1156331a77dc7662..834283945b75d38db83b1c0d62150f63f8c1070d 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
@@ -1472,24 +1472,6 @@ void flexran_agent_slice_update(mid_t mod_id)
     flexran_agent_read_slice_ul_config(mod_id, i, slice_config[mod_id]->ul[i]);
   }
 
-  /* in case we tried to add a slice and it failed (e.g. due to high sum
-   * percentage being too high), revert to the correct number of slices.
-   * Also, do not write if we try the last time */
-  if (perform_slice_config_update_count == 1) {
-    if (slice_config[mod_id]->n_dl != sc_update[mod_id]->n_dl) {
-      sc_update[mod_id]->n_dl = slice_config[mod_id]->n_dl;
-      LOG_W(FLEXRAN_AGENT, "[%d] reverting to original number of %ld DL slices\n",
-            mod_id, sc_update[mod_id]->n_dl);
-    }
-    if (slice_config[mod_id]->n_ul != sc_update[mod_id]->n_ul) {
-      sc_update[mod_id]->n_ul = slice_config[mod_id]->n_ul;
-      LOG_W(FLEXRAN_AGENT, "[%d] reverting to original number of %ld UL slices\n",
-            mod_id, sc_update[mod_id]->n_ul);
-    }
-    pthread_mutex_unlock(&sc_update_mtx);
-    return;
-  }
-
   /********* write new config *********/
   /* check for removal (sc_update[X]->dl[Y].percentage == 0)
    * and update sc_update & slice_config accordingly */
@@ -1499,22 +1481,22 @@ void flexran_agent_slice_update(mid_t mod_id)
   for (i = slice_config[mod_id]->n_dl; i < sc_update[mod_id]->n_dl; i++) {
     flexran_create_dl_slice(mod_id, sc_update[mod_id]->dl[i]->id);
     slice_config[mod_id]->n_dl = flexran_get_num_dl_slices(mod_id);
-    flexran_agent_read_slice_dl_config(mod_id, i, slice_config[mod_id]->dl[i]);
   }
   for (i = slice_config[mod_id]->n_ul; i < sc_update[mod_id]->n_ul; i++) {
     flexran_create_ul_slice(mod_id, sc_update[mod_id]->ul[i]->id);
     slice_config[mod_id]->n_ul = flexran_get_num_ul_slices(mod_id);
-    flexran_agent_read_slice_ul_config(mod_id, i, slice_config[mod_id]->ul[i]);
   }
   for (i = 0; i < slice_config[mod_id]->n_dl; i++) {
     changes += apply_new_slice_dl_config(mod_id,
                                          slice_config[mod_id]->dl[i],
                                          sc_update[mod_id]->dl[i]);
+    flexran_agent_read_slice_dl_config(mod_id, i, slice_config[mod_id]->dl[i]);
   }
   for (i = 0; i < slice_config[mod_id]->n_ul; i++) {
     changes += apply_new_slice_ul_config(mod_id,
                                          slice_config[mod_id]->ul[i],
                                          sc_update[mod_id]->ul[i]);
+    flexran_agent_read_slice_ul_config(mod_id, i, slice_config[mod_id]->ul[i]);
   }
   if (n_ue_slice_assoc_updates > 0) {
     changes += apply_ue_slice_assoc_update(mod_id);
diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c
index e1ca3273e896be33f35986d26eb4dd2b5edff3ac..50eb17d919fbb7c2cd51d03d1ce445f25fb0db6c 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c
@@ -1365,11 +1365,7 @@ void prepare_update_slice_config(mid_t mod_id, Protocol__FlexSliceConfig *sup)
   }
   pthread_mutex_unlock(&sc_update_mtx);
 
-  /* perform the slice configuration reads a couple of times. If there are
-   * inconsistencies (i.e. the MAC refuses a configuration), we will have a
-   * couple of warnings because the current configuration and the one in
-   * sc_update will be diverged */
-  perform_slice_config_update_count = 3;
+  perform_slice_config_update_count = 1;
 }
 
 int apply_new_slice_dl_config(mid_t mod_id, Protocol__FlexDlSlice *oldc, Protocol__FlexDlSlice *newc)