diff --git a/polkadot/runtime/parachains/src/coretime/migration.rs b/polkadot/runtime/parachains/src/coretime/migration.rs
index 64c10f731988902987b47768d69696e8b96fc72a..c720cf0617aaec1705b3f8e19ded7e853660aa65 100644
--- a/polkadot/runtime/parachains/src/coretime/migration.rs
+++ b/polkadot/runtime/parachains/src/coretime/migration.rs
@@ -142,8 +142,8 @@ mod v_coretime {
 			let new_core_count = assigner_coretime::Pallet::<T>::session_core_count();
 			ensure!(new_core_count == prev_core_count, "Total number of cores need to not change.");
 			ensure!(
-				dmp_queue_size == prev_dmp_queue_size + 1,
-				"There should have been enqueued one DMP message."
+				dmp_queue_size > prev_dmp_queue_size,
+				"There should have been enqueued at least one DMP messages."
 			);
 
 			Ok(())
@@ -264,22 +264,30 @@ mod v_coretime {
 		let message_content = iter::once(Instruction::UnpaidExecution {
 			weight_limit: WeightLimit::Unlimited,
 			check_origin: None,
-		})
-		.chain(reservations)
-		.chain(pool)
-		.chain(leases)
-		.chain(set_core_count)
-		.collect();
-
-		let message = Xcm(message_content);
-
-		send_xcm::<SendXcm>(
-			MultiLocation {
-				parents: 0,
-				interior: Junctions::X1(Junction::Parachain(T::BrokerId::get())),
-			},
-			message,
-		)?;
+		});
+
+		let reservation_content = message_content.clone().chain(reservations).collect();
+		let pool_content = message_content.clone().chain(pool).collect();
+		let leases_content = message_content.clone().chain(leases).collect();
+		let set_core_count_content = message_content.clone().chain(set_core_count).collect();
+
+		let messages = vec![
+			Xcm(reservation_content),
+			Xcm(pool_content),
+			Xcm(leases_content),
+			Xcm(set_core_count_content),
+		];
+
+		for message in messages {
+			send_xcm::<SendXcm>(
+				MultiLocation {
+					parents: 0,
+					interior: Junctions::X1(Junction::Parachain(T::BrokerId::get())),
+				},
+				message,
+			)?;
+		}
+
 		Ok(())
 	}
 }
diff --git a/polkadot/runtime/parachains/src/coretime/mod.rs b/polkadot/runtime/parachains/src/coretime/mod.rs
index 60bd8f811931cacf39d20b573def9c1ff09ef765..aa074a293c9c87a7565a1f3a7a0e15b3b74eaa01 100644
--- a/polkadot/runtime/parachains/src/coretime/mod.rs
+++ b/polkadot/runtime/parachains/src/coretime/mod.rs
@@ -252,7 +252,7 @@ fn mk_coretime_call(call: crate::coretime::CoretimeCalls) -> Instruction<()> {
 		origin_kind: OriginKind::Superuser,
 		// Largest call is set_lease with 1526 byte:
 		// Longest call is reserve() with 31_000_000
-		require_weight_at_most: Weight::from_parts(110_000_000, 20_000),
+		require_weight_at_most: Weight::from_parts(170_000_000, 20_000),
 		call: BrokerRuntimePallets::Broker(call).encode().into(),
 	}
 }