I found that zarafa-server 7.1.14 (7.1.11 and 7.2.1 too) ASSERT on this line when z-push works (without z-push is ok):
ASSERT(setChangeIds.size() - setDeleteIds.size() <= 2);

in provider/libserver/ECICSHelpers.cpp:1026

As I see there is wrong usage of std::copy

std::copy copies range [begin,end) which is NOT INCLUDING END ()
So assert fails because there are 3 elements left, not 2

My simple patch:

Thank you!