diff --git a/src/libbsc/abis_om2000.c b/src/libbsc/abis_om2000.c
index 6057bc6..d533ea1 100644
--- a/src/libbsc/abis_om2000.c
+++ b/src/libbsc/abis_om2000.c
@@ -2737,8 +2737,10 @@
 		     bts->nr, 255, trx->nr);
 
 	for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {
-		om2k_mo_init(&trx->ts[i].rbs2000.om2k_mo, OM2K_MO_CLS_TS,
+		struct gsm_bts_trx_ts *ts = &trx->ts[i];
+		om2k_mo_init(&ts->rbs2000.om2k_mo, OM2K_MO_CLS_TS,
 				bts->nr, trx->nr, i);
+		gsm_ts_check_init(ts);
 	}
 }
 
diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c
index b36e496..e6d0cea 100644
--- a/src/libbsc/abis_rsl.c
+++ b/src/libbsc/abis_rsl.c
@@ -3017,3 +3017,40 @@
 	/* Now release it */
 	return rsl_rf_chan_release(lchan, 0, SACCH_NONE);
 }
+
+/* Initial timeslot actions when a timeslot first comes into operation. */
+static bool gsm_ts_init(struct gsm_bts_trx_ts *ts)
+{
+	dyn_ts_init(ts);
+	return true;
+}
+
+/* Trigger initial timeslot actions iff both OML and RSL are setup. */
+void gsm_ts_check_init(struct gsm_bts_trx_ts *ts)
+{
+	struct gsm_bts *bts = ts->trx->bts;
+	if (bts->model->oml_is_ts_ready
+	    && !bts->model->oml_is_ts_ready(ts))
+		return;
+	if (!ts->trx->rsl_link)
+		return;
+	if (ts->initialized)
+		return;
+	ts->initialized = gsm_ts_init(ts);
+}
+
+void gsm_trx_mark_all_ts_uninitialized(struct gsm_bts_trx *trx)
+{
+	int i;
+	for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {
+		struct gsm_bts_trx_ts *ts = &trx->ts[i];
+		ts->initialized = false;
+	}
+}
+
+void gsm_bts_mark_all_ts_uninitialized(struct gsm_bts *bts)
+{
+	struct gsm_bts_trx *trx;
+	llist_for_each_entry(trx, &bts->trx_list, list)
+		gsm_trx_mark_all_ts_uninitialized(trx);
+}
diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c
index 92b8c27..5b157c5 100644
--- a/src/libbsc/bsc_init.c
+++ b/src/libbsc/bsc_init.c
@@ -353,7 +353,9 @@
 	}
 
 	for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {
-		generate_ma_for_ts(&trx->ts[i]);
+		struct gsm_bts_trx_ts *ts = &trx->ts[i];
+		generate_ma_for_ts(ts);
+		gsm_ts_check_init(ts);
 	}
 }
 
diff --git a/src/libbsc/bts_ericsson_rbs2000.c b/src/libbsc/bts_ericsson_rbs2000.c
index 20b498a..9c8b90e 100644
--- a/src/libbsc/bts_ericsson_rbs2000.c
+++ b/src/libbsc/bts_ericsson_rbs2000.c
@@ -52,6 +52,8 @@
 
 static int shutdown_om(struct gsm_bts *bts)
 {
+	gsm_bts_mark_all_ts_uninitialized(bts);
+
 	/* FIXME */
 	return 0;
 }
@@ -172,11 +174,17 @@
 	e1inp_line_bind_ops(line, &bts_isdn_e1inp_line_ops);
 }
 
+static bool bts_model_rbs2k_is_ts_ready(const struct gsm_bts_trx_ts *ts)
+{
+	return ts && ts->mo.nm_state.operational == NM_OPSTATE_ENABLED;
+}
+
 static struct gsm_bts_model model_rbs2k = {
 	.type = GSM_BTS_TYPE_RBS2000,
 	.name = "rbs2000",
 	.start = bts_model_rbs2k_start,
 	.oml_rcvmsg = &abis_om2k_rcvmsg,
+	.oml_is_ts_ready = bts_model_rbs2k_is_ts_ready,
 	.config_write_bts = &config_write_bts,
 	.e1line_bind_ops = &bts_model_rbs2k_e1line_bind_ops,
 };
diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c
index 3eb7e0e..d5b3b21 100644
--- a/src/libbsc/bts_ipaccess_nanobts.c
+++ b/src/libbsc/bts_ipaccess_nanobts.c
@@ -56,12 +56,18 @@
 	return "disconnected";
 }
 
+static bool oml_is_ts_ready(const struct gsm_bts_trx_ts *ts)
+{
+	return ts && ts->mo.nm_state.operational == NM_OPSTATE_ENABLED;
+}
+
 struct gsm_bts_model bts_model_nanobts = {
 	.type = GSM_BTS_TYPE_NANOBTS,
 	.name = "nanobts",
 	.start = bts_model_nanobts_start,
 	.oml_rcvmsg = &abis_nm_rcvmsg,
 	.oml_status = &get_oml_status,
+	.oml_is_ts_ready = oml_is_ts_ready,
 	.e1line_bind_ops = bts_model_nanobts_e1line_bind_ops, 
 	.nm_att_tlvdef = {
 		.def = {
@@ -320,7 +326,7 @@
 		return;
 	}
 
-	dyn_ts_init(ts);
+	gsm_ts_check_init(ts);
 }
 
 static void nm_rx_opstart_ack(struct abis_om_fom_hdr *foh)
@@ -426,6 +432,8 @@
 	llist_for_each_entry(trx, &bts->trx_list, list)
 		ipaccess_drop_rsl(trx);
 
+	gsm_bts_mark_all_ts_uninitialized(bts);
+
 	bts->ip_access.flags = 0;
 
 	/*
diff --git a/src/libbsc/bts_nokia_site.c b/src/libbsc/bts_nokia_site.c
index 67281bb..4a24c39 100644
--- a/src/libbsc/bts_nokia_site.c
+++ b/src/libbsc/bts_nokia_site.c
@@ -55,6 +55,8 @@
 {
 	LOGP(DNM, LOGL_NOTICE, "bootstrapping OML for BTS %u\n", bts->nr);
 
+	gsm_bts_mark_all_ts_uninitialized(bts);
+
 	if (!bts->nokia.skip_reset) {
 		if (!bts->nokia.did_reset)
 			abis_nm_reset(bts, 1);
@@ -66,6 +68,8 @@
 {
 	LOGP(DNM, LOGL_NOTICE, "bootstrapping OML for TRX %u/%u\n",
 	     trx->bts->nr, trx->nr);
+
+	gsm_trx_mark_all_ts_uninitialized(trx);
 }
 
 static int shutdown_om(struct gsm_bts *bts)
diff --git a/src/libbsc/bts_siemens_bs11.c b/src/libbsc/bts_siemens_bs11.c
index 5701e47..2d23517 100644
--- a/src/libbsc/bts_siemens_bs11.c
+++ b/src/libbsc/bts_siemens_bs11.c
@@ -536,6 +536,8 @@
 	/* Reset BTS Site manager resource */
 	abis_nm_bs11_reset_resource(bts);
 
+	gsm_bts_mark_all_ts_uninitialized(bts);
+
 	return 0;
 }
 
