Introduction:-
In Oracle APEX applications, enhancing user experience through personally is a key aspect of modern UI design. One effective way to achieve this is by dynamically setting the application logo based on the currently logged-in user. This approach allows us to display different logos for example, company-specific branding, department icons, or user-type indicators tailored to each user.
The following technologies has been used to achieve the same.
Oracle APEX
RESTful Service
Why We Need to Do This?
Personalized User Experience:-
Displaying a user-specific logo makes the application feel more tailored, improving user engagement and satisfaction.
Multi-Company or Multi-Department Branding:-
In applications used by different organizations or departments, showing their respective logos helps maintain brand identity and avoids confusion.
User Role Indication:-
The logo can visually represent user roles (e.g., Admin, HR, Finance), making it easier to identify the current context.
Professional Look and Feel:-
Dynamic branding adds a layer of professionalism, especially in client-facing apps where different users expect their own branding.
How Do We Solve This:-
Step1: Store the logo image in the user details table.
Step2: Create a Module from Restful service

Step3: Add a Template

Step4: Add a Handler

Step5: Paste the following PLSQL code
DECLARE
v_blob BLOB;
v_mime_type VARCHAR2(50);
v_length NUMBER;
v_user_id NUMBER;
BEGIN
v_user_id := TO_NUMBER(:USER_ID);
SELECT USER_LOGO, MIME_TYPE
INTO v_blob, v_mime_type
FROM USER_TABLE
WHERE USER_ID = v_user_id;
v_length := DBMS_LOB.GETLENGTH(v_blob);
IF v_length > 0 THEN
OWA_UTIL.MIME_HEADER(NVL(v_mime_type, 'image/png'), FALSE);
HTP.PRN('');
WPG_DOCLOAD.DOWNLOAD_FILE(v_blob);
ELSE
OWA_UTIL.STATUS_LINE(404, 'Not Found');
END IF;
END;
Step6: Now copy the Full URL from Resource Handler.
Step7: Create One Application Page Item with the name of P_USER_ID
Step8: Create One Application Process Process_Point – After Authentication (paste the following code)
BEGIN SELECT USER_ID INTO :P_USER_ID FROM USER_TABLE WHERE UPPER(USER_NAME) = UPPER(:APP_USER); EXCEPTION WHEN NO_DATA_FOUND THEN :P_USER_ID := NULL; WHEN TOO_MANY_ROWS THEN :P_USER_ID := NULL; WHEN OTHERS THEN :P_USER_ID := NULL; END;
Step9: Now go-to UI Interface under shared component and select logo
| Logo | Image |
| Image URL | Paste Full URL and add application item |
| Sample_URL | https://yourdomain/ords/dms/get/user_logo/&P_USER_ID. |
Step10: Save and run the application.
Conclusion:-
Dynamically setting the APEX logo enhances supports multi-brand use, and delivers a cleaner, more professional user experience all within a single, unified application.
Output:-
User1:-
![]()
User2:-
![]()