Saturday, October 31, 2026

The Change Management Dashboard

Project Update: The Change Management Dashboard is Live!

I am excited to share a major milestone in my Oracle APEX Change Management System Capstone Project: the **Interactive Dashboard** is now fully functional!

Building the backend database is only half the battle. The true value of an enterprise application is how easily it allows users to visualize data and make decisions. This new dashboard provides a real-time snapshot of the entire software deployment lifecycle.


What the Dashboard Shows

Instead of digging through tables, managers can now see all the key metrics in one place:

  • Requesters: How many total users have initiated change requests.
  • Reviewers: How many requests have been reviewed and moved to the "Under Review" stage.
  • Approvers: How many requests have been officially approved.
  • Developers: How many "Scripts Completed" are ready for deployment.
  • Deploy Admins: How many changes have been successfully pushed to production.
  • Rejections: Tracking rejected requests for auditing purposes.


Why This Matters

This dashboard was built using Oracle APEX and PL/SQL, leveraging dynamic HTML generation to create a fast, responsive UI. It pulls data from the CHANGE_HISTORY and CHANGE_REQUESTS tables, aggregating complex audit logs into simple, easy-to-read cards.

This completes the visualization layer of the project, proving that the system is not just a secure database, but a full-fledged enterprise application.

Stay tuned for more updates as I finalize the project!

Architecture of Oracle APEX Change Management System

🚀 Excited to share the architecture of my Master's Capstone Project: The Oracle APEX Change Management System! I designed this system to streamline and secure the software deployment lifecycle. Instead of chaotic, undocumented updates, this application enforces a strict workflow with Role-Based Access Control (RBAC). As you can see in the diagram, the system handles: 
🔹 Request Management: Centralized tracking for all change requests. 
🔹 Review & Approval: A multi-stage workflow to ensure quality control. 
🔹 Development & Deploy: Tracking scripts, production deployment, and rollback safety. 
🔹 Security & Roles: Distinct access levels for Requesters, Reviewers, Approvers, and Admins. 
🔹 Audit & History: Complete traceability for compliance. 

 Built using Oracle APEX, PL/SQL, and a robust relational database architecture. 

 Let me know what you think of the architecture! 👇 #OracleAPEX #DatabaseArchitecture #PLSQL #SoftwareEngineering #CapstoneProject #TechPortfolio

HTP.P Build-In Package

Using HTP.P for Dynamic HTML Generation in Oracle APEX

When building Oracle APEX applications, developers often rely on built-in components like Interactive Reports and Forms. However, there are scenarios where these standard components cannot achieve the exact visual layout or dynamic behavior required. In these cases, the HTP.P procedure from the PL/SQL Web Toolkit becomes an essential tool for generating custom HTML directly from the database (Oracle, 2024).


What is HTP.P?

The HTP (HyperText Processor) package is a built-in Oracle PL/SQL library that allows developers to generate HTML tags from within PL/SQL code (Oracle, 2026). The P procedure—short for "Print"—is the most commonly used subprogram within this package. It accepts a string argument and writes it directly to the HTTP output buffer, which is then rendered by the user's browser (Oracle, 2026).

In Oracle APEX, this functionality is exposed through the PL/SQL Dynamic Content region type. Unlike standard reports that expect a SQL query, this region type expects a PL/SQL block that "prints" HTML using HTP.P (Oracle, 2024).

-- Basic Syntax
htp.p('<h1>Hello World</h1>');

Why Use HTP.P in APEX?

While APEX provides many declarative components, HTP.P offers several distinct advantages:

  • Complete Control: You can generate any HTML structure, including custom CSS grids, dashboards, and interactive widgets that APEX templates cannot easily replicate (Oracle, 2024).
  • Dynamic Content: You can loop through database records and generate HTML for each row, allowing for highly customized data presentation.
  • Integration with PL/SQL Logic: You can combine complex business logic (IF/ELSE statements, cursor loops) with HTML generation in a single code block.

Practical Application: Dashboard Cards in the Change Management System

In my Capstone Project, I used HTP.P to build a dynamic dashboard that displays real-time statistics for the Change Management System. The dashboard needed to show the number of users in each role (Requesters, Reviewers, Approvers, Developers, Deploy Admins) and the number of requests processed at each stage.

The following code demonstrates how HTP.P was used to generate a "card" for the Requester role:

-- Open the card container
htp.p('<div style="flex: 1; background: #f8fafc; border-left: 4px solid #3b82f6; padding: 20px; border-radius: 8px;">');

-- Print the card title
htp.p('<h3 style="color: #64748b;">REQUESTERS</h3>');

-- Print the dynamic data (fetched from a SYS_REFCURSOR)
htp.p('<h2 style="color: #1e293b;">' || v_total_requesters || ' Users</h2>');
htp.p('<p style="color: #3b82f6;">' || v_total_initiated || ' Initiated</p>');

-- Close the card container
htp.p('</div>');

By repeating this pattern for each role, I was able to create a visually appealing dashboard with six distinct cards, all generated dynamically from data stored in the CHANGE_HISTORY and CHANGE_REQUESTS tables. The HTP.P procedure allowed me to combine database logic with presentation logic in a way that standard APEX components could not achieve.


Best Practices

When using HTP.P in APEX, consider the following guidelines:

  • Keep Logic Separate: While it is tempting to mix complex PL/SQL logic with HTML generation, it is better to fetch data first, then generate HTML in a separate section (Oracle, 2024).
  • Use CSS Frameworks: Since HTP.P only generates raw HTML, you must manually include CSS styles or link to external stylesheets (like Bootstrap or Tailwind) to achieve a modern look.
  • Escape User Input: When displaying user-generated content, always use APEX_ESCAPE.HTML or HTP.ESCAPE_SC to prevent Cross-Site Scripting (XSS) attacks (Oracle, 2026).

Conclusion

HTP.P is a powerful tool for Oracle APEX developers who need to go beyond the limitations of declarative components. By leveraging the PL/SQL Web Toolkit, you can generate fully customized, data-driven HTML pages directly from the database. In the Change Management System project, this approach enabled the creation of a professional dashboard that would have been difficult to replicate using standard APEX regions alone.


References

Oracle. (2024). App builder user's guide: Rendering HTML using custom PL/SQL (24.1). Oracle Help Center. https://docs.oracle.com/en/database/oracle/apex/24.1/htmdb/rendering-html-using-custom-plsql.html

Oracle. (2026). PL/SQL packages and types reference: HTP (26). Oracle Help Center. https://docs.oracle.com/en/database/oracle/oracle-database/26/arpls/HTP.html

Friday, October 30, 2026

Oracle APEX Change Management System

Oracle APEX Change Management System

A Custom Database-Driven Application Developed with Oracle APEX

Project Overview

The Oracle APEX Change Management System is a custom business application designed to streamline and organize the management of software change requests.

Developed as my capstone project, the application demonstrates how Oracle technologies can be used to build practical business solutions that improve workflow management, access control, and operational traceability.

The system provides a centralized environment for managing change requests and their associated review, approval, testing, deployment, and tracking activities.

Key Features

  • Change Request Management: Organizes and tracks software change requests through a centralized interface.

  • Role-Based Access Control: Supports role-specific access to application functions.

  • Review and Approval: Facilitates structured review and approval activities.

  • Testing Management: Maintains records of testing activities and results.

  • Deployment Tracking: Records deployment activities and their outcomes.

  • Rollback Management: Supports the documentation of rollback activities.

  • Audit Trail and History: Maintains historical records to improve traceability.

  • Interactive Dashboard: Provides convenient access to change-related information through an Oracle APEX interface.

Technologies Used

  • Oracle Application Express (APEX)

  • Oracle SQL

  • Oracle PL/SQL

  • Oracle Database

These technologies provide an integrated platform for developing database-driven applications with business logic, reporting, and workflow functionality.

Application Architecture

The solution combines a web-based user interface with Oracle database capabilities to support the application's business processes.

Oracle APEX provides the user-facing application, while Oracle SQL and PL/SQL support data access, business logic, and application processing. Oracle Database serves as the underlying data platform.

This approach demonstrates the practical application of database design and Oracle development technologies in building a structured business application.



Project Demonstration

Selected screenshots showcase the application's interface and major functional areas, including change request management, approval activities, dashboards, and deployment-related records.

The published materials focus on the application's capabilities and user experience while keeping the complete source code and internal implementation details private.







Professional Expertise

This project reflects my experience in designing and developing database-driven business applications using Oracle technologies.

My areas of expertise include:

  • Oracle Database Architecture and Design

  • Custom Oracle APEX Application Development

  • SQL and PL/SQL Development

  • Business Application Enhancement and Maintenance

  • Database Reporting and Interactive Dashboards

  • Workflow and Approval Solutions

  • Oracle Application Support and Troubleshooting

I focus on developing practical, maintainable database solutions that address business requirements and support reliable application operations.

Let's Connect

Are you looking for an Oracle Database Architect or Oracle APEX Developer?

Whether you need a custom Oracle APEX application, database application enhancements, SQL and PL/SQL development, or technical assistance with Oracle-based business systems, I welcome professional inquiries and collaboration opportunities.

Connect with me:

I look forward to connecting with professionals, organizations, and potential clients to discuss Oracle technologies and business application solutions.


Project: Oracle APEX Change Management System
Developer: Yasser Hassan
Technologies: Oracle APEX, SQL, PL/SQL, Oracle Database
Category: Application Development

Saturday, October 17, 2026

 

Oracle APEX Change Management System — Capstone Project

Project Overview

This project presents an Oracle APEX-based Change Management System designed to support the controlled management of software change requests, reviews, approvals, testing, deployment, rollback, and audit records.

Technologies

  • Oracle APEX

  • SQL and PL/SQL

  • Oracle Database

Key Features

  • Role-based access control

  • Change request and review workflow

  • Approval and deployment controls

  • Testing and rollback records

  • Audit trail

Implementation and Testing

This section presents selected screenshots and evidence from the implemented application and the tests performed. The results shown reflect the functionality actually implemented and verified.

Lessons Learned

This project strengthened my practical understanding of database application development, access control, change management, testing, and deployment.

Project Evidence



Project Report

The project report documents the design, implementation, and evaluation of the Oracle APEX Change Management System. It describes the system architecture, role-based access controls, change management workflow, and testing activities, including deployment and rollback verification. Selected project evidence is presented to demonstrate the implemented functionality while keeping the full report and source code private.


Tuesday, August 20, 2024

bulk collect with dbms

 declare

v_first_name varchar2(1000):='Sunny';

t_no     sys.odcinumberlist;

t_fname  sys.odcivarchar2list;

t_lname  sys.odcivarchar2list;

t_rfname sys.odcivarchar2list;

        cursor emp_c

          is

            select  replace(first_name,'Sundar','Sunny') rfirst_name,

                    first_name,

                    last_name,

                    employee_id

              from  jai;

         type emp_typ

           is table of emp_c%rowtype;

         v_data emp_typ;

    begin

        open emp_c;

        fetch emp_c

           bulk collect

           into v_data;

        close emp_c;

        forall i in 1..v_data.last

          update jai

             set first_name=v_data(i).rfirst_name

           where first_name ='Sundar';

     open emp_c;

     fetch emp_c bulk collect into t_rfname,t_fname, t_lname,t_no;

     close emp_c;

  --

       for x in t_no.first .. t_no.last loop

       dbms_output.put_line('Number = '||t_no(x) ||' The First Name = '|| t_fname(x));

     end loop; 

commit;

end;

/

How to update the records using bulk collect

 declare

v_first_name varchar2(1000):='Sunny';

        cursor emp_c

          is

            select  replace(first_name,'Sundar','Sunny') rfirst_name,

                    first_name,

                    last_name,

                    employee_id

              from  emp_test

where first_name ='Sundar';

         type emp_typ

           is table of emp_c%rowtype;

         v_data emp_typ;

    begin

        open emp_c;

        fetch emp_c

           bulk collect

           into v_data;

        close emp_c;

        forall i in 1..v_data.last

          update jai

             set first_name=v_data(i).rfirst_name

           where first_name ='Sundar';

commit;

end;