diff --git a/bridges/chains/chain-polkadot-bulletin/src/lib.rs b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
index c5c18beb2cadc81ae6b7502ef0b194cdee4be535..070bc7b0ba3d3804a3982d81296b7d7d72b06a62 100644
--- a/bridges/chains/chain-polkadot-bulletin/src/lib.rs
+++ b/bridges/chains/chain-polkadot-bulletin/src/lib.rs
@@ -225,4 +225,4 @@ impl ChainWithMessages for PolkadotBulletin {
 }
 
 decl_bridge_finality_runtime_apis!(polkadot_bulletin, grandpa);
-decl_bridge_messages_runtime_apis!(polkadot_bulletin, bp_messages::HashedLaneId);
+decl_bridge_messages_runtime_apis!(polkadot_bulletin, bp_messages::LegacyLaneId);
diff --git a/bridges/relays/utils/src/initialize.rs b/bridges/relays/utils/src/initialize.rs
index 564ed1f0e5cc831e27df6dbb973583752ad4374f..deb9b9d059d51fa87ac9f1d3d0afbbd0991a2e6c 100644
--- a/bridges/relays/utils/src/initialize.rs
+++ b/bridges/relays/utils/src/initialize.rs
@@ -52,9 +52,10 @@ pub fn initialize_logger(with_timestamp: bool) {
 		format,
 	);
 
-	let env_filter = EnvFilter::from_default_env()
-		.add_directive(Level::WARN.into())
-		.add_directive("bridge=info".parse().expect("static filter string is valid"));
+	let env_filter = EnvFilter::builder()
+		.with_default_directive(Level::WARN.into())
+		.with_default_directive("bridge=info".parse().expect("static filter string is valid"))
+		.from_env_lossy();
 
 	let builder = SubscriberBuilder::default().with_env_filter(env_filter);
 
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs
index b284fa9e7af7845a3aaa220b037806777faf8a40..1e733503f43b69e86fb9cec0f77d42c98d830ac1 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs
@@ -22,14 +22,13 @@
 use crate::{
 	bridge_common_config::RelayersForPermissionlessLanesInstance, weights,
 	xcm_config::UniversalLocation, AccountId, Balance, Balances, BridgeRococoBulletinGrandpa,
-	BridgeRococoBulletinMessages, PolkadotXcm, Runtime, RuntimeEvent, RuntimeHoldReason,
-	XcmOverRococoBulletin, XcmRouter,
+	BridgeRococoBulletinMessages, Runtime, RuntimeEvent, RuntimeHoldReason, XcmOverRococoBulletin,
+	XcmRouter,
 };
 use bp_messages::{
 	source_chain::FromBridgedChainMessagesDeliveryProof,
-	target_chain::FromBridgedChainMessagesProof, HashedLaneId,
+	target_chain::FromBridgedChainMessagesProof, LegacyLaneId,
 };
-use bridge_hub_common::xcm_version::XcmVersionOfDestAndRemoteBridge;
 
 use frame_support::{
 	parameter_types,
@@ -46,6 +45,7 @@ use testnet_parachains_constants::rococo::currency::UNITS as ROC;
 use xcm::{
 	latest::prelude::*,
 	prelude::{InteriorLocation, NetworkId},
+	AlwaysV5,
 };
 use xcm_builder::{BridgeBlobDispatcher, ParentIsPreset, SiblingParachainConvertsVia};
 
@@ -120,7 +120,7 @@ impl pallet_bridge_messages::Config<WithRococoBulletinMessagesInstance> for Runt
 
 	type OutboundPayload = XcmAsPlainPayload;
 	type InboundPayload = XcmAsPlainPayload;
-	type LaneId = HashedLaneId;
+	type LaneId = LegacyLaneId;
 
 	type DeliveryPayments = ();
 	type DeliveryConfirmationPayments = ();
@@ -139,8 +139,7 @@ impl pallet_xcm_bridge_hub::Config<XcmOverPolkadotBulletinInstance> for Runtime
 	type BridgeMessagesPalletInstance = WithRococoBulletinMessagesInstance;
 
 	type MessageExportPrice = ();
-	type DestinationVersion =
-		XcmVersionOfDestAndRemoteBridge<PolkadotXcm, RococoBulletinGlobalConsensusNetworkLocation>;
+	type DestinationVersion = AlwaysV5;
 
 	type ForceOrigin = EnsureRoot<AccountId>;
 	// We don't want to allow creating bridges for this instance.
@@ -253,7 +252,7 @@ where
 	let universal_source =
 		[GlobalConsensus(ByGenesis(ROCOCO_GENESIS_HASH)), Parachain(sibling_para_id)].into();
 	let universal_destination =
-		[GlobalConsensus(RococoBulletinGlobalConsensusNetwork::get()), Parachain(2075)].into();
+		[GlobalConsensus(RococoBulletinGlobalConsensusNetwork::get())].into();
 	let bridge_id = BridgeId::new(&universal_source, &universal_destination);
 
 	// insert only bridge metadata, because the benchmarks create lanes
@@ -279,29 +278,3 @@ where
 
 	universal_source
 }
-
-/// Contains the migration for the PeopleRococo<>RococoBulletin bridge.
-pub mod migration {
-	use super::*;
-	use frame_support::traits::ConstBool;
-
-	parameter_types! {
-		pub BulletinRococoLocation: InteriorLocation = [GlobalConsensus(RococoBulletinGlobalConsensusNetwork::get())].into();
-		pub RococoPeopleToRococoBulletinMessagesLane: HashedLaneId = pallet_xcm_bridge_hub::Pallet::< Runtime, XcmOverPolkadotBulletinInstance >::bridge_locations(
-				PeopleRococoLocation::get(),
-				BulletinRococoLocation::get()
-			)
-			.unwrap()
-			.calculate_lane_id(xcm::latest::VERSION).expect("Valid locations");
-	}
-
-	/// Ensure that the existing lanes for the People<>Bulletin bridge are correctly configured.
-	pub type StaticToDynamicLanes = pallet_xcm_bridge_hub::migration::OpenBridgeForLane<
-		Runtime,
-		XcmOverPolkadotBulletinInstance,
-		RococoPeopleToRococoBulletinMessagesLane,
-		ConstBool<true>,
-		PeopleRococoLocation,
-		BulletinRococoLocation,
-	>;
-}
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs
index 98e2450ee8327467701488a74e0d99c0cb8db2dd..55fd499c2f54acdc3941ce25343dea0e5a2b9110 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/genesis_config_presets.rs
@@ -61,10 +61,20 @@ fn bridge_hub_rococo_genesis(
 				.collect(),
 		},
 		polkadot_xcm: PolkadotXcmConfig { safe_xcm_version: Some(SAFE_XCM_VERSION) },
+		bridge_polkadot_bulletin_grandpa: BridgePolkadotBulletinGrandpaConfig {
+			owner: bridges_pallet_owner.clone(),
+		},
 		bridge_westend_grandpa: BridgeWestendGrandpaConfig { owner: bridges_pallet_owner.clone() },
 		bridge_westend_messages: BridgeWestendMessagesConfig {
 			owner: bridges_pallet_owner.clone(),
 		},
+		xcm_over_polkadot_bulletin: XcmOverPolkadotBulletinConfig {
+			opened_bridges: vec![(
+				Location::new(1, [Parachain(1004)]),
+				Junctions::from([GlobalConsensus(NetworkId::PolkadotBulletin).into()]),
+				Some(bp_messages::LegacyLaneId([0, 0, 0, 0])),
+			)],
+		},
 		xcm_over_bridge_hub_westend: XcmOverBridgeHubWestendConfig { opened_bridges },
 		ethereum_system: EthereumSystemConfig { para_id: id, asset_hub_para_id },
 	})
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs
index 598afeddb984ce83bc7779688e263067e4e92047..d87ff9b43fefa8ec8cff42160a638445d62f6b1c 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs
@@ -169,7 +169,6 @@ pub type Migrations = (
 		bridge_to_westend_config::WithBridgeHubWestendMessagesInstance,
 	>,
 	bridge_to_westend_config::migration::StaticToDynamicLanes,
-	bridge_to_bulletin_config::migration::StaticToDynamicLanes,
 	frame_support::migrations::RemoveStorage<
 		BridgeWestendMessagesPalletName,
 		OutboundLanesCongestedSignalsKey,
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs
index 29f9615bff6a8bcef1432be9823e5ef8ca3cc319..44e69c31a560b997450f8df1c8f5726024f8f22a 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs
@@ -501,10 +501,10 @@ mod bridge_hub_westend_tests {
 
 mod bridge_hub_bulletin_tests {
 	use super::*;
-	use bp_messages::{HashedLaneId, LaneIdType};
+	use bp_messages::LegacyLaneId;
 	use bridge_common_config::BridgeGrandpaRococoBulletinInstance;
 	use bridge_hub_rococo_runtime::{
-		bridge_common_config::RelayersForPermissionlessLanesInstance,
+		bridge_common_config::RelayersForLegacyLaneIdsMessagesInstance,
 		xcm_config::LocationToAccountId,
 	};
 	use bridge_hub_test_utils::test_cases::from_grandpa_chain;
@@ -528,7 +528,7 @@ mod bridge_hub_bulletin_tests {
 		AllPalletsWithoutSystem,
 		BridgeGrandpaRococoBulletinInstance,
 		WithRococoBulletinMessagesInstance,
-		RelayersForPermissionlessLanesInstance,
+		RelayersForLegacyLaneIdsMessagesInstance,
 	>;
 
 	#[test]
@@ -599,7 +599,7 @@ mod bridge_hub_bulletin_tests {
 						bridge_hub_test_utils::open_bridge_with_storage::<
 							Runtime,
 							XcmOverPolkadotBulletinInstance
-						>(locations, HashedLaneId::try_new(1, 2).unwrap())
+						>(locations, LegacyLaneId([0, 0, 0, 0]))
 					}
 				).1
 			},
@@ -663,7 +663,7 @@ mod bridge_hub_bulletin_tests {
 						bridge_hub_test_utils::open_bridge_with_storage::<
 							Runtime,
 							XcmOverPolkadotBulletinInstance,
-						>(locations, HashedLaneId::try_new(1, 2).unwrap())
+						>(locations, LegacyLaneId([0, 0, 0, 0]))
 					},
 				)
 				.1
@@ -697,7 +697,7 @@ mod bridge_hub_bulletin_tests {
 						bridge_hub_test_utils::open_bridge_with_storage::<
 							Runtime,
 							XcmOverPolkadotBulletinInstance,
-						>(locations, HashedLaneId::try_new(1, 2).unwrap())
+						>(locations, LegacyLaneId([0, 0, 0, 0]))
 					},
 				)
 				.1