* check for completed transitions before accessing target state * upgrader should be happy with initial and final state being the same value - only an empty final state should throw * refactor * reduce complexity * Don't check for successfull * Add test that runs migration twice --------- Co-authored-by: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>