Perhaps there's not even need for the "if event_id in MissionEvents.__dict__.keys()" case: rather, there would only be the else here for the "external event" case.  This would assume that any explicitly unrecognized event_id from the mission plan would be assumed to be an external event (to be received with an OMSDeviceStatusEvent).