Hello Cliff and thanks for your answer.
The error is the same as sigismund. The applicationFacade.getInstance return null, but when I run into the getInstance method with the debugger, the instanceMap[key] variable is defined as ch.fasa.modules.services.ApplicationFacade (@1b96cc11).
I noticed some mistakes with debugger...
I load Presentation module first time, module has the memory address "abcd".
I load Services module first time (Presentation module is unloaded), module has the memory address "efgh".
I load Presentation module second time (Services module is unloaded), module has the memory address "ijkl". The instanceMap doesn't contains any "Presentation" key, so it recreate it.
I load Services module second time (Presentation module is unloaded), module has the same memory address as the first time ("efgh"). Services module isn't unloaded from instanceMap and memory. The instanceMap contains already the module and take it to display it.
The think I don't understand is all modules uses the same "Shell", and it's the Shell who load / unload modules... So all modules use the same process to be loaded / unloaded, but only Presentation module is successfully removed from instanceMap and memory...
And... sometimes I'm a stupid animal... Copy and paste is the hell of developer... Each module has it's own "Dispose" command... and I have changed all things into each command, except the "RemoveCore" directive... All dispose command had removeCore( Presentation.NAME )... I changed the directive correctly (Services = removeCore( Services.NAME ), Products = removeCore( Products.NAME ), etc...) and all is ok now
Sorry for the disturbance