CRUD service interfaces do not allow InvalidRequest for create or update
This is a mistake, because it is very possible for the MMP to be malformed by the client. For a relevant example, recall the sysmeta vs. systemmetadata confusion for the name of the part containing the systemMetadata.
Currently GMN does throw an informative InvalidRequest exception, which was quite helpful for debugging the client code quickly.
Metacat follows the spec and throws a 500 error (ServiceFailure), but that masks the problem. (It's error description is "Error handling MMP upload: null", a bit less informative)
Recommend adding the InvalidRequest to the throws clause for: