@winzou Oh you are right. 

Anyway in general I think we shouldn't allow modifying the order state directly. 
Developer only need to change individual payment / shipment's state, and Sylius's listener will handle the rest. What do you think?