When you rebuild an Oracle Fusion OTBI analysis in BI Publisher physical SQL, the first question is usually: which tables sit behind this subject area? That is a useful question, but it needs one important qualification. An OTBI subject area is not a database synonym and it rarely maps one-to-one to a single Fusion table.
Use this as a SQL reconstruction reference, not a physical-lineage map. OTBI sits on Oracle BI logical metadata, application reporting objects, subject-area-specific filters, security rules, hierarchies, calculations, and in some cases non-table runtime sources such as Essbase. The tables below are the objects SQL developers commonly use to reproduce the same business data in BI Publisher or FusionLens SQL.
The most reliable way to translate an OTBI analysis into SQL is to start with the subject area's documented transactional grain, then identify the physical tables needed for the attributes you selected. That distinction matters: a subject area may expose header, line, schedule, distribution, accounting, and dimension attributes while its measurable fact sits at only one of those grains.
How to Read the Mapping Tables
The presentation-layer business model selected by the report author.
The fact grain or runtime source Oracle documents for the subject area.
Tables or reporting extracts typically used when reconstructing the same business result with physical SQL.
HCM Subject Areas
| OTBI Subject Area | Oracle-Documented Grain | Common SQL Objects |
|---|---|---|
| Workforce Management - Worker Assignment Real Time | PER_ALL_ASSIGNMENTS_M; current as-of-date rows, EFFECTIVE_LATEST_CHANGE='Y' |
PER_ALL_ASSIGNMENTS_M, PER_ALL_PEOPLE_F, PER_PERSON_NAMES_F |
| Workforce Management - Position Real Time | HR_ALL_POSITIONS_F |
HR_ALL_POSITIONS_F; join assignments only when occupancy or worker context is required |
| Payroll - Payroll Run Results Real Time | PAY_RUN_RESULTS / PAY_RUN_RESULT_VALUES |
PAY_RUN_RESULTS, PAY_RUN_RESULT_VALUES, PAY_INPUT_VALUES_F, PAY_ELEMENT_TYPES_F |
| Workforce Management - Absence Real Time | ANC_PER_ABS_TYPE_ENTRIES |
ANC_PER_ABS_TYPE_ENTRIES, ANC_PER_ABS_ENTRIES, ANC_ABSENCE_TYPES_F |
| Compensation - Salary Details Real Time | CMP_SALARY, current salary by DATE_FROM/DATE_TO |
CMP_SALARY, PER_ALL_ASSIGNMENTS_M |
| Workforce Goals - Goal Status Overview Real Time | HRG_GOALS |
HRG_GOALS plus goal-plan/alignment tables when those dimensions are selected |
Two easy HCM mistakes: the payroll subject area is Payroll - Payroll Run Results Real Time, and the relationship between PAY_RUN_RESULTS and PAY_RUN_RESULT_VALUES is RUN_RESULT_ID — not PAYROLL_RELATIONSHIP_ID. Also, the current Goals family uses HRG_* objects; older-looking HRM_GOALS/HRM_GOAL_VERSIONS mappings should not be used as a generic Fusion goal model.
Finance Subject Areas
| OTBI Subject Area | Oracle-Documented Grain / Source | Common SQL Objects |
|---|---|---|
| General Ledger - Journals Real Time | GL_IMPORT_REFERENCES for imported subledger journals; otherwise journal-line grain |
GL_JE_BATCHES, GL_JE_HEADERS, GL_JE_LINES, GL_IMPORT_REFERENCES, GL_CODE_COMBINATIONS |
| General Ledger - Balances Real Time | Essbase at report runtime; Oracle notes that GL_BALANCES isn't used by this subject area at runtime |
GL_BALANCES + GL_CODE_COMBINATIONS are common physical-SQL equivalents, not the OTBI runtime source |
| Payables Invoices - Transactions Real Time | Invoice-distribution grain for its transaction fact | AP_INVOICES_ALL, AP_INVOICE_LINES_ALL, AP_INVOICE_DISTRIBUTIONS_ALL, POZ_SUPPLIERS, HZ_PARTIES |
| Payables Payments - Disbursements Real Time | AP_PAYMENT_HIST_DISTS |
AP_CHECKS_ALL, AP_PAYMENT_HISTORY_ALL, AP_PAYMENT_HIST_DISTS, AP_INVOICE_PAYMENTS_ALL |
| Receivables - Transactions Real Time | Transaction-distribution grain | RA_CUSTOMER_TRX_ALL, RA_CUSTOMER_TRX_LINES_ALL, RA_CUST_TRX_LINE_GL_DIST_ALL |
| Fixed Assets - Asset Transactions Real Time | FA_TRX_EXTRACT at asset transaction distribution-line grain |
FA_TRX_EXTRACT; deeper investigations may also use FA_ADDITIONS_B, FA_BOOKS, and transaction/distribution tables |
GL Balances is the classic mapping trap. A SQL developer can reproduce many balances with GL_BALANCES, but Oracle's General Ledger - Balances Real Time subject area is backed by the balances cube at runtime. Hierarchies, aggregation, currency/scenario dimensions, and cube behavior can therefore make a base-table SQL result differ from OTBI even when the numbers appear to come from the same business object.
Procurement and Receiving Subject Areas
| OTBI Subject Area | Model / Grain | Common SQL Objects |
|---|---|---|
| Procurement - Purchasing Real Time | Measures exist at PO line, schedule, and distribution grains | PO_HEADERS_ALL, PO_LINES_ALL, PO_LINE_LOCATIONS_ALL, PO_DISTRIBUTIONS_ALL |
| Procurement - Requisitions Real Time | Header, line, and requisition-distribution levels | POR_REQUISITION_HEADERS_ALL, POR_REQUISITION_LINES_ALL, POR_REQ_DISTRIBUTIONS_ALL |
| Procurement - Spend Real Time | Cross-procurement spend model; time is anchored to invoice date | AP_INVOICES_ALL, AP_INVOICE_LINES_ALL, AP_INVOICE_DISTRIBUTIONS_ALL, PO_DISTRIBUTIONS_ALL, supplier dimensions |
| Supplier - Supplier Real Time | Supplier profile/site dimensions; no anchoring date | POZ_SUPPLIERS, POZ_SUPPLIER_SITES_ALL_M, HZ_PARTIES |
| Receiving - Receipts Real Time | All receipt types, including interorganization transfers and PO receipts | RCV_SHIPMENT_HEADERS, RCV_SHIPMENT_LINES, RCV_TRANSACTIONS |
| Procurement - Procure To Pay Real Time | Cross-module model spanning requisitions, POs, receipts, and invoices | Use the appropriate POR_*, PO_*, RCV_*, and AP_* bridge tables at the required grain |
Don't carry E-Business Suite supplier naming into Fusion.
Current Fusion Procurement reporting uses POZ_SUPPLIERS and POZ_SUPPLIER_SITES_ALL_M, with supplier name commonly resolved through HZ_PARTIES. Also note the exact OTBI names: Procurement - Purchasing Real Time, Procurement - Spend Real Time, and Supplier - Supplier Real Time. Receiving subject areas live under the Receiving family, not Purchasing.
A Worker Assignment SQL Reconstruction Example
The SQL below is a practical physical-SQL reconstruction of the core current-assignment grain. It is not a claim that OTBI generates this SQL internally, and it intentionally does not force PRIMARY_FLAG='Y' because the Worker Assignment Real Time subject area can return multiple worker assignments.
SELECT
p.person_number,
n.display_name,
a.assignment_number,
a.assignment_type,
a.assignment_status_type,
a.business_unit_id,
a.organization_id,
a.position_id,
a.job_id,
a.location_id
FROM per_all_assignments_m a
JOIN per_all_people_f p
ON p.person_id = a.person_id
AND :p_as_of_date BETWEEN p.effective_start_date
AND p.effective_end_date
LEFT JOIN per_person_names_f n
ON n.person_id = a.person_id
AND n.name_type = 'GLOBAL'
AND :p_as_of_date BETWEEN n.effective_start_date
AND n.effective_end_date
WHERE :p_as_of_date BETWEEN a.effective_start_date
AND a.effective_end_date
AND a.effective_latest_change = 'Y'
AND a.assignment_type IN ('E', 'C', 'N', 'P');
Oracle documents those assignment-type and latest-change filters for the subject area. If your business report needs only the primary employee assignment, that is an additional business filter — for example ASSIGNMENT_TYPE='E' and PRIMARY_FLAG='Y' — not a generic OTBI mapping rule.
What the Common Fusion Suffixes Actually Tell You
_F — date-effective objectUsually carries EFFECTIVE_START_DATE and EFFECTIVE_END_DATE. Use the report's required as-of date. Do not assume every subject area anchors every _F object to SYSDATE.
_M — date-effective object that can retain multiple changes in a dayPER_ALL_ASSIGNMENTS_M is the classic example. Its key includes EFFECTIVE_LATEST_CHANGE and EFFECTIVE_SEQUENCE; EFFECTIVE_LATEST_CHANGE='Y' identifies the latest change for the day.
_B, _TL, _VL — base, translation, and view-layer patterns_TL objects commonly carry translated rows and a LANGUAGE column. _VL objects often present a convenient language-resolved view. These suffixes do not mean the object is automatically data-secured.
_ALL — do not infer security or organization scope from the suffixMany ERP/SCM _ALL tables contain rows for multiple business units or organizations, but the correct discriminator is table-specific: ORG_ID, PRC_BU_ID, REQ_BU_ID, LEDGER_ID, SET_OF_BOOKS_ID, and others. Check the object definition rather than the name.
Why Physical SQL Doesn't Match OTBI
Worker Assignment Real Time applies current effective-date and latest-change logic. Salary Details has its own current-salary rules. Other subject areas support history. There is no universal “OTBI always applies SYSDATE BETWEEN” rule.
OTBI transaction analysis duty roles and application data security can restrict what the user sees. A BI Publisher physical-SQL query against a raw database table does not automatically inherit those restrictions.
General Ledger - Balances Real Time reads from Essbase at runtime. Fixed Assets - Asset Transactions Real Time uses FA_TRX_EXTRACT, populated by the Extract Asset Reporting Data process.
OTBI can apply hierarchies, derived expressions, currency behavior, lookup meanings, and level-based aggregation. A column name that looks simple in the presentation layer may not correspond to one physical column.
Joining AP invoice headers to lines, distributions, payments, or PO matches multiplies rows by design. Reproducing OTBI means matching the subject area's fact grain first, then adding dimensions without unintentionally changing it.
OTBI vs BI Publisher Physical SQL
| Reporting Path | Data Model | Security Behavior |
|---|---|---|
| OTBI Analysis | Subject area / semantic model | Fusion reporting roles and application data-security rules can restrict the result |
| BI Publisher Physical SQL | Physical SQL against Fusion reporting database objects | Raw table access isn't automatically subject to Fusion data-security restrictions; use Oracle's secured list views/VPD-protected objects or documented security logic where required |
| FusionLens SQL | Physical SQL workflow for Oracle Fusion reporting | Same design responsibility applies: object choice, grain, predicates, and security model must be explicit |
Security is not just an ORG_ID filter.
Adding a Business Unit or ledger predicate can be necessary for report scope, but it does not reproduce Oracle's role-based data security. In HCM, Oracle provides Secured List Views for BI Publisher; selected PII tables are protected with VPD policies. Use the documented security mechanism for the object you are reporting.
A Practical OTBI-to-SQL Validation Workflow
- Identify the exact subject area name. Similar-sounding names often represent different grains and business models.
- Read Oracle's Transactional Grain and Time Reporting sections. These are more reliable than guessing from presentation-folder names.
- Identify the lowest fact grain used by your analysis. Header, line, schedule, distribution, payment distribution, and accounting distribution are not interchangeable.
- Build the physical SQL at that grain first. Add descriptive dimensions after the base row count is understood.
- Reproduce the as-of-date logic. For
_MHCM tables, consider latest-change/sequence semantics as well as effective dates. - Match security context intentionally. Don't use raw-table row counts as a security-equivalent benchmark against OTBI.
- Check non-table/reporting sources. Essbase cubes and reporting extract tables can make a direct table comparison invalid.
- Compare totals and row counts at the same grain. A mismatch after adding a one-to-many join may be correct multiplication, not an OTBI defect.
Move from OTBI Fields to Valid Fusion SQL Faster
Inspect Fusion tables, columns, data types, and relationships while rebuilding an OTBI analysis in SQL.
Test physical SQL against your Oracle Fusion connection and compare results with the OTBI analysis at the same grain.
Keep working versions of your OTBI-to-SQL conversions and revisit them without rebuilding the query from scratch.
Technical References
- Oracle HCM: Workforce Management - Worker Assignment Real Time
- Oracle HCM: Payroll - Payroll Run Results Real Time
- Oracle Financials: General Ledger - Journals Real Time
- Oracle Financials: General Ledger - Balances Real Time
- Oracle Financials: Payables Invoices - Transactions Real Time
- Oracle Procurement: Procurement - Purchasing Real Time
- Oracle Procurement: Descriptive Flexfields for Business Intelligence
- Oracle HCM: BI Publisher Secured List Views
Final Thoughts
The useful skill is not memorizing that one OTBI subject area “equals” one table. It is learning to identify the subject area's business grain, time behavior, security context, and reporting source — then building physical SQL that reproduces those rules deliberately.
Once you approach OTBI this way, mismatched row counts become much easier to diagnose. You can tell whether the difference comes from a wrong join, a date-effective row, a distribution-level fact, security, an extract process, a cube-backed measure, or simply a different reporting grain.
Related
For practical SQL examples across HCM, Financials, and Procurement, see the Oracle Fusion SQL Guide. For the security differences between OTBI and physical SQL, see Oracle Fusion SQL Security Explained.