From f5d1d174e1da01e5338ef37b2b8ba530bf27e279 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bastian=20K=C3=B6cher?= <git@kchr.de>
Date: Thu, 23 Jan 2025 15:24:34 +0100
Subject: [PATCH] Revert "[stable2412] Backport #6604 (#6953)" (#7311)

---
 Cargo.lock                                    |   4 +-
 bridges/bin/runtime-common/Cargo.toml         |   1 -
 .../modules/xcm-bridge-hub-router/Cargo.toml  |   1 -
 bridges/modules/xcm-bridge-hub/Cargo.toml     |   1 -
 .../pallets/inbound-queue/Cargo.toml          |   1 -
 bridges/snowbridge/pallets/system/Cargo.toml  |   1 -
 bridges/snowbridge/primitives/core/Cargo.toml |   2 -
 .../snowbridge/primitives/router/Cargo.toml   |   1 -
 .../runtime/runtime-common/Cargo.toml         |   1 -
 .../snowbridge/runtime/test-common/Cargo.toml |   1 -
 cumulus/pallets/dmp-queue/Cargo.toml          |   1 -
 cumulus/pallets/parachain-system/Cargo.toml   |  21 ++--
 cumulus/pallets/parachain-system/src/lib.rs   |   2 +-
 cumulus/pallets/xcmp-queue/Cargo.toml         |   1 -
 cumulus/parachains/common/Cargo.toml          |   1 -
 .../emulated/common/src/impls.rs              |   2 -
 .../emulated/common/src/macros.rs             |   3 -
 .../src/tests/hybrid_transfers.rs             |   4 -
 .../src/tests/reserve_transfer.rs             |  13 ---
 .../asset-hub-rococo/src/tests/treasury.rs    |   4 -
 .../src/tests/hybrid_transfers.rs             |   4 -
 .../src/tests/reserve_transfer.rs             |  13 ---
 .../asset-hub-westend/src/tests/treasury.rs   |   3 -
 .../bridge-hub-rococo/src/tests/send_xcm.rs   |   4 -
 .../bridge-hub-westend/src/tests/send_xcm.rs  |   4 -
 .../src/tests/fellowship_treasury.rs          |   3 -
 .../src/tests/coretime_interface.rs           |   5 -
 .../src/tests/coretime_interface.rs           |   5 -
 .../people-westend/src/tests/governance.rs    |  20 +---
 .../assets/asset-hub-rococo/Cargo.toml        |   1 -
 .../assets/asset-hub-westend/Cargo.toml       |   1 -
 .../runtimes/assets/common/Cargo.toml         |   1 -
 .../bridge-hubs/bridge-hub-rococo/Cargo.toml  |   1 -
 .../bridge-hubs/bridge-hub-westend/Cargo.toml |   1 -
 .../runtimes/bridge-hubs/common/Cargo.toml    |   1 -
 .../collectives-westend/Cargo.toml            |   1 -
 .../contracts/contracts-rococo/Cargo.toml     |   1 -
 .../coretime/coretime-rococo/Cargo.toml       |   1 -
 .../coretime/coretime-westend/Cargo.toml      |   1 -
 .../glutton/glutton-westend/Cargo.toml        |   1 -
 .../runtimes/people/people-rococo/Cargo.toml  |   1 -
 .../runtimes/people/people-westend/Cargo.toml |   1 -
 .../runtimes/testing/penpal/Cargo.toml        |   1 -
 .../testing/rococo-parachain/Cargo.toml       |   1 -
 cumulus/polkadot-parachain/Cargo.toml         |   1 -
 cumulus/primitives/core/Cargo.toml            |   1 -
 cumulus/primitives/utility/Cargo.toml         |   1 -
 polkadot/node/service/Cargo.toml              |   1 -
 polkadot/parachain/src/primitives.rs          |   5 -
 polkadot/runtime/common/Cargo.toml            |   1 -
 .../runtime/common/src/identity_migrator.rs   |  16 ---
 .../runtime/common/src/paras_sudo_wrapper.rs  |   3 -
 polkadot/runtime/common/src/xcm_sender.rs     |  29 ++---
 polkadot/runtime/parachains/Cargo.toml        |   1 -
 .../parachains/src/coretime/benchmarking.rs   |   2 -
 polkadot/runtime/parachains/src/dmp.rs        |  37 ++----
 polkadot/runtime/parachains/src/dmp/tests.rs  |  44 --------
 polkadot/runtime/parachains/src/lib.rs        |  16 ---
 polkadot/runtime/rococo/Cargo.toml            |   1 -
 polkadot/runtime/rococo/src/impls.rs          |   5 -
 polkadot/runtime/rococo/src/lib.rs            |   6 +-
 polkadot/runtime/test-runtime/Cargo.toml      |   1 -
 polkadot/runtime/westend/Cargo.toml           |   1 -
 polkadot/runtime/westend/src/impls.rs         |   5 -
 polkadot/runtime/westend/src/lib.rs           |   6 +-
 polkadot/xcm/Cargo.toml                       |   4 -
 polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml |   1 -
 .../src/fungible/benchmarking.rs              |  35 +-----
 .../src/generic/benchmarking.rs               |   4 -
 polkadot/xcm/pallet-xcm/Cargo.toml            |   1 -
 polkadot/xcm/pallet-xcm/src/benchmarking.rs   |  32 +-----
 polkadot/xcm/src/v5/traits.rs                 |  11 --
 polkadot/xcm/xcm-builder/Cargo.toml           |   1 -
 polkadot/xcm/xcm-builder/src/pay.rs           |  11 +-
 polkadot/xcm/xcm-builder/src/routing.rs       |  15 ---
 polkadot/xcm/xcm-builder/src/tests/pay/pay.rs |   2 +-
 .../xcm/xcm-builder/src/universal_exports.rs  |  16 ---
 polkadot/xcm/xcm-executor/Cargo.toml          |   1 -
 .../xcm-executor/integration-tests/Cargo.toml |  41 ++++---
 .../xcm-executor/integration-tests/src/lib.rs |  25 +----
 polkadot/xcm/xcm-runtime-apis/Cargo.toml      |   1 -
 polkadot/xcm/xcm-simulator/example/Cargo.toml |   1 -
 polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml  |   1 -
 prdoc/pr_6604.prdoc                           | 106 ------------------
 substrate/frame/contracts/Cargo.toml          |   1 -
 .../frame/contracts/mock-network/Cargo.toml   |   1 -
 substrate/frame/revive/Cargo.toml             |   1 -
 .../frame/revive/mock-network/Cargo.toml      |   1 -
 umbrella/Cargo.toml                           |   1 -
 89 files changed, 80 insertions(+), 559 deletions(-)
 delete mode 100644 prdoc/pr_6604.prdoc

diff --git a/Cargo.lock b/Cargo.lock
index af5c3b63093..78c18446082 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4341,6 +4341,7 @@ dependencies = [
  "pallet-message-queue",
  "parity-scale-codec",
  "polkadot-parachain-primitives",
+ "polkadot-runtime-common",
  "polkadot-runtime-parachains",
  "rand",
  "sc-client-api",
@@ -26925,13 +26926,10 @@ name = "xcm-executor-integration-tests"
 version = "1.0.0"
 dependencies = [
  "frame-support",
- "frame-system",
  "futures",
- "pallet-sudo",
  "pallet-transaction-payment",
  "pallet-xcm",
  "parity-scale-codec",
- "polkadot-runtime-parachains",
  "polkadot-test-client",
  "polkadot-test-runtime",
  "polkadot-test-service",
diff --git a/bridges/bin/runtime-common/Cargo.toml b/bridges/bin/runtime-common/Cargo.toml
index d7a66d335ee..e3b243cd61f 100644
--- a/bridges/bin/runtime-common/Cargo.toml
+++ b/bridges/bin/runtime-common/Cargo.toml
@@ -86,7 +86,6 @@ runtime-benchmarks = [
 	"pallet-utility/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"sp-trie",
-	"xcm/runtime-benchmarks",
 ]
 integrity-test = ["static_assertions"]
 test-helpers = ["bp-runtime/test-helpers", "sp-trie"]
diff --git a/bridges/modules/xcm-bridge-hub-router/Cargo.toml b/bridges/modules/xcm-bridge-hub-router/Cargo.toml
index 113722fad6e..3eb747097b3 100644
--- a/bridges/modules/xcm-bridge-hub-router/Cargo.toml
+++ b/bridges/modules/xcm-bridge-hub-router/Cargo.toml
@@ -50,7 +50,6 @@ runtime-benchmarks = [
 	"frame-system/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/bridges/modules/xcm-bridge-hub/Cargo.toml b/bridges/modules/xcm-bridge-hub/Cargo.toml
index d358f051831..8c494b0d7cf 100644
--- a/bridges/modules/xcm-bridge-hub/Cargo.toml
+++ b/bridges/modules/xcm-bridge-hub/Cargo.toml
@@ -62,7 +62,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/bridges/snowbridge/pallets/inbound-queue/Cargo.toml b/bridges/snowbridge/pallets/inbound-queue/Cargo.toml
index 8ff155ac018..363620ff90a 100644
--- a/bridges/snowbridge/pallets/inbound-queue/Cargo.toml
+++ b/bridges/snowbridge/pallets/inbound-queue/Cargo.toml
@@ -79,7 +79,6 @@ runtime-benchmarks = [
 	"snowbridge-router-primitives/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/bridges/snowbridge/pallets/system/Cargo.toml b/bridges/snowbridge/pallets/system/Cargo.toml
index 46ae5987433..3f820aae404 100644
--- a/bridges/snowbridge/pallets/system/Cargo.toml
+++ b/bridges/snowbridge/pallets/system/Cargo.toml
@@ -64,7 +64,6 @@ runtime-benchmarks = [
 	"snowbridge-core/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/bridges/snowbridge/primitives/core/Cargo.toml b/bridges/snowbridge/primitives/core/Cargo.toml
index 1a2b98ebc7b..93a655e0dfe 100644
--- a/bridges/snowbridge/primitives/core/Cargo.toml
+++ b/bridges/snowbridge/primitives/core/Cargo.toml
@@ -60,6 +60,4 @@ runtime-benchmarks = [
 	"polkadot-parachain-primitives/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
-	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/bridges/snowbridge/primitives/router/Cargo.toml b/bridges/snowbridge/primitives/router/Cargo.toml
index 9e3ce7767b7..32cb4731c4b 100644
--- a/bridges/snowbridge/primitives/router/Cargo.toml
+++ b/bridges/snowbridge/primitives/router/Cargo.toml
@@ -48,5 +48,4 @@ runtime-benchmarks = [
 	"snowbridge-core/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/bridges/snowbridge/runtime/runtime-common/Cargo.toml b/bridges/snowbridge/runtime/runtime-common/Cargo.toml
index 7bf84eadb09..2cf9a4dbe0f 100644
--- a/bridges/snowbridge/runtime/runtime-common/Cargo.toml
+++ b/bridges/snowbridge/runtime/runtime-common/Cargo.toml
@@ -42,5 +42,4 @@ runtime-benchmarks = [
 	"snowbridge-core/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/bridges/snowbridge/runtime/test-common/Cargo.toml b/bridges/snowbridge/runtime/test-common/Cargo.toml
index 34171935f05..abf8422b553 100644
--- a/bridges/snowbridge/runtime/test-common/Cargo.toml
+++ b/bridges/snowbridge/runtime/test-common/Cargo.toml
@@ -83,6 +83,5 @@ runtime-benchmarks = [
 	"snowbridge-pallet-system/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 fast-runtime = []
diff --git a/cumulus/pallets/dmp-queue/Cargo.toml b/cumulus/pallets/dmp-queue/Cargo.toml
index 45ad608581a..3a748920838 100644
--- a/cumulus/pallets/dmp-queue/Cargo.toml
+++ b/cumulus/pallets/dmp-queue/Cargo.toml
@@ -51,7 +51,6 @@ runtime-benchmarks = [
 	"frame-support/runtime-benchmarks",
 	"frame-system/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/pallets/parachain-system/Cargo.toml b/cumulus/pallets/parachain-system/Cargo.toml
index 4bbcb96896f..4fb43176207 100644
--- a/cumulus/pallets/parachain-system/Cargo.toml
+++ b/cumulus/pallets/parachain-system/Cargo.toml
@@ -31,15 +31,14 @@ sp-std.workspace = true
 sp-trie.workspace = true
 sp-version.workspace = true
 polkadot-parachain-primitives = { features = ["wasm-api"], workspace = true }
-polkadot-runtime-parachains = { workspace = true }
-xcm = { workspace = true }
-xcm-builder = { workspace = true }
-
-# Cumulus
-cumulus-pallet-parachain-system-proc-macro = { workspace = true }
-cumulus-primitives-core = { workspace = true }
-cumulus-primitives-parachain-inherent = { workspace = true }
-cumulus-primitives-proof-size-hostfunction = { workspace = true }
+polkadot-runtime-parachains.workspace = true
+polkadot-runtime-common = { optional = true, workspace = true }
+xcm.workspace = true
+xcm-builder.workspace = true
+cumulus-pallet-parachain-system-proc-macro.workspace = true
+cumulus-primitives-core.workspace = true
+cumulus-primitives-parachain-inherent.workspace = true
+cumulus-primitives-proof-size-hostfunction.workspace = true
 
 [dev-dependencies]
 assert_matches = { workspace = true }
@@ -77,6 +76,7 @@ std = [
 	"log/std",
 	"pallet-message-queue/std",
 	"polkadot-parachain-primitives/std",
+	"polkadot-runtime-common/std",
 	"polkadot-runtime-parachains/std",
 	"scale-info/std",
 	"sp-core/std",
@@ -99,16 +99,17 @@ runtime-benchmarks = [
 	"frame-system/runtime-benchmarks",
 	"pallet-message-queue/runtime-benchmarks",
 	"polkadot-parachain-primitives/runtime-benchmarks",
+	"polkadot-runtime-common/runtime-benchmarks",
 	"polkadot-runtime-parachains/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
 	"frame-support/try-runtime",
 	"frame-system/try-runtime",
 	"pallet-message-queue/try-runtime",
+	"polkadot-runtime-common?/try-runtime",
 	"polkadot-runtime-parachains/try-runtime",
 	"sp-runtime/try-runtime",
 ]
diff --git a/cumulus/pallets/parachain-system/src/lib.rs b/cumulus/pallets/parachain-system/src/lib.rs
index 0fa759357f6..39fc8321a07 100644
--- a/cumulus/pallets/parachain-system/src/lib.rs
+++ b/cumulus/pallets/parachain-system/src/lib.rs
@@ -1636,7 +1636,7 @@ impl<T: Config> InspectMessageQueues for Pallet<T> {
 }
 
 #[cfg(feature = "runtime-benchmarks")]
-impl<T: Config> polkadot_runtime_parachains::EnsureForParachain for Pallet<T> {
+impl<T: Config> polkadot_runtime_common::xcm_sender::EnsureForParachain for Pallet<T> {
 	fn ensure(para_id: ParaId) {
 		if let ChannelStatus::Closed = Self::get_channel_status(para_id) {
 			Self::open_outbound_hrmp_channel_for_benchmarks_or_tests(para_id)
diff --git a/cumulus/pallets/xcmp-queue/Cargo.toml b/cumulus/pallets/xcmp-queue/Cargo.toml
index b0ce5bd35ac..7c69e6fd2d2 100644
--- a/cumulus/pallets/xcmp-queue/Cargo.toml
+++ b/cumulus/pallets/xcmp-queue/Cargo.toml
@@ -73,7 +73,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/cumulus/parachains/common/Cargo.toml b/cumulus/parachains/common/Cargo.toml
index b435408d0c2..0ae9bfcc460 100644
--- a/cumulus/parachains/common/Cargo.toml
+++ b/cumulus/parachains/common/Cargo.toml
@@ -85,5 +85,4 @@ runtime-benchmarks = [
 	"polkadot-primitives/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/cumulus/parachains/integration-tests/emulated/common/src/impls.rs b/cumulus/parachains/integration-tests/emulated/common/src/impls.rs
index 9dad323aa19..c0d42cf2758 100644
--- a/cumulus/parachains/integration-tests/emulated/common/src/impls.rs
+++ b/cumulus/parachains/integration-tests/emulated/common/src/impls.rs
@@ -370,8 +370,6 @@ macro_rules! impl_send_transact_helpers_for_relay_chain {
 						let destination:  $crate::impls::Location = <Self as RelayChain>::child_location_of(recipient);
 						let xcm = $crate::impls::xcm_transact_unpaid_execution(call, $crate::impls::OriginKind::Superuser);
 
-						$crate::impls::dmp::Pallet::<<Self as $crate::impls::Chain>::Runtime>::make_parachain_reachable(recipient);
-
 						// Send XCM `Transact`
 						$crate::impls::assert_ok!(<Self as [<$chain RelayPallet>]>::XcmPallet::send(
 							root_origin,
diff --git a/cumulus/parachains/integration-tests/emulated/common/src/macros.rs b/cumulus/parachains/integration-tests/emulated/common/src/macros.rs
index cd2b41e5198..b776cafb254 100644
--- a/cumulus/parachains/integration-tests/emulated/common/src/macros.rs
+++ b/cumulus/parachains/integration-tests/emulated/common/src/macros.rs
@@ -23,7 +23,6 @@ pub use pallet_message_queue;
 pub use pallet_xcm;
 
 // Polkadot
-pub use polkadot_runtime_parachains::dmp::Pallet as Dmp;
 pub use xcm::{
 	prelude::{
 		AccountId32, All, Asset, AssetId, BuyExecution, DepositAsset, ExpectTransactStatus,
@@ -157,8 +156,6 @@ macro_rules! test_relay_is_trusted_teleporter {
 
 					// Send XCM message from Relay
 					<$sender_relay>::execute_with(|| {
-						$crate::macros::Dmp::<<$sender_relay as $crate::macros::Chain>::Runtime>::make_parachain_reachable(<$receiver_para>::para_id());
-
 						assert_ok!(<$sender_relay as [<$sender_relay Pallet>]>::XcmPallet::limited_teleport_assets(
 							origin.clone(),
 							bx!(para_destination.clone().into()),
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/hybrid_transfers.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/hybrid_transfers.rs
index fb95c361f08..baec7d20f41 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/hybrid_transfers.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/hybrid_transfers.rs
@@ -13,8 +13,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use rococo_system_emulated_network::rococo_emulated_chain::rococo_runtime::Dmp;
-
 use super::reserve_transfer::*;
 use crate::{
 	imports::*,
@@ -779,8 +777,6 @@ fn transfer_native_asset_from_relay_to_para_through_asset_hub() {
 			xcm: xcm_on_final_dest,
 		}]);
 
-		Dmp::make_parachain_reachable(AssetHubRococo::para_id());
-
 		// First leg is a teleport, from there a local-reserve-transfer to final dest
 		<Rococo as RococoPallet>::XcmPallet::transfer_assets_using_type_and_then(
 			t.signed_origin,
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs
index 407a581afeb..d642e877f00 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/reserve_transfer.rs
@@ -14,7 +14,6 @@
 // limitations under the License.
 
 use crate::imports::*;
-use rococo_system_emulated_network::rococo_emulated_chain::rococo_runtime::Dmp;
 use sp_core::{crypto::get_public_from_string_or_panic, sr25519};
 
 fn relay_to_para_sender_assertions(t: RelayToParaTest) {
@@ -488,11 +487,6 @@ pub fn para_to_para_through_hop_receiver_assertions<Hop: Clone>(t: Test<PenpalA,
 }
 
 fn relay_to_para_reserve_transfer_assets(t: RelayToParaTest) -> DispatchResult {
-	let Junction::Parachain(para_id) = *t.args.dest.chain_location().last().unwrap() else {
-		unimplemented!("Destination is not a parachain?")
-	};
-
-	Dmp::make_parachain_reachable(para_id);
 	<Rococo as RococoPallet>::XcmPallet::limited_reserve_transfer_assets(
 		t.signed_origin,
 		bx!(t.args.dest.into()),
@@ -552,13 +546,6 @@ fn para_to_system_para_reserve_transfer_assets(t: ParaToSystemParaTest) -> Dispa
 fn para_to_para_through_relay_limited_reserve_transfer_assets(
 	t: ParaToParaThroughRelayTest,
 ) -> DispatchResult {
-	let Junction::Parachain(para_id) = *t.args.dest.chain_location().last().unwrap() else {
-		unimplemented!("Destination is not a parachain?")
-	};
-
-	Rococo::ext_wrapper(|| {
-		Dmp::make_parachain_reachable(para_id);
-	});
 	<PenpalA as PenpalAPallet>::PolkadotXcm::limited_reserve_transfer_assets(
 		t.signed_origin,
 		bx!(t.args.dest.into()),
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/treasury.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/treasury.rs
index 8648c8ce931..69111d38bca 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/treasury.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/treasury.rs
@@ -29,7 +29,6 @@ use frame_support::{
 use parachains_common::AccountId;
 use polkadot_runtime_common::impls::VersionedLocatableAsset;
 use rococo_runtime_constants::currency::GRAND;
-use rococo_system_emulated_network::rococo_emulated_chain::rococo_runtime::Dmp;
 use xcm_executor::traits::ConvertLocation;
 
 // Fund Treasury account on Asset Hub from Treasury account on Relay Chain with ROCs.
@@ -65,7 +64,6 @@ fn spend_roc_on_asset_hub() {
 			treasury_balance * 2,
 		));
 
-		Dmp::make_parachain_reachable(1000);
 		let native_asset = Location::here();
 		let asset_hub_location: Location = [Parachain(1000)].into();
 		let treasury_location: Location = (Parent, PalletInstance(18)).into();
@@ -201,8 +199,6 @@ fn create_and_claim_treasury_spend_in_usdt() {
 		// create a conversion rate from `asset_kind` to the native currency.
 		assert_ok!(AssetRate::create(root.clone(), Box::new(asset_kind.clone()), 2.into()));
 
-		Dmp::make_parachain_reachable(1000);
-
 		// create and approve a treasury spend.
 		assert_ok!(Treasury::spend(
 			root,
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/hybrid_transfers.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/hybrid_transfers.rs
index 91ebdda1682..0686bd71d08 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/hybrid_transfers.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/hybrid_transfers.rs
@@ -13,8 +13,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use westend_system_emulated_network::westend_emulated_chain::westend_runtime::Dmp;
-
 use super::reserve_transfer::*;
 use crate::{
 	imports::*,
@@ -780,8 +778,6 @@ fn transfer_native_asset_from_relay_to_penpal_through_asset_hub() {
 			xcm: xcm_on_final_dest,
 		}]);
 
-		Dmp::make_parachain_reachable(AssetHubWestend::para_id());
-
 		// First leg is a teleport, from there a local-reserve-transfer to final dest
 		<Westend as WestendPallet>::XcmPallet::transfer_assets_using_type_and_then(
 			t.signed_origin,
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs
index dc36fed4293..707e8adc8a5 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/reserve_transfer.rs
@@ -15,7 +15,6 @@
 
 use crate::{create_pool_with_wnd_on, foreign_balance_on, imports::*};
 use sp_core::{crypto::get_public_from_string_or_panic, sr25519};
-use westend_system_emulated_network::westend_emulated_chain::westend_runtime::Dmp;
 
 fn relay_to_para_sender_assertions(t: RelayToParaTest) {
 	type RuntimeEvent = <Westend as Chain>::RuntimeEvent;
@@ -488,11 +487,6 @@ pub fn para_to_para_through_hop_receiver_assertions<Hop: Clone>(t: Test<PenpalA,
 }
 
 fn relay_to_para_reserve_transfer_assets(t: RelayToParaTest) -> DispatchResult {
-	let Junction::Parachain(para_id) = *t.args.dest.chain_location().last().unwrap() else {
-		unimplemented!("Destination is not a parachain?")
-	};
-
-	Dmp::make_parachain_reachable(para_id);
 	<Westend as WestendPallet>::XcmPallet::limited_reserve_transfer_assets(
 		t.signed_origin,
 		bx!(t.args.dest.into()),
@@ -539,13 +533,6 @@ fn para_to_system_para_reserve_transfer_assets(t: ParaToSystemParaTest) -> Dispa
 fn para_to_para_through_relay_limited_reserve_transfer_assets(
 	t: ParaToParaThroughRelayTest,
 ) -> DispatchResult {
-	let Junction::Parachain(para_id) = *t.args.dest.chain_location().last().unwrap() else {
-		unimplemented!("Destination is not a parachain?")
-	};
-
-	Westend::ext_wrapper(|| {
-		Dmp::make_parachain_reachable(para_id);
-	});
 	<PenpalA as PenpalAPallet>::PolkadotXcm::limited_reserve_transfer_assets(
 		t.signed_origin,
 		bx!(t.args.dest.into()),
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/treasury.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/treasury.rs
index 3b53557fc05..c303e6411d3 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/treasury.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/treasury.rs
@@ -20,7 +20,6 @@ use emulated_integration_tests_common::{
 };
 use frame_support::traits::fungibles::{Inspect, Mutate};
 use polkadot_runtime_common::impls::VersionedLocatableAsset;
-use westend_system_emulated_network::westend_emulated_chain::westend_runtime::Dmp;
 use xcm_executor::traits::ConvertLocation;
 
 #[test]
@@ -59,8 +58,6 @@ fn create_and_claim_treasury_spend() {
 		// create a conversion rate from `asset_kind` to the native currency.
 		assert_ok!(AssetRate::create(root.clone(), Box::new(asset_kind.clone()), 2.into()));
 
-		Dmp::make_parachain_reachable(1000);
-
 		// create and approve a treasury spend.
 		assert_ok!(Treasury::spend(
 			root,
diff --git a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/send_xcm.rs b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/send_xcm.rs
index cfcb581238e..116ec4dc0e5 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/send_xcm.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-rococo/src/tests/send_xcm.rs
@@ -13,8 +13,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use rococo_system_emulated_network::rococo_emulated_chain::rococo_runtime::Dmp;
-
 use crate::tests::*;
 
 #[test]
@@ -40,8 +38,6 @@ fn send_xcm_from_rococo_relay_to_westend_asset_hub_should_fail_on_not_applicable
 	// Rococo Global Consensus
 	// Send XCM message from Relay Chain to Bridge Hub source Parachain
 	Rococo::execute_with(|| {
-		Dmp::make_parachain_reachable(BridgeHubRococo::para_id());
-
 		assert_ok!(<Rococo as RococoPallet>::XcmPallet::send(
 			sudo_origin,
 			bx!(destination),
diff --git a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/send_xcm.rs b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/send_xcm.rs
index 60f8af2242f..acce60b4fa7 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/send_xcm.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/bridges/bridge-hub-westend/src/tests/send_xcm.rs
@@ -13,8 +13,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use rococo_westend_system_emulated_network::westend_emulated_chain::westend_runtime::Dmp;
-
 use crate::tests::*;
 
 #[test]
@@ -40,8 +38,6 @@ fn send_xcm_from_westend_relay_to_rococo_asset_hub_should_fail_on_not_applicable
 	// Westend Global Consensus
 	// Send XCM message from Relay Chain to Bridge Hub source Parachain
 	Westend::execute_with(|| {
-		Dmp::make_parachain_reachable(BridgeHubWestend::para_id());
-
 		assert_ok!(<Westend as WestendPallet>::XcmPallet::send(
 			sudo_origin,
 			bx!(destination),
diff --git a/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship_treasury.rs b/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship_treasury.rs
index ed7c9bafc60..8418e3da3bb 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship_treasury.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/collectives/collectives-westend/src/tests/fellowship_treasury.rs
@@ -20,7 +20,6 @@ use frame_support::{
 };
 use polkadot_runtime_common::impls::VersionedLocatableAsset;
 use westend_runtime_constants::currency::UNITS;
-use westend_system_emulated_network::westend_emulated_chain::westend_runtime::Dmp;
 use xcm_executor::traits::ConvertLocation;
 
 // Fund Fellowship Treasury from Westend Treasury and spend from Fellowship Treasury.
@@ -58,8 +57,6 @@ fn fellowship_treasury_spend() {
 			treasury_balance * 2,
 		));
 
-		Dmp::make_parachain_reachable(1000);
-
 		let native_asset = Location::here();
 		let asset_hub_location: Location = [Parachain(1000)].into();
 		let treasury_location: Location = (Parent, PalletInstance(37)).into();
diff --git a/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-rococo/src/tests/coretime_interface.rs b/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-rococo/src/tests/coretime_interface.rs
index 554025e1ecf..9915b1753ef 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-rococo/src/tests/coretime_interface.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-rococo/src/tests/coretime_interface.rs
@@ -17,7 +17,6 @@ use crate::imports::*;
 use frame_support::traits::OnInitialize;
 use pallet_broker::{ConfigRecord, Configuration, CoreAssignment, CoreMask, ScheduleItem};
 use rococo_runtime_constants::system_parachain::coretime::TIMESLICE_PERIOD;
-use rococo_system_emulated_network::rococo_emulated_chain::rococo_runtime::Dmp;
 use sp_runtime::Perbill;
 
 #[test]
@@ -35,10 +34,6 @@ fn transact_hardcoded_weights_are_sane() {
 	type CoretimeEvent = <CoretimeRococo as Chain>::RuntimeEvent;
 	type RelayEvent = <Rococo as Chain>::RuntimeEvent;
 
-	Rococo::execute_with(|| {
-		Dmp::make_parachain_reachable(CoretimeRococo::para_id());
-	});
-
 	// Reserve a workload, configure broker and start sales.
 	CoretimeRococo::execute_with(|| {
 		// Hooks don't run in emulated tests - workaround as we need `on_initialize` to tick things
diff --git a/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-westend/src/tests/coretime_interface.rs b/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-westend/src/tests/coretime_interface.rs
index 900994b1afc..00530f80b95 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-westend/src/tests/coretime_interface.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/coretime/coretime-westend/src/tests/coretime_interface.rs
@@ -18,7 +18,6 @@ use frame_support::traits::OnInitialize;
 use pallet_broker::{ConfigRecord, Configuration, CoreAssignment, CoreMask, ScheduleItem};
 use sp_runtime::Perbill;
 use westend_runtime_constants::system_parachain::coretime::TIMESLICE_PERIOD;
-use westend_system_emulated_network::westend_emulated_chain::westend_runtime::Dmp;
 
 #[test]
 fn transact_hardcoded_weights_are_sane() {
@@ -35,10 +34,6 @@ fn transact_hardcoded_weights_are_sane() {
 	type CoretimeEvent = <CoretimeWestend as Chain>::RuntimeEvent;
 	type RelayEvent = <Westend as Chain>::RuntimeEvent;
 
-	Westend::execute_with(|| {
-		Dmp::make_parachain_reachable(CoretimeWestend::para_id());
-	});
-
 	// Reserve a workload, configure broker and start sales.
 	CoretimeWestend::execute_with(|| {
 		// Hooks don't run in emulated tests - workaround as we need `on_initialize` to tick things
diff --git a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs
index ea438f80552..1ba787aaec5 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/governance.rs
@@ -20,9 +20,7 @@ use codec::Encode;
 use frame_support::sp_runtime::traits::Dispatchable;
 use parachains_common::AccountId;
 use people_westend_runtime::people::IdentityInfo;
-use westend_runtime::{
-	governance::pallet_custom_origins::Origin::GeneralAdmin as GeneralAdminOrigin, Dmp,
-};
+use westend_runtime::governance::pallet_custom_origins::Origin::GeneralAdmin as GeneralAdminOrigin;
 use westend_system_emulated_network::people_westend_emulated_chain::people_westend_runtime;
 
 use pallet_identity::Data;
@@ -41,8 +39,6 @@ fn relay_commands_add_registrar() {
 		type PeopleCall = <PeopleWestend as Chain>::RuntimeCall;
 		type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-		Dmp::make_parachain_reachable(1004);
-
 		let add_registrar_call =
 			PeopleCall::Identity(pallet_identity::Call::<PeopleRuntime>::add_registrar {
 				account: registrar.into(),
@@ -106,8 +102,6 @@ fn relay_commands_add_registrar_wrong_origin() {
 			type PeopleCall = <PeopleWestend as Chain>::RuntimeCall;
 			type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-			Dmp::make_parachain_reachable(1004);
-
 			let add_registrar_call =
 				PeopleCall::Identity(pallet_identity::Call::<PeopleRuntime>::add_registrar {
 					account: registrar.into(),
@@ -197,8 +191,6 @@ fn relay_commands_kill_identity() {
 		type RuntimeEvent = <Westend as Chain>::RuntimeEvent;
 		type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-		Dmp::make_parachain_reachable(1004);
-
 		let kill_identity_call =
 			PeopleCall::Identity(pallet_identity::Call::<PeopleRuntime>::kill_identity {
 				target: people_westend_runtime::MultiAddress::Id(PeopleWestend::account_id_of(
@@ -261,8 +253,6 @@ fn relay_commands_kill_identity_wrong_origin() {
 			type RuntimeEvent = <Westend as Chain>::RuntimeEvent;
 			type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-			Dmp::make_parachain_reachable(1004);
-
 			let kill_identity_call =
 				PeopleCall::Identity(pallet_identity::Call::<PeopleRuntime>::kill_identity {
 					target: people_westend_runtime::MultiAddress::Id(PeopleWestend::account_id_of(
@@ -313,8 +303,6 @@ fn relay_commands_add_remove_username_authority() {
 		type PeopleCall = <PeopleWestend as Chain>::RuntimeCall;
 		type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-		Dmp::make_parachain_reachable(1004);
-
 		let add_username_authority =
 			PeopleCall::Identity(pallet_identity::Call::<PeopleRuntime>::add_username_authority {
 				authority: people_westend_runtime::MultiAddress::Id(people_westend_alice.clone()),
@@ -404,8 +392,6 @@ fn relay_commands_add_remove_username_authority() {
 		type PeopleCall = <PeopleWestend as Chain>::RuntimeCall;
 		type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-		Dmp::make_parachain_reachable(1004);
-
 		let remove_username_authority = PeopleCall::Identity(pallet_identity::Call::<
 			PeopleRuntime,
 		>::remove_username_authority {
@@ -469,8 +455,6 @@ fn relay_commands_add_remove_username_authority_wrong_origin() {
 			type PeopleCall = <PeopleWestend as Chain>::RuntimeCall;
 			type PeopleRuntime = <PeopleWestend as Chain>::Runtime;
 
-			Dmp::make_parachain_reachable(1004);
-
 			let add_username_authority = PeopleCall::Identity(pallet_identity::Call::<
 				PeopleRuntime,
 			>::add_username_authority {
@@ -519,8 +503,6 @@ fn relay_commands_add_remove_username_authority_wrong_origin() {
 				suffix: b"suffix1".into(),
 			});
 
-			Dmp::make_parachain_reachable(1004);
-
 			let remove_authority_xcm_msg =
 				RuntimeCall::XcmPallet(pallet_xcm::Call::<Runtime>::send {
 					dest: bx!(VersionedLocation::from(Location::new(0, [Parachain(1004)]))),
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
index f6e01096dc7..96c1e7b08c7 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/Cargo.toml
@@ -135,7 +135,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"cumulus-pallet-aura-ext/try-runtime",
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
index 821a9479e72..8c3097ea5d7 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml
@@ -140,7 +140,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"cumulus-pallet-aura-ext/try-runtime",
diff --git a/cumulus/parachains/runtimes/assets/common/Cargo.toml b/cumulus/parachains/runtimes/assets/common/Cargo.toml
index 2f7a1e2545e..6bf4a5d34a9 100644
--- a/cumulus/parachains/runtimes/assets/common/Cargo.toml
+++ b/cumulus/parachains/runtimes/assets/common/Cargo.toml
@@ -59,5 +59,4 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
index ced5f4064c2..d15881de3df 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/Cargo.toml
@@ -251,7 +251,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
index e978ae891d6..243ff718f9e 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/Cargo.toml
@@ -248,7 +248,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml b/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml
index a619693ba7a..53a8cd707e7 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml
+++ b/cumulus/parachains/runtimes/bridge-hubs/common/Cargo.toml
@@ -39,5 +39,4 @@ runtime-benchmarks = [
 	"pallet-message-queue/runtime-benchmarks",
 	"snowbridge-core/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
index 12f1998d775..e1ecfb723f6 100644
--- a/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml
@@ -128,7 +128,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"cumulus-pallet-aura-ext/try-runtime",
diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml b/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
index 2c2e21bf985..b123e846504 100644
--- a/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/Cargo.toml
@@ -164,7 +164,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml b/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
index cf9825d2824..e74de363d26 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/Cargo.toml
@@ -168,7 +168,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml b/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
index d9bc7ea2b23..8220b67b002 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/Cargo.toml
@@ -165,7 +165,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml b/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml
index ed9b51b5ee0..4196f16df37 100644
--- a/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/glutton/glutton-westend/Cargo.toml
@@ -70,7 +70,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 std = [
 	"codec/std",
diff --git a/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml b/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
index 20c531a3abc..9bf627af2ab 100644
--- a/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
+++ b/cumulus/parachains/runtimes/people/people-rococo/Cargo.toml
@@ -165,7 +165,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/people/people-westend/Cargo.toml b/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
index 1766180be29..85e26c9688e 100644
--- a/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
+++ b/cumulus/parachains/runtimes/people/people-westend/Cargo.toml
@@ -165,7 +165,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/testing/penpal/Cargo.toml b/cumulus/parachains/runtimes/testing/penpal/Cargo.toml
index ed3a7cdf936..91606ffa19e 100644
--- a/cumulus/parachains/runtimes/testing/penpal/Cargo.toml
+++ b/cumulus/parachains/runtimes/testing/penpal/Cargo.toml
@@ -169,7 +169,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 try-runtime = [
diff --git a/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml b/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml
index 725896f10dd..692973989b1 100644
--- a/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml
+++ b/cumulus/parachains/runtimes/testing/rococo-parachain/Cargo.toml
@@ -128,7 +128,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 # A feature that should be enabled when the runtime should be built for on-chain
diff --git a/cumulus/polkadot-parachain/Cargo.toml b/cumulus/polkadot-parachain/Cargo.toml
index fd6fa3a8c22..394b730e1c6 100644
--- a/cumulus/polkadot-parachain/Cargo.toml
+++ b/cumulus/polkadot-parachain/Cargo.toml
@@ -82,7 +82,6 @@ runtime-benchmarks = [
 	"people-rococo-runtime/runtime-benchmarks",
 	"people-westend-runtime/runtime-benchmarks",
 	"rococo-parachain-runtime/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"polkadot-omni-node-lib/try-runtime",
diff --git a/cumulus/primitives/core/Cargo.toml b/cumulus/primitives/core/Cargo.toml
index 52f523698d0..2c3e38e1759 100644
--- a/cumulus/primitives/core/Cargo.toml
+++ b/cumulus/primitives/core/Cargo.toml
@@ -37,5 +37,4 @@ runtime-benchmarks = [
 	"polkadot-parachain-primitives/runtime-benchmarks",
 	"polkadot-primitives/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/cumulus/primitives/utility/Cargo.toml b/cumulus/primitives/utility/Cargo.toml
index b422f1f50e6..afb5be63295 100644
--- a/cumulus/primitives/utility/Cargo.toml
+++ b/cumulus/primitives/utility/Cargo.toml
@@ -44,5 +44,4 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/polkadot/node/service/Cargo.toml b/polkadot/node/service/Cargo.toml
index 1bbe70fe5bb..8d60b7ce2a0 100644
--- a/polkadot/node/service/Cargo.toml
+++ b/polkadot/node/service/Cargo.toml
@@ -253,7 +253,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"westend-runtime?/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-system/try-runtime",
diff --git a/polkadot/parachain/src/primitives.rs b/polkadot/parachain/src/primitives.rs
index 1f2f9e2e9cd..c5757928c3f 100644
--- a/polkadot/parachain/src/primitives.rs
+++ b/polkadot/parachain/src/primitives.rs
@@ -57,8 +57,6 @@ impl HeadData {
 	}
 }
 
-impl codec::EncodeLike<HeadData> for alloc::vec::Vec<u8> {}
-
 /// Parachain validation code.
 #[derive(
 	PartialEq,
@@ -156,9 +154,6 @@ pub struct BlockData(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec
 #[cfg_attr(feature = "std", derive(derive_more::Display))]
 pub struct Id(u32);
 
-impl codec::EncodeLike<u32> for Id {}
-impl codec::EncodeLike<Id> for u32 {}
-
 impl TypeId for Id {
 	const TYPE_ID: [u8; 4] = *b"para";
 }
diff --git a/polkadot/runtime/common/Cargo.toml b/polkadot/runtime/common/Cargo.toml
index 62b4f2dc0f3..cb1bfa00460 100644
--- a/polkadot/runtime/common/Cargo.toml
+++ b/polkadot/runtime/common/Cargo.toml
@@ -135,7 +135,6 @@ runtime-benchmarks = [
 	"sp-staking/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-election-provider-support/try-runtime",
diff --git a/polkadot/runtime/common/src/identity_migrator.rs b/polkadot/runtime/common/src/identity_migrator.rs
index e3835b69252..126c886280e 100644
--- a/polkadot/runtime/common/src/identity_migrator.rs
+++ b/polkadot/runtime/common/src/identity_migrator.rs
@@ -160,22 +160,12 @@ pub trait OnReapIdentity<AccountId> {
 	/// - `bytes`: The byte size of `IdentityInfo`.
 	/// - `subs`: The number of sub-accounts they had.
 	fn on_reap_identity(who: &AccountId, bytes: u32, subs: u32) -> DispatchResult;
-
-	/// Ensure that identity reaping will be succesful in benchmarking.
-	///
-	/// Should setup the state in a way that the same call ot `[Self::on_reap_identity]` will be
-	/// successful.
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_identity_reaping(who: &AccountId, bytes: u32, subs: u32);
 }
 
 impl<AccountId> OnReapIdentity<AccountId> for () {
 	fn on_reap_identity(_who: &AccountId, _bytes: u32, _subs: u32) -> DispatchResult {
 		Ok(())
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_identity_reaping(_: &AccountId, _: u32, _: u32) {}
 }
 
 #[cfg(feature = "runtime-benchmarks")]
@@ -229,12 +219,6 @@ mod benchmarks {
 		}
 		Identity::<T>::set_subs(target_origin.clone(), subs.clone())?;
 
-		T::ReapIdentityHandler::ensure_successful_identity_reaping(
-			&target,
-			info.encoded_size() as u32,
-			subs.len() as u32,
-		);
-
 		// add registrars and provide judgements
 		let registrar_origin = T::RegistrarOrigin::try_successful_origin()
 			.expect("RegistrarOrigin has no successful origin required for the benchmark");
diff --git a/polkadot/runtime/common/src/paras_sudo_wrapper.rs b/polkadot/runtime/common/src/paras_sudo_wrapper.rs
index 4309931fe81..af93c70b478 100644
--- a/polkadot/runtime/common/src/paras_sudo_wrapper.rs
+++ b/polkadot/runtime/common/src/paras_sudo_wrapper.rs
@@ -48,8 +48,6 @@ pub mod pallet {
 		/// A DMP message couldn't be sent because it exceeds the maximum size allowed for a
 		/// downward message.
 		ExceedsMaxMessageSize,
-		/// A DMP message couldn't be sent because the destination is unreachable.
-		Unroutable,
 		/// Could not schedule para cleanup.
 		CouldntCleanup,
 		/// Not a parathread (on-demand parachain).
@@ -154,7 +152,6 @@ pub mod pallet {
 			{
 				dmp::QueueDownwardMessageError::ExceedsMaxMessageSize =>
 					Error::<T>::ExceedsMaxMessageSize.into(),
-				dmp::QueueDownwardMessageError::Unroutable => Error::<T>::Unroutable.into(),
 			})
 		}
 
diff --git a/polkadot/runtime/common/src/xcm_sender.rs b/polkadot/runtime/common/src/xcm_sender.rs
index 32ea4fdd2f2..7ff7f69faf1 100644
--- a/polkadot/runtime/common/src/xcm_sender.rs
+++ b/polkadot/runtime/common/src/xcm_sender.rs
@@ -138,13 +138,6 @@ where
 			.map(|()| hash)
 			.map_err(|_| SendError::Transport(&"Error placing into DMP queue"))
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		if let Some((0, [Parachain(id)])) = location.as_ref().map(|l| l.unpack()) {
-			dmp::Pallet::<T>::make_parachain_reachable(*id);
-		}
-	}
 }
 
 impl<T: dmp::Config, W, P> InspectMessageQueues for ChildParachainRouter<T, W, P> {
@@ -197,7 +190,7 @@ impl<
 		ExistentialDeposit: Get<Option<Asset>>,
 		PriceForDelivery: PriceForMessageDelivery<Id = ParaId>,
 		Parachain: Get<ParaId>,
-		ToParachainHelper: polkadot_runtime_parachains::EnsureForParachain,
+		ToParachainHelper: EnsureForParachain,
 	> xcm_builder::EnsureDelivery
 	for ToParachainDeliveryHelper<
 		XcmConfig,
@@ -226,9 +219,6 @@ impl<
 			return (None, None)
 		}
 
-		// allow more initialization for target parachain
-		ToParachainHelper::ensure(Parachain::get());
-
 		let mut fees_mode = None;
 		if !XcmConfig::FeeManager::is_waived(Some(origin_ref), fee_reason) {
 			// if not waived, we need to set up accounts for paying and receiving fees
@@ -248,6 +238,9 @@ impl<
 				XcmConfig::AssetTransactor::deposit_asset(&fee, &origin_ref, None).unwrap();
 			}
 
+			// allow more initialization for target parachain
+			ToParachainHelper::ensure(Parachain::get());
+
 			// expected worst case - direct withdraw
 			fees_mode = Some(FeesMode { jit_withdraw: true });
 		}
@@ -255,6 +248,18 @@ impl<
 	}
 }
 
+/// Ensure more initialization for `ParaId`. (e.g. open HRMP channels, ...)
+#[cfg(feature = "runtime-benchmarks")]
+pub trait EnsureForParachain {
+	fn ensure(para_id: ParaId);
+}
+#[cfg(feature = "runtime-benchmarks")]
+impl EnsureForParachain for () {
+	fn ensure(_: ParaId) {
+		// doing nothing
+	}
+}
+
 #[cfg(test)]
 mod tests {
 	use super::*;
@@ -344,8 +349,6 @@ mod tests {
 				c.max_downward_message_size = u32::MAX;
 			});
 
-			dmp::Pallet::<crate::integration_tests::Test>::make_parachain_reachable(5555);
-
 			// Check that the good message is validated:
 			assert_ok!(<Router as SendXcm>::validate(
 				&mut Some(dest.into()),
diff --git a/polkadot/runtime/parachains/Cargo.toml b/polkadot/runtime/parachains/Cargo.toml
index dd0788170b6..31e786ae6ba 100644
--- a/polkadot/runtime/parachains/Cargo.toml
+++ b/polkadot/runtime/parachains/Cargo.toml
@@ -135,7 +135,6 @@ runtime-benchmarks = [
 	"sp-std",
 	"static_assertions",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/polkadot/runtime/parachains/src/coretime/benchmarking.rs b/polkadot/runtime/parachains/src/coretime/benchmarking.rs
index 49e3d8a88c0..6d593f1954f 100644
--- a/polkadot/runtime/parachains/src/coretime/benchmarking.rs
+++ b/polkadot/runtime/parachains/src/coretime/benchmarking.rs
@@ -43,8 +43,6 @@ mod benchmarks {
 			.unwrap();
 		on_demand::Revenue::<T>::put(rev);
 
-		crate::paras::Heads::<T>::insert(ParaId::from(T::BrokerId::get()), vec![1, 2, 3]);
-
 		<T as on_demand::Config>::Currency::make_free_balance_be(
 			&<on_demand::Pallet<T>>::account_id(),
 			minimum_balance * (mhr * (mhr + 1)).into(),
diff --git a/polkadot/runtime/parachains/src/dmp.rs b/polkadot/runtime/parachains/src/dmp.rs
index 3c9cf800418..03580e11b8e 100644
--- a/polkadot/runtime/parachains/src/dmp.rs
+++ b/polkadot/runtime/parachains/src/dmp.rs
@@ -44,7 +44,7 @@
 
 use crate::{
 	configuration::{self, HostConfiguration},
-	initializer, paras, FeeTracker,
+	initializer, FeeTracker,
 };
 use alloc::vec::Vec;
 use core::fmt;
@@ -72,15 +72,12 @@ const MESSAGE_SIZE_FEE_BASE: FixedU128 = FixedU128::from_rational(1, 1000); // 0
 pub enum QueueDownwardMessageError {
 	/// The message being sent exceeds the configured max message size.
 	ExceedsMaxMessageSize,
-	/// The destination is unknown.
-	Unroutable,
 }
 
 impl From<QueueDownwardMessageError> for SendError {
 	fn from(err: QueueDownwardMessageError) -> Self {
 		match err {
 			QueueDownwardMessageError::ExceedsMaxMessageSize => SendError::ExceedsMaxMessageSize,
-			QueueDownwardMessageError::Unroutable => SendError::Unroutable,
 		}
 	}
 }
@@ -119,7 +116,7 @@ pub mod pallet {
 	pub struct Pallet<T>(_);
 
 	#[pallet::config]
-	pub trait Config: frame_system::Config + configuration::Config + paras::Config {}
+	pub trait Config: frame_system::Config + configuration::Config {}
 
 	/// The downward messages addressed for a certain para.
 	#[pallet::storage]
@@ -203,11 +200,6 @@ impl<T: Config> Pallet<T> {
 			return Err(QueueDownwardMessageError::ExceedsMaxMessageSize)
 		}
 
-		// If the head exists, we assume the parachain is legit and exists.
-		if !paras::Heads::<T>::contains_key(para) {
-			return Err(QueueDownwardMessageError::Unroutable)
-		}
-
 		Ok(())
 	}
 
@@ -225,7 +217,14 @@ impl<T: Config> Pallet<T> {
 		msg: DownwardMessage,
 	) -> Result<(), QueueDownwardMessageError> {
 		let serialized_len = msg.len() as u32;
-		Self::can_queue_downward_message(config, &para, &msg)?;
+		if serialized_len > config.max_downward_message_size {
+			return Err(QueueDownwardMessageError::ExceedsMaxMessageSize)
+		}
+
+		// Hard limit on Queue size
+		if Self::dmq_length(para) > Self::dmq_max_length(config.max_downward_message_size) {
+			return Err(QueueDownwardMessageError::ExceedsMaxMessageSize)
+		}
 
 		let inbound =
 			InboundDownwardMessage { msg, sent_at: frame_system::Pallet::<T>::block_number() };
@@ -337,15 +336,6 @@ impl<T: Config> Pallet<T> {
 	) -> Vec<InboundDownwardMessage<BlockNumberFor<T>>> {
 		DownwardMessageQueues::<T>::get(&recipient)
 	}
-
-	/// Make the parachain reachable for downward messages.
-	///
-	/// Only useable in benchmarks or tests.
-	#[cfg(any(feature = "runtime-benchmarks", feature = "std"))]
-	pub fn make_parachain_reachable(para: impl Into<ParaId>) {
-		let para = para.into();
-		crate::paras::Heads::<T>::insert(para, para.encode());
-	}
 }
 
 impl<T: Config> FeeTracker for Pallet<T> {
@@ -369,10 +359,3 @@ impl<T: Config> FeeTracker for Pallet<T> {
 		})
 	}
 }
-
-#[cfg(feature = "runtime-benchmarks")]
-impl<T: Config> crate::EnsureForParachain for Pallet<T> {
-	fn ensure(para: ParaId) {
-		Self::make_parachain_reachable(para);
-	}
-}
diff --git a/polkadot/runtime/parachains/src/dmp/tests.rs b/polkadot/runtime/parachains/src/dmp/tests.rs
index 617c9488bd2..de151595812 100644
--- a/polkadot/runtime/parachains/src/dmp/tests.rs
+++ b/polkadot/runtime/parachains/src/dmp/tests.rs
@@ -61,12 +61,6 @@ fn queue_downward_message(
 	Dmp::queue_downward_message(&configuration::ActiveConfig::<Test>::get(), para_id, msg)
 }
 
-fn register_paras(paras: &[ParaId]) {
-	paras.iter().for_each(|p| {
-		Dmp::make_parachain_reachable(*p);
-	});
-}
-
 #[test]
 fn clean_dmp_works() {
 	let a = ParaId::from(1312);
@@ -74,8 +68,6 @@ fn clean_dmp_works() {
 	let c = ParaId::from(123);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a, b, c]);
-
 		// enqueue downward messages to A, B and C.
 		queue_downward_message(a, vec![1, 2, 3]).unwrap();
 		queue_downward_message(b, vec![4, 5, 6]).unwrap();
@@ -97,8 +89,6 @@ fn dmq_length_and_head_updated_properly() {
 	let b = ParaId::from(228);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a, b]);
-
 		assert_eq!(Dmp::dmq_length(a), 0);
 		assert_eq!(Dmp::dmq_length(b), 0);
 
@@ -111,30 +101,11 @@ fn dmq_length_and_head_updated_properly() {
 	});
 }
 
-#[test]
-fn dmq_fail_if_para_does_not_exist() {
-	let a = ParaId::from(1312);
-
-	new_test_ext(default_genesis_config()).execute_with(|| {
-		assert_eq!(Dmp::dmq_length(a), 0);
-
-		assert!(matches!(
-			queue_downward_message(a, vec![1, 2, 3]),
-			Err(QueueDownwardMessageError::Unroutable)
-		));
-
-		assert_eq!(Dmp::dmq_length(a), 0);
-		assert!(Dmp::dmq_mqc_head(a).is_zero());
-	});
-}
-
 #[test]
 fn dmp_mqc_head_fixture() {
 	let a = ParaId::from(2000);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a]);
-
 		run_to_block(2, None);
 		assert!(Dmp::dmq_mqc_head(a).is_zero());
 		queue_downward_message(a, vec![1, 2, 3]).unwrap();
@@ -154,8 +125,6 @@ fn check_processed_downward_messages() {
 	let a = ParaId::from(1312);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a]);
-
 		let block_number = System::block_number();
 
 		// processed_downward_messages=0 is allowed when the DMQ is empty.
@@ -181,8 +150,6 @@ fn check_processed_downward_messages_advancement_rule() {
 	let a = ParaId::from(1312);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a]);
-
 		let block_number = System::block_number();
 
 		run_to_block(block_number + 1, None);
@@ -203,8 +170,6 @@ fn dmq_pruning() {
 	let a = ParaId::from(1312);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a]);
-
 		assert_eq!(Dmp::dmq_length(a), 0);
 
 		queue_downward_message(a, vec![1, 2, 3]).unwrap();
@@ -229,8 +194,6 @@ fn queue_downward_message_critical() {
 	genesis.configuration.config.max_downward_message_size = 7;
 
 	new_test_ext(genesis).execute_with(|| {
-		register_paras(&[a]);
-
 		let smol = [0; 3].to_vec();
 		let big = [0; 8].to_vec();
 
@@ -252,8 +215,6 @@ fn verify_dmq_mqc_head_is_externally_accessible() {
 	let a = ParaId::from(2020);
 
 	new_test_ext(default_genesis_config()).execute_with(|| {
-		register_paras(&[a]);
-
 		let head = sp_io::storage::get(&well_known_keys::dmq_mqc_head(a));
 		assert_eq!(head, None);
 
@@ -274,12 +235,9 @@ fn verify_dmq_mqc_head_is_externally_accessible() {
 #[test]
 fn verify_fee_increase_and_decrease() {
 	let a = ParaId::from(123);
-
 	let mut genesis = default_genesis_config();
 	genesis.configuration.config.max_downward_message_size = 16777216;
 	new_test_ext(genesis).execute_with(|| {
-		register_paras(&[a]);
-
 		let initial = InitialFactor::get();
 		assert_eq!(DeliveryFeeFactor::<Test>::get(a), initial);
 
@@ -329,8 +287,6 @@ fn verify_fee_factor_reaches_high_value() {
 	let mut genesis = default_genesis_config();
 	genesis.configuration.config.max_downward_message_size = 51200;
 	new_test_ext(genesis).execute_with(|| {
-		register_paras(&[a]);
-
 		let max_messages =
 			Dmp::dmq_max_length(ActiveConfig::<Test>::get().max_downward_message_size);
 		let mut total_fee_factor = FixedU128::from_float(1.0);
diff --git a/polkadot/runtime/parachains/src/lib.rs b/polkadot/runtime/parachains/src/lib.rs
index b1ff5419470..828c0b9bcef 100644
--- a/polkadot/runtime/parachains/src/lib.rs
+++ b/polkadot/runtime/parachains/src/lib.rs
@@ -114,19 +114,3 @@ pub fn schedule_code_upgrade<T: paras::Config>(
 pub fn set_current_head<T: paras::Config>(id: ParaId, new_head: HeadData) {
 	paras::Pallet::<T>::set_current_head(id, new_head)
 }
-
-/// Ensure more initialization for `ParaId` when benchmarking. (e.g. open HRMP channels, ...)
-#[cfg(feature = "runtime-benchmarks")]
-pub trait EnsureForParachain {
-	fn ensure(para_id: ParaId);
-}
-
-#[cfg(feature = "runtime-benchmarks")]
-#[impl_trait_for_tuples::impl_for_tuples(30)]
-impl EnsureForParachain for Tuple {
-	fn ensure(para: ParaId) {
-		for_tuples!( #(
-			Tuple::ensure(para);
-		)* );
-	}
-}
diff --git a/polkadot/runtime/rococo/Cargo.toml b/polkadot/runtime/rococo/Cargo.toml
index d1202fc9093..e321d973ba7 100644
--- a/polkadot/runtime/rococo/Cargo.toml
+++ b/polkadot/runtime/rococo/Cargo.toml
@@ -269,7 +269,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-executive/try-runtime",
diff --git a/polkadot/runtime/rococo/src/impls.rs b/polkadot/runtime/rococo/src/impls.rs
index a5cb2eddfa0..7d7e9fa9f06 100644
--- a/polkadot/runtime/rococo/src/impls.rs
+++ b/polkadot/runtime/rococo/src/impls.rs
@@ -176,9 +176,4 @@ where
 		)?;
 		Ok(())
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_identity_reaping(_: &AccountId, _: u32, _: u32) {
-		crate::Dmp::make_parachain_reachable(1004);
-	}
 }
diff --git a/polkadot/runtime/rococo/src/lib.rs b/polkadot/runtime/rococo/src/lib.rs
index 0bf014a0c91..4a9d429a01c 100644
--- a/polkadot/runtime/rococo/src/lib.rs
+++ b/polkadot/runtime/rococo/src/lib.rs
@@ -2469,14 +2469,14 @@ sp_api::impl_runtime_apis! {
 						ExistentialDepositAsset,
 						xcm_config::PriceForChildParachainDelivery,
 						AssetHubParaId,
-						Dmp,
+						(),
 					>,
 					polkadot_runtime_common::xcm_sender::ToParachainDeliveryHelper<
 						XcmConfig,
 						ExistentialDepositAsset,
 						xcm_config::PriceForChildParachainDelivery,
 						RandomParaId,
-						Dmp,
+						(),
 					>
 				);
 
@@ -2535,7 +2535,7 @@ sp_api::impl_runtime_apis! {
 					ExistentialDepositAsset,
 					xcm_config::PriceForChildParachainDelivery,
 					AssetHubParaId,
-					Dmp,
+					(),
 				>;
 				fn valid_destination() -> Result<Location, BenchmarkError> {
 					Ok(AssetHub::get())
diff --git a/polkadot/runtime/test-runtime/Cargo.toml b/polkadot/runtime/test-runtime/Cargo.toml
index 7775fee4ed0..f555fab5a71 100644
--- a/polkadot/runtime/test-runtime/Cargo.toml
+++ b/polkadot/runtime/test-runtime/Cargo.toml
@@ -153,5 +153,4 @@ runtime-benchmarks = [
 	"sp-staking/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/polkadot/runtime/westend/Cargo.toml b/polkadot/runtime/westend/Cargo.toml
index 600d2c7fa99..cf4be6ebe44 100644
--- a/polkadot/runtime/westend/Cargo.toml
+++ b/polkadot/runtime/westend/Cargo.toml
@@ -291,7 +291,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-election-provider-support/try-runtime",
diff --git a/polkadot/runtime/westend/src/impls.rs b/polkadot/runtime/westend/src/impls.rs
index 0e0d345a0ed..8cb597cbaa9 100644
--- a/polkadot/runtime/westend/src/impls.rs
+++ b/polkadot/runtime/westend/src/impls.rs
@@ -176,9 +176,4 @@ where
 		)?;
 		Ok(())
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_identity_reaping(_: &AccountId, _: u32, _: u32) {
-		crate::Dmp::make_parachain_reachable(1004);
-	}
 }
diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs
index 516b085d291..25e7e653d22 100644
--- a/polkadot/runtime/westend/src/lib.rs
+++ b/polkadot/runtime/westend/src/lib.rs
@@ -2636,14 +2636,14 @@ sp_api::impl_runtime_apis! {
 						ExistentialDepositAsset,
 						xcm_config::PriceForChildParachainDelivery,
 						AssetHubParaId,
-						Dmp,
+						(),
 					>,
 					polkadot_runtime_common::xcm_sender::ToParachainDeliveryHelper<
 						xcm_config::XcmConfig,
 						ExistentialDepositAsset,
 						xcm_config::PriceForChildParachainDelivery,
 						RandomParaId,
-						Dmp,
+						(),
 					>
 				);
 
@@ -2709,7 +2709,7 @@ sp_api::impl_runtime_apis! {
 					ExistentialDepositAsset,
 					xcm_config::PriceForChildParachainDelivery,
 					AssetHubParaId,
-					Dmp,
+					(),
 				>;
 				fn valid_destination() -> Result<Location, BenchmarkError> {
 					Ok(AssetHub::get())
diff --git a/polkadot/xcm/Cargo.toml b/polkadot/xcm/Cargo.toml
index 524b3f3a18d..87910cd4a45 100644
--- a/polkadot/xcm/Cargo.toml
+++ b/polkadot/xcm/Cargo.toml
@@ -50,7 +50,3 @@ json-schema = [
 	"dep:schemars",
 	"sp-weights/json-schema",
 ]
-runtime-benchmarks = [
-	"frame-support/runtime-benchmarks",
-	"sp-runtime/runtime-benchmarks",
-]
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
index 9e2a33607d9..72e96aa3e1d 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
@@ -57,5 +57,4 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs b/polkadot/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs
index 4428076aa07..303ff9493f7 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs
+++ b/polkadot/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs
@@ -231,13 +231,6 @@ benchmarks_instance_pallet! {
 		let dest_account = T::AccountIdConverter::convert_location(&dest_location).unwrap();
 		assert!(T::TransactAsset::balance(&dest_account).is_zero());
 
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		let (_, _) = T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&dest_location,
-			FeeReason::ChargeFees,
-		);
-
 		let mut executor = new_executor::<T>(Default::default());
 		executor.set_holding(holding.into());
 		let instruction = Instruction::<XcmCallOf<T>>::DepositAsset {
@@ -264,13 +257,6 @@ benchmarks_instance_pallet! {
 		let dest_account = T::AccountIdConverter::convert_location(&dest_location).unwrap();
 		assert!(T::TransactAsset::balance(&dest_account).is_zero());
 
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		let (_, _) = T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&dest_location,
-			FeeReason::ChargeFees,
-		);
-
 		let mut executor = new_executor::<T>(Default::default());
 		executor.set_holding(holding.into());
 		let instruction = Instruction::<XcmCallOf<T>>::DepositReserveAsset {
@@ -295,20 +281,12 @@ benchmarks_instance_pallet! {
 
 		// Checked account starts at zero
 		assert!(T::CheckedAccount::get().map_or(true, |(c, _)| T::TransactAsset::balance(&c).is_zero()));
-		let dest_location =  T::valid_destination()?;
-
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		let (_, _) = T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&dest_location,
-			FeeReason::ChargeFees,
-		);
 
 		let mut executor = new_executor::<T>(Default::default());
 		executor.set_holding(holding.into());
 		let instruction = Instruction::<XcmCallOf<T>>::InitiateTeleport {
 			assets: asset.into(),
-			dest: dest_location,
+			dest: T::valid_destination()?,
 			xcm: Xcm::new(),
 		};
 		let xcm = Xcm(vec![instruction]);
@@ -325,15 +303,6 @@ benchmarks_instance_pallet! {
 		let (sender_account, sender_location) = account_and_location::<T>(1);
 		let asset = T::get_asset();
 		let mut holding = T::worst_case_holding(1);
-		let dest_location =  T::valid_destination()?;
-
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		let (_, _) = T::DeliveryHelper::ensure_successful_delivery(
-			&sender_location,
-			&dest_location,
-			FeeReason::ChargeFees,
-		);
-
 		let sender_account_balance_before = T::TransactAsset::balance(&sender_account);
 
 		// Add our asset to the holding.
@@ -342,7 +311,7 @@ benchmarks_instance_pallet! {
 		let mut executor = new_executor::<T>(sender_location);
 		executor.set_holding(holding.into());
 		let instruction = Instruction::<XcmCallOf<T>>::InitiateTransfer {
-			destination: dest_location,
+			destination: T::valid_destination()?,
 			// ReserveDeposit is the most expensive filter.
 			remote_fees: Some(AssetTransferFilter::ReserveDeposit(asset.clone().into())),
 			// It's more expensive if we reanchor the origin.
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/src/generic/benchmarking.rs b/polkadot/xcm/pallet-xcm-benchmarks/src/generic/benchmarking.rs
index 4d15dcfb936..ca2715555f7 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/src/generic/benchmarking.rs
+++ b/polkadot/xcm/pallet-xcm-benchmarks/src/generic/benchmarking.rs
@@ -344,7 +344,6 @@ benchmarks! {
 		let mut executor = new_executor::<T>(origin.clone());
 		let instruction = Instruction::SubscribeVersion { query_id, max_response_weight };
 		let xcm = Xcm(vec![instruction]);
-		T::DeliveryHelper::ensure_successful_delivery(&origin, &origin, FeeReason::QueryPallet);
 	} : {
 		executor.bench_process(xcm)?;
 	} verify {
@@ -355,9 +354,6 @@ benchmarks! {
 		use xcm_executor::traits::VersionChangeNotifier;
 		// First we need to subscribe to notifications.
 		let (origin, _) = T::transact_origin_and_runtime_call()?;
-
-		T::DeliveryHelper::ensure_successful_delivery(&origin, &origin, FeeReason::QueryPallet);
-
 		let query_id = Default::default();
 		let max_response_weight = Default::default();
 		<T::XcmConfig as xcm_executor::Config>::SubscriptionService::start(
diff --git a/polkadot/xcm/pallet-xcm/Cargo.toml b/polkadot/xcm/pallet-xcm/Cargo.toml
index 2b961985cb8..25b9c0a20b5 100644
--- a/polkadot/xcm/pallet-xcm/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm/Cargo.toml
@@ -61,7 +61,6 @@ runtime-benchmarks = [
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
 	"xcm-runtime-apis/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/polkadot/xcm/pallet-xcm/src/benchmarking.rs b/polkadot/xcm/pallet-xcm/src/benchmarking.rs
index dd3c58c5dc7..e493d4838f5 100644
--- a/polkadot/xcm/pallet-xcm/src/benchmarking.rs
+++ b/polkadot/xcm/pallet-xcm/src/benchmarking.rs
@@ -96,13 +96,6 @@ benchmarks! {
 		)?
 		.into();
 		let versioned_msg = VersionedXcm::from(msg);
-
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&versioned_dest.clone().try_into().unwrap(),
-			FeeReason::ChargeFees,
-		);
 	}: _<RuntimeOrigin<T>>(send_origin, Box::new(versioned_dest), Box::new(versioned_msg))
 
 	teleport_assets {
@@ -171,7 +164,7 @@ benchmarks! {
 		}
 
 		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		T::DeliveryHelper::ensure_successful_delivery(
+		let (_, _) = T::DeliveryHelper::ensure_successful_delivery(
 			&origin_location,
 			&destination,
 			FeeReason::ChargeFees,
@@ -234,13 +227,6 @@ benchmarks! {
 		let versioned_beneficiary: VersionedLocation =
 			AccountId32 { network: None, id: recipient.into() }.into();
 		let versioned_assets: VersionedAssets = assets.into();
-
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&versioned_dest.clone().try_into().unwrap(),
-			FeeReason::ChargeFees,
-		);
 	}: _<RuntimeOrigin<T>>(send_origin.into(), Box::new(versioned_dest), Box::new(versioned_beneficiary), Box::new(versioned_assets), 0, WeightLimit::Unlimited)
 	verify {
 		// run provided verification function
@@ -273,14 +259,6 @@ benchmarks! {
 			BenchmarkError::Override(BenchmarkResult::from_weight(Weight::MAX)),
 		)?
 		.into();
-
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&versioned_loc.clone().try_into().unwrap(),
-			FeeReason::ChargeFees,
-		);
-
 	}: _(RawOrigin::Root, Box::new(versioned_loc))
 
 	force_unsubscribe_version_notify {
@@ -288,14 +266,6 @@ benchmarks! {
 			BenchmarkError::Override(BenchmarkResult::from_weight(Weight::MAX)),
 		)?;
 		let versioned_loc: VersionedLocation = loc.clone().into();
-
-		// Ensure that origin can send to destination (e.g. setup delivery fees, ensure router setup, ...)
-		T::DeliveryHelper::ensure_successful_delivery(
-			&Default::default(),
-			&versioned_loc.clone().try_into().unwrap(),
-			FeeReason::ChargeFees,
-		);
-
 		let _ = crate::Pallet::<T>::request_version_notify(loc);
 	}: _(RawOrigin::Root, Box::new(versioned_loc))
 
diff --git a/polkadot/xcm/src/v5/traits.rs b/polkadot/xcm/src/v5/traits.rs
index 79d32856142..71b67e97d5f 100644
--- a/polkadot/xcm/src/v5/traits.rs
+++ b/polkadot/xcm/src/v5/traits.rs
@@ -460,10 +460,6 @@ pub trait SendXcm {
 
 	/// Actually carry out the delivery operation for a previously validated message sending.
 	fn deliver(ticket: Self::Ticket) -> result::Result<XcmHash, SendError>;
-
-	/// Ensure `[Self::delivery]` is successful for the given `location` when called in benchmarks.
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(_location: Option<Location>) {}
 }
 
 #[impl_trait_for_tuples::impl_for_tuples(30)]
@@ -504,13 +500,6 @@ impl SendXcm for Tuple {
 		)* );
 		Err(SendError::Unroutable)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		for_tuples!( #(
-			return Tuple::ensure_successful_delivery(location.clone());
-		)* );
-	}
 }
 
 /// Convenience function for using a `SendXcm` implementation. Just interprets the `dest` and wraps
diff --git a/polkadot/xcm/xcm-builder/Cargo.toml b/polkadot/xcm/xcm-builder/Cargo.toml
index b806abbfefe..cd23e691dea 100644
--- a/polkadot/xcm/xcm-builder/Cargo.toml
+++ b/polkadot/xcm/xcm-builder/Cargo.toml
@@ -48,7 +48,6 @@ runtime-benchmarks = [
 	"polkadot-parachain-primitives/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 std = [
 	"codec/std",
diff --git a/polkadot/xcm/xcm-builder/src/pay.rs b/polkadot/xcm/xcm-builder/src/pay.rs
index 0093051290b..978c6870cda 100644
--- a/polkadot/xcm/xcm-builder/src/pay.rs
+++ b/polkadot/xcm/xcm-builder/src/pay.rs
@@ -70,8 +70,8 @@ impl<
 		Router: SendXcm,
 		Querier: QueryHandler,
 		Timeout: Get<Querier::BlockNumber>,
-		Beneficiary: Clone + core::fmt::Debug,
-		AssetKind: core::fmt::Debug,
+		Beneficiary: Clone,
+		AssetKind,
 		AssetKindToLocatableAsset: TryConvert<AssetKind, LocatableAssetId>,
 		BeneficiaryRefToLocation: for<'a> TryConvert<&'a Beneficiary, Location>,
 	> Pay
@@ -144,9 +144,10 @@ impl<
 	}
 
 	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful(_: &Self::Beneficiary, asset_kind: Self::AssetKind, _: Self::Balance) {
-		let locatable = AssetKindToLocatableAsset::try_convert(asset_kind).unwrap();
-		Router::ensure_successful_delivery(Some(locatable.location));
+	fn ensure_successful(_: &Self::Beneficiary, _: Self::AssetKind, _: Self::Balance) {
+		// We cannot generally guarantee this will go through successfully since we don't have any
+		// control over the XCM transport layers. We just assume that the benchmark environment
+		// will be sending it somewhere sensible.
 	}
 
 	#[cfg(feature = "runtime-benchmarks")]
diff --git a/polkadot/xcm/xcm-builder/src/routing.rs b/polkadot/xcm/xcm-builder/src/routing.rs
index 5b0d0a5f983..fc2de89d212 100644
--- a/polkadot/xcm/xcm-builder/src/routing.rs
+++ b/polkadot/xcm/xcm-builder/src/routing.rs
@@ -60,11 +60,6 @@ impl<Inner: SendXcm> SendXcm for WithUniqueTopic<Inner> {
 		Inner::deliver(ticket)?;
 		Ok(unique_id)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		Inner::ensure_successful_delivery(location);
-	}
 }
 impl<Inner: InspectMessageQueues> InspectMessageQueues for WithUniqueTopic<Inner> {
 	fn clear_messages() {
@@ -119,11 +114,6 @@ impl<Inner: SendXcm, TopicSource: SourceTopic> SendXcm for WithTopicSource<Inner
 		Inner::deliver(ticket)?;
 		Ok(unique_id)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		Inner::ensure_successful_delivery(location);
-	}
 }
 
 /// Trait for a type which ensures all requirements for successful delivery with XCM transport
@@ -221,9 +211,4 @@ impl<Inner: SendXcm> SendXcm for EnsureDecodableXcm<Inner> {
 	fn deliver(ticket: Self::Ticket) -> Result<XcmHash, SendError> {
 		Inner::deliver(ticket)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		Inner::ensure_successful_delivery(location);
-	}
 }
diff --git a/polkadot/xcm/xcm-builder/src/tests/pay/pay.rs b/polkadot/xcm/xcm-builder/src/tests/pay/pay.rs
index b4718edc6c9..062faee2abd 100644
--- a/polkadot/xcm/xcm-builder/src/tests/pay/pay.rs
+++ b/polkadot/xcm/xcm-builder/src/tests/pay/pay.rs
@@ -22,7 +22,7 @@ use frame_support::{assert_ok, traits::tokens::Pay};
 
 /// Type representing both a location and an asset that is held at that location.
 /// The id of the held asset is relative to the location where it is being held.
-#[derive(Encode, Decode, Clone, PartialEq, Eq, Debug)]
+#[derive(Encode, Decode, Clone, PartialEq, Eq)]
 pub struct AssetKind {
 	destination: Location,
 	asset_id: AssetId,
diff --git a/polkadot/xcm/xcm-builder/src/universal_exports.rs b/polkadot/xcm/xcm-builder/src/universal_exports.rs
index 6b3c3adf737..aae8438c78d 100644
--- a/polkadot/xcm/xcm-builder/src/universal_exports.rs
+++ b/polkadot/xcm/xcm-builder/src/universal_exports.rs
@@ -95,9 +95,6 @@ impl<Exporter: ExportXcm, UniversalLocation: Get<InteriorLocation>> SendXcm
 	fn deliver(ticket: Exporter::Ticket) -> Result<XcmHash, SendError> {
 		Exporter::deliver(ticket)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(_: Option<Location>) {}
 }
 
 pub trait ExporterFor {
@@ -264,11 +261,6 @@ impl<Bridges: ExporterFor, Router: SendXcm, UniversalLocation: Get<InteriorLocat
 	fn deliver(validation: Self::Ticket) -> Result<XcmHash, SendError> {
 		Router::deliver(validation)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		Router::ensure_successful_delivery(location);
-	}
 }
 
 /// Implementation of `SendXcm` which wraps the message inside an `ExportMessage` instruction
@@ -369,11 +361,6 @@ impl<Bridges: ExporterFor, Router: SendXcm, UniversalLocation: Get<InteriorLocat
 	fn deliver(ticket: Router::Ticket) -> Result<XcmHash, SendError> {
 		Router::deliver(ticket)
 	}
-
-	#[cfg(feature = "runtime-benchmarks")]
-	fn ensure_successful_delivery(location: Option<Location>) {
-		Router::ensure_successful_delivery(location);
-	}
 }
 
 impl<Bridges, Router, UniversalLocation> InspectMessageQueues
@@ -626,9 +613,6 @@ mod tests {
 		fn deliver(_ticket: Self::Ticket) -> Result<XcmHash, SendError> {
 			Ok([0; 32])
 		}
-
-		#[cfg(feature = "runtime-benchmarks")]
-		fn ensure_successful_delivery(_: Option<Location>) {}
 	}
 	impl<Filter: Contains<(NetworkId, InteriorLocation)>> ExportXcm for OkFor<Filter> {
 		type Ticket = ();
diff --git a/polkadot/xcm/xcm-executor/Cargo.toml b/polkadot/xcm/xcm-executor/Cargo.toml
index ac3cda4d532..f2bc31fee2e 100644
--- a/polkadot/xcm/xcm-executor/Cargo.toml
+++ b/polkadot/xcm/xcm-executor/Cargo.toml
@@ -30,7 +30,6 @@ runtime-benchmarks = [
 	"frame-benchmarking/runtime-benchmarks",
 	"frame-support/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 std = [
 	"codec/std",
diff --git a/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml b/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml
index a89dd74a44f..0045295deb0 100644
--- a/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml
+++ b/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml
@@ -12,25 +12,30 @@ workspace = true
 
 [dependencies]
 codec = { workspace = true, default-features = true }
-frame-support = { workspace = true }
-frame-system = { workspace = true, default-features = true }
+frame-support.workspace = true
 futures = { workspace = true }
-pallet-transaction-payment = { workspace = true, default-features = true }
-pallet-sudo = { workspace = true, default-features = true }
-pallet-xcm = { workspace = true, default-features = true }
-polkadot-runtime-parachains = { workspace = true, default-features = true }
-polkadot-test-client = { workspace = true }
-polkadot-test-runtime = { workspace = true }
-polkadot-test-service = { workspace = true }
-sp-consensus = { workspace = true, default-features = true }
-sp-keyring = { workspace = true, default-features = true }
-sp-runtime = { workspace = true }
-sp-state-machine = { workspace = true, default-features = true }
-xcm = { workspace = true }
-xcm-executor = { workspace = true, default-features = true }
-sp-tracing = { workspace = true, default-features = true }
-sp-core = { workspace = true, default-features = true }
+pallet-transaction-payment.workspace = true
+pallet-transaction-payment.default-features = true
+pallet-xcm.workspace = true
+pallet-xcm.default-features = true
+polkadot-test-client.workspace = true
+polkadot-test-runtime.workspace = true
+polkadot-test-service.workspace = true
+sp-consensus.workspace = true
+sp-consensus.default-features = true
+sp-keyring.workspace = true
+sp-keyring.default-features = true
+sp-runtime.workspace = true
+sp-state-machine.workspace = true
+sp-state-machine.default-features = true
+xcm.workspace = true
+xcm-executor.workspace = true
+xcm-executor.default-features = true
+sp-tracing.workspace = true
+sp-tracing.default-features = true
+sp-core.workspace = true
+sp-core.default-features = true
 
 [features]
 default = ["std"]
-std = ["frame-support/std", "frame-system/std", "pallet-sudo/std", "polkadot-runtime-parachains/std", "sp-runtime/std", "xcm/std"]
+std = ["frame-support/std", "sp-runtime/std", "xcm/std"]
diff --git a/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs b/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs
index dfcc3fc4187..699a081e4f2 100644
--- a/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs
+++ b/polkadot/xcm/xcm-executor/integration-tests/src/lib.rs
@@ -375,26 +375,6 @@ fn deposit_reserve_asset_works_for_any_xcm_sender() {
 
 	let mut block_builder = client.init_polkadot_block_builder();
 
-	// Make the para available, so that `DMP` doesn't reject the XCM because the para is unknown.
-	let make_para_available =
-		construct_extrinsic(
-			&client,
-			polkadot_test_runtime::RuntimeCall::Sudo(pallet_sudo::Call::sudo {
-				call: Box::new(polkadot_test_runtime::RuntimeCall::System(
-					frame_system::Call::set_storage {
-						items: vec![(
-							polkadot_runtime_parachains::paras::Heads::<
-								polkadot_test_runtime::Runtime,
-							>::hashed_key_for(2000u32),
-							vec![1, 2, 3],
-						)],
-					},
-				)),
-			}),
-			sp_keyring::Sr25519Keyring::Alice,
-			0,
-		);
-
 	// Simulate execution of an incoming XCM message at the reserve chain
 	let execute = construct_extrinsic(
 		&client,
@@ -403,12 +383,9 @@ fn deposit_reserve_asset_works_for_any_xcm_sender() {
 			max_weight: Weight::from_parts(1_000_000_000, 1024 * 1024),
 		}),
 		sp_keyring::Sr25519Keyring::Alice,
-		1,
+		0,
 	);
 
-	block_builder
-		.push_polkadot_extrinsic(make_para_available)
-		.expect("pushes extrinsic");
 	block_builder.push_polkadot_extrinsic(execute).expect("pushes extrinsic");
 
 	let block = block_builder.build().expect("Finalizes the block").block;
diff --git a/polkadot/xcm/xcm-runtime-apis/Cargo.toml b/polkadot/xcm/xcm-runtime-apis/Cargo.toml
index 0d944c368d6..c00b8ee0b85 100644
--- a/polkadot/xcm/xcm-runtime-apis/Cargo.toml
+++ b/polkadot/xcm/xcm-runtime-apis/Cargo.toml
@@ -46,5 +46,4 @@ std = [
 runtime-benchmarks = [
 	"frame-support/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/polkadot/xcm/xcm-simulator/example/Cargo.toml b/polkadot/xcm/xcm-simulator/example/Cargo.toml
index a25ddd63d16..9870944f088 100644
--- a/polkadot/xcm/xcm-simulator/example/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/example/Cargo.toml
@@ -64,5 +64,4 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml b/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
index 2e3e9af5e99..2168af5dbf2 100644
--- a/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
@@ -75,7 +75,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 
 [[bin]]
diff --git a/prdoc/pr_6604.prdoc b/prdoc/pr_6604.prdoc
deleted file mode 100644
index dc198287ff6..00000000000
--- a/prdoc/pr_6604.prdoc
+++ /dev/null
@@ -1,106 +0,0 @@
-title: 'dmp: Check that the para exist before delivering a message'
-doc:
-- audience: Runtime Dev
-  description: |
-    Ensure that a para exists before trying to deliver a message to it. 
-    Besides that `ensure_successful_delivery` function is added to `SendXcm`. This function
-    should be used by benchmarks to ensure that the delivery of a Xcm will work in the benchmark.
-crates:
-- name: polkadot-runtime-parachains
-  bump: major
-- name: polkadot-runtime-common
-  bump: major
-- name: polkadot-parachain-primitives
-  bump: major
-- name: rococo-runtime
-  bump: major
-- name: westend-runtime
-  bump: major
-- name: pallet-xcm-benchmarks
-  bump: major
-- name: pallet-xcm
-  bump: major
-- name: cumulus-pallet-parachain-system
-  bump: major
-- name: staging-xcm
-  bump: major
-- name: staging-xcm-builder
-  bump: major
-- name: bridge-runtime-common
-  bump: major
-- name: pallet-xcm-bridge-hub-router
-  bump: major
-- name: pallet-xcm-bridge-hub
-  bump: major
-- name: snowbridge-pallet-inbound-queue
-  bump: major
-- name: snowbridge-pallet-system
-  bump: major
-- name: snowbridge-core
-  bump: major
-- name: snowbridge-router-primitives
-  bump: major
-- name: snowbridge-runtime-common
-  bump: major
-- name: snowbridge-runtime-test-common
-  bump: major
-- name: cumulus-pallet-dmp-queue
-  bump: major
-- name: cumulus-pallet-xcmp-queue
-  bump: major
-- name: parachains-common
-  bump: major
-- name: asset-hub-rococo-runtime
-  bump: major
-- name: asset-hub-westend-runtime
-  bump: major
-- name: assets-common
-  bump: major
-- name: bridge-hub-rococo-runtime
-  bump: major
-- name: bridge-hub-westend-runtime
-  bump: major
-- name: bridge-hub-common
-  bump: major
-- name: collectives-westend-runtime
-  bump: major
-- name: contracts-rococo-runtime
-  bump: major
-- name: coretime-rococo-runtime
-  bump: major
-- name: coretime-westend-runtime
-  bump: major
-- name: glutton-westend-runtime
-  bump: major
-- name: people-rococo-runtime
-  bump: major
-- name: people-westend-runtime
-  bump: major
-- name: penpal-runtime
-  bump: major
-- name: rococo-parachain-runtime
-  bump: major
-- name: polkadot-parachain-bin
-  bump: major
-- name: cumulus-primitives-core
-  bump: major
-- name: cumulus-primitives-utility
-  bump: major
-- name: polkadot-service
-  bump: major
-- name: staging-xcm-executor
-  bump: major
-- name: xcm-runtime-apis
-  bump: major
-- name: xcm-simulator-example
-  bump: major
-- name: pallet-contracts
-  bump: major
-- name: pallet-contracts-mock-network
-  bump: major
-- name: pallet-revive
-  bump: major
-- name: pallet-revive-mock-network
-  bump: major
-- name: polkadot-sdk
-  bump: major
diff --git a/substrate/frame/contracts/Cargo.toml b/substrate/frame/contracts/Cargo.toml
index a18c9d66ca4..8265f666fe3 100644
--- a/substrate/frame/contracts/Cargo.toml
+++ b/substrate/frame/contracts/Cargo.toml
@@ -110,7 +110,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"wasm-instrument",
 	"xcm-builder/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/substrate/frame/contracts/mock-network/Cargo.toml b/substrate/frame/contracts/mock-network/Cargo.toml
index c46a02b6d9d..aa715d93596 100644
--- a/substrate/frame/contracts/mock-network/Cargo.toml
+++ b/substrate/frame/contracts/mock-network/Cargo.toml
@@ -102,5 +102,4 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml
index 5a87344f920..8b845af147a 100644
--- a/substrate/frame/revive/Cargo.toml
+++ b/substrate/frame/revive/Cargo.toml
@@ -117,7 +117,6 @@ runtime-benchmarks = [
 	"pallet-transaction-payment/runtime-benchmarks",
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/substrate/frame/revive/mock-network/Cargo.toml b/substrate/frame/revive/mock-network/Cargo.toml
index cc866012ec4..76a8be8f2ca 100644
--- a/substrate/frame/revive/mock-network/Cargo.toml
+++ b/substrate/frame/revive/mock-network/Cargo.toml
@@ -99,7 +99,6 @@ runtime-benchmarks = [
 	"sp-runtime/runtime-benchmarks",
 	"xcm-builder/runtime-benchmarks",
 	"xcm-executor/runtime-benchmarks",
-	"xcm/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-support/try-runtime",
diff --git a/umbrella/Cargo.toml b/umbrella/Cargo.toml
index 4bcd4b4b4a6..76bcb4d1c52 100644
--- a/umbrella/Cargo.toml
+++ b/umbrella/Cargo.toml
@@ -364,7 +364,6 @@ runtime-benchmarks = [
 	"staging-node-inspect?/runtime-benchmarks",
 	"staging-xcm-builder?/runtime-benchmarks",
 	"staging-xcm-executor?/runtime-benchmarks",
-	"staging-xcm?/runtime-benchmarks",
 	"xcm-runtime-apis?/runtime-benchmarks",
 ]
 try-runtime = [
-- 
GitLab