Wednesday, April 29, 2026

query to get Shipment number based on Order number

 SELECT DISTINCT

    wnd.delivery_name,

    wnd.actual_ship_date,

    wdd.sales_order_number

FROM

    wsh_new_deliveries       wnd,

    wsh_delivery_assignments wda,

    wsh_delivery_details     wdd

WHERE

        wnd.delivery_id = wda.delivery_id

    AND wda.delivery_detail_id = wdd.delivery_detail_id

    AND wdd.sales_order_number IS NOT NULL --='422213'

    AND wnd.actual_ship_date IS NOT NULL

ORDER BY

    wdd.sales_order_number

How to transfer files from Local Machine to Oracle EBS

🖥️ How to Transfer Files from Your Local Machine to Oracle EBS Server

When working with Oracle E-Business Suite (EBS), file transfers between your local machine and the server are often required—whether for deploying custom code, moving reports, or managing backups. Here’s a quick and practical guide to doing this securely using WinSCP and PuTTY.


✅ Step 1: Download and Install WinSCP

WinSCP is a free and powerful SFTP/SCP client for Windows.

Download WinSCP

WinSCP Installation


⚙️ Step 2: Setup WinSCP Connection

  1. Open WinSCP.
  2. Enter the host/server name, username, and password provided by your Apps DBA.
  3. Select the protocol (SFTP or SCP).
  4. Click Login.

WinSCP Login


📁 Step 3: Understand Server File Locations

Here are some common Oracle EBS file locations:

File Type Path
.fmb $CUSTOM_TOP/forms/US
.rdf $CUSTOM_TOP/reports

You can find your $CUSTOM_TOP using PuTTY:

cd $CUSTOM_TOP
pwd

Or query using:

SELECT * FROM applsys.FND_ENV_CONTEXT WHERE parameter = 'CUSTOM_TOP';

🔄 Step 4: File Upload & Download in WinSCP

  • Upload to Server: From the left pane (local), right-click the file > Upload.
  • Download to Local: From the right pane (server), right-click the file > Download.

File Transfer WinSCP


🧑‍🔧 Step 5: Login to PuTTY and Set Environment

Download PuTTY and login with your server credentials.

Once connected, run the following:

. /u01/install/APPS/fs1/EBSapps.env

Select the instance if prompted (e.g., R for Run).

PuTTY Environment Setup


👀 Pro Tips

  • Transfer .fmb or .rdf files in Binary mode.
  • Transfer .sql or .xml in Text mode.
  • Use Auto mode if unsure.

📌 Conclusion

Using WinSCP and PuTTY, you can easily manage file transfers between your local machine and the Oracle EBS server. This is essential for any technical consultant working on customization, patching, or deployment.


Tuesday, April 28, 2026

query to Get Transfer Order details in Oracle FUSION Procurement Cloud

Sql query to get Transfer order details 

SELECT DISTINCT
    poh.po_header_id,
    poh.segment1 AS po_number,
    pol.po_line_id,
    pol.line_num,
    pol.item_id,
    pol.quantity line_quantity,
    pod.po_distribution_id,
    pod.distribution_num,
    pod.quantity_ordered,
    pll.quantity schedule_qty,
    pll.need_by_date,
    pll.promised_date,
    pll.requested_ship_date
FROM
    po_headers_all        poh,
    po_lines_all          pol,
    po_distributions_all  pod,
    po_line_locations_all pll
WHERE
        pol.po_header_id = poh.po_header_id
    AND pod.po_line_id = pol.po_line_id
    AND pll.po_line_id = pol.po_line_id
    AND pod.line_location_id = pll.line_location_id and poh.segment1 =:PURCHASE_ORDER_NUMBER ORDER BY poh.segment1
    / SELECT
    123                     transaction_id,
    123                     accounting_id,
    123                     wh_reporting_code,
    toh.header_number       doc_id,
    tol.scheduled_ship_date shipment_date,
    esi.item_number         vendor_material_num,
    esi.description         privatelabelname,
    tol.shipped_qty         lineqty,
    ship.shipped_quantity --RCV.QUANTITY   
    ,
    CASE
        WHEN ceil(ship.shipped_quantity / 230) = qty.seqnum THEN
            ship.shipped_quantity - compareqtyfrom + 1
        ELSE
            230
    END                     qtyordered --, QTY.SEQNUM, CEIL(SHIP.SHIPPED_QUANTITY/230) PALLETCOUNT, SHIP.SHIPPED_QUANTITY                           
    ,
    tol.qty_uom_code        uom,
    NULL                    orderno,
    NULL                    line_num,
    NULL                    "Reference_num",
    NULL                    "Vendor_Order_num",
    ROWNUM                  pallet_id,
    0                       "Pallet_Weight / Qty",
    0                       net_lbs_orders_for_item,
    ship.actual_ship_date   actual_shipment_date,
    NULL                    departure_time,
    NULL                    transportation_method,
    NULL                    scac,
    NULL                    "Routing",
    NULL                    "Equipment_num",
    houd.name               "Ship_To_Name",
    hp_dest.address1        "Ship_To_Address",
    hp_dest.city            "Ship_To_City",
    hp_dest.state           "Ship_To_State",
    hp_dest.postal_code     "Ship_To_Zip",
    hp_dest.country         "Ship_To_Country",
    123                     "Store_num",
    123                     "DC_num",
    NULL                    "Material_Storage_Location",
    NULL                    "Plant_ID",
    NULL                    "No_of_Units_Shipped",
    NULL                    "Weight",
    toh.header_number       "Shipment_ID",
    toh.header_number       "PO_num" --SHIP.CUST_PO_NUMBER 
    ,
    123                     "GTIN_num",
    ship.gross_weight       "Gross_Weight",
    hous.name               "Ship_From_Name",
    hp_source.address1      "Ship_From_Address",
    hp_source.city          "Ship_From_City",
    hp_source.state         "Ship_From_State",
    hp_source.postal_code   "Ship_From_Zip",
    hp_source.country       "Ship_From_Country",
    ship.lot_number         "Lot_num",
    123                     "Production_Date",
    123                     "Expiration_Date",
    hp_source.address1      ship_from_address,
    hp_source.city          ship_from_city,
    hp_source.state         ship_from_state,
    hp_source.postal_code   ship_from_zip,
    hp_source.country       ship_from_country,
    ship.lot_number         lot_num
FROM
    inv_transfer_order_headers toh,
    inv_transfer_order_lines   tol,
    inv_org_parameters_v       sourceorg,
    hr_organization_units_f_tl hous,
    inv_org_parameters_v       destorg,
    hr_organization_units_f_tl houd,
    egp_system_items_vl        esi 
  /*, ( SELECT RSH.RECEIPT_NUM AS RSH_RECEIPT_NUM, RT.TRANSACTION_DATE AS RCV_TRX_DATE
              , RSL.TO_ORGANIZATION_ID RCV_ORG, RT.TRANSFER_ORDER_LINE_ID, RT.QUANTITY
             FROM RCV_SHIPMENT_HEADERS RSH, RCV_SHIPMENT_LINES RSL, RCV_TRANSACTIONS RT 
            WHERE RSH.SHIPMENT_HEADER_ID = RSL.SHIPMENT_HEADER_ID 
              AND RSL.SHIPMENT_HEADER_ID = RT.SHIPMENT_HEADER_ID 
              AND RSL.SHIPMENT_LINE_ID = RT.SHIPMENT_LINE_ID 
              AND RT.TRANSACTION_TYPE = 'RECEIVE') RCV */,
    (
        SELECT
            wnd.delivery_name,
            wnd.actual_ship_date,
            wdd.sales_order_number,
            wdd.sales_order_line_number,
            wdd.shipped_quantity,
            wdd.lot_number,
            wdd.cust_po_number,
            wdd.gross_weight,
            wdd.source_line_id
        FROM
            wsh_new_deliveries       wnd,
            wsh_delivery_assignments wda,
            wsh_delivery_details     wdd
        WHERE
                wnd.delivery_id = wda.delivery_id
            AND wda.delivery_detail_id = wdd.delivery_detail_id
                AND wdd.source_line_type IN ( 'TRANSFER_ORDER', 'TRANSFER_ORDER_RETURN' )
    )                          ship --- , DOO_LINES_ALL DLA, DOO_Fulfill_LINES_ALL DFLA    
    ,
    hz_parties                 hp_source,
    hz_parties                 hp_dest,
    (
        SELECT
            ROWNUM                   seqnum,
            ( ROWNUM - 1 ) * 230     compareqty,
            ( ROWNUM - 1 ) * 230 + 1 compareqtyfrom,
            ROWNUM * 230             compareqtyto
        FROM
            inv_transfer_order_headers
        WHERE
            ROWNUM <= 1000
    )                          qty
WHERE
        tol.source_organization_id = '3034300'
    AND tol.destination_organization_id = '3534348'
        AND toh.header_id = tol.header_id
            AND tol.source_organization_id = sourceorg.organization_id (+)
                AND sourceorg.organization_id = hous.organization_id
                    AND hous.language = 'US'
                        AND sysdate BETWEEN hous.effective_start_date AND hous.effective_end_date
                                                                          AND tol.destination_organization_id = destorg.organization_id
                                                                          (+)
                                                                              AND destorg.organization_id = houd.organization_id
                                                                                  AND houd.language = 'US'
                                                                                      AND sysdate BETWEEN houd.effective_start_date AND
                                                                                      houd.effective_end_date
                                                                                                                                    AND
                                                                                                                                    tol.inventory_item_id = esi.inventory_item_id
                                                                                                                                        AND
                                                                                                                                        tol.destination_organization_id = esi.organization_id --- AND TOL.LINE_ID = RCV.TRANSFER_ORDER_LINE_ID(+) 
                                                                                                                                            AND
                                                                                                                                            toh.header_number = ship.sales_order_number
                                                                                                                                            (
                                                                                                                                            +
                                                                                                                                            )
                                                                                                                                                AND
                                                                                                                                                to_char
                                                                                                                                                (
                                                                                                                                                tol.line_number
                                                                                                                                                ) = ship.sales_order_line_number
                                                                                                                                                (
                                                                                                                                                +
                                                                                                                                                ) --- AND dfla.LINE_ID = dla.LINE_ID AND DFLA.FULFILL_LINE_ID = SHIP.SOURCE_LINE_ID (+)
  --- AND RSL.REQUISITION_LINE_ID = DLA.SOURCE_DOCUMENT_LINE_ID (+)
                                                                                                                                                    AND
                                                                                                                                                    tol.status_lookup <> 'CANCELED'
                                                                                                                                                        AND
                                                                                                                                                        destorg.party_id = hp_dest.party_id
                                                                                                                                                        (
                                                                                                                                                        +
                                                                                                                                                        )
                                                                                                                                                            AND
                                                                                                                                                            sourceorg.party_id = hp_source.party_id
                                                                                                                                                            (
                                                                                                                                                            +
                                                                                                                                                            )
                                                                                                                                                                AND
                                                                                                                                                                qty.compareqty < ship.shipped_quantity
                                                                                                                                                                    AND
                                                                                                                                                                    toh.header_number = '12002'
ORDER BY
    toh.header_number,
    tol.line_number,
    qty.seqnum

Manage Web Extension setup in Oracle Fusion

 Manage Web Extension setup in Oracle Fusion 


Step 1. goto Oracle fusion 

        Navigatior > Setup and maintenance > Search 





      Step 2 .             

Step 3.  Search "Manage%External%Web%"
                         

Step 4. Edit the connection with required OIC integration ,

along with OIC username and Password






Whenever the refresh happens you have to update these values according to the instance 

 like for Fusion dev instance , provide OIC Dev credentials
so on and so forth.

Wednesday, February 25, 2026

Privacy Policy

                                        Privacy Policy for Know Oracle EBS

At Know Oracle EBS (https://knoworacleebs.blogspot.com), the privacy of our visitors is extremely important to us. This Privacy Policy document outlines the types of information that are collected and recorded and how we use it.


1. Information We Collect

We may collect personal information such as your name, email address, or other details when you contact us directly or subscribe to our content.

We also collect non-personal information such as:

  • Browser type

  • IP address

  • Pages visited

  • Time and date of visits

This information is used only for analyzing trends and improving user experience.


2. Cookies and Web Beacons

Know Oracle EBS uses cookies to store information about visitors’ preferences and to optimize the website experience.

You can choose to disable cookies through your individual browser options.


3. Google AdSense & Third-Party Advertising

We use Google AdSense and other third-party advertising partners to serve ads.

Google uses DoubleClick cookies to display ads to users based on their visits to this and other websites.

Users may opt out of personalized advertising by visiting:
https://adssettings.google.com

Third-party ad servers may use technologies like cookies, JavaScript, or web beacons in their respective ads.

Know Oracle EBS has no control over these cookies.


4. How We Use Your Information

We use the collected information to:

  • Improve our website content

  • Respond to user inquiries

  • Provide better services

  • Analyze site performance

We do not sell, trade, or transfer your personal information to others.


5. Third-Party Privacy Policies

Know Oracle EBS’s Privacy Policy does not apply to other advertisers or websites.

We advise you to consult the respective Privacy Policies of these third-party ad servers for more information.


6. Children’s Information

Know Oracle EBS does not knowingly collect any personal information from children under the age of 13.

If you believe that your child provided personal information on our website, please contact us and we will remove it immediately.


7. Consent

By using our website, you hereby consent to our Privacy Policy and agree to its terms.


8. Updates to This Policy

We may update this Privacy Policy from time to time. Any changes will be posted on this page.

Last updated: February 2026

About US

                                                About Know Oracle EBS

Welcome to Know Oracle EBS (https://knoworacleebs.blogspot.com).

Know Oracle EBS is a technical blog dedicated to sharing practical knowledge, tutorials, and solutions related to Oracle ERP, Oracle E-Business Suite (EBS), Oracle Integration Cloud (OIC), SQL, and related enterprise technologies.

Our goal is to help developers, consultants, and IT professionals understand complex Oracle concepts in a simple and easy-to-follow manner.


Our Mission

Our mission is to provide:

  • High-quality technical tutorials

  • Real-world problem-solving guides

  • Integration and reporting solutions

  • Best practices for Oracle applications

We aim to support professionals in improving their skills and growing their careers in the Oracle ecosystem.


What You Will Find Here

On this blog, you will find:
✔ Step-by-step technical guides
✔ Oracle Fusion and EBS tutorials
✔ SQL and BI report solutions
✔ OIC integration examples
✔ Tips for enterprise applications

All content is based on practical experience and continuous learning.


About the Author

This blog is managed by an Oracle technology professional with hands-on experience in ERP implementations, integrations, and reporting solutions.

With a passion for learning and sharing knowledge, the author focuses on delivering accurate, up-to-date, and useful technical content.


Our Commitment

We are committed to:

  • Providing original and useful content

  • Maintaining accuracy and quality

  • Respecting user privacy

  • Following ethical blogging practices

If you have suggestions or feedback, feel free to contact us anytime.


Thank you for visiting Know Oracle EBS and being part of our learning community.

Contact US

              Contact Know Oracle EBS

Thank you for visiting Know Oracle EBS.

If you have any questions, suggestions, collaboration requests, or technical queries, feel free to contact us.


📬 Get in Touch

You can reach us through the following:

📧 Email: oraclefusiontech.oic007@gmail.com


💬 What You Can Contact Us For

You may contact us for:

  • Technical support

  • Content suggestions

  • Collaboration opportunities

  • Reporting issues

  • Feedback and improvements

We try our best to respond within 24–48 hours.


🌐 Website

https://knoworacleebs.blogspot.com


Thank you for connecting with us. We appreciate your interest in our content.

Saturday, February 7, 2026

Handling long-running BI Publisher (BIP) reports with huge data in Oracle Integration Cloud

 Handling long-running BI Publisher (BIP) reports with huge data in Oracle Integration Cloud (OIC) is a very common real-time challenge. Here are the best-practice approaches used in production environments.


✅ 1. Use Asynchronous Report Execution (Most Important)

Never run large reports in synchronous mode.

❌ Problem

Synchronous calls timeout in OIC (typically 5–10 mins).

✅ Solution

Use asynchronous execution:

Flow:

Submit Report → Get Job ID → Poll Status → Download Output

Steps:

1️⃣ Call runReport with:

<runReport> <reportRequest> <attributeFormat>xml</attributeFormat> <byPassCache>true</byPassCache> <flattenXML>false</flattenXML> <sizeOfDataChunkDownload>-1</sizeOfDataChunkDownload> </reportRequest> </runReport>

2️⃣ Capture jobId

3️⃣ Poll using getReportStatus

4️⃣ Download using getOutput

✅ This avoids timeout.


✅ 2. Use Pagination / Chunking (Split Data)

Never fetch millions of records at once.

Best Practice:

Split report by:

ParameterExample
DateFrom–To Date
BatchBatch ID
OrgBU
RangeID ranges

Example:

From Date = Today-1 To Date = Today

Then loop in OIC.

✅ Prevents memory overflow.


✅ 3. Optimize BI Publisher SQL Query

Many performance issues come from bad SQL.

Do This:

✔ Use proper indexes
✔ Avoid SELECT *
✔ Use filters
✔ Avoid correlated subqueries
✔ Use EXISTS instead of IN
✔ Use materialized views

Example:

SELECT order_id, customer_name FROM oe_orders WHERE last_update_date >= :p_from_date

❌ Avoid:

SELECT * FROM oe_orders

✅ 4. Enable Data Chunk Download

For very large XML/CSV files.

Set:

<sizeOfDataChunkDownload>10485760</sizeOfDataChunkDownload>

= 10 MB chunks

OR

-1 (entire file)

Recommended: Use chunking.


✅ 5. Use File Server / Stage File Instead of Memory

Never hold huge payload in OIC memory.

Best Pattern:

BIP → OIC → Stage FileProcess → FTP/S3

Use:

✔ Stage File Read/Write
✔ OIC Lookups for tracking
✔ Streaming

Example:

Stage FileWriteProcess Line-by-Line

✅ 6. Use Schedule + Callback Pattern (Advanced)

For extremely heavy reports.

Pattern:

  1. Schedule report in Fusion

  2. Send output to UCM/FTP

  3. OIC picks file

  4. Process async

✅ Zero timeout risk.


✅ 7. Increase OIC Tracking & Fault Tolerance

Disable payload tracking for huge data:

In Integration Insight:

Disable Tracking = TRUE

Or use business identifiers only.

✅ Improves performance.


✅ 8. Use CSV Instead of XML (If Possible)

XML = Heavy
CSV = Lightweight

Preferred:

Output Format = CSV

Benefits:

  • Faster

  • Smaller size

  • Easier parsing


✅ 9. Parallel Processing (When Allowed)

If business allows:

Split by:

  • Region

  • BU

  • Date

Run multiple integrations.

Example:

North + South + East + West

Run in parallel.


✅ 10. Timeout & Retry Handling

Implement retry logic:

If Status = RunningWaitRetry If FailedAlert

Use OIC Scheduler + Scope Fault.


📌 Recommended Architecture (Real-Time)

OIC Scheduler ↓ Submit BIP Report (Async) ↓ Poll Status ↓ Download in Chunks ↓ Write to Stage File ↓ Process / FTP / API

⚠️ Common Mistakes (Avoid These)

❌ Calling runReport synchronously
❌ Fetching millions of rows
❌ Holding payload in memory
❌ No filters
❌ No retries
❌ No staging


🎯 Real Project Example

Scenario:

Daily AR invoice report (5M rows)

Solution:

✔ Split by date (1 day)
✔ CSV format
✔ Async mode
✔ Stage file
✔ FTP delivery

Result:
⏱ Reduced time: 2 hrs → 15 mins
❌ Zero failures

Web extensions in Oracle Fusion

🌐 Oracle Fusion Web Extensions: Complete Guide with Use Cases, Navigation & Screenshots

📌 Introduction

Oracle Fusion Web Extensions allow organizations to extend the user interface and functionality of Fusion Cloud applications using Visual Builder Studio (VBS) and REST services.

They help businesses customize screens, add validations, integrate external systems, and enhance user experience without modifying standard Oracle code.

In this blog, you will learn:

  • What are Fusion Web Extensions?

  • Architecture Overview

  • Business Use Cases

  • Navigation Steps

  • Configuration Process

  • Screenshot Walkthrough

  • Best Practices


📖 What Are Fusion Web Extensions?

Fusion Web Extensions are UI-based customizations developed using Oracle Visual Builder that run on top of Fusion applications.

They allow you to:

  • Add custom pages

  • Extend standard pages

  • Embed external apps

  • Call REST APIs

  • Customize workflows

  • Improve user productivity

These extensions are upgrade-safe and fully supported by Oracle.


🏗️ Architecture of Web Extensions

User → Fusion UI → Visual Builder Extension → REST APIs → Backend Services

Key Components:

  • Visual Builder Studio

  • Business Objects

  • REST Services

  • Security Roles

  • Page Flows


⚙️ Types of Fusion Web Extensions

1️⃣ Page Extensions

Extend standard Fusion pages.

📌 Example:

  • Add custom section in Sales Order page

  • Add approval comments field


2️⃣ Standalone Web Apps

Independent applications integrated into Fusion.

📌 Example:

  • Custom Vendor Portal

  • Order Tracking Portal


3️⃣ Embedded Extensions

Embedded inside existing pages.

📌 Example:

  • Credit status widget

  • Stock availability panel


🏢 Real-Time Business Use Cases

✅ Use Case 1: Customer Credit Dashboard

Display real-time credit status on Order Entry page.

Benefits:

  • Faster decisions

  • Reduced risk


✅ Use Case 2: Custom Approval Interface

Create simplified approval screen.

Benefits:

  • Mobile friendly

  • Better user adoption


✅ Use Case 3: External System Integration

Embed logistics tracking portal.

Benefits:

  • End-to-end visibility

  • No manual follow-ups


✅ Use Case 4: Data Capture Enhancement

Capture additional attributes during order creation.

Benefits:

  • Better reporting

  • Compliance support


🧭 Navigation: How to Access Web Extensions

Step 1: Login to Oracle Fusion

Navigate to:

Navigator → Tools → Visual Builder Studio

📷 Screenshot 1: Fusion Navigator with Visual Builder Studio







Step 2: Open Visual Builder Instance

Select your environment and workspace.

📷 Screenshot 2: Visual Builder Studio Dashboard




Step 3: Access Application Extensions

Go to:

Projects → Fusion Applications → Web Extensions

📷 Screenshot 3: Web Extensions Project Screen



Step 4: Create New Extension

Click Create Application → Select Extension Type

📷 Screenshot 4: Create Web Extension Wizard



🛠️ Creating a Web Extension – Step by Step

Step 1: Define Application

Provide:

  • Application Name

  • Description

  • Base Product




Step 2: Design Pages

Use drag-and-drop UI builder.

Components:

  • Forms

  • Tables

  • Charts

  • Buttons

📷 Screenshot 5: Visual Page Designer





Step 3: Configure REST Services

Connect Fusion REST APIs.

Example:

GET /fscmRestApi/resources/latest/salesOrders

📷 Screenshot 6: REST Service Configuration





Step 4: Add Business Logic

Use JavaScript for validations.

Example:

if(orderAmount > 500000){
  alert("Approval Required");
}




Step 5: Test & Publish

Test in DEV → Publish → Deploy to PROD

📷 Screenshot 7: Publish & Deployment Screen


🔐 Security Configuration

Configure access using:

Security Console → Roles → Visual Builder Roles

Assign users appropriately.


⚠️ Best Practices

✔ Use responsive design
✔ Follow naming standards
✔ Reuse REST services
✔ Secure APIs
✔ Maintain documentation
✔ Test across devices


❌ Common Mistakes

❗ Hardcoding URLs
❗ Ignoring security roles
❗ Not handling errors
❗ Poor UI design
❗ No performance testing


📈 Performance Optimization Tips

  • Use pagination

  • Enable caching

  • Minimize API calls

  • Lazy load components


🔍 Monitoring & Troubleshooting

Use:

Tools → Application Monitoring → Visual Builder Logs

Check:

  • Console logs

  • REST errors

  • Performance metrics

📷 Screenshot 8: Visual Builder Monitoring Screen


📚 Interview Perspective (Bonus)

Q: What is Fusion Web Extension?

A: A Visual Builder-based UI customization for Fusion.

Q: Are web extensions upgrade-safe?

A: Yes, fully supported by Oracle.

Q: Which language is used?

A: JavaScript and JSON.


🎯 Conclusion

Fusion Web Extensions empower businesses to deliver personalized user experiences and integrate modern digital workflows into Oracle Fusion.

With proper governance and design, they can significantly enhance productivity and system adoption.


✍️ About the Author

Akhil Sayed is an Oracle Fusion & OIC Consultant specializing in SCM, Web Extensions, and Cloud Integrations.

Visit: https://knoworacleebs.blogspot.com


📢 Did you find this useful?

Like, Share & Comment below!

Happy Coding! 🚀

OM Extension in Oracle Fusion Cloud SCM

🚀 Oracle Fusion SCM – Order Management Extensions: Complete Guide with Use Cases & Screenshots

📌 Introduction

Oracle Fusion SCM Order Management (OM) provides powerful Extension Frameworks that allow businesses to customize and enhance standard order processing without modifying core code.

These extensions help organizations implement custom validations, automation, integrations, and business rules aligned with real-world processes.

In this blog, we will cover:

  • What are OM Extensions?

  • Types of Extensions

  • Business Use Cases

  • Navigation Steps

  • Sample Scenarios

  • Screenshot Walkthrough


📖 What Are Order Management Extensions?

Order Management Extensions are custom logic components that run during order processing lifecycle events.

They allow you to:

  • Validate orders

  • Enrich data

  • Control workflows

  • Trigger integrations

  • Enforce business rules

These are built using Groovy scripting in Oracle Fusion Cloud.


⚙️ Types of Order Management Extensions

1️⃣ Validation Extensions

Used to validate order data before submission.

📌 Example:

  • Prevent order submission if credit limit exceeded

  • Validate customer category

2️⃣ Defaulting Extensions

Used to populate default values.

📌 Example:

  • Default warehouse based on country

  • Assign price list automatically

3️⃣ Processing Extensions

Executed during order lifecycle.

📌 Example:

  • Auto-approve orders

  • Trigger shipment process

4️⃣ Integration Extensions

Used to integrate external systems.

📌 Example:

  • Send order to WMS

  • Notify finance system


🏢 Real-Time Business Use Cases

✅ Use Case 1: Credit Limit Validation

Prevent customers from placing orders beyond credit limit.

Logic:

if (orderTotal > customerCreditLimit) {
    throw new ValidationException("Credit limit exceeded")
}

✅ Use Case 2: Auto Warehouse Assignment

Assign warehouse based on shipping location.

CountryWarehouse
IndiaWH_IND
USAWH_USA

✅ Use Case 3: Special Discount Approval

Route high-discount orders for approval.

Condition: Discount > 25%

Action: Send for approval


✅ Use Case 4: Integration Trigger

Send confirmed orders to 3PL system.

Trigger: Order Status = Confirmed


🧭 Navigation: How to Access OM Extensions

Step 1: Login to Fusion Application

Navigate to:

Navigator → Setup and Maintenance

📷 Screenshot 1: Fusion Home / Navigator Page (Oracle Fusion SCM Landing Screen)




Step 2: Open Order Management Setup

Go to:

Setup and Maintenance → Order Management → Order Management Extensions

📷 Screenshot 2: Setup and Maintenance – Order Management Configuration Page




Step 3: Manage Order Management Extensions

Click on:

Manage Order Management Extensions

📷 Screenshot 3: Search Results for Order Management Extensions




Step 4: Create New Extension

Click + Create

Select:

  • Extension Type

  • Event

  • Object

📷 Screenshot 4: Manage Order Management Extensions – Event Configuration Screen




🛠️ Creating an Extension – Step-by-Step

Step 1: Select Event

Common Events:

  • On Save

  • On Submit

  • On Process

  • On Fulfillment


Step 2: Write Groovy Script

Example:

if (Header.TotalAmount > 100000) {
    Header.ApprovalRequired = true
}

Step 3: Validate Script

Click Validate to check syntax.

📷 Screenshot 5: Groovy Script Editor with Validation Option


Step 4: Deploy Extension

Click Deploy to activate.

📷 Screenshot 6: Extension Deployment and Activation Screen


📊 Extension Lifecycle

Create → Validate → Deploy → Test → Monitor

Always test in TEST/UAT before Production.


⚠️ Best Practices

✔ Use modular scripts
✔ Avoid hardcoding values
✔ Use lookups
✔ Add error handling
✔ Maintain documentation
✔ Use version control


❌ Common Mistakes

❗ Not validating scripts
❗ Hardcoded org IDs
❗ Missing exception handling
❗ No performance testing


📈 Performance Tips

  • Avoid heavy loops

  • Minimize database calls

  • Cache lookup values

  • Use conditional logic


🔍 Monitoring & Troubleshooting

Navigate to:

Tools → Scheduled Processes → Diagnostic Logs

Check:

  • ESS logs

  • Extension logs

  • Error stack trace

📷 Screenshot 7: Diagnostic Logs and Troubleshooting Screen


📚 Interview Perspective (Bonus)

Q: Why use OM Extensions?

A: To implement custom business rules without modifying standard Fusion code.

Q: Which language is used?

A: Groovy scripting.

Q: Are extensions upgrade-safe?

A: Yes, Oracle supports extensions during upgrades.


🎯 Conclusion

Order Management Extensions in Oracle Fusion SCM are powerful tools to customize order processing and meet complex business requirements.

With proper design, testing, and governance, they can significantly improve operational efficiency.


✍️ About the Author

Akhil Sayed is an Oracle Fusion & OIC Consultant with hands-on experience in SCM, integrations, and cloud implementations.

For more Oracle tutorials, visit:
👉 https://knoworacleebs.blogspot.com


📢 Did you find this helpful?

Like, Share & Comment below!

Happy Learning! 🚀

Tuesday, February 3, 2026

Sample Document to Use OIC Lookup to pass the username and password from Lookup

 

Sample Document to Use OIC Lookup to pass the username and password from Lookup

 

Usecase : It is not advisable to pass the hardcoding , username and password in OIC integration.

Solution : We need to pass these values need to pass these values

From lookups.

 

Benefit of passing the Values from lookup is that , if some value changes we

need not make changes to OIC code , we can just update the lookup values.

 

And also of the OIC integration is migrated some other instance or if the password we have to change ,

We only need to update the lookup.

 

 

Sample Lookup design in OIC >

 

 

Now to use this in OIC mapping  , goto mapper

Ø Components > Functions > Integratoin Cloud > Lookup Value > Drag and drop to the Mapper

 

 

 

 

Now it will open a setup page

 

Select the Lookup Name

 

 

 

Select source and Target Columns.

 

 

Click Next ,and then next Done Close.

 

 

dvm:lookupValue('FUSION_DATA_SYNC', 'NAME', srcValuePlaceHolder, 'VALUE', '')

 

Update  srcvaluePlaceholder with the username > “BI_USERNAME”

 

It should look as below

dvm:lookupValue ("FUSION_DATA_SYNC", "NAME", "BI_USERNAME", "VALUE", "" )

 

 

 

 

 

Similar to pull password repeat the same step as above.

 

 

dvm:lookupValue('FUSION_DATA_SYNC', 'NAME', srcValuePlaceHolder, 'VALUE', '')

 

Update  srcvaluePlaceholder with the username > “BI_PASSWORD”

 

dvm:lookupValue ("FUSION_DATA_SYNC", "NAME", "BI_PASSWORD", "VALUE", "" )

 

 

 

Now validate and Close the Mapper .

 

And Save the Integration.

 

Now when the Integration runs the username and password will be pulled from lookups.

 

 

query to get Shipment number based on Order number

 SELECT DISTINCT     wnd.delivery_name,     wnd.actual_ship_date,     wdd.sales_order_number FROM     wsh_new_deliveries       wnd,     wsh_...

Popular Posts