diff --git a/bridges/modules/grandpa/src/lib.rs b/bridges/modules/grandpa/src/lib.rs
index 279e23404a059f74141423a492393b074865190a..4e57a45292d3a4c4679d41998ea523f4b8a10906 100644
--- a/bridges/modules/grandpa/src/lib.rs
+++ b/bridges/modules/grandpa/src/lib.rs
@@ -239,7 +239,7 @@ pub mod pallet {
 			operational: bool,
 		) -> DispatchResultWithPostInfo {
 			ensure_owner_or_root::<T, I>(origin)?;
-			<IsHalted<T, I>>::put(operational);
+			<IsHalted<T, I>>::put(!operational);
 
 			if operational {
 				log::info!(target: "runtime::bridge-grandpa", "Resuming pallet operations.");
@@ -804,9 +804,13 @@ mod tests {
 	#[test]
 	fn pallet_rejects_transactions_if_halted() {
 		run_test(|| {
-			<IsHalted<TestRuntime>>::put(true);
+			initialize_substrate_bridge();
+
+			assert_ok!(Pallet::<TestRuntime>::set_operational(Origin::root(), false));
+			assert_noop!(submit_finality_proof(1), Error::<TestRuntime>::Halted);
 
-			assert_noop!(submit_finality_proof(1), Error::<TestRuntime>::Halted,);
+			assert_ok!(Pallet::<TestRuntime>::set_operational(Origin::root(), true));
+			assert_ok!(submit_finality_proof(1));
 		})
 	}