Like renewals, termination is managed through either an automated or manual process. For increased automation, a workflow, process builder, or batch job can be utilized to set the status of the contract to terminate when the expiration date = {TODAY}
Auto termination can be risky because unless a user intervenes, the agreement expires itself and could go unnoticed. A best practice is to build in any sort of manual check or possibly a monthly report so that contract managers do not ignore a contract that should be renewed.