diff --git a/polkadot/node/primitives/src/lib.rs b/polkadot/node/primitives/src/lib.rs
index 5fb3f49308fb1056c16fef1a638003cc9fd4efaa..6c4e63861c1a0d826315474fd2267e6bec12ca51 100644
--- a/polkadot/node/primitives/src/lib.rs
+++ b/polkadot/node/primitives/src/lib.rs
@@ -85,6 +85,12 @@ impl Statement {
 	}
 }
 
+impl From<&'_ Statement> for CompactStatement {
+	fn from(stmt: &Statement) -> Self {
+		stmt.to_compact()
+	}
+}
+
 impl EncodeAs<CompactStatement> for Statement {
 	fn encode_as(&self) -> Vec<u8> {
 		self.to_compact().encode()
diff --git a/polkadot/primitives/src/v0.rs b/polkadot/primitives/src/v0.rs
index 7ce060c528a8fe7953b3d5c74398c26fb8db64fe..348b5ad4b1d474b9ab0f0c6f6a746c869a0a28b0 100644
--- a/polkadot/primitives/src/v0.rs
+++ b/polkadot/primitives/src/v0.rs
@@ -921,6 +921,16 @@ impl<Payload: EncodeAs<RealPayload>, RealPayload: Encode> Signed<Payload, RealPa
 	pub fn into_payload(self) -> Payload {
 		self.payload
 	}
+
+	/// Convert `Payload` into `RealPayload`.
+	pub fn convert_payload(&self) -> Signed<RealPayload> where for<'a> &'a Payload: Into<RealPayload> {
+		Signed {
+			signature: self.signature.clone(),
+			validator_index: self.validator_index,
+			payload: self.payload().into(),
+			real_payload: sp_std::marker::PhantomData,
+		}
+	}
 }
 
 /// Custom validity errors used in Polkadot while validating transactions.