I think two valid solutions would be this:
In XenForo_DataWriter_DiscussionMessage_Post::_messagePostSave()
Code:
if ($this->isUpdate() && $this->isChanged('thread_id'))
{
$db = $this->_db;
$db->update('xf_user_alert', array(
'action' => 'move'
), "content_type = 'post' and content_id = " . $db->quote($this->getExisting('post_id')));
}
Or change line 76 of the same file from this:
Code:
if ($this->isUpdate() && $this->get('message_state') == 'deleted' && $this->getExisting('message_state') == 'visible')
to this:
Code:
if ($this->isUpdate() && (($this->get('message_state') == 'deleted' && $this->getExisting('message_state') == 'visible') || $this->isChanged('thread_id')))
The first solution requires a new template for the alert method. The second one just removes the alerts.