Add a combination of optimitistic and pesimistic locking to prevent dupl...

...iscate requests causing random behaviour for the order checkout process

e.g. double shipments