Personalization for Order Type in Oracle Apps R12



Introduction:
In Oracle Apps R12 Order Management, users create Sales Orders using the Sales Order Form (OEXOEORD). By default, the form allows users to select any Order Type assigned to their responsibility. In real-time business scenarios, this flexibility can lead to incorrect Order Type selection, which may result in downstream issues such as incorrect pricing, wrong workflow execution, accounting impact, or fulfillment errors.

The issue addressed in this blog is the lack of control on Order Type selection for specific users, responsibilities, or business scenarios within the Sales Order form.

Cause of the issue: In many Oracle EBS implementations, different Order Types are designed for different business purposes, such as:

  • Domestic Sales Orders
  • Export Sales Orders
  • Free-of-Charge (FOC) Orders
  • Sample Orders
  • Internal Orders

However, users may accidentally select an incorrect Order Type due to:

  • Similar naming conventions
  • Lack of validation at the form level
  • Multiple Order Types being visible to all users

How do we solve: We use Oracle Forms Personalization to restrict the Order Type LOV and enforce validation rules without any custom code. The solution consists of multiple personalization rules as detailed below.

Step 1: Create a new personalization
Navigate to:
Order Management Super User → Sales Order → Open Sales Order Form (OEXOEORD)

Then go to:
Help → Diagnostics → Custom Code → Personalize

Step 2 – Create a new Rule (XX Order Type LOV Restriction)

Add a new row:

Seq Description Level Enabled
65 XX Order Type LOV Restriction Function

Conditions Tab

Trigger Event WHEN-NEW-ITEM-INSTANCE
Trigger Object ORDER.ORDER_TYPE
Processing Mode Not in Enter-Query Mode

Context

Level Value
Responsibility XX Product Management
Responsibility XX New Product Management

Actions Tab

Seq Type Enabled
10 Builtin
20 Property

Seq 10 – Builtin

Builtin Type Create Record Group from Query
Argument Select ORDER_TYPE_ID, NAME, DESCRIPTION
from oe_order_types_v
where upper(name) like upper(‘%Samples%’)
Group Name XX_SAMPLE_ORDER_TYPES

Seq 20 – Property

Order Type LOV
Target Object ORDER_TYPE
Property Name Group Name
Value XX_SAMPLE_ORDER_TYPES

Save and Validate.
Go to: Tools → Validate All.

Step 3 – Create another Rule (XX Order Type Restriction – Update)

Add a new row:

Seq Description Level Enabled
70 XX Order Type Restriction – Update Function

Conditions Tab

Trigger Event WHEN-VALIDATE-RECORD
Trigger Object ORDER
Condition UPPER(:ORDER.ORDER_TYPE) NOT LIKE UPPER(‘%SAMPLES%’)
AND fnd_global.resp_id IN (53015, 50207)
Processing Mode Both

Actions Tab

Seq Type Enabled
10 Message

Seq 10 – Message

Message Type Error
Message Text You are not authorized to use Order Types other than ‘Samples%’.

Save and Validate.
Go to: Tools → Validate All.

Step 4 – Create another Rule (XX Order Type Restriction – Update/Lines)

Add a new row:

Seq Description Level Enabled
75 XX Order Type Restriction – Update/Lines Function

Conditions Tab

Trigger Event WHEN-VALIDATE-RECORD
Trigger Object LINE
Condition UPPER(:ORDER.ORDER_TYPE) NOT LIKE UPPER(‘%SAMPLES%’)
AND fnd_global.resp_id IN (53015, 50207)
Processing Mode Both

Actions Tab

Seq Type Enabled
10 Message

Seq 10 – Message

Message Type Error
Message Text You are not authorized to use Order Types other than ‘Samples%’.

Save and Validate.
Go to: Tools → Validate All.

Conclusion: Using Forms Personalization, we effectively controlled Order Type selection in Oracle Apps R12 without any code customization. This approach:

  • Prevents incorrect order creation
  • Ensures business process compliance
  • Reduces operational errors and rework
  • Remains upgrade-safe and easy to maintain

This solution demonstrates how a simple personalization can deliver significant business impact while adhering to Oracle best practices.

Recent Posts