The AdministrationService.saveGlobalProperties(List<GlobalProperty>) method does not do what you would expect. Actually it wipes out all other global properties besides the ones you pass in. This frequently leads to errors, and it's only used "correctly" in one place in core. (That's Manage Global Properties controller.)
- Change the behavior of saveGlobalProperties(List) to actually just save the specified global properties without deleting anything.
- Put the iterate-over-all-GPs-and-purge behavior in the controller for Manage Global Properties, instead of where it currently lives in AdministrationServiceImpl.saveGlobalProperties.
Backport this to 1.6.x, 1.7.x, and 1.8.x