orderResource = $orderResource; $this->orderFactory = $orderFactory; $this->registry = $registry; } /** * @param \Magento\Framework\Event\Observer $observer * * @return $this */ public function execute(\Magento\Framework\Event\Observer $observer) { $order = $observer->getEvent()->getOrder(); //order is new if (!$order->getId()) { $orderStatus = $order->getStatus(); } else { // the reloaded status $reloaded = $this->orderFactory->create(); $this->orderResource->load($reloaded, $order->getId()); $orderStatus = $reloaded->getStatus(); } //register the order status before change if (!$this->registry->registry('sales_order_status_before')) { $this->registry->register( 'sales_order_status_before', $orderStatus ); } return $this; } }