Could you show us how you set isShippingDone from false to true?
The change needs to be commited to the local DB. Otherwise the synchronize cannot spot a change and your app receives a copy of the last commited state of the server, overwriting your local (uncommited) changes.