diff --git a/bridges/snowbridge/pallets/inbound-queue/src/mock.rs b/bridges/snowbridge/pallets/inbound-queue/src/mock.rs
index 675d4b6915937ff7129dcbb5c8264b155edd31f2..eed0656e9ca7fb9835a0992564f3e564df79ed62 100644
--- a/bridges/snowbridge/pallets/inbound-queue/src/mock.rs
+++ b/bridges/snowbridge/pallets/inbound-queue/src/mock.rs
@@ -248,20 +248,6 @@ impl inbound_queue::Config for Test {
 	type AssetTransactor = SuccessfulTransactor;
 }
 
-pub fn last_events(n: usize) -> Vec<RuntimeEvent> {
-	frame_system::Pallet::<Test>::events()
-		.into_iter()
-		.rev()
-		.take(n)
-		.rev()
-		.map(|e| e.event)
-		.collect()
-}
-
-pub fn expect_events(e: Vec<RuntimeEvent>) {
-	assert_eq!(last_events(e.len()), e);
-}
-
 pub fn setup() {
 	System::set_block_number(1);
 	Balances::mint_into(
diff --git a/bridges/snowbridge/pallets/inbound-queue/src/test.rs b/bridges/snowbridge/pallets/inbound-queue/src/test.rs
index 053a341b54a0bba29618925b32c700a0ae13b9ae..aa99d63b4bf990b0ac65bec24fc7668b6a027379 100644
--- a/bridges/snowbridge/pallets/inbound-queue/src/test.rs
+++ b/bridges/snowbridge/pallets/inbound-queue/src/test.rs
@@ -9,7 +9,7 @@ use sp_keyring::Sr25519Keyring as Keyring;
 use sp_runtime::DispatchError;
 use sp_std::convert::From;
 
-use crate::{Error, Event as InboundQueueEvent};
+use crate::Error;
 
 use crate::mock::*;
 
@@ -35,17 +35,16 @@ fn test_submit_happy_path() {
 		assert_eq!(Balances::balance(&channel_sovereign), initial_fund);
 
 		assert_ok!(InboundQueue::submit(origin.clone(), message.clone()));
-		expect_events(vec![InboundQueueEvent::MessageReceived {
-			channel_id: hex!("c173fac324158e77fb5840738a1a541f633cbec8884c6a601c567d2b376a0539")
-				.into(),
-			nonce: 1,
-			message_id: [
-				118, 166, 139, 182, 84, 52, 165, 189, 54, 14, 178, 73, 2, 228, 192, 97, 153, 201,
-				4, 75, 151, 15, 82, 6, 164, 187, 162, 133, 26, 183, 186, 126,
-			],
-			fee_burned: 110000000000,
-		}
-		.into()]);
+
+		let events = frame_system::Pallet::<Test>::events();
+		assert!(
+			events.iter().any(|event| matches!(
+				event.event,
+				RuntimeEvent::InboundQueue(Event::MessageReceived { nonce, ..})
+					if nonce == 1
+			)),
+			"no event emit."
+		);
 
 		let delivery_cost = InboundQueue::calculate_delivery_cost(message.encode().len() as u32);
 		assert!(
diff --git a/polkadot/xcm/src/v5/junction.rs b/polkadot/xcm/src/v5/junction.rs
index 952b61cd9ffed661b6b583bf0d8672a83ef3eb47..d86a762fcf44514b7b414ecf89e21988ebc3d42a 100644
--- a/polkadot/xcm/src/v5/junction.rs
+++ b/polkadot/xcm/src/v5/junction.rs
@@ -143,16 +143,20 @@ pub enum NetworkId {
 	/// The Kusama canary-net Relay-chain.
 	Kusama,
 	/// An Ethereum network specified by its chain ID.
+	#[codec(index = 7)]
 	Ethereum {
 		/// The EIP-155 chain ID.
 		#[codec(compact)]
 		chain_id: u64,
 	},
 	/// The Bitcoin network, including hard-forks supported by Bitcoin Core development team.
+	#[codec(index = 8)]
 	BitcoinCore,
 	/// The Bitcoin network, including hard-forks supported by Bitcoin Cash developers.
+	#[codec(index = 9)]
 	BitcoinCash,
 	/// The Polkadot Bulletin chain.
+	#[codec(index = 10)]
 	PolkadotBulletin,
 }
 
diff --git a/prdoc/pr_6503.prdoc b/prdoc/pr_6503.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..dc296a93f0eb2427abe196742463e9612ce40a10
--- /dev/null
+++ b/prdoc/pr_6503.prdoc
@@ -0,0 +1,10 @@
+title: "xcm: minor fix for compatibility with V4"
+
+doc:
+  - audience: ["Runtime Dev", "Runtime User"]
+    description: |
+      Following the removal of `Rococo`, `Westend` and `Wococo` from `NetworkId`, fixed `xcm::v5::NetworkId` encoding/decoding to be compatible with `xcm::v4::NetworkId`
+
+crates:
+- name: staging-xcm
+  bump: patch