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:-