The current approach of "one transaction for all changes" seems like it doesn't allow people to make partial progress on updating things. When a single problem occurs, all changes are rolled back.
If a transaction was started for each batch of changes, this would allow for successful changes to be applied and for useful error messages to be included in the Dates report alongside the change that failed. Specifically, plugins which throw a moodle_exception when an issue occurs could be caught at the instance level and not prevent other changes from being processed.
The current approach of "one transaction for all changes" seems like it doesn't allow people to make partial progress on updating things. When a single problem occurs, all changes are rolled back.
If a transaction was started for each batch of changes, this would allow for successful changes to be applied and for useful error messages to be included in the Dates report alongside the change that failed. Specifically, plugins which throw a moodle_exception when an issue occurs could be caught at the instance level and not prevent other changes from being processed.