Regarding graduations: I just don't let them go. As soon as they drop everything to attend graduation, I pause the game, flip around to everyone cancelling their "waiting for graduates" or "attend graduation" action. For the sims not graduating, I queue up a change outfit, and whatever it is I want them to do, and then go on to the next one. For the sim(s) graduating, I just cancel the go to graduation action. Once everyone's "waiting for graduates" or "attend graduation" is canceled, I go back to the one (or one of the ones) graduating and start the game on the slowest speed. That sim will change into graduation robes, throw confetti, and wave a diploma, but that takes less time than the hoopla of a birthday party, and then I can change their clothes and put them back to work.
If there's more than one graduating, I just do that with all of them.
It's still disruptive, but not as bad as if they actually
went to graduation. Of course, they still miss a day of work, so I try to have the whole generation graduate at once. It takes full micro-management for a short period on graduation day to get them all cancelled, out of their graduation robes, and back to what I want them to do, but at least it's all concentrated in one day.