We accomplish this very thing in our medical app, but we handle it in the UI. Bottom line is that we turn the ManageUIReadOnlyState to false on the business objects we want to handle this way (which is most all of them in our case), and then handle the IsDirtyChanged event of our BOs to manage the Save and Undo buttons (we do this on the base form). If you are using the 1.6.6 beta, I'd recommend taking a look at our StrataFlix sample as it shows exactly how we do all of this. In our case we don't use the maintenanceFormToolstrip but instead use a list of "actions" which appear or dissapear depending on whether they are applicable (i.e. the Save and Undo actions pop in and out depending on the dirty state of the BOs.)