Oracle ERP and NetSuite

Oracle owns two very different ERP worlds: the enterprise suites (Fusion, EBS, JDE, PeopleSoft) and the cloud-native mid-market product (NetSuite). Different stacks, different job markets.


Oracle Fusion Cloud ERP

Oracle’s modern SaaS suite, and the main competitor to SAP S/4HANA in large enterprise.

Modules

Financials, Procurement, Project Portfolio Management, Risk Management, Supply Chain (SCM), Manufacturing, Maintenance, HCM (a separate but tightly linked suite), EPM (planning and consolidation).

Developer surface

Tool Purpose
BI Publisher Reports and printed documents. XML data model + RTF/Excel/eText templates
OTBI Oracle Transactional BI — self-service analytics over subject areas
FBDI File-Based Data Import — the CSV/Excel bulk load mechanism. You will use this constantly
ADFdi Excel add-in for desktop data entry
REST APIs The modern integration surface, per business object
SOAP web services Legacy but still used
OIC Oracle Integration Cloud — the iPaaS
VBCS Visual Builder Cloud Service — extension UIs
Groovy scripting Business rules and object functions in Application Composer
Application Composer No-code/low-code object and field extension
Sandboxes Where extensions are developed and published
Fast Formula Rules language, especially in HCM/Payroll

Key constraint: no direct database access in Fusion Cloud. You cannot write PL/SQL against the schema. Everything goes through BI Publisher, REST, or FBDI. This is a large adjustment for developers coming from EBS.

Extension model

Configure → Application Composer (fields, objects, rules) → sandbox → publish
Reports   → BI Publisher / OTBI
Integrate → REST + OIC
UI        → VBCS or Redwood extensions

Oracle E-Business Suite (EBS)

The legacy on-prem giant. Still an enormous install base, still hiring.

Developer stack

  • PL/SQL — the primary language; business logic lives in packages
  • Oracle Forms / Reports — the classic UI (being replaced)
  • Oracle APEX — modern web development on the same database
  • XML/BI Publisher — reports and documents
  • Workflow Builder — approvals
  • Concurrent programs — the batch job framework
  • Open Interface tables and APIs — the sanctioned data-load path

Key concepts

Concept Meaning
Multi-Org (MOAC) Operating units within one instance, with policy-based data access
Responsibility The security and menu container assigned to users
Concurrent program A scheduled/submitted batch job
Interface tables Staging tables you insert into; a standard import program validates and loads
Flexfields Key flexfields (the account code structure) and descriptive flexfields (custom fields)
CUSTOM.pll The sanctioned Forms personalisation hook

Flexfields deserve attention. The Accounting Flexfield defines the chart of accounts structure (company-department-account-product-intercompany segments). It’s Oracle’s dimension model and it’s everywhere in EBS reporting.

Never write directly to base tables. Use the public APIs or the interface tables. Direct inserts skip validation and business logic and will corrupt data — this is the number one EBS developer sin.


JD Edwards and PeopleSoft

Acquired products, still maintained, still with meaningful install bases.

JD Edwards EnterpriseOne — strong in manufacturing and distribution, mid-market to large. Development in the proprietary toolset (Object Management Workbench, event rules, business functions in C), with Orchestrator for modern integration and IoT.

PeopleSoft — dominant in HR and higher education/public sector. PeopleTools, PeopleCode, Application Engine, Integration Broker, Component Interfaces.

Both are niches with less competition and steady demand from customers who aren’t moving.


NetSuite

Oracle’s cloud-native mid-market ERP. Founded 1998 (before “SaaS” was a word), acquired 2016, run largely independently. The best-documented, most developer-friendly of the mainstream ERPs.

Why developers like it

  • Truly multi-tenant SaaS from the start
  • JavaScript, not a proprietary language
  • Excellent documentation and a genuine developer community
  • Free developer accounts
  • A real IDE experience (VS Code with the SuiteCloud extension)
  • SuiteQL gives you SQL-like querying

The SuiteCloud platform

Component Purpose
SuiteScript 2.1 JavaScript (ES2019+) for server and client logic
SuiteQL SQL-like queries against NetSuite records
SuiteTalk SOAP and REST web services
SuiteFlow Point-and-click workflow builder
SuiteBuilder Custom records, fields, forms — no code
SuiteBundler Package and deploy customisations between accounts
SDF SuiteCloud Development Framework — file-based projects, source control, CI/CD
SuiteAnalytics Saved searches, datasets, workbooks

SuiteScript types

Type Runs when
User Event Before/after a record is submitted — the main server-side hook
Client In the browser: field changes, validation, sublist events
Scheduled On a schedule
Map/Reduce Large-volume processing with governance-aware chunking
Suitelet Custom pages and endpoints
RESTlet Custom REST APIs
Portlet Dashboard components
Mass Update Bulk record updates
Workflow Action Called from SuiteFlow
/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 */
define(['N/record', 'N/query'], (record, query) => {

  const beforeSubmit = (context) => {
    if (context.type !== context.UserEventType.CREATE) return;

    const so = context.newRecord;
    const customerId = so.getValue({ fieldId: 'entity' });

    const results = query.runSuiteQL({
      query: `SELECT SUM(amount) AS total
                FROM transaction
               WHERE entity = ? AND status = 'Open'`,
      params: [customerId]
    }).asMappedResults();

    const exposure = results[0]?.total || 0;
    if (exposure > 500000) {
      so.setValue({ fieldId: 'custbody_credit_review', value: true });
    }
  };

  return { beforeSubmit };
});

Governance — the thing that catches everyone

NetSuite meters script execution in governance units:

record.load()      10 units
record.save()      20 units
search.run()       10 units
query.runSuiteQL()  10 units

User Event script budget:  1,000 units
Scheduled script budget:  10,000 units
Map/Reduce:               10,000 units per stage, with yielding

Exceed it and the script is terminated mid-execution. This is why Map/Reduce scripts exist — they checkpoint and reschedule automatically. Any bulk operation over a few hundred records must be Map/Reduce, not a scheduled script with a loop.

Governance discipline is the defining NetSuite skill: batch your operations, use search/SuiteQL instead of loading records, use record.submitFields() (10 units) instead of load-modify-save (30 units) when updating a few fields.

Learning path

1. Free developer account + SuiteAnswers (the knowledge base)
2. Record types, fields, and the data model
3. Saved searches and SuiteQL
4. SuiteScript 2.1: User Event and Client scripts
5. Governance and Map/Reduce
6. Suitelets and RESTlets
7. SDF, source control, and CI/CD
8. SuiteBundles and deployment across accounts

3–6 months to productive if you already know JavaScript. By far the fastest ramp of the major ERPs.

Certifications

  • SuiteFoundation (the baseline)
  • NetSuite Certified Developer
  • Administrator, ERP Consultant, SuiteAnalytics

Choosing between them

If you want Pick
Large enterprise, public sector, high rates, Oracle shops Fusion Cloud or EBS
Deep PL/SQL and database work EBS
JavaScript, fast ramp, mid-market, US-heavy NetSuite
A niche with less competition JD Edwards or PeopleSoft
HR/higher education specialisation PeopleSoft

Next