As the error message says, the function
\tl_upper_case:n are now deprecated and should be replaced by
\text_uppercase:n. The full list is:
<some>_case was replaced by
<some>case, as a single word,
mixed case was renamed to
title case and, more importantly, the functions for dealing with general text input were removed from
l3tl (token lists) to a more specific
l3text module for general text manipulation tools.
You can read more about the text and string manipulation functions in the “The
l3text package” part of the
expl3 interfaces documentation or in this blog post, which contains a brief discussion of the main features of these functions, including language-dependent changes, with usage examples.
Until the mentioned update, the functions were (for four years or so) in the
l3tl module as experimental features (thus subject to change), but they (the
\tl_<some>_case:n ones) were not really suited for
l3tl and there was the increasing need of a module for text manipulation. Now in the
l3text module they are marked as stable, so there should be no further interface changes.
This move was the first step in a larger update to add other text manipulation tools to the LaTeX3 kernel. The base of these functions is the newly added
\text_expand:n, which does as it advertises: it expands input text. This function is more or less equivalent to LaTeX2ε's
\protected@edef, but it's powered by
\expanded, so it's expandable!
More functions will be added to the new
l3text module, for example
\text_purify:n, which will be an expandable equivalent to
\pdfstringdef to generate valid PDF strings from user input.