Real-world Challenges of Team Development with Oracle APEX, SQLcl, and Liquibase: A Starting Point for Discussion

Published: (January 16, 2026 at 04:02 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

Cover image for Real-world Challenges of Team Development with Oracle APEX, SQLcl, and Liquibase: A Starting Point for Discussion

In modern CI/CD, the goal is simple: 1 Jira Ticket = 1 Pull Request. Every commit should be clean, isolated, and automated. When working with Oracle APEX and database objects in a team environment, achieving this “clean state” is anything but straightforward.

1. Working Copies: Great for APEX, But…

The Approach

Use APEX’s native Working Copies to branch the application metadata.

The “But”

Working Copies only isolate APEX components (pages, items, etc.). They still point to a shared parsing schema.

The Result

When you export your Working Copy, you might have clean APEX metadata, but your database export will still capture every other developer’s changes in that shared schema.

2. Liquibase Automation: Great for Schemas, But…

The Approach

Use liquibase generate-schema -split to automate database object exports.

The “But”

In a shared schema (e.g., BO_SHARED), Liquibase captures the state of the entire schema.

The Result

If Developer A creates a table for Ticket 1 and Developer B creates a package for Ticket 2, Developer A’s export will automatically include Developer B’s work. Automation is defeated because the developer must then manually identify and git add only their specific files.

3. Separate Schemas: Great for Isolation, But…

The Approach

Give every developer their own schema (DEV1, DEV2, DEV3) for true isolation.

The “But”

This breaks the APEX parsing connection.

The Result

Developers cannot easily test their changes within the shared APEX application without first migrating those objects back to a master schema, creating a different kind of integration bottleneck.

4. Git Filtering: Great for Precision, But…

The Approach

Use advanced Git techniques (interactive staging, cherry‑picking, or rebasing) to filter out unrelated changes.

The “But”

This places a massive manual overhead on the developer.

The Result

We end up using Liquibase as a mere file generator rather than an automation tool. If a developer has to manually reset 48 out of 50 generated files, the “automation” has failed.

The Current Reality: Accepting the Trade‑offs

We have concluded that no current approach provides 100 % full automation for both APEX and database objects in a shared environment.

Our Current “Workaround”

  • Accept manual selection as the “tax” we pay for using Working Copies.
  • Rely on strong processes and checklists to reduce human error during the manual staging phase.
  • Use pre‑development reviews to align on architecture, ensuring that even if the “push” is manual, the logic is sound.

Let’s Discuss

  • Is there a way to achieve a truly automated, isolated 1‑to‑1 mapping of Jira tasks to PRs in APEX without separate schemas?
  • Or is the “Manual Selection” bottleneck simply the price of doing business in a shared‑database IDE?

How is your team handling the shared schema bottleneck? I’m looking for feedback from anyone who has managed to automate this without the manual overhead.

Back to Blog

Related posts

Read more »