It is quite possible that the second version of the code will not work, ever. If it wasn't in use before, it is all the more plausible that it won't work. (See the accepted answer for how to use the obsolesent notation. I still think that the rest of the advice below stands - but note carefully the qualifier 'when you need to modify the SQL'; if you don't need to change the SQL for some other reason, there's no necessity to remove the old-style notation.)
Bite the bullet and deal with the ANSI join when you need to do the case-insensitive comparison. Or investigate a locale-based alternative (with case-insensitive comparisons), if such an option exists in Oracle.
Fundamentally, though, you should consign the old '(+)' outer join notation to the trash can. When you have to modify an SQL statement, remove the old (obsolescent) notation and use the ANSI join notation instead.
A comment asks 'how can this be converted to ANSI'?
You rewrite the FROM clause as well as the WHERE clause - often moving join conditions from the WHERE clause to the ON conditions in the FROM clause.
SELECT a.*, b.*
FROM a LEFT OUTER JOIN b ON UPPER(a.name) = UPPER(b.lname)
Another comment asks 'how to extend the join to three tables'?
SELECT a.*, b.*
FROM a
LEFT OUTER JOIN b ON UPPER(a.name) = UPPER(b.lname)
LEFT OUTER JOIN c ON on a.first = c.first