diff --git a/fr-net/FRNET_Tests.ttcn b/fr-net/FRNET_Tests.ttcn
index 593ca77..721dd32 100644
--- a/fr-net/FRNET_Tests.ttcn
+++ b/fr-net/FRNET_Tests.ttcn
@@ -8,6 +8,7 @@
 import from BSSGP_Emulation all;
 
 modulepar {
+	integer mp_num_bvc := 10;
 	NSConfigurations mp_nsconfig := {
 		{
 			nsei := 123,
@@ -34,11 +35,9 @@
 	BssgpConfig cfg
 };
 
-const integer NUM_GB := 1;
-type record length(NUM_GB) of GbInstance GbInstances;
-type record length(NUM_GB) of NSConfiguration NSConfigurations;
-type record length(NUM_GB) of BssgpCellId BssgpCellIds;
-
+type record of GbInstance GbInstances;
+type record of NSConfiguration NSConfigurations;
+type record of BssgpCellId BssgpCellIds;
 
 type component test_CT {
 	var GbInstances g_gb;
@@ -53,28 +52,39 @@
 	gb.vc_BSSGP.start(BssgpStart(gb.cfg, testcasename()));
 }
 
-testcase TC_foo() runs on test_CT {
-	g_gb[0].cfg := {
-		nsei := 123,
-		sgsn_role := true,
-		bvc := {
-			{
-				bvci := 1123,
-				cell_id := {
-					ra_id := {
-						lai := {
-							mcc_mnc := '262F42'H,
-							lac := 11123
-						},
-						rac := 1
-					},
-					cell_id := 31123
+function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {
+	var BssgpBvcConfig bvc := {
+		bvci := base + 100 + idx,
+		cell_id := {
+			ra_id := {
+				lai := {
+					mcc_mnc := '262F42'H,
+					lac := base + 300 + idx
 				},
-				depth := BSSGP_DECODE_DEPTH_LLC
-			}
-		}
+				rac := 1
+			},
+			cell_id := base + 600 + idx
+		},
+		depth := BSSGP_DECODE_DEPTH_LLC
 	};
-	f_init_gb(g_gb[0], "gb", 0);
+	return bvc;
+}
+
+testcase TC_foo() runs on test_CT {
+
+	for (var integer i := 0; i < lengthof(mp_nsconfig); i := i+1) {
+		g_gb[i].cfg := {
+			nsei := mp_nsconfig[i].nsei,
+			sgsn_role := true,
+			bvc := { }
+		};
+		/* create 'mp_num_bvc' number of BVCs */
+		for (var integer j := 0; j < mp_num_bvc; j := j+1) {
+			g_gb[i].cfg.bvc := g_gb[i].cfg.bvc & { f_gen_bvc(i * 1000, j) };
+		}
+		f_init_gb(g_gb[i], "gb", i);
+	}
+
 	while (true) {
 		f_sleep(100.0);
 	}
