diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index b7a02a7..05f8fd9 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -2343,6 +2343,77 @@
 	f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
 }
 
+/* Test multi-part MT-SMS over GSUP */
+private function f_tc_gsup_mt_multi_part_sms(charstring id, BSC_ConnHdlrPars pars)
+runs on BSC_ConnHdlr {
+	var SmsParameters spars := valueof(t_SmsPars);
+
+	f_init_handler(pars);
+
+	/* We need to inspect GSUP activity */
+	f_create_gsup_expect(hex2str(g_pars.imsi));
+
+	/* Perform location update */
+	f_perform_lu();
+
+	/* Register an 'expect' for given IMSI (+TMSI) */
+	if (isvalue(g_pars.tmsi)) {
+		f_bssmap_register_imsi(g_pars.imsi, g_pars.tmsi);
+	} else {
+		f_bssmap_register_imsi(g_pars.imsi, 'FFFFFFFF'O);
+	}
+
+	var template GSUP_PDU mt_forwardSM_res := tr_GSUP_MT_FORWARD_SM_RES(
+		imsi := g_pars.imsi,
+		/* NOTE: MSC should assign RP-MR itself */
+		sm_rp_mr := ?
+	);
+
+	/* Send 4 messages (NOTE: SM-RP-UI remains unchanged) */
+	for (var integer i := 3; i >= 0; i := i-1) {
+		/* Submit a MT SMS on GSUP (MMS is decremented) */
+		f_gsup_forwardSM_req(spars, int2oct(i, 1));
+
+		/* Expect Paging Request and Establish connection */
+		if (i == 3) { /* ... only once! */
+			BSSAP.receive(tr_BSSMAP_Paging(g_pars.imsi));
+			f_establish_fully(EST_TYPE_PAG_RESP);
+		}
+
+		/* Wait for MT SMS on DTAP */
+		f_mt_sms_expect(spars);
+
+		/* Send RP-ACK and expect MT-forwardSM-Res on GSUP */
+		f_mt_sms_send_rp_ack(spars);
+		alt {
+		[] GSUP.receive(mt_forwardSM_res) {
+			log("RX MT-forwardSM-Res (RP-ACK)");
+			setverdict(pass);
+			}
+		[] GSUP.receive {
+			log("RX unexpected GSUP message");
+			setverdict(fail);
+			mtc.stop;
+			}
+		}
+
+		/* Keep some 'distance' between transmissions */
+		f_sleep(1.5);
+	}
+
+	f_expect_clear();
+}
+testcase TC_gsup_mt_multi_part_sms() runs on MTC_CT {
+	var BSC_ConnHdlrPars pars;
+	var BSC_ConnHdlr vc_conn;
+	f_init();
+	pars := f_init_pars(91);
+	f_vty_config(MSCVTY, "msc", "sms-over-gsup");
+	vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_multi_part_sms), pars);
+	vc_conn.done;
+	f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
+}
+
 /* convert GSM L3 TON to SMPP_TON enum */
 function f_sm_ton_from_gsm(BIT3 ton) return SMPP_TON {
 	select (ton) {
@@ -4206,6 +4277,7 @@
 	execute( TC_gsup_mo_smma() );
 	execute( TC_gsup_mt_sms_ack() );
 	execute( TC_gsup_mt_sms_err() );
+	execute( TC_gsup_mt_multi_part_sms() );
 
 	execute( TC_lu_and_mo_ussd_single_request() );
 	execute( TC_lu_and_mt_ussd_notification() );
