diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 74c32f529fb0d129b58cbe7eb5d4ece17a61dacd..0a453d075e23872535e005fa8992d2554035991d 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -2002,6 +2002,10 @@ static void free_user(struct ast_vm_user *vmu)
 		return;
 	}
 
+	if (!ast_strlen_zero(vmu->mailbox)) {
+		ast_delete_mwi_state_full(vmu->mailbox, vmu->context, NULL);
+	}
+
 	ast_free(vmu->email);
 	vmu->email = NULL;
 	ast_free(vmu->emailbody);
diff --git a/main/app.c b/main/app.c
index 6a62c838d1f2d0280637c1f81123f487ea255ec1..19cbfded1fe35dcf2c396fe40f9585b1692855db 100644
--- a/main/app.c
+++ b/main/app.c
@@ -3344,6 +3344,9 @@ int ast_delete_mwi_state_full(const char *mailbox, const char *context, struct a
 	if (clear_msg) {
 		stasis_publish(mailbox_specific_topic, clear_msg);
 	}
+
+	stasis_topic_pool_delete_topic(mwi_topic_pool, stasis_topic_name(mailbox_specific_topic));
+
 	ao2_cleanup(clear_msg);
 	return 0;
 }