OTBI vs BI Publisher: When to Use Which for Oracle HCM Reporting

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_id is passed from the report at runtime
  • Translation joins_TL tables joined with language = 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.