In Simperium, we ran into **a lot** of issues while dealing with MOC-Merge calls. One of the hardest was: objects that just got inserted might have TemporaryID's, and the merge might fail. (In certain scenarios, we ended up with duplicate objects, a true debugging nightmare)

One of the workarounds was to force those newly inserted objects to obtain permanent ID's, like this: https://github.com/Simperium/simperium-ios/blob/develop/Simperium/SPCoreDataStorage.m#L420