diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 8b44a25..b9d61dd 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1404,12 +1404,64 @@
 	vc_conn.done;
 }
 
+/* test if L3 RR CLASSMARK CHANGE is translated to BSSMAP CLASSMARK UPDATE */
+private function f_tc_classmark(charstring id) runs on MSC_ConnHdlr {
+	var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+	f_create_chan_and_exp(pars);
+	/* we should now have a COMPL_L3 at the MSC */
+	BSSAP.receive(tr_BSSMAP_ComplL3);
+
+	f_rsl_send_l3(ts_RRM_CM_CHG(valueof(ts_CM2)));
+	BSSAP.receive(tr_BSSMAP_ClassmarkUpd(?, omit));
+	setverdict(pass);
+}
+testcase TC_classmark() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(1, true);
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_tc_classmark), testcasename());
+	vc_conn.done;
+}
+
+/* unsolicited ASSIGNMENT FAIL (without ASSIGN) from MS shouldn't bring BSC down */
+private function f_tc_unsol_ass_fail(charstring id) runs on MSC_ConnHdlr {
+	var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+	f_create_chan_and_exp(pars);
+	/* we should now have a COMPL_L3 at the MSC */
+	BSSAP.receive(tr_BSSMAP_ComplL3);
+
+	f_rsl_send_l3(ts_RRM_AssignmentFailure('00'O));
+	timer T := 5.0;
+	T.start;
+	alt {
+	[] BSSAP.receive(tr_BSSMAP_AssignmentFail) {
+		setverdict(fail, "Unexpeted BSSMAP Assignment Failure");
+		}
+	[] BSSAP.receive(tr_BSSMAP_ClearRequest) {
+		setverdict(fail, "Unexpected BSSMAP Clear Requst");
+		}
+	[] T.timeout {
+		setverdict(pass);
+		}
+	}
+}
+
+testcase TC_unsol_ass_fail() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(1, true);
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_tc_unsol_ass_fail), testcasename());
+	vc_conn.done;
+}
 
 
 control {
+	/* CTRL interface testing */
 	execute( TC_ctrl_msc_connection_status() );
 	execute( TC_ctrl_msc0_connection_status() );
 	execute( TC_ctrl() );
+
+	/* RSL DCHAN Channel ACtivation / Deactivation */
 	execute( TC_chan_act_noreply() );
 	execute( TC_chan_act_counter() );
 	execute( TC_chan_act_ack_noest() );
@@ -1424,6 +1476,8 @@
 	execute( TC_chan_rel_a_reset() );
 
 	execute( TC_outbound_connect() );
+
+	/* Assignment related */
 	execute( TC_assignment_cic_only() );
 	execute( TC_assignment_csd() );
 	execute( TC_assignment_ctm() );
@@ -1434,11 +1488,13 @@
 	execute( TC_assignment_fr_a5_3() );
 	execute( TC_assignment_fr_a5_4() );
 
+	/* RLL Establish Indication on inactive DCHAN / SAPI */
 	execute( TC_rll_est_ind_inact_lchan() );
 	execute( TC_rll_est_ind_inval_sapi1() );
 	execute( TC_rll_est_ind_inval_sapi3() );
 	execute( TC_rll_est_ind_inval_sacch() );
 
+	/* Paging related tests */
 	execute( TC_paging_imsi_nochan() );
 	execute( TC_paging_tmsi_nochan() );
 	execute( TC_paging_tmsi_any() );
@@ -1460,6 +1516,9 @@
 	execute( TC_paging_imsi_load() );
 
 	execute( TC_rsl_drop_counter() );
+
+	execute( TC_classmark() );
+	execute( TC_unsol_ass_fail() );
 }
 
 }
