Hi Bob,
I think there is a better way. Having an IsDirty field seems limited. What if multiple integrated features need to do some synchronization, then after the first feature sets IsDirty to false nothing else can respond to it, and in the case where there is no feature that needs to respond to it will just stay as true and be a meaningless field in the db.
Seems like a better solution would be to have a plugin system for handlers that can respond to a UserUpdated event and we could pass in the SiteUser object as an event argument. Then any number of features could respond to changes in a user profile and if there are no features that need to do this it is not creating some unused field in the db. So if we had a plugin system for this you could make a YAFUserChangedEventHandler to do the needed work.
We already have a plugin system for UserCreated event that you could use to implement handling for new users, we just need a new one for handling user updated.
I can add a to do item in my project tracker for this plugin system.
Best,
Joe