Hmm, I think you should implement two separate ManagementRequestHandlers reusing the same ActiveOperation. The problem here is that you do lock the operation-id (which is good), however the handleNotificationOperation only gets 'completed' when the channel gets closed, not when the handler should get unregistered.

I would suggest to do a RegisterNotificationHandlerRequest which handleRequest method does not do anything (maybe just call a latch for the register operation to wait for the request). Then you would need a UnregisterNotificationHandlerRequest which handleRequest would call resultHandler.done(null), which is going to remove the ActiveOperation and the handlers.