Can anybody tell my how to do this right?
Your code looks quite confused. Why don't you simply create two Properties objects, one containing the logon parameters for system A, and the other containing the logon parameters for system B. And your implementation of MyDestinationDataProvider.getDestinationProperties() just returns the one or the other, depending on the destinationName. That's it and everything works fine! No need for complicated mechanisms that "change" something dynamically at runtime, etc.