# How to Extend an OAF Page in Oracle EBS Without Touching Seeded Code

> Source: https://netray.co/erp-help/ebs-oaf-personalization-extension-how-to
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: ERP Help

## Short answer

Use OAF Personalization, through the Personalize Self-Service Defn responsibility or the Personalize Page link, for layout, prompts and simple rules, and Controller Extension, a custom Java class that extends the seeded controller, for logic changes such as new validation or events. Both approaches survive patching because the seeded XML and Java classes are never edited directly.

## Kind

advanced

## System

oracle-ebs

## Erp

Oracle E-Business Suite

## Module

OA Framework (OAF)

## Query

how to extend an OAF page in Oracle EBS without modifying seeded code

## Alternate Queries

- oaf personalization vs extension vs substitution
- oracle application framework controller extension example
- personalize self-service defn oaf
- extend view object oaf without editing seeded vo

## Applies To

Oracle E-Business Suite 12.1 and 12.2, OA Framework (self-service HTML) pages

## Steps

### Extend an OAF page the supported way

**Items:**

For layout, prompt or rendered changes, log in with Personalize Self-Service Defn, navigate to the page, and use About This Page > Personalize (or the Personalize Page link) to open the personalization hierarchy.

Add or override attributes such as Prompt, Rendered, Read Only or Required at the site, responsibility or user level; each is stored as an MDS customization document, not a code change.

For controller-level logic, create a Java class that extends the seeded controller, for example a class named with your XX prefix extending the original CO, implementing processRequest and processFormRequest with a call to super() first.

Register the new class as a Controller Extension against the region that uses the seeded controller through the Personalization UI, rather than editing the region's Controller property in the seeded page directly.

For a new field or attribute, extend the seeded View Object (create an Extended VO in JDeveloper and substitute it for the base VO usage on the Application Module) instead of modifying the base VO's XML.

Package the customization under your own top, for example XXCUST, mirroring the seeded object's package path under $XXCUST_TOP/mds and $XXCUST_TOP/oracle/apps with your XX prefix at the front.

Migrate MDS customizations between instances with the JPXImporter/JPXExporter utilities, keyed to the customization layer, site, organization or user, that the change was made at.

## Sections

### Personalization versus Extension versus Substitution

**Body:**

Personalization is metadata-only, applied through the UI, and is the right tool for prompts, visibility, default values and simple SPEL-based conditions, with no Java involved.

Controller Extension is a Java class extending the seeded controller to add processRequest or processFormRequest logic, registered without ever changing the seeded controller reference itself, and is the right tool for new validation or event handling.

Substitution replaces a seeded region wholesale with your own custom region and controller, used only when the seeded structure genuinely cannot be extended; it carries more patch-conflict risk than Extension, so treat it as a last resort.

### Extending VOs and EOs for new columns

**Body:**

Adding a new database column to a seeded page usually means creating an Extended VO in JDeveloper with the new item added, then substituting it for the base VO usage in the Application Module, rather than editing the seeded VO XML.

Extend the Entity Object the same way when the new attribute needs its own validation or DML behavior. Keeping the change isolated to your custom package and its MDS substitution entry means a future EBS patch that replaces the seeded VO will not silently drop your addition.

### JDeveloper setup and common gotchas

**Body:**

Use the version of OA Extension for JDeveloper that matches your EBS instance's Applications Technology (ATG) patch level, and test against a personal or development middle tier before deploying to a shared instance.

The most common gotcha is forgetting to call super.processRequest(pageContext, webBean) at the top of an overridden method, which silently breaks the base page's own rendering logic instead of throwing an obvious error.

## Pitfalls

- Editing seeded page XML directly on the file system instead of using Personalization or MDS layers, which is overwritten by the next patch
- Forgetting to call the super() method first in an extended controller, silently breaking base functionality
- Using Substitution when Extension would have been enough, increasing future patch conflict risk
- Mismatched package and directory structure under the custom top, causing a ClassNotFoundException at runtime
- Not testing a personalization across all three levels, site, responsibility and user, before assuming it fully rolled out
- Migrating MDS customizations with the wrong customization layer key, so the change never applies in the target instance

## Ai Angle

An AI assistant grounded in the codebase can take a request like 'add a Ship To validation to the Sales Order OAF page' and return the right pattern, Controller Extension versus VO extension, the seeded controller and VO class names to extend, and a draft Java skeleton, cutting the JDeveloper lookup time a developer normally spends finding the base classes first.

## Faq

### Can I edit the seeded OAF page XML directly?

**Answer:** Technically the file exists on disk, but doing so is not supported and is not patch-safe. Any direct edit is overwritten the next time Oracle ships a patch touching that page, so Personalization or Extension is the only durable approach.

### What is MDS in this context?

**Answer:** MDS, Metadata Services, is the repository that stores OAF personalization and customization documents separately from the seeded page definitions, which is what lets your changes survive patching.

### When should I use Substitution instead of Extension?

**Answer:** Only when the seeded region's structure cannot be extended cleanly, for example when you need to remove or fundamentally restructure seeded items rather than add to or override them.

### Do OAF personalizations require a middle tier bounce to take effect?

**Answer:** No, most personalization changes apply live once the MDS cache picks them up, though a bounce is sometimes used to force an immediate cache refresh in a busy environment.

## Search terms

oaf extend page oracle ebs, oracle application framework personalization, controller extension oaf, oaf substitution vs extension, extend view object oaf, xxcust top oaf, oracle ebs oaf customization guide, mds customization layer

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
