starting with version 6.15 of btrieve, a new type of database transaction was introduced called a "system transaction", which was separated from "user transactions". user transactions are exclusive and concurrent transactions while system transactions are a bundle of non-transactional operations and/or user transactions. system transactions were exclusively used for data-recovery by the mkde. if a system failure causes data corruption then when the mkde is restarted it detects all the files that had a failed system transaction and tried to recover them. however, as user transactions might have been lost when the last system transaction was rolled back an option could be set that caused the mkde to force system transactions that had user transactions to complete when the engine received an "end operation" request.