diff --git a/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs b/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs
index df4da8a846269f721c2701e39cb2973694787514..548c64bcef03317a6e1205cccd78e6b0a89850de 100644
--- a/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs
+++ b/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs
@@ -146,8 +146,8 @@ fn add_block_entry_works() {
 	let block_hash_a = Hash::repeat_byte(2);
 	let block_hash_b = Hash::repeat_byte(69);
 
-	let candidate_receipt_a = make_candidate(1.into(), parent_hash);
-	let candidate_receipt_b = make_candidate(2.into(), parent_hash);
+	let candidate_receipt_a = make_candidate(ParaId::from(1_u32), parent_hash);
+	let candidate_receipt_b = make_candidate(ParaId::from(2_u32), parent_hash);
 
 	let candidate_hash_a = candidate_receipt_a.hash();
 	let candidate_hash_b = candidate_receipt_b.hash();
@@ -284,11 +284,11 @@ fn canonicalize_works() {
 	let block_hash_d1 = Hash::repeat_byte(6);
 	let block_hash_d2 = Hash::repeat_byte(7);
 
-	let candidate_receipt_genesis = make_candidate(1.into(), genesis);
-	let candidate_receipt_a = make_candidate(2.into(), block_hash_a);
-	let candidate_receipt_b = make_candidate(3.into(), block_hash_a);
-	let candidate_receipt_b1 = make_candidate(4.into(), block_hash_b1);
-	let candidate_receipt_c1 = make_candidate(5.into(), block_hash_c1);
+	let candidate_receipt_genesis = make_candidate(ParaId::from(1_u32), genesis);
+	let candidate_receipt_a = make_candidate(ParaId::from(2_u32), block_hash_a);
+	let candidate_receipt_b = make_candidate(ParaId::from(3_u32), block_hash_a);
+	let candidate_receipt_b1 = make_candidate(ParaId::from(4_u32), block_hash_b1);
+	let candidate_receipt_c1 = make_candidate(ParaId::from(5_u32), block_hash_c1);
 
 	let cand_hash_1 = candidate_receipt_genesis.hash();
 	let cand_hash_2 = candidate_receipt_a.hash();
@@ -467,7 +467,7 @@ fn force_approve_works() {
 		candidate_info.insert(
 			candidate_hash,
 			NewCandidateInfo::new(
-				make_candidate(1.into(), Default::default()),
+				make_candidate(ParaId::from(1_u32), Default::default()),
 				GroupIndex(1),
 				None,
 			),
diff --git a/polkadot/node/core/approval-voting/src/import.rs b/polkadot/node/core/approval-voting/src/import.rs
index 6999eb2bf1e9efca2eda12c1d398f2c83ff96d8a..05df3997bfc2dbf5387ccaa7c2f8742cb7735ff6 100644
--- a/polkadot/node/core/approval-voting/src/import.rs
+++ b/polkadot/node/core/approval-voting/src/import.rs
@@ -612,7 +612,7 @@ pub(crate) mod tests {
 	use polkadot_node_subsystem::messages::AllMessages;
 	use polkadot_node_subsystem_test_helpers::make_subsystem_context;
 	use polkadot_node_subsystem_util::database::Database;
-	use polkadot_primitives::v2::{SessionInfo, ValidatorIndex};
+	use polkadot_primitives::v2::{Id as ParaId, SessionInfo, ValidatorIndex};
 	pub(crate) use sp_consensus_babe::{
 		digests::{CompatibleDigestItem, PreDigest, SecondaryVRFPreDigest},
 		AllowedSlots, BabeEpochConfiguration, Epoch as BabeEpoch,
@@ -1206,8 +1206,8 @@ pub(crate) mod tests {
 			r
 		};
 		let candidates = vec![
-			(make_candidate(1.into()), CoreIndex(0), GroupIndex(0)),
-			(make_candidate(2.into()), CoreIndex(1), GroupIndex(1)),
+			(make_candidate(ParaId::from(1)), CoreIndex(0), GroupIndex(0)),
+			(make_candidate(ParaId::from(2)), CoreIndex(1), GroupIndex(1)),
 		];
 		let inclusion_events = candidates
 			.iter()
diff --git a/polkadot/node/core/approval-voting/src/tests.rs b/polkadot/node/core/approval-voting/src/tests.rs
index 0a870390c293b1093c3c38d26e2993fc1c19597c..cc488646540be29c3fbe953a89b396f473d46db8 100644
--- a/polkadot/node/core/approval-voting/src/tests.rs
+++ b/polkadot/node/core/approval-voting/src/tests.rs
@@ -773,7 +773,7 @@ async fn import_block(
 ) {
 	let (new_head, new_header) = &hashes[hashes.len() - 1];
 	let candidates = config.candidates.clone().unwrap_or(vec![(
-		make_candidate(0.into(), &new_head),
+		make_candidate(ParaId::from(0_u32), &new_head),
 		CoreIndex(0),
 		GroupIndex(0),
 	)]);
@@ -1127,7 +1127,7 @@ fn subsystem_rejects_approval_if_no_candidate_entry() {
 		let candidate_index = 0;
 		let validator = ValidatorIndex(0);
 
-		let candidate_descriptor = make_candidate(1.into(), &block_hash);
+		let candidate_descriptor = make_candidate(ParaId::from(1_u32), &block_hash);
 		let candidate_hash = candidate_descriptor.hash();
 
 		let head: Hash = ChainBuilder::GENESIS_HASH;
@@ -1233,7 +1233,7 @@ fn subsystem_rejects_approval_before_assignment() {
 		let candidate_hash = {
 			let mut candidate_receipt =
 				dummy_candidate_receipt_bad_sig(block_hash, Some(Default::default()));
-			candidate_receipt.descriptor.para_id = 0.into();
+			candidate_receipt.descriptor.para_id = ParaId::from(0_u32);
 			candidate_receipt.descriptor.relay_parent = block_hash;
 			candidate_receipt.hash()
 		};
@@ -1448,7 +1448,7 @@ fn subsystem_accepts_and_imports_approval_after_assignment() {
 		let candidate_hash = {
 			let mut candidate_receipt =
 				dummy_candidate_receipt_bad_sig(block_hash, Some(Default::default()));
-			candidate_receipt.descriptor.para_id = 0.into();
+			candidate_receipt.descriptor.para_id = ParaId::from(0_u32);
 			candidate_receipt.descriptor.relay_parent = block_hash;
 			candidate_receipt.hash()
 		};
@@ -1519,7 +1519,7 @@ fn subsystem_second_approval_import_only_schedules_wakeups() {
 		let candidate_hash = {
 			let mut candidate_receipt =
 				dummy_candidate_receipt_bad_sig(block_hash, Some(Default::default()));
-			candidate_receipt.descriptor.para_id = 0.into();
+			candidate_receipt.descriptor.para_id = ParaId::from(0_u32);
 			candidate_receipt.descriptor.relay_parent = block_hash;
 			candidate_receipt.hash()
 		};
@@ -1883,7 +1883,7 @@ fn import_checked_approval_updates_entries_and_schedules() {
 			..session_info(&validators)
 		};
 
-		let candidate_descriptor = make_candidate(1.into(), &block_hash);
+		let candidate_descriptor = make_candidate(ParaId::from(1_u32), &block_hash);
 		let candidate_hash = candidate_descriptor.hash();
 
 		let head: Hash = ChainBuilder::GENESIS_HASH;
@@ -2009,12 +2009,12 @@ fn subsystem_import_checked_approval_sets_one_block_bit_at_a_time() {
 
 		let candidate_receipt1 = {
 			let mut receipt = dummy_candidate_receipt(block_hash);
-			receipt.descriptor.para_id = 1.into();
+			receipt.descriptor.para_id = ParaId::from(1_u32);
 			receipt
 		};
 		let candidate_receipt2 = {
 			let mut receipt = dummy_candidate_receipt(block_hash);
-			receipt.descriptor.para_id = 2.into();
+			receipt.descriptor.para_id = ParaId::from(2_u32);
 			receipt
 		};
 		let candidate_hash1 = candidate_receipt1.hash();
@@ -2867,7 +2867,7 @@ fn pre_covers_dont_stall_approval() {
 			..session_info(&validators)
 		};
 
-		let candidate_descriptor = make_candidate(1.into(), &block_hash);
+		let candidate_descriptor = make_candidate(ParaId::from(1_u32), &block_hash);
 		let candidate_hash = candidate_descriptor.hash();
 
 		let head: Hash = ChainBuilder::GENESIS_HASH;
@@ -3046,7 +3046,7 @@ fn waits_until_approving_assignments_are_old_enough() {
 			..session_info(&validators)
 		};
 
-		let candidate_descriptor = make_candidate(1.into(), &block_hash);
+		let candidate_descriptor = make_candidate(ParaId::from(1_u32), &block_hash);
 		let candidate_hash = candidate_descriptor.hash();
 
 		let head: Hash = ChainBuilder::GENESIS_HASH;
diff --git a/polkadot/node/core/candidate-validation/src/tests.rs b/polkadot/node/core/candidate-validation/src/tests.rs
index b896a9f7f3d1b4c97cd9e9005cdc5c46c05879f5..ecac13d1440db3eaafbbc6bed7f5712b1d9bebaf 100644
--- a/polkadot/node/core/candidate-validation/src/tests.rs
+++ b/polkadot/node/core/candidate-validation/src/tests.rs
@@ -22,7 +22,7 @@ use polkadot_node_core_pvf::PrepareError;
 use polkadot_node_subsystem::messages::AllMessages;
 use polkadot_node_subsystem_test_helpers as test_helpers;
 use polkadot_node_subsystem_util::reexports::SubsystemContext;
-use polkadot_primitives::v2::{HeadData, UpwardMessage};
+use polkadot_primitives::v2::{HeadData, Id as ParaId, UpwardMessage};
 use sp_core::testing::TaskExecutor;
 use sp_keyring::Sr25519Keyring;
 
@@ -33,7 +33,7 @@ fn correctly_checks_included_assumption() {
 
 	let persisted_validation_data_hash = validation_data.hash();
 	let relay_parent = [2; 32].into();
-	let para_id = 5.into();
+	let para_id = ParaId::from(5_u32);
 
 	let descriptor = make_valid_candidate_descriptor(
 		para_id,
@@ -105,7 +105,7 @@ fn correctly_checks_timed_out_assumption() {
 
 	let persisted_validation_data_hash = validation_data.hash();
 	let relay_parent = [2; 32].into();
-	let para_id = 5.into();
+	let para_id = ParaId::from(5_u32);
 
 	let descriptor = make_valid_candidate_descriptor(
 		para_id,
@@ -175,7 +175,7 @@ fn check_is_bad_request_if_no_validation_data() {
 	let validation_data: PersistedValidationData = Default::default();
 	let persisted_validation_data_hash = validation_data.hash();
 	let relay_parent = [2; 32].into();
-	let para_id = 5.into();
+	let para_id = ParaId::from(5_u32);
 
 	let descriptor = make_valid_candidate_descriptor(
 		para_id,
@@ -229,7 +229,7 @@ fn check_is_bad_request_if_no_validation_code() {
 	let validation_data: PersistedValidationData = Default::default();
 	let persisted_validation_data_hash = validation_data.hash();
 	let relay_parent = [2; 32].into();
-	let para_id = 5.into();
+	let para_id = ParaId::from(5_u32);
 
 	let descriptor = make_valid_candidate_descriptor(
 		para_id,
@@ -294,8 +294,8 @@ fn check_is_bad_request_if_no_validation_code() {
 #[test]
 fn check_does_not_match() {
 	let validation_data: PersistedValidationData = Default::default();
-	let relay_parent = [2; 32].into();
-	let para_id = 5.into();
+	let relay_parent = Hash::repeat_byte(0x02);
+	let para_id = ParaId::from(5_u32);
 
 	let descriptor = make_valid_candidate_descriptor(
 		para_id,
@@ -379,7 +379,7 @@ fn candidate_validation_ok_is_ok() {
 	let validation_code = ValidationCode(vec![2; 16]);
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
@@ -446,7 +446,7 @@ fn candidate_validation_bad_return_is_invalid() {
 	let validation_code = ValidationCode(vec![2; 16]);
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
@@ -490,7 +490,7 @@ fn candidate_validation_timeout_is_internal_error() {
 	let validation_code = ValidationCode(vec![2; 16]);
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
@@ -534,7 +534,7 @@ fn candidate_validation_commitment_hash_mismatch_is_invalid() {
 
 	let candidate_receipt = CandidateReceipt {
 		descriptor: make_valid_candidate_descriptor(
-			1.into(),
+			ParaId::from(1_u32),
 			validation_data.parent_head.hash(),
 			validation_data.hash(),
 			pov.hash(),
@@ -579,7 +579,7 @@ fn candidate_validation_code_mismatch_is_invalid() {
 	let validation_code = ValidationCode(vec![2; 16]);
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
@@ -627,7 +627,7 @@ fn compressed_code_works() {
 		.unwrap();
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
@@ -683,7 +683,7 @@ fn code_decompression_failure_is_invalid() {
 			.unwrap();
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
@@ -731,7 +731,7 @@ fn pov_decompression_failure_is_invalid() {
 	let validation_code = ValidationCode(vec![2; 16]);
 
 	let descriptor = make_valid_candidate_descriptor(
-		1.into(),
+		ParaId::from(1_u32),
 		dummy_hash(),
 		validation_data.hash(),
 		pov.hash(),
diff --git a/polkadot/node/core/dispute-coordinator/src/db/v1.rs b/polkadot/node/core/dispute-coordinator/src/db/v1.rs
index 9c7f4d9ac804992a5add5c2287c87cccb42bdd04..4810123d4f17ba33c8495d9550fa52676d1b1168 100644
--- a/polkadot/node/core/dispute-coordinator/src/db/v1.rs
+++ b/polkadot/node/core/dispute-coordinator/src/db/v1.rs
@@ -308,7 +308,7 @@ mod tests {
 			CandidateVotes {
 				candidate_receipt: {
 					let mut receipt = dummy_candidate_receipt(dummy_hash());
-					receipt.descriptor.para_id = 5.into();
+					receipt.descriptor.para_id = ParaId::from(5_u32);
 
 					receipt
 				},
@@ -401,7 +401,7 @@ mod tests {
 			CandidateVotes {
 				candidate_receipt: {
 					let mut receipt = dummy_candidate_receipt(dummy_hash());
-					receipt.descriptor.para_id = 5.into();
+					receipt.descriptor.para_id = ParaId::from(5_u32);
 
 					receipt
 				},
diff --git a/polkadot/node/core/dispute-coordinator/src/scraping/tests.rs b/polkadot/node/core/dispute-coordinator/src/scraping/tests.rs
index 94e5652adda52cd83c2b6706f08330390a7aab30..ba7767260376646b913eb85e70fafc24a62ca7cc 100644
--- a/polkadot/node/core/dispute-coordinator/src/scraping/tests.rs
+++ b/polkadot/node/core/dispute-coordinator/src/scraping/tests.rs
@@ -37,7 +37,7 @@ use polkadot_node_subsystem_test_helpers::{
 use polkadot_node_subsystem_util::{reexports::SubsystemContext, TimeoutExt};
 use polkadot_primitives::v2::{
 	BlakeTwo256, BlockNumber, CandidateDescriptor, CandidateEvent, CandidateReceipt, CoreIndex,
-	GroupIndex, Hash, HashT, HeadData,
+	GroupIndex, Hash, HashT, HeadData, Id as ParaId,
 };
 
 use crate::LOG_TARGET;
@@ -115,7 +115,7 @@ async fn process_active_leaves_update(
 fn make_candidate_receipt(relay_parent: Hash) -> CandidateReceipt {
 	let zeros = dummy_hash();
 	let descriptor = CandidateDescriptor {
-		para_id: 0.into(),
+		para_id: ParaId::from(0_u32),
 		relay_parent,
 		collator: dummy_collator(),
 		persisted_validation_data_hash: zeros,
diff --git a/polkadot/node/core/runtime-api/src/tests.rs b/polkadot/node/core/runtime-api/src/tests.rs
index 0d732ba20c35713f41a4911e32be904084e177ff..286465886d1dd8754f9b774ccea1bb675b72b066 100644
--- a/polkadot/node/core/runtime-api/src/tests.rs
+++ b/polkadot/node/core/runtime-api/src/tests.rs
@@ -343,8 +343,8 @@ fn requests_availability_cores() {
 fn requests_persisted_validation_data() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 
 	let mut runtime_api = MockRuntimeApi::default();
@@ -389,8 +389,8 @@ fn requests_persisted_validation_data() {
 fn requests_assumed_validation_data() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 
 	let validation_code = ValidationCode(vec![1, 2, 3]);
@@ -442,8 +442,8 @@ fn requests_check_validation_outputs() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 	let mut runtime_api = MockRuntimeApi::default();
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let commitments = polkadot_primitives::v2::CandidateCommitments::default();
 	let spawner = sp_core::testing::TaskExecutor::new();
 
@@ -565,8 +565,8 @@ fn requests_validation_code() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 	let validation_code = dummy_validation_code();
 
@@ -612,8 +612,8 @@ fn requests_validation_code() {
 fn requests_candidate_pending_availability() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 	let candidate_receipt = dummy_committed_candidate_receipt(relay_parent);
 
@@ -689,8 +689,8 @@ fn requests_dmq_contents() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 
 	let runtime_api = Arc::new({
@@ -737,9 +737,9 @@ fn requests_inbound_hrmp_channels_contents() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 
 	let relay_parent = [1; 32].into();
-	let para_a = 99.into();
-	let para_b = 66.into();
-	let para_c = 33.into();
+	let para_a = ParaId::from(99_u32);
+	let para_b = ParaId::from(66_u32);
+	let para_c = ParaId::from(33_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 
 	let para_b_inbound_channels = [
@@ -1004,8 +1004,8 @@ fn requests_validation_code_hash() {
 	let (ctx, mut ctx_handle) = make_subsystem_context(TaskExecutor::new());
 
 	let relay_parent = [1; 32].into();
-	let para_a = 5.into();
-	let para_b = 6.into();
+	let para_a = ParaId::from(5_u32);
+	let para_b = ParaId::from(6_u32);
 	let spawner = sp_core::testing::TaskExecutor::new();
 	let validation_code_hash = dummy_validation_code().hash();