For now I fixed it by adding this in the Serialize method:

if (string.IsNullOrEmpty(value.Id))
            {
                value.Id = ObjectId.GenerateNewId().ToString();
            }

but leaving this thread open because I do want to know if I’m using the base serializer wrong or if this is the correct way to do it