I have changed a domain once. A customer bought a new domain and wanted to move everything.
I added the domain as a secondary addon domain and then made it primary.
My only issue was that there wasn't a way to change the email mailboxes domain and I had to recreate all of them (and migrate the data).