Heat doesn't unregister the server; a shell script triggered by Heat unregisters the server. We'd need a lot more information about why it is not doing so to diagnose this, starting with the output of the script (which is available from "heat deployment-show"). A good bet is a network connectivity problem though.