Organising Oracle APEX Apps

Oracle APEX inspired me into making a career change. Leveraging my experience with Project Management and Business Analysis and combining it with the most powerful low-code framework, I became a "Citizen Developer".
Introduction
As time passes, multiple applications are created inside an APEX workspace. This often happens because we structure our solutions into separate applications per module, but also because we tend to create additional applications for prototyping and backups. If we add some utility applications that support the development process, the Application Builder can soon start to look something like this:

Like an average Windows desktop. Cluttered, making you lose time searching for the application you want to edit or run.
I’m not the most patient guy around, so I get frustrated quickly when I see someone moving their mouse around, trying to pick the right application. That’s why I decided to share with the community how I organise my APEX applications.
Application Groups
If my workspace has more than five applications, I start assigning them to Application Groups. You can find this feature under Workspace Utilities.

I prefix each group name with a number for sorting purposes and add a descriptive title that represents the associated applications.

I create application groups based on the environment or project context, but there are two groups I use consistently:
10 Development
This group contains all applications that are in active development. These are typically the applications most frequently accessed by developers.
If more than five applications are being actively developed, I split this group further — either by database schema or by functional area (for example: 10 Development Finance, 20 Development Inventory, …).
20 Tools
This group contains utility applications that support the development process. Some examples of applications I often use:
Master and template applications
With these two applications, I enable centralised management of Shared Components that are used across multiple applications.
The template application also contains configuration common to all applications. This way, I don’t need to set everything up from scratch when creating a new application. I simply create it as a copy of the template. By copying the application, Shared Component subscriptions to the master application are included automatically.
APEX Project Eye
This product by UNITED CODES is my companion on all development projects. We use it as a team to boost development productivity by extending application insights and enforcing Quality Assessments before delivering to the test environment.
DOME
This open-source utility, delivered by my colleague Zoran Tica, helps the team prepare installation packages and manage releases.
Project Management Applications
On some projects, we use our own custom application to manage work, in addition to classic tools like JIRA. Sometimes, we create advanced reporting on top of these tools by importing data from tickets using REST APIs
Other Application Groups
Other application groups vary from project to project. Here are some examples I’ve used in the past.
Prototypes and Sandboxes
These are playground applications used to try out new implementation concepts, prepare demonstrations, or redesign features without the risk of breaking the main applications.
Application Working Copies are also a valid option for such scenarios, but I prefer to use them primarily for new development.
Applications in this group should be removed regularly if they are no longer needed.
Published Applications
If applications are no longer actively developed, I move them to this separate group. This keeps the 10 Development group clean and focused, as developers don’t need to access these applications frequently anymore.
Education Materials
Applications which are used mainly for training sessions. I keep these applications because they are often helpful when onboarding new developers.
Backups and Snapshots
I don’t usually create application copies solely for backup purposes, but I often see workspaces cluttered with multiple copies.
I recommend removing all unnecessary copies and keeping only the latest or important milestone snapshots. For backups, I strongly prefer using Git repositories where application source code is exported and versioned.
That said, on a recent APEX migration project, I deliberately kept old application versions so we could compare behaviour and look before and after the migration.
Generated Applications
I created this group during an Oracle Forms to APEX migration project where we used PITSS.CON Forms2APEX Modeler to generate APEX applications based on Oracle Forms Code.
We typically keep the generated applications unchanged and copy relevant generated components into the applications under active development.
Private Report in the Application Builder
After creating application groups and assigning applications to them, I create my own private report in the Interactive Report on the Application Builder page.
Steps:
Switch from Cards View to Report View
Add the Group column
Create a Control break on the Group column
Sort primarily by Group, and secondarily by Application ID or Last Updated (based on preference)
Save the Report
After this, the Application Builder becomes much easier to navigate.

Page Groups
The same concept can be used to organise pages as well. This functionality is a bit more hidden and can be found under Application Utilities.

I use Page Groups in the majority of my projects instead of relying on page ID ranges, as I find them easier to manage and much more flexible when restructuring applications later on. I also use Page Groups when building custom reports based on APEX dictionary views (ie. grouping issues in Quality Assessments or analysing user activity reports)
As with Application Groups, I like to prefix Page Group names with numbers to control their ordering. My main functional modules are usually prefixed with 10, 20, and so on, while administration-related pages typically go under 99.

I would expect more native functionality in APEX around Application and Page Groups, especially when it comes to reporting capabilities and mass updates.
Summary
I always try to remove things I no longer need in my development environment and organise what remains in a meaningful way. If only I were as consistent with my things back at home, my wife would probably be a happier person 😅
I hope this tip helps you organise your Application Builder better and saves you a second or two every day.

