Row updating is broken in SilverStripe 4 when for example using the PublishHandler or UnPublishHandler actions. This is due to unescaped backslashes in the fully qualified class name in json data, which when parsed in javascript treats the backslash as an escape character.
This can be fixed by escaping the backslash character in HTTPBulkToolsResponse.
All bulk handlers and the bulk uploader now use a common HTTPBulkToolsResponse to return a common json format and handle errors. The front end uses this json to update the drifield accordingling.