move enqueue outside transaction to prevent it cause db rollback