diff --git a/include/osmocom/bsc/bts_sm.h b/include/osmocom/bsc/bts_sm.h
index 37ace77..7ed7aba 100644
--- a/include/osmocom/bsc/bts_sm.h
+++ b/include/osmocom/bsc/bts_sm.h
@@ -70,3 +70,10 @@
 struct gsm_bts_sm *gsm_bts_sm_alloc(struct gsm_network *net, uint8_t bts_num);
 
 void gsm_bts_sm_mo_reset(struct gsm_bts_sm *bts_sm);
+
+static inline struct gsm_gprs_nsvc *gsm_bts_sm_nsvc_num(struct gsm_bts_sm *bts_sm, uint8_t nsvc_num)
+{
+	if (nsvc_num >= ARRAY_SIZE(bts_sm->gprs.nsvc))
+		return NULL;
+	return &bts_sm->gprs.nsvc[nsvc_num];
+}
diff --git a/include/osmocom/bsc/nm_common_fsm.h b/include/osmocom/bsc/nm_common_fsm.h
index a18da3a..7ad3df6 100644
--- a/include/osmocom/bsc/nm_common_fsm.h
+++ b/include/osmocom/bsc/nm_common_fsm.h
@@ -100,3 +100,12 @@
 	NM_GPRS_CELL_ST_OP_ENABLED,
 };
 extern struct osmo_fsm nm_gprs_cell_fsm;
+
+/* GPRS NSVC */
+enum nm_gprs_op_nsvc_fsm_states {
+	NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED,
+	NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY,
+	NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE,
+	NM_GPRS_NSVC_ST_OP_ENABLED,
+};
+extern struct osmo_fsm nm_gprs_nsvc_fsm;
diff --git a/src/ipaccess/Makefile.am b/src/ipaccess/Makefile.am
index eadb30e..e282c6f 100644
--- a/src/ipaccess/Makefile.am
+++ b/src/ipaccess/Makefile.am
@@ -62,6 +62,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(OSMO_LIBS) \
 	$(NULL)
@@ -86,6 +87,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(OSMO_LIBS) \
 	$(NULL)
diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am
index 79fc164..92ef7c3 100644
--- a/src/osmo-bsc/Makefile.am
+++ b/src/osmo-bsc/Makefile.am
@@ -83,6 +83,7 @@
 	nm_bts_fsm.c \
 	nm_gprs_cell_fsm.c \
 	nm_gprs_nse_fsm.c \
+	nm_gprs_nsvc_fsm.c \
 	nm_channel_fsm.c \
 	nm_rcarrier_fsm.c \
 	gsm_08_08.c \
diff --git a/src/osmo-bsc/abis_nm.c b/src/osmo-bsc/abis_nm.c
index d837779..b64b4dc 100644
--- a/src/osmo-bsc/abis_nm.c
+++ b/src/osmo-bsc/abis_nm.c
@@ -49,6 +49,7 @@
 #include <osmocom/abis/e1_input.h>
 #include <osmocom/bsc/chan_alloc.h>
 #include <osmocom/bsc/bts.h>
+#include <osmocom/bsc/nm_common_fsm.h>
 #include <osmocom/gsm/bts_features.h>
 
 #define OM_ALLOC_SIZE		1024
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 91c76f1..6d8f91f 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -127,7 +127,6 @@
 {
 	uint8_t obj_class = nsd->obj_class;
 	void *obj = nsd->obj;
-	struct gsm_nm_state *new_state = nsd->new_state;
 
 	struct gsm_bts_sm *bts_sm;
 	struct gsm_bts *bts;
@@ -138,24 +137,9 @@
 	struct gsm_gprs_nse *nse;
 	struct gsm_gprs_cell *cell;
 
-	struct msgb *msgb;
-
 	if (!is_ipaccess_bts(nsd->bts))
 		return 0;
 
-	/* This event-driven BTS setup is currently only required on nanoBTS */
-
-	/* S_NM_STATECHG_ADM is called after we call chg_adm_state() and would create
-	 * endless loop */
-	if (obj_class != NM_OC_BTS &&
-	    obj_class != NM_OC_BASEB_TRANSC &&
-	    obj_class != NM_OC_RADIO_CARRIER &&
-	    obj_class != NM_OC_CHANNEL &&
-	    obj_class != NM_OC_GPRS_NSE &&
-	    obj_class != NM_OC_GPRS_CELL &&
-	    evt != S_NM_STATECHG_OPER)
-		return 0;
-
 	switch (obj_class) {
 	case NM_OC_SITE_MANAGER:
 		bts_sm = obj;
@@ -188,33 +172,11 @@
 		break;
 	case NM_OC_GPRS_NSVC:
 		nsvc = obj;
-		bts = nsvc->bts;
-		if (bts->gprs.mode == BTS_GPRS_NONE)
-			break;
 		/* We skip NSVC1 since we only use NSVC0 */
 		if (nsvc->id == 1)
 			break;
-		if (!osmo_bts_has_feature(&bts->features, BTS_FEAT_IPV6_NSVC) &&
-		    nsvc->remote.u.sa.sa_family == AF_INET6) {
-			LOGP(DLINP, LOGL_ERROR, "BTS %d does not support IPv6 but an IPv6 address was configured!\n", bts->nr);
-			break;
-		}
-
-		if ((new_state->availability == NM_AVSTATE_OFF_LINE) ||
-		    (new_state->availability == NM_AVSTATE_DEPENDENCY)) {
-			msgb = nanobts_attr_nscv_get(bts);
-			if (!msgb)
-				break;
-			abis_nm_ipaccess_set_attr(bts, obj_class, bts->bts_nr,
-						  nsvc->id, 0xff,
-						  msgb->data, msgb->len);
-			msgb_free(msgb);
-			abis_nm_chg_adm_state(bts, obj_class, bts->bts_nr,
-					      nsvc->id, 0xff,
-					      NM_STATE_UNLOCKED);
-			abis_nm_opstart(bts, obj_class, bts->bts_nr,
-					nsvc->id, 0xff);
-		}
+		osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_STATE_CHG_REP, nsd);
+		break;
 	default:
 		break;
 	}
@@ -228,6 +190,7 @@
 	struct e1inp_sign_link *sign_link = mb->dst;
 	struct gsm_bts *bts = sign_link->trx->bts;
 	struct gsm_bts_trx *trx;
+	struct gsm_gprs_nsvc *nsvc;
 	struct gsm_bts_trx_ts *ts;
 
 	if (!is_ipaccess_bts(bts))
@@ -261,6 +224,11 @@
 	case NM_OC_GPRS_CELL:
 		osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_SW_ACT_REP, NULL);
 		break;
+	case NM_OC_GPRS_NSVC:
+		if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, foh->obj_inst.trx_nr)))
+			return -EINVAL;
+		osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_SW_ACT_REP, NULL);
+		break;
 	}
 	return 0;
 }
@@ -286,6 +254,7 @@
 	struct e1inp_sign_link *sign_link = oml_msg->dst;
 	struct gsm_bts *bts = sign_link->trx->bts;
 	struct gsm_bts_trx *trx;
+	struct gsm_gprs_nsvc *nsvc;
 
 	switch (foh->obj_class) {
 	case NM_OC_SITE_MANAGER:
@@ -313,6 +282,11 @@
 	case NM_OC_GPRS_CELL:
 		osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_OPSTART_ACK, NULL);
 		break;
+	case NM_OC_GPRS_NSVC:
+		if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, foh->obj_inst.trx_nr)))
+			return;
+		osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_OPSTART_ACK, NULL);
+		break;
 	default:
 		break;
 	}
@@ -325,6 +299,7 @@
 	struct gsm_bts *bts = sign_link->trx->bts;
 	struct gsm_bts_trx *trx;
 	struct gsm_bts_trx_ts *ts;
+	struct gsm_gprs_nsvc *nsvc;
 
 	switch (foh->obj_class) {
 	case NM_OC_SITE_MANAGER:
@@ -354,6 +329,11 @@
 	case NM_OC_GPRS_CELL:
 		osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_OPSTART_NACK, NULL);
 		break;
+	case NM_OC_GPRS_NSVC:
+		if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, foh->obj_inst.trx_nr)))
+			return;
+		osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_OPSTART_NACK, NULL);
+		break;
 	default:
 		break;
 	}
@@ -409,6 +389,7 @@
 	void *obj;
 	struct gsm_gprs_nse *nse;
 	struct gsm_gprs_cell *cell;
+	struct gsm_gprs_nsvc *nsvc;
 
 	foh = (struct abis_om_fom_hdr *) (oh->data + 1 + idstrlen);
 	obj = gsm_objclass2obj(bts, foh->obj_class, &foh->obj_inst);
@@ -422,6 +403,11 @@
 		cell = obj;
 		osmo_fsm_inst_dispatch(cell->mo.fi, NM_EV_SET_ATTR_ACK, NULL);
 		break;
+	case NM_OC_GPRS_NSVC:
+		if (!(nsvc = gsm_bts_sm_nsvc_num(bts->site_mgr, foh->obj_inst.trx_nr)))
+			return;
+		osmo_fsm_inst_dispatch(nsvc->mo.fi, NM_EV_SET_ATTR_ACK, NULL);
+		break;
 	default:
 		LOGPFOH(DNM, LOGL_ERROR, foh, "IPACC Set Attr Ack received on incorrect object class %d!\n", foh->obj_class);
 	}
@@ -524,6 +510,7 @@
 	struct gsm_bts_trx *trx;
 	struct gsm_bts_trx_ts *ts ;
 	uint8_t tn;
+	uint8_t i;
 
 	/* First of all, remove deferred drop if enabled */
 	osmo_timer_del(&bts->oml_drop_link_timer);
@@ -550,6 +537,9 @@
 
 	osmo_fsm_inst_dispatch(bts->site_mgr->mo.fi, NM_EV_OML_DOWN, NULL);
 	osmo_fsm_inst_dispatch(bts->site_mgr->gprs.nse.mo.fi, NM_EV_OML_DOWN, NULL);
+	for (i = 0; i < ARRAY_SIZE(bts->site_mgr->gprs.nsvc); i++)
+		osmo_fsm_inst_dispatch(bts->site_mgr->gprs.nsvc[i].mo.fi, NM_EV_OML_DOWN, NULL);
+
 	osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_OML_DOWN, NULL);
 	osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, NM_EV_OML_DOWN, NULL);
 	gsm_bts_all_ts_dispatch(bts, TS_EV_OML_DOWN, NULL);
diff --git a/src/osmo-bsc/bts_sm.c b/src/osmo-bsc/bts_sm.c
index 296a21d..ca572f1 100644
--- a/src/osmo-bsc/bts_sm.c
+++ b/src/osmo-bsc/bts_sm.c
@@ -30,6 +30,13 @@
 
 static int gsm_bts_sm_talloc_destructor(struct gsm_bts_sm *bts_sm)
 {
+	int i;
+	for (i = 0; i < ARRAY_SIZE(bts_sm->gprs.nsvc); i++) {
+		if (bts_sm->gprs.nsvc[i].mo.fi) {
+			osmo_fsm_inst_free(bts_sm->gprs.nsvc[i].mo.fi);
+			bts_sm->gprs.nsvc[i].mo.fi = NULL;
+		}
+	}
 	if (bts_sm->gprs.nse.mo.fi) {
 		osmo_fsm_inst_free(bts_sm->gprs.nse.mo.fi);
 		bts_sm->gprs.nse.mo.fi = NULL;
@@ -75,8 +82,14 @@
 	for (i = 0; i < ARRAY_SIZE(bts_sm->gprs.nsvc); i++) {
 		bts_sm->gprs.nsvc[i].bts = bts;
 		bts_sm->gprs.nsvc[i].id = i;
+		bts_sm->gprs.nsvc[i].mo.fi = osmo_fsm_inst_alloc(
+					&nm_gprs_nsvc_fsm, bts_sm,
+					&bts_sm->gprs.nsvc[i],
+					LOGL_INFO, NULL);
+		osmo_fsm_inst_update_id_f(bts_sm->gprs.nsvc[i].mo.fi,
+					  "nsvc%d", i);
 		gsm_mo_init(&bts_sm->gprs.nsvc[i].mo, bts, NM_OC_GPRS_NSVC,
-				bts->nr, i, 0xff);
+			    bts->nr, i, 0xff);
 	}
 	memcpy(&bts_sm->gprs.nse.timer, bts_nse_timer_default,
 		sizeof(bts_sm->gprs.nse.timer));
diff --git a/src/osmo-bsc/nm_gprs_nsvc_fsm.c b/src/osmo-bsc/nm_gprs_nsvc_fsm.c
new file mode 100644
index 0000000..d28dfd3
--- /dev/null
+++ b/src/osmo-bsc/nm_gprs_nsvc_fsm.c
@@ -0,0 +1,369 @@
+/* NM GPRS NSVC FSM */
+
+/* (C) 2020 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * Author: Alexander Couzens <lynxis@fe80.eu>
+ *
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <inttypes.h>
+
+#include <osmocom/core/fsm.h>
+#include <osmocom/core/tdef.h>
+#include <osmocom/gsm/protocol/gsm_12_21.h>
+
+#include <osmocom/bsc/bts_sm.h>
+#include <osmocom/bsc/bts.h>
+#include <osmocom/bsc/signal.h>
+#include <osmocom/bsc/abis_nm.h>
+#include <osmocom/bsc/bts_ipaccess_nanobts_omlattr.h>
+#include <osmocom/bsc/nm_common_fsm.h>
+#include <osmocom/bsc/debug.h>
+
+#define X(s) (1 << (s))
+
+#define nm_gprs_nsvc_fsm_state_chg(fi, NEXT_STATE) \
+	osmo_fsm_inst_state_chg(fi, NEXT_STATE, 0, 0)
+
+//////////////////////////
+// FSM STATE ACTIONS
+//////////////////////////
+
+static void st_op_disabled_notinstalled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+
+	nsvc->mo.set_attr_sent = false;
+	nsvc->mo.set_attr_sent = false;
+	nsvc->mo.set_attr_ack_received = false;
+	nsvc->mo.adm_unlock_sent = false;
+	nsvc->mo.opstart_sent = false;
+}
+
+static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+	struct nm_statechg_signal_data *nsd;
+	struct gsm_nm_state *new_state;
+
+	switch (event) {
+	case NM_EV_SW_ACT_REP:
+		break;
+	case NM_EV_STATE_CHG_REP:
+		nsd = (struct nm_statechg_signal_data *)data;
+		new_state = nsd->new_state;
+		if (new_state->operational == NM_OPSTATE_ENABLED) {
+			/* should not happen... */
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_ENABLED);
+			return;
+		}
+		switch (new_state->availability) { /* operational = DISABLED */
+		case NM_AVSTATE_DEPENDENCY:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY);
+			return;
+		case NM_AVSTATE_OFF_LINE:
+		case NM_AVSTATE_OK:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE);
+			return;
+		default:
+			return;
+		}
+	default:
+		OSMO_ASSERT(0);
+	}
+}
+
+static void configure_loop(struct gsm_gprs_nsvc *nsvc, struct gsm_nm_state *state, bool allow_opstart) {
+	struct msgb *msgb;
+
+	if (nsvc->bts->gprs.mode == BTS_GPRS_NONE)
+		return;
+
+	if (!nsvc->mo.set_attr_sent && !nsvc->mo.set_attr_ack_received) {
+		if (!osmo_bts_has_feature(&nsvc->bts->features, BTS_FEAT_IPV6_NSVC) &&
+		    nsvc->remote.u.sa.sa_family == AF_INET6) {
+			LOGPFSML(nsvc->mo.fi, LOGL_ERROR,
+				 "BTS%d does not support IPv6 NSVC but an IPv6 address was configured!\n",
+				 nsvc->bts->nr);
+			return;
+		}
+		nsvc->mo.set_attr_sent = true;
+		msgb = nanobts_attr_nscv_get(nsvc->bts);
+		OSMO_ASSERT(msgb);
+		abis_nm_ipaccess_set_attr(nsvc->bts, NM_OC_GPRS_NSVC, nsvc->bts->bts_nr,
+					  nsvc->id, 0xff, msgb->data, msgb->len);
+		msgb_free(msgb);
+	}
+
+	if (nsvc->mo.set_attr_ack_received && state->administrative != NM_STATE_UNLOCKED &&
+	    !nsvc->mo.adm_unlock_sent) {
+		nsvc->mo.adm_unlock_sent = true;
+		abis_nm_chg_adm_state(nsvc->bts, NM_OC_GPRS_NSVC,
+				      nsvc->bts->bts_nr, nsvc->id, 0xff,
+				      NM_STATE_UNLOCKED);
+	}
+
+	if (allow_opstart && state->administrative == NM_STATE_UNLOCKED &&
+	    nsvc->mo.set_attr_ack_received) {
+		if (!nsvc->mo.opstart_sent) {
+			nsvc->mo.opstart_sent = true;
+			abis_nm_opstart(nsvc->bts, NM_OC_GPRS_NSVC,
+					nsvc->bts->bts_nr, nsvc->id, 0xff);
+		}
+	}
+}
+
+static void st_op_disabled_dependency_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+
+	/* nanoBTS is broken, doesn't follow TS 12.21. Opstart MUST be sent
+	   during Dependency, so we simply move to OFFLINE state here to avoid
+	   duplicating code */
+	if (nsvc->bts->site_mgr->peer_has_no_avstate_offline) {
+		nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE);
+		return;
+	}
+	configure_loop(nsvc, &nsvc->mo.nm_state, false);
+}
+
+static void st_op_disabled_dependency(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+	struct nm_statechg_signal_data *nsd;
+	struct gsm_nm_state *new_state;
+
+	switch (event) {
+	case NM_EV_SET_ATTR_ACK:
+		nsvc->mo.set_attr_ack_received = true;
+		nsvc->mo.set_attr_sent = false;
+		configure_loop(nsvc, &nsvc->mo.nm_state, false);
+		return;
+	case NM_EV_STATE_CHG_REP:
+		nsd = (struct nm_statechg_signal_data *)data;
+		new_state = nsd->new_state;
+		if (new_state->operational == NM_OPSTATE_ENABLED) {
+			/* should not happen... */
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_ENABLED);
+			return;
+		}
+		switch (new_state->availability) { /* operational = DISABLED */
+		case NM_AVSTATE_NOT_INSTALLED:
+		case NM_AVSTATE_POWER_OFF:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED);
+			return;
+		case NM_AVSTATE_OFF_LINE:
+		case NM_AVSTATE_OK:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE);
+			return;
+		case NM_AVSTATE_DEPENDENCY:
+			configure_loop(nsvc, new_state, false);
+			return;
+		default:
+			return;
+		}
+	default:
+		OSMO_ASSERT(0);
+	}
+}
+
+static void st_op_disabled_offline_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+
+	/* Warning: In here we may be acessing an state older than new_state
+	   from prev (syncrhonous) FSM state */
+	configure_loop(nsvc, &nsvc->mo.nm_state, true);
+}
+
+static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+	struct nm_statechg_signal_data *nsd;
+	struct gsm_nm_state *new_state;
+
+	switch (event) {
+	case NM_EV_SET_ATTR_ACK:
+		nsvc->mo.set_attr_ack_received = true;
+		nsvc->mo.set_attr_sent = false;
+		configure_loop(nsvc, &nsvc->mo.nm_state, true);
+		return;
+	case NM_EV_STATE_CHG_REP:
+		nsd = (struct nm_statechg_signal_data *)data;
+		new_state = nsd->new_state;
+		if (new_state->operational == NM_OPSTATE_ENABLED) {
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_ENABLED);
+			return;
+		}
+		switch (new_state->availability) { /* operational = DISABLED */
+		case NM_AVSTATE_NOT_INSTALLED:
+		case NM_AVSTATE_POWER_OFF:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED);
+			return;
+		case NM_AVSTATE_DEPENDENCY:
+			/* There's no point in moving back to Dependency, since it's broken
+			   and it acts actually as if it was in Offline state */
+			if (!nsvc->bts->site_mgr->peer_has_no_avstate_offline) {
+				nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY);
+			} else {
+				/* Moreover, in nanoBTS we need to check here for tx
+				   Opstart since we may have gone Unlocked state
+				   in this event, which means Opstart may be txed here. */
+				configure_loop(nsvc, new_state, true);
+			}
+			return;
+		case NM_AVSTATE_OFF_LINE:
+		case NM_AVSTATE_OK:
+			configure_loop(nsvc, new_state, true);
+			return;
+		default:
+			return;
+		}
+	default:
+		OSMO_ASSERT(0);
+	}
+}
+
+static void st_op_enabled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+
+	/* Reset state, we don't need it in this state and it will need to be
+	  reused as soon as we move back to Disabled */
+	nsvc->mo.opstart_sent = false;
+	nsvc->mo.adm_unlock_sent = false;
+	nsvc->mo.set_attr_sent = false;
+	nsvc->mo.set_attr_ack_received = false;
+}
+
+static void st_op_enabled(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+	struct nm_statechg_signal_data *nsd;
+	struct gsm_nm_state *new_state;
+
+	switch (event) {
+	case NM_EV_STATE_CHG_REP:
+		nsd = (struct nm_statechg_signal_data *)data;
+		new_state = nsd->new_state;
+		if (new_state->operational == NM_OPSTATE_ENABLED)
+			return;
+		switch (new_state->availability) { /* operational = DISABLED */
+		case NM_AVSTATE_NOT_INSTALLED:
+		case NM_AVSTATE_POWER_OFF:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED);
+			return;
+		case NM_AVSTATE_DEPENDENCY:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY);
+			return;
+		case NM_AVSTATE_OFF_LINE:
+		case NM_AVSTATE_OK:
+			nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE);
+			return;
+		default:
+			return;
+		}
+	default:
+		OSMO_ASSERT(0);
+	}
+}
+
+static void st_op_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+	struct gsm_gprs_nsvc *nsvc = (struct gsm_gprs_nsvc *)fi->priv;
+
+	switch (event) {
+	case NM_EV_OPSTART_ACK:
+	case NM_EV_OPSTART_NACK:
+		/* TODO: if on state OFFLINE and rx NACK, try again? */
+		nsvc->mo.opstart_sent = false;
+		break;
+	case NM_EV_OML_DOWN:
+		nm_gprs_nsvc_fsm_state_chg(fi, NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED);
+		break;
+	default:
+		OSMO_ASSERT(0);
+	}
+}
+
+static struct osmo_fsm_state nm_gprs_nsvc_fsm_states[] = {
+	[NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED] = {
+		.in_event_mask =
+			X(NM_EV_SW_ACT_REP) |
+			X(NM_EV_STATE_CHG_REP),
+		.out_state_mask =
+			X(NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY) |
+			X(NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE) |
+			X(NM_GPRS_NSVC_ST_OP_ENABLED),
+		.name = "DISABLED_NOTINSTALLED",
+		.onenter = st_op_disabled_notinstalled_on_enter,
+		.action = st_op_disabled_notinstalled,
+	},
+	[NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY] = {
+		.in_event_mask =
+			X(NM_EV_STATE_CHG_REP) |
+			X(NM_EV_SET_ATTR_ACK),
+		.out_state_mask =
+			X(NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED) |
+			X(NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE) |
+			X(NM_GPRS_NSVC_ST_OP_ENABLED),
+		.name = "DISABLED_DEPENDENCY",
+		.onenter = st_op_disabled_dependency_on_enter,
+		.action = st_op_disabled_dependency,
+	},
+	[NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE] = {
+		.in_event_mask =
+			X(NM_EV_STATE_CHG_REP) |
+			X(NM_EV_SET_ATTR_ACK),
+		.out_state_mask =
+			X(NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED) |
+			X(NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY) |
+			X(NM_GPRS_NSVC_ST_OP_ENABLED),
+		.name = "DISABLED_OFFLINE",
+		.onenter = st_op_disabled_offline_on_enter,
+		.action = st_op_disabled_offline,
+	},
+	[NM_GPRS_NSVC_ST_OP_ENABLED] = {
+	.in_event_mask =
+		X(NM_EV_STATE_CHG_REP),
+	.out_state_mask =
+		X(NM_GPRS_NSVC_ST_OP_DISABLED_NOTINSTALLED) |
+		X(NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY) |
+		X(NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE),
+	.name = "ENABLED",
+	.onenter = st_op_enabled_on_enter,
+	.action = st_op_enabled,
+	},
+};
+
+struct osmo_fsm nm_gprs_nsvc_fsm = {
+	.name = "NM_GPRS_NSVC_OP",
+	.states = nm_gprs_nsvc_fsm_states,
+	.num_states = ARRAY_SIZE(nm_gprs_nsvc_fsm_states),
+	.allstate_event_mask =
+		X(NM_EV_OPSTART_ACK) |
+		X(NM_EV_OPSTART_NACK) |
+		X(NM_EV_OML_DOWN),
+	.allstate_action = st_op_allstate,
+	.event_names = nm_fsm_event_names,
+	.log_subsys = DNM,
+};
+
+static __attribute__((constructor)) void nm_gprs_nsvc_fsm_init(void)
+{
+	OSMO_ASSERT(osmo_fsm_register(&nm_gprs_nsvc_fsm) == 0);
+}
diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am
index 03722ab..c180390 100644
--- a/src/utils/Makefile.am
+++ b/src/utils/Makefile.am
@@ -64,6 +64,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
@@ -144,6 +145,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
diff --git a/tests/abis/Makefile.am b/tests/abis/Makefile.am
index 88477b7..cb327fb 100644
--- a/tests/abis/Makefile.am
+++ b/tests/abis/Makefile.am
@@ -40,6 +40,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOABIS_LIBS) \
diff --git a/tests/acc/Makefile.am b/tests/acc/Makefile.am
index 9ddb93d..9351545 100644
--- a/tests/acc/Makefile.am
+++ b/tests/acc/Makefile.am
@@ -40,6 +40,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOABIS_LIBS) \
diff --git a/tests/acc/acc_test.ok b/tests/acc/acc_test.ok
index aebd2af..84117a9 100644
--- a/tests/acc/acc_test.ok
+++ b/tests/acc/acc_test.ok
@@ -14,6 +14,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_no_ramp()
 do_allowed_len_adm_loop(1)
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3fe (active_len=9, ramp_len=10, adm_len=9, perm_len=10, rotation=on)
@@ -119,6 +121,8 @@
 *** Barring zero ACCs ***
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 pcu_info_update(): t2=0x00 t3=0x00, allowed: 0 1 2 3 4 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -150,6 +154,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_manual_ramp()
 do_allowed_len_ramp_loop(1)
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3fe (active_len=9, ramp_len=9, adm_len=10, perm_len=10, rotation=on)
@@ -385,6 +391,8 @@
 pcu_info_update(): t2=0x03 t3=0xff, allowed:
 (bts=0) ACC: New ACC allowed subset 0x24c (active_len=4, ramp_len=4, adm_len=4, perm_len=4, rotation=off)
 pcu_info_update(): t2=0x01 t3=0xb3, allowed: 2 3 6 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -416,6 +424,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -482,6 +492,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x001 -> 0x002 (active_len=1, ramp_len=10, adm_len=1, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x03 t3=0xfd, allowed: 1
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -513,6 +525,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x200 (active_len=1, ramp_len=10, adm_len=1, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x01 t3=0xff, allowed: 9
@@ -576,6 +590,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x100 -> 0x200 (active_len=1, ramp_len=10, adm_len=1, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x01 t3=0xff, allowed: 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -607,6 +623,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -673,6 +691,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x101 -> 0x003 (active_len=2, ramp_len=10, adm_len=2, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x03 t3=0xfc, allowed: 0 1
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -704,6 +724,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x300 (active_len=2, ramp_len=10, adm_len=2, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0xff, allowed: 8 9
@@ -767,6 +789,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x180 -> 0x300 (active_len=2, ramp_len=10, adm_len=2, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0xff, allowed: 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -798,6 +822,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -864,6 +890,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x181 -> 0x103 (active_len=3, ramp_len=10, adm_len=3, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x02 t3=0xfc, allowed: 0 1 8
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -895,6 +923,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x380 (active_len=3, ramp_len=10, adm_len=3, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x7f, allowed: 7 8 9
@@ -958,6 +988,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1c0 -> 0x380 (active_len=3, ramp_len=10, adm_len=3, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x7f, allowed: 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -989,6 +1021,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -1055,6 +1089,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1c1 -> 0x183 (active_len=4, ramp_len=10, adm_len=4, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x02 t3=0x7c, allowed: 0 1 7 8
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1086,6 +1122,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3c0 (active_len=4, ramp_len=10, adm_len=4, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x3f, allowed: 6 7 8 9
@@ -1149,6 +1187,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1e0 -> 0x3c0 (active_len=4, ramp_len=10, adm_len=4, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x3f, allowed: 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1180,6 +1220,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -1246,6 +1288,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1e1 -> 0x1c3 (active_len=5, ramp_len=10, adm_len=5, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x02 t3=0x3c, allowed: 0 1 6 7 8
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1277,6 +1321,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3e0 (active_len=5, ramp_len=10, adm_len=5, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x1f, allowed: 5 6 7 8 9
@@ -1340,6 +1386,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1f0 -> 0x3e0 (active_len=5, ramp_len=10, adm_len=5, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x1f, allowed: 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1371,6 +1419,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -1437,6 +1487,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1f1 -> 0x1e3 (active_len=6, ramp_len=10, adm_len=6, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x02 t3=0x1c, allowed: 0 1 5 6 7 8
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1468,6 +1520,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3f0 (active_len=6, ramp_len=10, adm_len=6, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x0f, allowed: 4 5 6 7 8 9
@@ -1531,6 +1585,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1f8 -> 0x3f0 (active_len=6, ramp_len=10, adm_len=6, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x0f, allowed: 4 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1562,6 +1618,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -1628,6 +1686,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1f9 -> 0x1f3 (active_len=7, ramp_len=10, adm_len=7, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x02 t3=0x0c, allowed: 0 1 4 5 6 7 8
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1659,6 +1719,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3f8 (active_len=7, ramp_len=10, adm_len=7, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x07, allowed: 3 4 5 6 7 8 9
@@ -1722,6 +1784,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1fc -> 0x3f8 (active_len=7, ramp_len=10, adm_len=7, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x07, allowed: 3 4 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1753,6 +1817,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -1819,6 +1885,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1fd -> 0x1fb (active_len=8, ramp_len=10, adm_len=8, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x02 t3=0x04, allowed: 0 1 3 4 5 6 7 8
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1850,6 +1918,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3fc (active_len=8, ramp_len=10, adm_len=8, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x03, allowed: 2 3 4 5 6 7 8 9
@@ -1913,6 +1983,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1fe -> 0x3fc (active_len=8, ramp_len=10, adm_len=8, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x03, allowed: 2 3 4 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -1944,6 +2016,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_mgr_rotate()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3fe (active_len=9, ramp_len=10, adm_len=9, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x01, allowed: 1 2 3 4 5 6 7 8 9
@@ -2007,6 +2081,8 @@
 sys={40.000000}: select()
 (bts=0) ACC: rotate ACC allowed active subset 0x1ff -> 0x3fe (active_len=9, ramp_len=10, adm_len=9, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x01, allowed: 1 2 3 4 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2038,6 +2114,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x000 (active_len=0, ramp_len=0, adm_len=10, perm_len=10, rotation=off)
 pcu_info_update(): t2=0x03 t3=0xff, allowed:
@@ -2070,6 +2148,8 @@
 sys={450.000000}: select()
 (bts=0) ACC: update ACC allowed active subset 0x1ff -> 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 pcu_info_update(): t2=0x00 t3=0x00, allowed: 0 1 2 3 4 5 6 7 8 9
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2101,6 +2181,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp2()
 (bts=0) ACC: update ACC allowed active subset 0x3ff -> 0x3f8 (active_len=7, ramp_len=10, adm_len=7, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x00 t3=0x07, allowed: 3 4 5 6 7 8 9
@@ -2115,6 +2197,8 @@
 (bts=0) ACC: update ACC allowed active subset 0x03f -> 0x07f (active_len=7, ramp_len=7, adm_len=7, perm_len=10, rotation=on)
 pcu_info_update(): t2=0x03 t3=0x80, allowed: 0 1 2 3 4 5 6
 sys={15.000000}: select()
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2146,6 +2230,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp3()
 *** Barring some ACCs ***
 (bts=0) ACC: New ACC allowed subset 0x15a (active_len=5, ramp_len=10, adm_len=10, perm_len=5, rotation=off)
@@ -2176,6 +2262,8 @@
 (bts=0) ACC: update ACC allowed active subset 0x15a -> 0x15a (active_len=5, ramp_len=9, adm_len=10, perm_len=5, rotation=off)
 sys={45.000000}: select()
 (bts=0) ACC: update ACC allowed active subset 0x15a -> 0x15a (active_len=5, ramp_len=10, adm_len=10, perm_len=5, rotation=off)
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2207,6 +2295,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_up_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -2293,6 +2383,8 @@
 sys={2750.000000}: select()
 sys={3000.000000}: select()
 sys={3250.000000}: select()
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2324,6 +2416,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_up_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -2410,6 +2504,8 @@
 sys={2750.000000}: select()
 sys={3000.000000}: select()
 sys={3250.000000}: select()
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2441,6 +2537,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_up_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -2527,6 +2625,8 @@
 sys={2750.000000}: select()
 sys={3000.000000}: select()
 sys={3250.000000}: select()
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2558,6 +2658,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_updown_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -2674,6 +2776,8 @@
 sys={7000.000000}: select(47): chan_load_avg=75
 sys={7250.000000}: select(48): chan_load_avg=90
 sys={7500.000000}: select(49): chan_load_avg=100
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2705,6 +2809,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_updown_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -2845,6 +2951,8 @@
 sys={4200.000000}: select(49): chan_load_avg=25
 (bts=0) ACC: rotate ACC allowed active subset 0x003 -> 0x006 (active_len=2, ramp_len=2, adm_len=10, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x03 t3=0xf9, allowed: 1 2
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -2876,6 +2984,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_updown_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -3026,6 +3136,8 @@
 sys={4200.000000}: select(49): chan_load_avg=90
 (bts=0) ACC: rotate ACC allowed active subset 0x01c -> 0x038 (active_len=3, ramp_len=3, adm_len=10, perm_len=9, rotation=on)
 pcu_info_update(): t2=0x03 t3=0xc7, allowed: 3 4 5
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
@@ -3057,6 +3169,8 @@
 NM_CHAN_OP{DISABLED_NOTINSTALLED}: Allocated
 (bts=0) ACC: New ACC allowed subset 0x3ff (active_len=10, ramp_len=10, adm_len=10, perm_len=10, rotation=off)
 NM_GPRS_NSE_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
+NM_GPRS_NSVC_OP{DISABLED_NOTINSTALLED}: Allocated
 BTS allocation OK in test_acc_ramp_updown_rotate()
 *** Barring one ACC ***
 (bts=0) ACC: New ACC allowed subset 0x1ff (active_len=9, ramp_len=10, adm_len=10, perm_len=9, rotation=off)
@@ -3113,6 +3227,8 @@
 sys={12000.000000}: select(47): chan_load_avg=65
 sys={12250.000000}: select(48): chan_load_avg=70
 sys={12500.000000}: select(49): chan_load_avg=75
+NM_GPRS_NSVC_OP(nsvc0){DISABLED_NOTINSTALLED}: Deallocated
+NM_GPRS_NSVC_OP(nsvc1){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_NSE_OP(nse0){DISABLED_NOTINSTALLED}: Deallocated
 NM_BTS_SM_OP(bts_sm){DISABLED_NOTINSTALLED}: Deallocated
 NM_GPRS_CELL_OP(gprs-cell0){DISABLED_NOTINSTALLED}: Deallocated
diff --git a/tests/bsc/Makefile.am b/tests/bsc/Makefile.am
index 18b82b6..b6ba421 100644
--- a/tests/bsc/Makefile.am
+++ b/tests/bsc/Makefile.am
@@ -54,6 +54,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
diff --git a/tests/gsm0408/Makefile.am b/tests/gsm0408/Makefile.am
index 6bf73af..6e2ba6c 100644
--- a/tests/gsm0408/Makefile.am
+++ b/tests/gsm0408/Makefile.am
@@ -43,6 +43,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
diff --git a/tests/handover/Makefile.am b/tests/handover/Makefile.am
index 444c097..5139595 100644
--- a/tests/handover/Makefile.am
+++ b/tests/handover/Makefile.am
@@ -88,6 +88,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(top_builddir)/src/osmo-bsc/osmo_bsc_ctrl.o \
 	$(top_builddir)/src/osmo-bsc/osmo_bsc_lcls.o \
diff --git a/tests/nanobts_omlattr/Makefile.am b/tests/nanobts_omlattr/Makefile.am
index 1e5712e..f2afa2b 100644
--- a/tests/nanobts_omlattr/Makefile.am
+++ b/tests/nanobts_omlattr/Makefile.am
@@ -37,6 +37,7 @@
 	$(top_builddir)/src/osmo-bsc/nm_channel_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_cell_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_gprs_nse_fsm.o \
+	$(top_builddir)/src/osmo-bsc/nm_gprs_nsvc_fsm.o \
 	$(top_builddir)/src/osmo-bsc/nm_rcarrier_fsm.o \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
