Thinking about it now, perhaps we really want create_enrollment and update_enrollment to be two separate functions?

create_enrollment as a class method, and then update_enrollment can handle stuff like activation, mode changes, etc. with save(), no problem.  Then events only need to be fired from create and update.