diff --git a/cumulus/pallets/parachain-system/src/tests.rs b/cumulus/pallets/parachain-system/src/tests.rs
index 23223627ebca2cf7bc197459bff9391edc7d4fd3..2b65dd6a921607a13f23ffd1cf613c4e64bd396c 100755
--- a/cumulus/pallets/parachain-system/src/tests.rs
+++ b/cumulus/pallets/parachain-system/src/tests.rs
@@ -25,6 +25,8 @@ use frame_support::{assert_ok, parameter_types, weights::Weight};
 use frame_system::RawOrigin;
 use hex_literal::hex;
 use rand::Rng;
+#[cfg(feature = "experimental-ump-signals")]
+use relay_chain::vstaging::{UMPSignal, UMP_SEPARATOR};
 use relay_chain::HrmpChannelId;
 use sp_core::H256;
 
@@ -583,7 +585,25 @@ fn send_upward_message_num_per_candidate() {
 			},
 			|| {
 				let v = UpwardMessages::<Test>::get();
-				assert_eq!(v, vec![b"Mr F was here".to_vec()]);
+				#[cfg(feature = "experimental-ump-signals")]
+				{
+					assert_eq!(
+						v,
+						vec![
+							b"Mr F was here".to_vec(),
+							UMP_SEPARATOR,
+							UMPSignal::SelectCore(
+								CoreSelector(1),
+								ClaimQueueOffset(DEFAULT_CLAIM_QUEUE_OFFSET)
+							)
+							.encode()
+						]
+					);
+				}
+				#[cfg(not(feature = "experimental-ump-signals"))]
+				{
+					assert_eq!(v, vec![b"Mr F was here".to_vec()]);
+				}
 			},
 		)
 		.add_with_post_test(
@@ -594,7 +614,25 @@ fn send_upward_message_num_per_candidate() {
 			},
 			|| {
 				let v = UpwardMessages::<Test>::get();
-				assert_eq!(v, vec![b"message 2".to_vec()]);
+				#[cfg(feature = "experimental-ump-signals")]
+				{
+					assert_eq!(
+						v,
+						vec![
+							b"message 2".to_vec(),
+							UMP_SEPARATOR,
+							UMPSignal::SelectCore(
+								CoreSelector(2),
+								ClaimQueueOffset(DEFAULT_CLAIM_QUEUE_OFFSET)
+							)
+							.encode()
+						]
+					);
+				}
+				#[cfg(not(feature = "experimental-ump-signals"))]
+				{
+					assert_eq!(v, vec![b"message 2".to_vec()]);
+				}
 			},
 		);
 }
@@ -620,7 +658,24 @@ fn send_upward_message_relay_bottleneck() {
 			|| {
 				// The message won't be sent because there is already one message in queue.
 				let v = UpwardMessages::<Test>::get();
-				assert!(v.is_empty());
+				#[cfg(feature = "experimental-ump-signals")]
+				{
+					assert_eq!(
+						v,
+						vec![
+							UMP_SEPARATOR,
+							UMPSignal::SelectCore(
+								CoreSelector(1),
+								ClaimQueueOffset(DEFAULT_CLAIM_QUEUE_OFFSET)
+							)
+							.encode()
+						]
+					);
+				}
+				#[cfg(not(feature = "experimental-ump-signals"))]
+				{
+					assert!(v.is_empty());
+				}
 			},
 		)
 		.add_with_post_test(
@@ -628,7 +683,25 @@ fn send_upward_message_relay_bottleneck() {
 			|| { /* do nothing within block */ },
 			|| {
 				let v = UpwardMessages::<Test>::get();
-				assert_eq!(v, vec![vec![0u8; 8]]);
+				#[cfg(feature = "experimental-ump-signals")]
+				{
+					assert_eq!(
+						v,
+						vec![
+							vec![0u8; 8],
+							UMP_SEPARATOR,
+							UMPSignal::SelectCore(
+								CoreSelector(2),
+								ClaimQueueOffset(DEFAULT_CLAIM_QUEUE_OFFSET)
+							)
+							.encode()
+						]
+					);
+				}
+				#[cfg(not(feature = "experimental-ump-signals"))]
+				{
+					assert_eq!(v, vec![vec![0u8; 8]]);
+				}
 			},
 		);
 }
@@ -1172,7 +1245,25 @@ fn ump_fee_factor_increases_and_decreases() {
 			|| {
 				// Factor decreases in `on_finalize`, but only if we are below the threshold
 				let messages = UpwardMessages::<Test>::get();
-				assert_eq!(messages, vec![b"Test".to_vec()]);
+				#[cfg(feature = "experimental-ump-signals")]
+				{
+					assert_eq!(
+						messages,
+						vec![
+							b"Test".to_vec(),
+							UMP_SEPARATOR,
+							UMPSignal::SelectCore(
+								CoreSelector(1),
+								ClaimQueueOffset(DEFAULT_CLAIM_QUEUE_OFFSET)
+							)
+							.encode()
+						]
+					);
+				}
+				#[cfg(not(feature = "experimental-ump-signals"))]
+				{
+					assert_eq!(messages, vec![b"Test".to_vec()]);
+				}
 				assert_eq!(
 					UpwardDeliveryFeeFactor::<Test>::get(),
 					FixedU128::from_rational(105, 100)
@@ -1186,10 +1277,28 @@ fn ump_fee_factor_increases_and_decreases() {
 			},
 			|| {
 				let messages = UpwardMessages::<Test>::get();
-				assert_eq!(
-					messages,
-					vec![b"This message will be enough to increase the fee factor".to_vec(),]
-				);
+				#[cfg(feature = "experimental-ump-signals")]
+				{
+					assert_eq!(
+						messages,
+						vec![
+							b"This message will be enough to increase the fee factor".to_vec(),
+							UMP_SEPARATOR,
+							UMPSignal::SelectCore(
+								CoreSelector(2),
+								ClaimQueueOffset(DEFAULT_CLAIM_QUEUE_OFFSET)
+							)
+							.encode()
+						]
+					);
+				}
+				#[cfg(not(feature = "experimental-ump-signals"))]
+				{
+					assert_eq!(
+						messages,
+						vec![b"This message will be enough to increase the fee factor".to_vec()]
+					);
+				}
 				// Now the delivery fee factor is decreased, since we are below the threshold
 				assert_eq!(UpwardDeliveryFeeFactor::<Test>::get(), FixedU128::from_u32(1));
 			},
diff --git a/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml b/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml
index bbc1185db0d87cd263888197809ade39c63100dc..b0581c8d43ff39ca2eea800fca1379a85e6f2ca9 100644
--- a/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml
+++ b/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml
@@ -49,7 +49,7 @@ polkadot-runtime-common = { workspace = true }
 # Cumulus
 cumulus-pallet-aura-ext = { workspace = true }
 pallet-message-queue = { workspace = true }
-cumulus-pallet-parachain-system = { workspace = true }
+cumulus-pallet-parachain-system = { workspace = true, features = ["experimental-ump-signals"] }
 cumulus-pallet-xcm = { workspace = true }
 cumulus-pallet-xcmp-queue = { workspace = true }
 cumulus-ping = { workspace = true }
diff --git a/prdoc/pr_6214.prdoc b/prdoc/pr_6214.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..c991df9863071a7d06ec9251e5479795df04f9f6
--- /dev/null
+++ b/prdoc/pr_6214.prdoc
@@ -0,0 +1,5 @@
+crates:
+  - name: cumulus-pallet-parachain-system
+    bump: none
+  - name: rococo-parachain-runtime
+    bump: none