In the BaseObject, the method to check if data has changed needs to read: return $this->getData($key) !== $this->getOrigData($key);. Currently, if you set a new key and have the value equal 0, since the data on the init method will show null, != will evaluate true and skip the new field.