The APEX_UTIL package in Oracle Application Express is a mixed bag of "miscellaneous" stuff.
From the documentation: "You can use the APEX_UTIL package to get and set session state, get files, check authorizations for users, reset different states for users, get and purge cache information and also to get and set preferences for users."
It's clear that, over time, a lot of stuff has been placed here that really belongs elsewhere, or in its own package. By splitting up this package, it should be easier for the developer to find the functions and procedures he is looking for.
Here are my thoughts on how the APEX_UTIL package could be refactored. I'm not saying remove all this from the package in the next APEX release, but move the code to new/other packages and just leave wrappers in the APEX_UTIL package that call the new package, so that old code continues to work. Mark these as deprecated in the docs, and maybe remove after a few more releases.
Move to a new APEX_CACHE package:
CACHE_GET_DATE_OF_PAGE_CACHE Function
CACHE_GET_DATE_OF_REGION_CACHE Function
CACHE_PURGE_BY_APPLICATION Procedure
CACHE_PURGE_BY_PAGE Procedure
CACHE_PURGE_STALE Procedure
CLEAR_APP_CACHE Procedure
CLEAR_PAGE_CACHE Procedure
CLEAR_USER_CACHE Procedure
PURGE_REGIONS_BY_APP Procedure
PURGE_REGIONS_BY_NAME Procedure
PURGE_REGIONS_BY_PAGE Procedure
Move to a new APEX_USER package:
CHANGE_CURRENT_USER_PW Procedure
CHANGE_PASSWORD_ON_FIRST_USE Function
CREATE_USER Procedure
CREATE_USER_GROUP Procedure
CURRENT_USER_IN_GROUP Function
DELETE_USER_GROUP Procedure Signature 1
DELETE_USER_GROUP Procedure Signature 2
EDIT_USER Procedure
END_USER_ACCOUNT_DAYS_LEFT Function
EXPIRE_END_USER_ACCOUNT Procedure
EXPIRE_WORKSPACE_ACCOUNT Procedure
EXPORT_USERS Procedure
FETCH_USER Procedure Signature 1
FETCH_USER Procedure Signature 2
FETCH_USER Procedure Signature 3
GET_FIRST_NAME Function
GET_LAST_NAME Function
GET_USER_ID Function
GET_USER_ROLES Function
GET_USERNAME Function
GET_EMAIL Function
SET_USERNAME Procedure
SET_EMAIL Procedure
SET_FIRST_NAME Procedure
SET_LAST_NAME Procedure
LOCK_ACCOUNT Procedure
PASSWORD_FIRST_USE_OCCURRED Function
UNEXPIRE_END_USER_ACCOUNT Procedure
UNEXPIRE_WORKSPACE_ACCOUNT Procedure
UNLOCK_ACCOUNT Procedure
WORKSPACE_ACCOUNT_DAYS_LEFT Function
STRONG_PASSWORD_CHECK Procedure
STRONG_PASSWORD_VALIDATION Function
GET_ACCOUNT_LOCKED_STATUS Function
REMOVE_USER Procedure
RESET_AUTHORIZATIONS Procedure [DEPRECATED]
PUBLIC_CHECK_AUTHORIZATION Function [DEPRECATED]
RESET_PASSWORD Procedure
RESET_PW Procedure
GET_AUTHENTICATION_RESULT Function
SET_AUTHENTICATION_RESULT Procedure
SET_CUSTOM_AUTH_STATUS Procedure
GET_GROUPS_USER_BELONGS_TO Function
GET_GROUP_ID Function
GET_GROUP_NAME Function
SET_GROUP_GROUP_GRANTS Procedure
SET_GROUP_USER_GRANTS Procedure
IS_LOGIN_PASSWORD_VALID Function
IS_USERNAME_UNIQUE Function
GET_ATTRIBUTE Function
SET_ATTRIBUTE Procedure
Move to a new APEX_PRINT package:
DOWNLOAD_PRINT_DOCUMENT Procedure Signature 1
DOWNLOAD_PRINT_DOCUMENT Procedure Signature 2
DOWNLOAD_PRINT_DOCUMENT Procedure Signature 3
DOWNLOAD_PRINT_DOCUMENT Procedure Signature 4
GET_PRINT_DOCUMENT Function Signature 1
GET_PRINT_DOCUMENT Function Signature 2
GET_PRINT_DOCUMENT Function Signature 3
GET_PRINT_DOCUMENT Function Signature 4
Move to APEX_IR package (this has already been done):
IR_CLEAR Procedure [DEPRECATED]
IR_DELETE_REPORT Procedure [DEPRECATED]
IR_DELETE_SUBSCRIPTION Procedure [DEPRECATED]
IR_FILTER Procedure [DEPRECATED]
IR_RESET Procedure [DEPRECATED]
Move to APEX_SESSION package:
GET_SESSION_LANG Function
GET_SESSION_STATE Function
GET_SESSION_TERRITORY Function
GET_SESSION_TIME_ZONE Function
SET_SESSION_HIGH_CONTRAST_OFF Procedure
SET_SESSION_HIGH_CONTRAST_ON Procedure
SET_SESSION_LANG Procedure
SET_SESSION_LIFETIME_SECONDS Procedure
SET_SESSION_MAX_IDLE_SECONDS Procedure
SET_SESSION_SCREEN_READER_OFF Procedure
SET_SESSION_SCREEN_READER_ON Procedure
SET_SESSION_STATE Procedure
SET_SESSION_TERRITORY Procedure
SET_SESSION_TIME_ZONE Procedure
GET_EDITION Function
SET_EDITION Procedure
SET_SECURITY_GROUP_ID Procedure
FETCH_APP_ITEM Function
GET_NUMERIC_SESSION_STATE Function
GET_CURRENT_USER_ID Function
IS_HIGH_CONTRAST_SESSION Function
IS_HIGH_CONTRAST_SESSION_YN Function
IS_SCREEN_READER_SESSION Function
IS_SCREEN_READER_SESSION_YN Function
SET_CURRENT_THEME_STYLE Procedure [DEPRECATED]
GET_DEFAULT_SCHEMA Function
SET_WORKSPACE_Procedure
Move to APEX_EXPORT package:
GET_SUPPORTING_OBJECT_SCRIPT Function
GET_SUPPORTING_OBJECT_SCRIPT Procedure
Move to APEX_PAGE package:
GET_HIGH_CONTRAST_MODE_TOGGLE Function
GET_SCREEN_READER_MODE_TOGGLE Function
SHOW_HIGH_CONTRAST_MODE_TOGGLE Procedure
SHOW_SCREEN_READER_MODE_TOGGLE Procedure
Leave in APEX_UTIL (for now):
CLOSE_OPEN_DB_LINKS Procedure
COUNT_CLICK Procedure
CUSTOM_CALENDAR Procedure
INCREMENT_CALENDAR Procedure
SUBMIT_FEEDBACK Procedure
SUBMIT_FEEDBACK_FOLLOWUP Procedure
GET_FEEDBACK_FOLLOW_UP Function
STRING_TO_TABLE Function [DEPRECATED]
TABLE_TO_STRING Function [DEPRECATED]
SAVEKEY_NUM Function
SAVEKEY_VC2 Function
KEYVAL_NUM Function
KEYVAL_VC2 Function
HOST_URL Function
URL_ENCODE Function
REDIRECT_URL Procedure
PREPARE_URL Function
GET_HASH Function
GET_SINCE Function
GET_PREFERENCE Function
SET_PREFERENCE Procedure
REMOVE_PREFERENCE Procedure
REMOVE_SORT_PREFERENCES Procedure
GET_BUILD_OPTION_STATUS Function Signature 1
GET_BUILD_OPTION_STATUS Function Signature 2
SET_BUILD_OPTION_STATUS Procedure
GET_BLOB_FILE_SRC Function
GET_FILE Procedure
GET_FILE_ID Function
HTML_PCT_GRAPH_MASK Function
FIND_SECURITY_GROUP_ID Function
FIND_WORKSPACE Function
GET_APPLICATION_STATUS Function
GET_GLOBAL_NOTIFICATION Function
SET_GLOBAL_NOTIFICATION Procedure
SET_APP_BUILD_STATUS Procedure
SET_APPLICATION_STATUS Procedure
These are just my suggestions, but I do hope the APEX developer team will do some kind of refactoring (even if not exactly as suggested above) in future releases of APEX.
If you would like to see it done differently, please leave feedback in the comment field below! :-)