diff --git a/polkadot/runtime/parachains/src/assigner_parachains.rs b/polkadot/runtime/parachains/src/assigner_parachains.rs
deleted file mode 100644
index 53edae5c32fc9e8e00d50971f0916818849668dc..0000000000000000000000000000000000000000
--- a/polkadot/runtime/parachains/src/assigner_parachains.rs
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (C) Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Polkadot is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! The bulk (parachain slot auction) blockspace assignment provider.
-//! This provider is tightly coupled with the configuration and paras modules.
-
-#[cfg(test)]
-mod mock_helpers;
-#[cfg(test)]
-mod tests;
-
-use frame_system::pallet_prelude::BlockNumberFor;
-use polkadot_primitives::CoreIndex;
-
-use crate::{
-	configuration, paras,
-	scheduler::common::{Assignment, AssignmentProvider},
-};
-
-pub use pallet::*;
-
-#[frame_support::pallet]
-pub mod pallet {
-	use super::*;
-
-	#[pallet::pallet]
-	#[pallet::without_storage_info]
-	pub struct Pallet<T>(_);
-
-	#[pallet::config]
-	pub trait Config: frame_system::Config + configuration::Config + paras::Config {}
-}
-
-impl<T: Config> AssignmentProvider<BlockNumberFor<T>> for Pallet<T> {
-	fn pop_assignment_for_core(core_idx: CoreIndex) -> Option<Assignment> {
-		paras::Parachains::<T>::get()
-			.get(core_idx.0 as usize)
-			.copied()
-			.map(Assignment::Bulk)
-	}
-
-	fn report_processed(_: Assignment) {}
-
-	/// Bulk assignment has no need to push the assignment back on a session change,
-	/// this is a no-op in the case of a bulk assignment slot.
-	fn push_back_assignment(_: Assignment) {}
-
-	#[cfg(any(feature = "runtime-benchmarks", test))]
-	fn get_mock_assignment(_: CoreIndex, para_id: polkadot_primitives::Id) -> Assignment {
-		Assignment::Bulk(para_id)
-	}
-
-	fn assignment_duplicated(_: &Assignment) {}
-}
diff --git a/polkadot/runtime/parachains/src/assigner_parachains/mock_helpers.rs b/polkadot/runtime/parachains/src/assigner_parachains/mock_helpers.rs
deleted file mode 100644
index d984fd9232c33a0eb12a09586ba349a3c57db493..0000000000000000000000000000000000000000
--- a/polkadot/runtime/parachains/src/assigner_parachains/mock_helpers.rs
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (C) Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Polkadot is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Helper functions for tests
-
-use crate::{
-	mock::MockGenesisConfig,
-	paras::{ParaGenesisArgs, ParaKind},
-};
-
-use polkadot_primitives::{Balance, HeadData, ValidationCode};
-use sp_runtime::Perbill;
-
-fn default_genesis_config() -> MockGenesisConfig {
-	MockGenesisConfig {
-		configuration: crate::configuration::GenesisConfig {
-			config: crate::configuration::HostConfiguration { ..Default::default() },
-		},
-		..Default::default()
-	}
-}
-
-#[derive(Debug)]
-pub struct GenesisConfigBuilder {
-	pub on_demand_cores: u32,
-	pub on_demand_base_fee: Balance,
-	pub on_demand_fee_variability: Perbill,
-	pub on_demand_max_queue_size: u32,
-	pub on_demand_target_queue_utilization: Perbill,
-	pub onboarded_on_demand_chains: Vec<polkadot_primitives::Id>,
-}
-
-impl Default for GenesisConfigBuilder {
-	fn default() -> Self {
-		Self {
-			on_demand_cores: 10,
-			on_demand_base_fee: 10_000,
-			on_demand_fee_variability: Perbill::from_percent(1),
-			on_demand_max_queue_size: 100,
-			on_demand_target_queue_utilization: Perbill::from_percent(25),
-			onboarded_on_demand_chains: vec![],
-		}
-	}
-}
-
-impl GenesisConfigBuilder {
-	pub(super) fn build(self) -> MockGenesisConfig {
-		let mut genesis = default_genesis_config();
-		let config = &mut genesis.configuration.config;
-		config.scheduler_params.num_cores = self.on_demand_cores;
-		config.scheduler_params.on_demand_base_fee = self.on_demand_base_fee;
-		config.scheduler_params.on_demand_fee_variability = self.on_demand_fee_variability;
-		config.scheduler_params.on_demand_queue_max_size = self.on_demand_max_queue_size;
-		config.scheduler_params.on_demand_target_queue_utilization =
-			self.on_demand_target_queue_utilization;
-
-		let paras = &mut genesis.paras.paras;
-		for para_id in self.onboarded_on_demand_chains {
-			paras.push((
-				para_id,
-				ParaGenesisArgs {
-					genesis_head: HeadData::from(vec![0u8]),
-					validation_code: ValidationCode::from(vec![0u8]),
-					para_kind: ParaKind::Parathread,
-				},
-			))
-		}
-
-		genesis
-	}
-}
diff --git a/polkadot/runtime/parachains/src/assigner_parachains/tests.rs b/polkadot/runtime/parachains/src/assigner_parachains/tests.rs
deleted file mode 100644
index 6e8e185bb48dfc0d70cef6b182b5224a1603d6b3..0000000000000000000000000000000000000000
--- a/polkadot/runtime/parachains/src/assigner_parachains/tests.rs
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (C) Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Polkadot is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-use super::*;
-use crate::{
-	assigner_parachains::mock_helpers::GenesisConfigBuilder,
-	initializer::SessionChangeNotification,
-	mock::{
-		new_test_ext, ParachainsAssigner, Paras, ParasShared, RuntimeOrigin, Scheduler, System,
-	},
-	paras::{ParaGenesisArgs, ParaKind},
-};
-use frame_support::{assert_ok, pallet_prelude::*};
-use polkadot_primitives::{BlockNumber, Id as ParaId, SessionIndex, ValidationCode};
-
-fn schedule_blank_para(id: ParaId, parakind: ParaKind) {
-	let validation_code: ValidationCode = vec![1, 2, 3].into();
-	assert_ok!(Paras::schedule_para_initialize(
-		id,
-		ParaGenesisArgs {
-			genesis_head: Vec::new().into(),
-			validation_code: validation_code.clone(),
-			para_kind: parakind,
-		}
-	));
-
-	assert_ok!(Paras::add_trusted_validation_code(RuntimeOrigin::root(), validation_code));
-}
-
-fn run_to_block(
-	to: BlockNumber,
-	new_session: impl Fn(BlockNumber) -> Option<SessionChangeNotification<BlockNumber>>,
-) {
-	while System::block_number() < to {
-		let b = System::block_number();
-
-		Scheduler::initializer_finalize();
-		Paras::initializer_finalize(b);
-
-		if let Some(notification) = new_session(b + 1) {
-			let mut notification_with_session_index = notification;
-			// We will make every session change trigger an action queue. Normally this may require
-			// 2 or more session changes.
-			if notification_with_session_index.session_index == SessionIndex::default() {
-				notification_with_session_index.session_index = ParasShared::scheduled_session();
-			}
-			Paras::initializer_on_new_session(&notification_with_session_index);
-			Scheduler::initializer_on_new_session(&notification_with_session_index);
-		}
-
-		System::on_finalize(b);
-
-		System::on_initialize(b + 1);
-		System::set_block_number(b + 1);
-
-		Paras::initializer_initialize(b + 1);
-		Scheduler::initializer_initialize(b + 1);
-
-		// In the real runtime this is expected to be called by the `InclusionInherent` pallet.
-		Scheduler::advance_claim_queue(&Default::default());
-	}
-}
-
-// This and the scheduler test schedule_schedules_including_just_freed together
-// ensure that next_up_on_available and next_up_on_time_out will always be
-// filled with scheduler claims for lease holding parachains. (Removes the need
-// for two other scheduler tests)
-#[test]
-fn parachains_assigner_pop_assignment_is_always_some() {
-	let core_index = CoreIndex(0);
-	let para_id = ParaId::from(10);
-	let expected_assignment = Assignment::Bulk(para_id);
-
-	new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| {
-		// Register the para_id as a lease holding parachain
-		schedule_blank_para(para_id, ParaKind::Parachain);
-
-		assert!(!Paras::is_parachain(para_id));
-		run_to_block(10, |n| if n == 10 { Some(Default::default()) } else { None });
-		assert!(Paras::is_parachain(para_id));
-
-		for _ in 0..20 {
-			assert!(
-				ParachainsAssigner::pop_assignment_for_core(core_index) ==
-					Some(expected_assignment.clone())
-			);
-		}
-
-		run_to_block(20, |n| if n == 20 { Some(Default::default()) } else { None });
-
-		for _ in 0..20 {
-			assert!(
-				ParachainsAssigner::pop_assignment_for_core(core_index) ==
-					Some(expected_assignment.clone())
-			);
-		}
-	});
-}
diff --git a/polkadot/runtime/parachains/src/lib.rs b/polkadot/runtime/parachains/src/lib.rs
index f1162e1cc2154a66db7aa02e465eab9934130769..828c0b9bcef21410d15107191c1255d4439a1bc5 100644
--- a/polkadot/runtime/parachains/src/lib.rs
+++ b/polkadot/runtime/parachains/src/lib.rs
@@ -24,7 +24,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 
 pub mod assigner_coretime;
-pub mod assigner_parachains;
 pub mod configuration;
 pub mod coretime;
 pub mod disputes;
diff --git a/polkadot/runtime/parachains/src/mock.rs b/polkadot/runtime/parachains/src/mock.rs
index c23918708b21f009d9f508c119106818f38ce4a8..9ef3922f0f8c51d49c6b38d8bd7cc9ad68032172 100644
--- a/polkadot/runtime/parachains/src/mock.rs
+++ b/polkadot/runtime/parachains/src/mock.rs
@@ -17,7 +17,7 @@
 //! Mocks for all the traits.
 
 use crate::{
-	assigner_coretime, assigner_parachains, configuration, coretime, disputes, dmp, hrmp,
+	assigner_coretime, configuration, coretime, disputes, dmp, hrmp,
 	inclusion::{self, AggregateMessageOrigin, UmpQueueId},
 	initializer, on_demand, origin, paras,
 	paras::ParaKind,
@@ -76,7 +76,6 @@ frame_support::construct_runtime!(
 		ParaInherent: paras_inherent,
 		Scheduler: scheduler,
 		MockAssigner: mock_assigner,
-		ParachainsAssigner: assigner_parachains,
 		OnDemand: on_demand,
 		CoretimeAssigner: assigner_coretime,
 		Coretime: coretime,
@@ -399,8 +398,6 @@ impl pallet_message_queue::Config for Test {
 	type IdleMaxServiceWeight = ();
 }
 
-impl assigner_parachains::Config for Test {}
-
 parameter_types! {
 	pub const OnDemandTrafficDefaultValue: FixedU128 = FixedU128::from_u32(1);
 	// Production chains should keep this numbar around twice the
diff --git a/prdoc/pr_6171.prdoc b/prdoc/pr_6171.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..36246350cf8a1699eb35fdd5b41528d185dd1c35
--- /dev/null
+++ b/prdoc/pr_6171.prdoc
@@ -0,0 +1,7 @@
+title: 'remove parachains_assigner'
+doc:
+  - audience: Runtime Dev
+    description: "Remove the code of the parachains_assigner pallet, since coretime was released on all production networks."
+crates:
+- name: polkadot-runtime-parachains
+  bump: major