I think callbacks can replace service contracts.
You call every callback with the "callback" procedure:
https://openacs.org/forums/message-view?message_id=275712
You don't need to know the full procedure name for an implementation, the callback procedure will find it for you.
You can call a specific implementation with the -impl parameter. If you don't specify an implementation, all will be called.
APM callbacks would probably be best reimplemented using this technique. I believe APM callback information is stored in the database. The new callback mechanism uses the instropection features in Tcl to find the callbacks which means it is much easier to change or add a callback in a running server.