diff --git a/chain/chain/src/test_utils.rs b/chain/chain/src/test_utils.rs
index 48810d50af7..e90149cb00a 100644
--- a/chain/chain/src/test_utils.rs
+++ b/chain/chain/src/test_utils.rs
@@ -22,8 +22,8 @@ use near_primitives::receipt::{ActionReceipt, Receipt, ReceiptEnum};
 use near_primitives::serialize::to_base;
 use near_primitives::sharding::ChunkHash;
 use near_primitives::transaction::{
-    Action, ExecutionMetadata, ExecutionOutcome, ExecutionOutcomeWithId, ExecutionStatus,
-    SignedTransaction, TransferAction,
+    Action, ExecutionOutcome, ExecutionOutcomeWithId, ExecutionStatus, SignedTransaction,
+    TransferAction,
 };
 use near_primitives::types::validator_stake::{ValidatorStake, ValidatorStakeIter};
 use near_primitives::types::{
@@ -726,7 +726,6 @@ impl RuntimeAdapter for KeyValueRuntime {
                         gas_burnt: 0,
                         tokens_burnt: 0,
                         executor_id: to.clone(),
-                        metadata: ExecutionMetadata::ExecutionMetadataV1,
                     },
                 });
             }
diff --git a/chain/chain/src/types.rs b/chain/chain/src/types.rs
index 6c9fea040f6..ea9c3fb4832 100644
--- a/chain/chain/src/types.rs
+++ b/chain/chain/src/types.rs
@@ -727,7 +727,7 @@ mod tests {
     use near_crypto::KeyType;
     use near_primitives::block::{genesis_chunks, Approval};
     use near_primitives::merkle::verify_path;
-    use near_primitives::transaction::{ExecutionMetadata, ExecutionOutcome, ExecutionStatus};
+    use near_primitives::transaction::{ExecutionOutcome, ExecutionStatus};
     use near_primitives::validator_signer::InMemoryValidatorSigner;
     use near_primitives::version::PROTOCOL_VERSION;
 
@@ -779,7 +779,6 @@ mod tests {
                 gas_burnt: 100,
                 tokens_burnt: 10000,
                 executor_id: "alice".to_string(),
-                metadata: ExecutionMetadata::ExecutionMetadataV1,
             },
         };
         let outcome2 = ExecutionOutcomeWithId {
@@ -791,7 +790,6 @@ mod tests {
                 gas_burnt: 0,
                 tokens_burnt: 0,
                 executor_id: "bob".to_string(),
-                metadata: ExecutionMetadata::ExecutionMetadataV1,
             },
         };
         let outcomes = vec![outcome1, outcome2];
diff --git a/core/primitives/src/transaction.rs b/core/primitives/src/transaction.rs
index 5d2cb10e2af..724a76aaeeb 100644
--- a/core/primitives/src/transaction.rs
+++ b/core/primitives/src/transaction.rs
@@ -285,7 +285,7 @@ impl Default for ExecutionStatus {
     }
 }
 
-/// ExecutionOutcome for proof. Excludes logs and metadata
+/// ExecutionOutcome for proof. Excludes logs.
 #[derive(BorshSerialize, BorshDeserialize, Serialize, PartialEq, Clone)]
 struct PartialExecutionOutcome {
     pub receipt_ids: Vec<CryptoHash>,
@@ -348,20 +348,6 @@ pub struct ExecutionOutcome {
     /// NOTE: Should be the latest field since it contains unparsable by light client
     /// ExecutionStatus::Failure
     pub status: ExecutionStatus,
-    /// Execution metadata, versioned
-    pub metadata: ExecutionMetadata,
-}
-
-#[derive(BorshSerialize, BorshDeserialize, Serialize, Deserialize, PartialEq, Clone, Eq, Debug)]
-pub enum ExecutionMetadata {
-    // V1: Empty Metadata
-    ExecutionMetadataV1,
-}
-
-impl Default for ExecutionMetadata {
-    fn default() -> Self {
-        ExecutionMetadata::ExecutionMetadataV1
-    }
 }
 
 impl ExecutionOutcome {
@@ -384,7 +370,6 @@ impl fmt::Debug for ExecutionOutcome {
             .field("burnt_gas", &self.gas_burnt)
             .field("tokens_burnt", &self.tokens_burnt)
             .field("status", &self.status)
-            .field("meatdata", &self.metadata)
             .finish()
     }
 }
@@ -523,7 +508,6 @@ mod tests {
             gas_burnt: 123,
             tokens_burnt: 1234000,
             executor_id: "alice".to_string(),
-            metadata: ExecutionMetadata::ExecutionMetadataV1,
         };
         let hashes = outcome.to_hashes();
         assert_eq!(hashes.len(), 3);
diff --git a/core/primitives/src/version.rs b/core/primitives/src/version.rs
index 04a0a48eb86..c7a2402155f 100644
--- a/core/primitives/src/version.rs
+++ b/core/primitives/src/version.rs
@@ -13,7 +13,7 @@ pub struct Version {
 pub type DbVersion = u32;
 
 /// Current version of the database.
-pub const DB_VERSION: DbVersion = 24;
+pub const DB_VERSION: DbVersion = 23;
 
 /// Protocol version type.
 pub use near_primitives_core::types::ProtocolVersion;
diff --git a/core/primitives/src/views.rs b/core/primitives/src/views.rs
index 06707965c7d..612809f966b 100644
--- a/core/primitives/src/views.rs
+++ b/core/primitives/src/views.rs
@@ -39,8 +39,8 @@ use crate::sharding::{ChunkHash, ShardChunk, ShardChunkHeader, ShardChunkHeaderI
 use crate::sharding::{ShardChunkHeaderInnerV2, ShardChunkHeaderV3};
 use crate::transaction::{
     Action, AddKeyAction, CreateAccountAction, DeleteAccountAction, DeleteKeyAction,
-    DeployContractAction, ExecutionMetadata, ExecutionOutcome, ExecutionOutcomeWithIdAndProof,
-    ExecutionStatus, FunctionCallAction, SignedTransaction, StakeAction, TransferAction,
+    DeployContractAction, ExecutionOutcome, ExecutionOutcomeWithIdAndProof, ExecutionStatus,
+    FunctionCallAction, SignedTransaction, StakeAction, TransferAction,
 };
 use crate::types::{
     AccountId, AccountWithPublicKey, Balance, BlockHeight, CompiledContractCache, EpochHeight,
@@ -1018,9 +1018,6 @@ pub struct ExecutionOutcomeView {
     pub executor_id: AccountId,
     /// Execution status. Contains the result in case of successful execution.
     pub status: ExecutionStatusView,
-    /// Execution metadata, versioned
-    #[serde(skip)]
-    pub metadata: ExecutionMetadata,
 }
 
 impl From<ExecutionOutcome> for ExecutionOutcomeView {
@@ -1032,7 +1029,6 @@ impl From<ExecutionOutcome> for ExecutionOutcomeView {
             tokens_burnt: outcome.tokens_burnt,
             executor_id: outcome.executor_id,
             status: outcome.status.into(),
-            metadata: outcome.metadata,
         }
     }
 }
diff --git a/core/store/src/migrations.rs b/core/store/src/migrations.rs
index e75c4c7065a..36998d9f1d7 100644
--- a/core/store/src/migrations.rs
+++ b/core/store/src/migrations.rs
@@ -9,10 +9,7 @@ use near_primitives::sharding::{
     EncodedShardChunk, EncodedShardChunkV1, PartialEncodedChunk, PartialEncodedChunkV1,
     ReceiptList, ReceiptProof, ReedSolomonWrapper, ShardChunk, ShardChunkV1, ShardProof,
 };
-use near_primitives::transaction::{
-    ExecutionMetadata, ExecutionOutcome, ExecutionOutcomeWithId, ExecutionOutcomeWithIdAndProof,
-    ExecutionStatus, LogEntry,
-};
+use near_primitives::transaction::ExecutionOutcomeWithIdAndProof;
 use near_primitives::version::DbVersion;
 
 use crate::db::DBCol::{ColBlockHeader, ColBlockMisc, ColChunks, ColPartialChunks, ColStateParts};
@@ -32,13 +29,12 @@ use near_primitives::block_header::BlockHeader;
 #[cfg(feature = "protocol_feature_block_header_v3")]
 use near_primitives::epoch_manager::epoch_info::EpochInfo;
 use near_primitives::epoch_manager::epoch_info::EpochInfoV1;
-use near_primitives::merkle::{merklize, MerklePath};
+use near_primitives::merkle::merklize;
 use near_primitives::receipt::{DelayedReceiptIndices, Receipt, ReceiptEnum};
 use near_primitives::syncing::{ShardStateSyncResponseHeader, ShardStateSyncResponseHeaderV1};
 use near_primitives::trie_key::TrieKey;
 #[cfg(feature = "protocol_feature_block_header_v3")]
 use near_primitives::types::validator_stake::ValidatorStake;
-use near_primitives::types::{AccountId, Balance, Gas};
 use near_primitives::utils::{create_receipt_id_from_transaction, get_block_shard_id};
 use near_primitives::validator_signer::InMemoryValidatorSigner;
 use std::rc::Rc;
@@ -569,7 +565,7 @@ pub fn migrate_17_to_18(path: &String) {
 
     use near_primitives::challenge::SlashedValidator;
     use near_primitives::types::validator_stake::ValidatorStakeV1;
-    use near_primitives::types::{BlockHeight, EpochId};
+    use near_primitives::types::{Balance, BlockHeight, EpochId};
     use near_primitives::version::ProtocolVersion;
 
     // Migrate from OldBlockInfo to NewBlockInfo - add hash
@@ -649,7 +645,7 @@ pub fn migrate_21_to_22(path: &String) {
     use near_primitives::epoch_manager::BlockInfoV1;
     use near_primitives::epoch_manager::SlashState;
     use near_primitives::types::validator_stake::ValidatorStakeV1;
-    use near_primitives::types::{BlockHeight, EpochId};
+    use near_primitives::types::{AccountId, Balance, BlockHeight, EpochId};
     use near_primitives::version::ProtocolVersion;
     #[derive(BorshDeserialize)]
     struct OldBlockInfo {
@@ -718,7 +714,7 @@ pub fn migrate_18_to_new_validator_stake(store: &Store) {
     use near_primitives::types::chunk_extra::{ChunkExtra, ChunkExtraV1};
     use near_primitives::types::validator_stake::ValidatorStakeV1;
     use near_primitives::types::{
-        BlockChunkValidatorStats, EpochId, ProtocolVersion, ShardId, ValidatorId,
+        AccountId, BlockChunkValidatorStats, EpochId, ProtocolVersion, ShardId, ValidatorId,
         ValidatorKickoutReason, ValidatorStats,
     };
     use std::collections::BTreeMap;
@@ -794,61 +790,3 @@ pub fn migrate_18_to_new_validator_stake(store: &Store) {
     }
     store_update.finish().unwrap();
 }
-
-pub fn fill_col_outcomes_with_metadata(store: &Store) {
-    #[derive(BorshSerialize, BorshDeserialize, PartialEq, Clone, Default, Eq, Debug)]
-    pub struct OldExecutionOutcome {
-        pub logs: Vec<LogEntry>,
-        pub receipt_ids: Vec<CryptoHash>,
-        pub gas_burnt: Gas,
-        pub tokens_burnt: Balance,
-        pub executor_id: AccountId,
-        pub status: ExecutionStatus,
-    }
-
-    #[derive(PartialEq, Clone, Default, Debug, BorshSerialize, BorshDeserialize, Eq)]
-    pub struct OldExecutionOutcomeWithId {
-        pub id: CryptoHash,
-        pub outcome: OldExecutionOutcome,
-    }
-
-    #[derive(PartialEq, Clone, Default, Debug, BorshSerialize, BorshDeserialize, Eq)]
-    pub struct OldExecutionOutcomeWithIdAndProof {
-        pub proof: MerklePath,
-        pub block_hash: CryptoHash,
-        pub outcome_with_id: OldExecutionOutcomeWithId,
-    }
-
-    impl Into<ExecutionOutcomeWithIdAndProof> for OldExecutionOutcomeWithIdAndProof {
-        fn into(self) -> ExecutionOutcomeWithIdAndProof {
-            ExecutionOutcomeWithIdAndProof {
-                proof: self.proof,
-                block_hash: self.block_hash,
-                outcome_with_id: ExecutionOutcomeWithId {
-                    id: self.outcome_with_id.id,
-                    outcome: ExecutionOutcome {
-                        logs: self.outcome_with_id.outcome.logs,
-                        receipt_ids: self.outcome_with_id.outcome.receipt_ids,
-                        gas_burnt: self.outcome_with_id.outcome.gas_burnt,
-                        tokens_burnt: self.outcome_with_id.outcome.tokens_burnt,
-                        executor_id: self.outcome_with_id.outcome.executor_id,
-                        status: self.outcome_with_id.outcome.status,
-                        metadata: ExecutionMetadata::ExecutionMetadataV1,
-                    },
-                },
-            }
-        }
-    }
-
-    let mut store_update = BatchedStoreUpdate::new(&store, 10_000_000);
-    for (key, value) in store.iter(DBCol::ColTransactionResult) {
-        let old_outcomes = Vec::<OldExecutionOutcomeWithIdAndProof>::try_from_slice(&value)
-            .expect("BorshDeserialize should not fail");
-        let outcomes: Vec<ExecutionOutcomeWithIdAndProof> =
-            old_outcomes.into_iter().map(|outcome| outcome.into()).collect();
-        store_update
-            .set_ser(DBCol::ColTransactionResult, key.as_ref(), &outcomes)
-            .expect("BorshSerialize should not fail");
-    }
-    store_update.finish().expect("Failed to migrate");
-}
diff --git a/nearcore/src/lib.rs b/nearcore/src/lib.rs
index 572d86d2c1f..3bacd43d1d2 100644
--- a/nearcore/src/lib.rs
+++ b/nearcore/src/lib.rs
@@ -22,10 +22,9 @@ pub use crate::config::{init_configs, load_config, load_test_config, NearConfig,
 use crate::migrations::{migrate_12_to_13, migrate_18_to_19, migrate_19_to_20, migrate_22_to_23};
 pub use crate::runtime::NightshadeRuntime;
 use near_store::migrations::{
-    fill_col_outcomes_by_hash, fill_col_outcomes_with_metadata, fill_col_transaction_refcount,
-    get_store_version, migrate_10_to_11, migrate_11_to_12, migrate_13_to_14, migrate_14_to_15,
-    migrate_17_to_18, migrate_21_to_22, migrate_6_to_7, migrate_7_to_8, migrate_8_to_9,
-    migrate_9_to_10, set_store_version,
+    fill_col_outcomes_by_hash, fill_col_transaction_refcount, get_store_version, migrate_10_to_11,
+    migrate_11_to_12, migrate_13_to_14, migrate_14_to_15, migrate_17_to_18, migrate_21_to_22,
+    migrate_6_to_7, migrate_7_to_8, migrate_8_to_9, migrate_9_to_10, set_store_version,
 };
 
 #[cfg(feature = "protocol_feature_block_header_v3")]
@@ -216,12 +215,6 @@ pub fn apply_store_migrations(path: &String, near_config: &NearConfig) {
         info!(target: "near", "Migrate DB from version 22 to 23");
         migrate_22_to_23(&path, &near_config);
     }
-    if db_version <= 23 {
-        info!(target: "near", "Migrate DB from version 23 to 24");
-        let store = create_store(&path);
-        fill_col_outcomes_with_metadata(&store);
-        set_store_version(&store, 24);
-    }
     #[cfg(feature = "nightly_protocol")]
     {
         let store = create_store(&path);
diff --git a/runtime/runtime/src/lib.rs b/runtime/runtime/src/lib.rs
index 7005fd436e9..59592bde589 100644
--- a/runtime/runtime/src/lib.rs
+++ b/runtime/runtime/src/lib.rs
@@ -56,7 +56,6 @@ use near_primitives::contract::ContractCode;
 pub use near_primitives::runtime::apply_state::ApplyState;
 use near_primitives::runtime::fees::RuntimeFeesConfig;
 use near_primitives::runtime::migration_data::{MigrationData, MigrationFlags};
-use near_primitives::transaction::ExecutionMetadata;
 use near_primitives::version::{
     is_implicit_account_creation_enabled, ProtocolFeature, ProtocolVersion,
 };
@@ -264,7 +263,6 @@ impl Runtime {
                         gas_burnt: verification_result.gas_burnt,
                         tokens_burnt: verification_result.burnt_amount,
                         executor_id: transaction.signer_id.clone(),
-                        metadata: ExecutionMetadata::ExecutionMetadataV1,
                     },
                 };
                 Ok((receipt, outcome))
@@ -733,7 +731,6 @@ impl Runtime {
                 gas_burnt: result.gas_burnt,
                 tokens_burnt,
                 executor_id: account_id.clone(),
-                metadata: ExecutionMetadata::ExecutionMetadataV1,
             },
         })
     }