Hi Umberto,
Thanks for the link to Maciej's blog. It is helpful. Maybe I am missing something, but Maciej uses there own defined CMTDisposeCommand, not ProcessEventListener. The same applies for method name - he uses afterCompletion() to dispose, not afterProcessCompleted(). Is it possible that this is the problem?
Also keep in mind, that timers are special case and there are scenarios, where you cannot use session per process instance pattern - as I said timer cannot trigger in disposed session.