Every Oracle HCM Cloud implementation has the same conversation: "Should we build this in OTBI or BI Publisher?" The answer is almost never "either one works." Each tool has a clear purpose, and using the wrong one creates reports that are harder to build, harder to maintain, and harder for end users to consume.
OTBI (Oracle Transactional Business Intelligence) is for interactive, ad-hoc analysis. BI Publisher is for formatted, pixel-perfect documents. That one-sentence distinction resolves 80% of the decision — but the remaining 20% is where teams waste weeks building reports in the wrong tool, then rebuilding them in the right one.
This guide explains the architecture behind both tools, provides a decision matrix for choosing between them, and shows concrete examples of when each tool is the right choice.
Quick Comparison Table
| Criteria | OTBI | BI Publisher |
|---|---|---|
| Primary Use | Ad-hoc analysis, dashboards, interactive exploration | Formatted documents, scheduled reports, compliance forms |
| Data Access | Pre-built subject areas (Logical SQL) | Direct SQL against HCM database tables |
| Query Language | OBIEE Logical SQL (non-standard syntax) | Standard Oracle SQL |
| Data Freshness | Real-time transactional data | Real-time (direct SQL) or scheduled |
| Output Formats | HTML, CSV, Excel, PDF (basic) | PDF, RTF, Excel, CSV, HTML, XML (pixel-perfect) |
| Scheduling | Basic (Oracle Analytics agents) | Advanced (bursting, conditional delivery, FTP) |
| Learning Curve | Lower for basic reports (drag-and-drop) | Higher (SQL + template design required) |
| Layout Control | Limited (tabular, pivot, chart) | Full pixel-perfect control (RTF/Excel templates) |
| Subqueries/UNIONs | Not supported in subject areas | Fully supported in SQL data models |
| Bursting | Not available | Built-in (split report by manager, department, etc.) |
What Is OTBI?
OTBI — Oracle Transactional Business Intelligence — is the ad-hoc reporting tool built into Oracle HCM Cloud. It runs on Oracle Analytics (formerly OBIEE) and lets you build reports by dragging columns from pre-built subject areas into a report canvas.
Subject areas are logical groupings of related data. For example, the Workforce Management - Worker Assignment Real Time subject area exposes columns like employee name, department, job, grade, manager, and hire date. You don't need to know which physical tables these columns come from or how to join them — the subject area handles that.
When OTBI Excels
- Self-service reporting — HR analysts can build their own reports without writing SQL
- Interactive dashboards — drill-down, filtering, and pivot tables in the browser
- Real-time data — queries execute against live transactional data, not a data warehouse
- Charts and visualizations — bar charts, pie charts, trend lines built into the editor
- Quick turnaround — simple reports can be built in minutes, not hours
OTBI Limitations
- Subject area boundaries — you can only use columns that exist in a subject area. If the data you need isn't exposed, you can't access it
- No subqueries or UNIONs — Logical SQL doesn't support standard SQL features like subqueries, CTEs, or UNION ALL
- Limited formatting — output is tabular or chart-based. No letter templates, no precise positioning
- Cross-subject-area joins are restricted — combining data from two subject areas that don't share a common dimension is difficult or impossible
- Logical SQL syntax — calculated fields use OBIEE's non-standard syntax (
TIMESTAMPDIFF, double-quoted column names), not standard Oracle SQL
What Is BI Publisher?
BI Publisher (BIP) is Oracle's enterprise reporting tool for producing formatted documents. It separates the data layer (SQL data models) from the presentation layer (RTF, Excel, or HTML templates). You write a SQL query to fetch data, design a template that controls the layout, and BI Publisher merges them at runtime.
In Oracle HCM Cloud, BI Publisher is used for system-generated documents like offer letters, pay slips, benefits enrollment summaries, and compliance reports. It's also the tool for any custom report that needs precise layout control or scheduled delivery.
When BI Publisher Excels
- Pixel-perfect documents — offer letters, tax forms, compliance reports with precise positioning
- Complex SQL — subqueries, UNIONs, CTEs, window functions, anything standard Oracle SQL supports
- Scheduled delivery — automated reports emailed daily/weekly/monthly
- Bursting — one report split into personalized copies (e.g., each manager gets only their team's data)
- Data from any table — not limited to subject areas. Query any HCM table directly
- Multiple output formats — same data model produces PDF, Excel, RTF, CSV, or XML
BI Publisher Limitations
- No interactive analysis — reports are static documents, not interactive dashboards
- Requires SQL knowledge — data models are written in SQL; no drag-and-drop
- Template design — RTF templates require the BI Publisher Template Builder plugin for Word
- Longer development time — building a BIP report takes hours or days, not minutes
- No real-time pivoting — end users can't re-slice data or drill down interactively
How They Access Data Differently
This is the most important concept for choosing between the two tools. OTBI and BI Publisher access the same Oracle HCM database, but through completely different paths.
OTBI: Subject Area → Logical Layer → Physical Tables
When you build an OTBI report, you select columns from a subject area. Behind the scenes, Oracle Analytics translates your column selections into Logical SQL, which the OBIEE server converts into physical SQL against the database. You never see or control the physical SQL — the logical layer handles joins, filters, and aggregations automatically.
Key implication: If a column doesn't exist in any subject area, OTBI cannot access it. There's no way to add custom columns to Oracle-delivered subject areas in SaaS. Your only option is to use BI Publisher instead.
BI Publisher: SQL Data Model → Physical Tables
BI Publisher data models contain standard Oracle SQL that queries the HCM database directly. You write SELECT statements against physical tables like PER_ALL_PEOPLE_F, PER_ALL_ASSIGNMENTS_M, and HR_ALL_ORGANIZATION_UNITS_F. You control the joins, filters, and date-effective logic yourself.
Key implication: With BI Publisher, you can query any table in the HCM schema. This includes tables that have no subject area representation in OTBI, such as setup tables, configuration data, and custom extensible flexfield (EFF) storage tables.
Decision Matrix: Which to Use When
| Requirement | Use This | Why |
|---|---|---|
| Headcount dashboard with filters | OTBI | Interactive, real-time, drag-and-drop |
| Offer letter with company logo | BI Publisher | Pixel-perfect layout with template |
| Monthly turnover trend chart | OTBI | Built-in charting, easy to update |
| Pay slip for every employee | BI Publisher | Bursting (one per employee), PDF format |
| Ad-hoc "who reports to whom" query | OTBI | Quick, no SQL needed, self-service |
| Query with subqueries or UNIONs | BI Publisher | OTBI Logical SQL doesn't support them |
| Compliance form (EEO-1, VETS-4212) | BI Publisher | Fixed layout, scheduled, formatted output |
| Manager self-service report | OTBI | Security-aware, interactive, no IT involvement |
| Data from tables not in subject areas | BI Publisher | Direct SQL access to all HCM tables |
| Report emailed to each dept head daily | BI Publisher | Bursting + scheduling built-in |
| Quick count of active employees by location | OTBI | 30-second report, no development needed |
| Audit trail of assignment changes | BI Publisher | Requires date-effective SQL across _F tables |
Rule of thumb: If the end user needs to interact with the data (filter, sort, drill down), use OTBI. If the end user needs to print, email, or file the output, use BI Publisher.
OTBI Example: Active Headcount by Department
This is a common OTBI report that takes about 5 minutes to build. The subject area handles all joins and date-effective filtering automatically.
Subject Area
Workforce Management - Worker Assignment Real Time
Columns Selected
- Department Name (from Department dimension)
- Worker Count (aggregated measure)
- Assignment Status Type = "ACTIVE" (filter)
Equivalent Logical SQL
SELECT
"Workforce Management - Worker Assignment Real Time"."Department"."Department Name",
COUNT("Workforce Management - Worker Assignment Real Time"."Worker"."Person Number")
FROM
"Workforce Management - Worker Assignment Real Time"
WHERE
"Workforce Management - Worker Assignment Real Time"."Assignment Details"."Assignment Status Type" = 'ACTIVE'
GROUP BY
"Workforce Management - Worker Assignment Real Time"."Department"."Department Name"
ORDER BY 2 DESC
Notice the double-quoted column references and the subject area name prefixing every column. This is OBIEE Logical SQL — it looks like SQL but follows different rules. You don't specify table joins; the logical layer resolves them.
BI Publisher Example: Offer Letter Data Model
This data model powers an offer letter template. It queries physical tables directly and provides all the data an RTF template needs to generate a personalized offer letter PDF.
SELECT
papf.first_name,
papf.last_name,
paam.position_id,
hapft.name AS position_name,
haouft.name AS department_name,
paam.normal_hours,
paam.frequency,
(SELECT pps.proposed_salary_n
FROM cmp_salary pps
WHERE pps.assignment_id = paam.assignment_id
AND pps.approved = 'Y'
AND ROWNUM = 1
ORDER BY pps.date_from DESC) AS salary,
gl.currency_code
FROM
per_all_people_f papf
JOIN per_all_assignments_m paam
ON paam.person_id = papf.person_id
AND TRUNC(SYSDATE) BETWEEN paam.effective_start_date AND paam.effective_end_date
AND paam.primary_flag = 'Y'
AND paam.effective_latest_change = 'Y'
AND paam.assignment_type IN ('E','C')
JOIN hr_all_positions_f_tl hapft
ON hapft.position_id = paam.position_id
AND hapft.language = USERENV('LANG')
AND TRUNC(SYSDATE) BETWEEN hapft.effective_start_date AND hapft.effective_end_date
JOIN hr_all_organization_units_f_tl haouft
ON haouft.organization_id = paam.organization_id
AND haouft.language = USERENV('LANG')
AND TRUNC(SYSDATE) BETWEEN haouft.effective_start_date AND haouft.effective_end_date
JOIN gl_ledgers gl
ON gl.ledger_id = paam.ledger_id
WHERE
TRUNC(SYSDATE) BETWEEN papf.effective_start_date AND papf.effective_end_date
AND papf.person_id = :p_person_id
Key differences from the OTBI version:
- Standard Oracle SQL — regular table names, explicit joins, standard functions
- Subquery — the salary lookup uses a correlated subquery, which OTBI cannot do
- Date-effective joins — you manually add
BETWEEN effective_start_date AND effective_end_date - Bind parameters —
:p_person_idis passed from the report at runtime - Translation joins —
_TLtables joined withlanguage = USERENV('LANG')
5 Common Mistakes When Choosing Between Them
1. Building a Formatted Document in OTBI
OTBI's PDF export produces a dump of the table or chart — not a formatted document. If the requirement includes a company logo, specific margins, headers/footers, or letter-style formatting, OTBI cannot deliver. Use BI Publisher.
2. Building an Interactive Dashboard in BI Publisher
BI Publisher produces static output. If managers need to filter by department, drill into a team, or change the time period interactively, BI Publisher forces them to re-run the report with new parameters each time. OTBI handles this interactivity natively.
3. Writing Standard SQL in OTBI
A common frustration: a developer writes a perfectly valid Oracle SQL query and tries to paste it into OTBI's advanced editor. It fails because OTBI uses Logical SQL, not standard SQL. Column names must be double-quoted, table references use subject area paths, and functions like NVL and DECODE are replaced by IFNULL and CASE. See our OTBI calculated fields guide for the correct syntax.
4. Ignoring Subject Area Coverage Before Starting
Before building any report, check whether the data you need exists in an OTBI subject area. If it does, OTBI is usually faster to build. If it doesn't, BI Publisher is your only option. Oracle documents subject area contents in the OTBI Subject Area Reference. Skipping this check leads to days of work in the wrong tool.
5. Not Using Date-Effective Filters in BI Publisher
Most HCM tables are date-effective — they store history with effective_start_date and effective_end_date columns. OTBI subject areas handle this automatically (they return current-effective rows by default). BI Publisher queries do not — you must add TRUNC(SYSDATE) BETWEEN effective_start_date AND effective_end_date to every date-effective table join. Forgetting this returns duplicate rows for every historical change.
Pro tip: For PER_ALL_ASSIGNMENTS_M, also add effective_latest_change = 'Y' to avoid duplicate rows from the merged assignment model. See our duplicate rows fix guide for details.
Using OTBI and BI Publisher Together
The best Oracle HCM reporting strategies use both tools for their strengths:
- OTBI for daily operations — managers check headcount dashboards, HR reviews open positions, analysts explore turnover trends interactively
- BI Publisher for formal outputs — offer letters generated per hire, compliance reports filed quarterly, pay slips distributed per pay period
- OTBI for discovery, BI Publisher for delivery — use OTBI to explore data and identify patterns, then build the formal report in BI Publisher for scheduled distribution
A practical example: an HR team uses an OTBI dashboard to monitor headcount changes in real time. When they spot an anomaly (unexpected terminations in one department), they drill into the OTBI data to understand the pattern. Once they have findings, they use a BI Publisher report to generate a formatted executive summary with charts, tables, and narrative — delivered as a PDF to leadership.
OTBI Template Pack
15 production-ready OTBI queries for headcount, assignments, compensation, and absence. Copy-paste into your reports — no syntax errors, no trial-and-error.
Get the OTBI Template Pack →Search 14,950+ Oracle HCM Tables
Find any table, understand its columns, explore relationships, and get SQL join examples. Save hours of documentation hunting.
Search Tables →Frequently Asked Questions
Can I embed an OTBI report inside a BI Publisher template?
No. OTBI and BI Publisher are separate tools with separate rendering engines. You cannot embed an OTBI visualization inside a BIP template. However, you can replicate the same data in a BIP data model and include a chart in your RTF template using BI Publisher's built-in charting syntax.
Which one is better for security-sensitive reports?
OTBI automatically applies Oracle HCM data security — managers only see their direct reports, HR sees everyone in their business unit. BI Publisher data models run with the report owner's privileges by default, which can expose data beyond the viewer's security scope. For BI Publisher, use bind parameters tied to the logged-in user's security context, or use OTBI subject areas as the data source (which preserves security).
Is OTBI being replaced by Oracle Analytics Cloud?
Oracle is investing heavily in Oracle Analytics Cloud (OAC) as the next-generation analytics platform. However, OTBI remains the embedded reporting tool within Oracle HCM Cloud SaaS. For on-premises or hybrid deployments, OAC may be the path forward. For pure SaaS HCM Cloud customers, OTBI continues to be the supported embedded analytics tool.
Can BI Publisher access OTBI subject areas?
Yes. BI Publisher data models support an "Oracle BI Analysis" data source type, which executes an OTBI analysis and uses its results as the data for a BIP report. This is useful when you want OTBI's automatic security and date-effective filtering but BI Publisher's formatting capabilities. The tradeoff is performance — this approach runs the OTBI query first, then passes results to BIP, which is slower than direct SQL.