how to get the original entity on hook_entity_presave?
Use $entity-&gt;original to get the original entity:

function hook_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {

  if ($entity-&gt;getEntityTypeId() !== 'content_moderation_state' ) {
    return;
  }    

  $moderation_state = $entity-&gt;get('moderation_state')-&gt;getString();

  //code to get the original entity moderation state
  $moderation_state_original = $entity-&gt;original-&gt;get('moderation_state')-&gt;getString();