Oracle Business Intelligence Enterprise Edition (OBIEE)¶
A migration reference for Solution Architects assessing a customer's OBIEE estate and mapping it to Databricks SQL, Lakeview dashboards, or a connected BI layer (Power BI, Tableau).
Platform Architecture¶
graph TD
subgraph Clients
Browser["Browser / Analytics Portal"]
EmbApp["Embedded Application"]
ScheduledEmail["Email / File Delivery"]
end
subgraph OBIEE_Server["OBIEE Server Tier"]
BI_Server["Oracle BI Server\n(OBIS — query engine)"]
Presentation["Oracle BI Presentation Services\n(Answers, Dashboards)"]
Publisher["Oracle BI Publisher\n(pixel-perfect reports)"]
Scheduler["Oracle BI Scheduler\n(iBot / job service)"]
ClusterCtrl["Oracle Process Manager\n(OPMN / WLS)"]
end
subgraph Metadata["Metadata & Repository"]
RPD["RPD Repository\n(.rpd — semantic layer)"]
WebCat["Web Catalog\n(catalog/ — dashboards, analyses)"]
PublisherRepo["BI Publisher Repository\n(templates, data models)"]
end
subgraph DataSources["Source Systems"]
RDBMS["Relational DBs\n(Oracle, SQL Server, etc.)"]
OLAP["OLAP / Essbase / TM1"]
Flat["Flat Files / XML"]
Cloud["Cloud Sources / JDBC"]
end
Browser --> Presentation
EmbApp --> Presentation
EmbApp --> Publisher
Presentation --> BI_Server
Publisher --> BI_Server
BI_Server --> RPD
BI_Server --> RDBMS
BI_Server --> OLAP
BI_Server --> Flat
BI_Server --> Cloud
Presentation --> WebCat
Publisher --> PublisherRepo
Scheduler --> Presentation
Scheduler --> Publisher
ClusterCtrl --> BI_Server
ClusterCtrl --> Presentation
ClusterCtrl --> Scheduler
Presentation --> ScheduledEmail
Publisher --> ScheduledEmail
Data Flow¶
flowchart LR
subgraph Sources["Source Systems"]
DB[("Relational DB\n/ Essbase / Files")]
end
subgraph Server["OBIEE Server"]
RPD["RPD Semantic Layer\n(logical SQL translation)"]
OBIS["BI Server\n(physical SQL generation)"]
PS["Presentation Services\n(render HTML / pivot)"]
BIP["BI Publisher\n(template + data bind)"]
SCHED["Scheduler\niBot / Delivery"]
end
subgraph Consumers
Portal["Analytics Portal\n(browser)"]
Email["Email Subscription"]
File["File Drop\n(FTP / shared drive)"]
EmbApp["Embedded App\n(GO URL / SSO)"]
end
DB -->|"JDBC / ODBC / native"| OBIS
OBIS --> RPD
RPD -->|"physical SQL"| OBIS
OBIS -->|"result set"| PS
OBIS -->|"result set"| BIP
PS -->|"HTML / XML"| Portal
PS -->|"HTML / XML"| EmbApp
BIP -->|"PDF / Excel / RTF"| Portal
BIP -->|"PDF / Excel / RTF"| SCHED
SCHED -->|"attachment / link"| Email
SCHED -->|"rendered file"| File
1. Ecosystem Overview¶
Oracle Business Intelligence Enterprise Edition (OBIEE) is Oracle's on-premises enterprise BI platform, built around a semantic layer that abstracts physical data sources into a logical business model. First released as Siebel Analytics, it became the dominant Oracle BI platform for over two decades. Its current Oracle-maintained successor is Oracle Analytics Server (OAS) for on-premises, and Oracle Analytics Cloud (OAC) for SaaS — both use the same core RPD-based architecture.
Where it fits: OBIEE sits in the enterprise reporting and governed analytics segment — competing historically with SAP BusinessObjects, IBM Cognos, and MicroStrategy. It is common in Oracle-heavy shops (EBS, Siebel, PeopleSoft, Fusion) because Oracle ships pre-built RPDs and content for its own applications.
Product variants:
| Variant | Delivery model | Key difference |
|---|---|---|
| OBIEE 11g | On-premises | WebLogic-based; most common legacy version |
| OBIEE 12c | On-premises | Updated UI (BICS-style), same RPD model |
| Oracle Analytics Server (OAS) | On-premises | Current Oracle-supported successor to 12c |
| Oracle Analytics Cloud (OAC) | SaaS (OCI) | Managed; same RPD + adds ML/augmented analytics |
| Oracle BI Applications (OBIA) | On-premises add-on | Pre-built content for Oracle ERP/CRM |
Why customers use it:
- Governed, semantic-layer-driven reporting in Oracle ERP environments
- Pixel-perfect operational reports via BI Publisher (invoices, financial statements)
- Ad-hoc analysis via Answers with the RPD hiding database complexity
- Scheduled delivery of reports to hundreds of recipients via iBots
- Dashboard portal for executives and operations teams
Key discovery questions to ask:
- How many analyses, dashboards, and BI Publisher reports exist? How many are actively used?
- How are reports consumed — Analytics Portal, scheduled email, file drops, embedded in Oracle EBS/Fusion?
- What data sources are connected — Oracle DB, SQL Server, Essbase, flat files, cloud?
- What version is running — OBIEE 11g, 12c, OAS, or OAC?
- Are any reports embedded in custom applications via GO URL or SSO tokens?
- Is scheduled delivery (iBots) business-critical? Who owns the distribution lists?
- How is row-level security enforced — RPD session variables, VPD, or BI Server security filters?
- Is there a pre-built Oracle application content pack (OBIA) deployed?
2. Component Architecture¶
| Component | Role | Migration Equivalent | SA Note |
|---|---|---|---|
| Oracle BI Server (OBIS) | Core query engine; translates logical SQL from the RPD into physical SQL against source DBs | Databricks SQL Warehouse | The semantic layer lives here — migrating it means rebuilding logical models in dbt, Databricks SQL, or a partner BI semantic layer |
| Oracle BI Presentation Services | Web application layer; serves the Analytics Portal (Answers + Dashboards) to browsers | Databricks SQL / Lakeview / Power BI Service | Hosts all interactive dashboards and ad-hoc analyses; stores artifacts in the Web Catalog |
| Oracle BI Publisher (BIP) | Separate pixel-perfect reporting engine; template-driven, output-format-agnostic | SSRS / Power BI paginated reports / custom ETL output | Often used for operational documents (invoices, GL reports) — these are a separate migration stream from dashboard content |
| BI Scheduler (iBot service) | Manages scheduled delivery: runs jobs, evaluates conditions, sends emails, drops files | Databricks Workflows + partner BI native scheduling | iBots can embed business logic (conditional delivery, dynamic recipient lists) — not just a cron job |
| RPD Repository (.rpd) | Binary file containing the entire semantic/metadata layer: physical, business, and presentation layers | Unity Catalog + dbt semantic layer / partner BI semantic model | The most migration-critical artifact — all logical column names, joins, hierarchies, and security filters live here |
Web Catalog (catalog/) |
File-system directory storing all analyses, dashboards, KPIs, prompts, and saved filters | Partner BI content store | Can be exported as a directory tree or via catalog manager — source of truth for all interactive content |
| BI Publisher Repository | File-system directory storing report templates (RTF, XSL), data models (.xdm), and layout files | Depends on target; SSRS for paginated, custom for documents | Separate from the Web Catalog; often overlooked in migrations |
| Oracle Process Manager (OPMN/WLS) | Process supervision and clustering — starts/stops BI components, manages WebLogic instances | Platform ops layer (not migrated; managed by Databricks/cloud) | Failure here takes down the entire stack; customers with manual OPMN restarts are a reliability risk |
3. Artifact Lifecycle¶
| Stage | What happens | Where | Artifact involved | Migration risk |
|---|---|---|---|---|
| Author | Developer builds logical model in BI Administration Tool (RPD editor); analyst builds analysis in Answers or creates Publisher report | Client (RPD tool) / Browser (Answers) / Desktop (BIP Layout Editor) | .rpd file; web catalog XML entries; Publisher template (RTF/XSL) + data model (.xdm) |
High — RPD semantic layer has no direct equivalent; must be rebuilt |
| Deploy / Publish | RPD uploaded to BI Server via Admin Tool or WLST script; Analyses/Dashboards saved directly to Web Catalog on server; Publisher content deployed to BIP repository | Server-side upload; Web Catalog written directly | .rpd binary; catalog directory structure; BIP repo files |
Medium — catalog can be exported/imported; RPD requires manual offline merge |
| Compile | BI Server reads RPD at startup and caches the logical-to-physical mapping in memory; no separate compile step for analyses | Server (BI Server startup) | In-memory RPD cache | Low — compile is implicit; risk is that RPD changes require BI Server restart |
| Execute | User opens dashboard → Presentation Services generates Logical SQL → BI Server translates to Physical SQL using RPD → executes against source DB → returns result set | Server (OBIS + source DB) | Logical SQL / Physical SQL | High — RPD join trees and aggregate navigation rules are implicit; must be made explicit in target |
| Render | Result set returned to Presentation Services → rendered as HTML pivot/chart in browser, or fed to BI Publisher → rendered as PDF/Excel/HTML | Server-side (Presentation Services / BIP) → streamed to client | HTML, PDF, Excel, RTF, CSV, XML | Medium — pixel-perfect Publisher output has no clean Databricks equivalent |
| Deliver | Portal: browser renders inline. Subscription: Scheduler (iBot) re-runs report on schedule, emails output or drops file. Embedded: GO URL used for app integration | Server (Scheduler) → Email server / file share; Browser (portal) | Email attachment / file on shared drive / inline HTML | High — iBot conditional delivery logic must be reengineered; GO URL embedding must be replaced |
SA Tip: Ask the customer whether their iBot subscriptions send a snapshot (cached output) or a fresh execution each time. Fresh-execution iBots at scale can hammer the source DB — and that load pattern must be replicated in the migration target or customers will notice.
4. Data Sources and Dataset Model¶
OBIEE manages data source connections centrally in the RPD. Physical connection pools are defined in the Physical layer, and all queries flow through the BI Server — analysts never write SQL directly against sources.
How connections work: - Connection pools are defined once in the RPD Physical layer (hostname, driver, credentials) - The Presentation layer exposes logical columns to analysts — no raw SQL visibility - Query generation happens inside OBIS: logical SQL → physical SQL per connection - BI Publisher has its own separate data model layer (.xdm) with independent JDBC connections
Dataset / query model: - Analyses are built by dragging logical columns from Subject Areas (Presentation layer) — no dataset concept; every analysis re-queries at render time - BI Publisher data models define named queries (SQL, stored procedures, web services) reused across templates - No shared "dataset" tier analogous to Power BI datasets or Tableau data sources
| Data Source Type | Frequency in customer estates | Migration Path | Risk |
|---|---|---|---|
| Oracle Database (EBS, Fusion, PeopleSoft) | Very high | Databricks SQL Warehouse with Unity Catalog tables federated from Oracle or replicated via ETL | High — stored procedure calls and Oracle-specific SQL functions require rewrite |
| Oracle Essbase / Hyperion | High (finance/planning shops) | Databricks Lakehouse + dbt models; no native Essbase support in Databricks | Critical — MDX queries and Essbase outline navigation must be rebuilt as dimensional models |
| SQL Server / DB2 / Teradata | Medium | Databricks SQL Warehouse (direct query or ETL-replicated) | Medium — standard SQL with some dialect differences |
| Flat Files / XML | Medium | Ingest to Delta Lake via ETL; Unity Catalog external tables | Low-Medium — file location stability is a risk |
| JDBC / ODBC generic | Low | Depends on source | Medium |
SA Tip: Essbase connections in the RPD are a critical blocker. OBIEE's MDX-to-Essbase integration is deeply native. If the customer uses Essbase for planning or consolidation, that is a separate migration workstream (Essbase → Databricks Lakehouse) that must be scoped independently.
Parameters and filters:
- Presentation Variables and Session Variables in RPD drive cascading filters and row-level security
- Dashboard Prompts pass values via Presentation Variables to filter columns in analyses
- Session variables (e.g. USER, GROUP) are set at login and used in security filters — these are the RLS mechanism
- Cascading prompts (parent prompt filters child prompt values) are common in financial dashboards — medium migration complexity in Power BI/Tableau, higher in Lakeview
5. Rendering and Delivery Model¶
| Delivery Mode | How it works | Business use case | Migration equivalent | Risk |
|---|---|---|---|---|
| Interactive Portal (Answers + Dashboards) | Browser loads HTML; prompts refresh via HTTP calls to Presentation Services | Ad-hoc analysis, executive dashboards | Databricks SQL dashboards / Lakeview / Power BI Service | Low-Medium |
| BI Publisher Portal | Publisher renders template against data model on demand; output streamed to browser | Operational documents: invoices, GL statements, payroll | Power BI Paginated Reports / SSRS / custom generation | High — pixel-perfect layout must be rebuilt in a template engine |
| iBot (Scheduled Delivery) | Scheduler re-runs analysis or Publisher report on cron schedule; emails output or writes to file share | Ops reports, exception alerting, daily snapshots | Databricks Workflows + partner BI native scheduling | Medium-High |
| Conditional iBot | iBot evaluates a "condition analysis" (row count > 0) before triggering delivery — sends only when data meets criteria | Exception-based alerting (e.g. "send only if overdue orders exist") | Databricks Workflows with conditional task logic | High — business logic embedded in delivery; must be re-expressed |
| Data-driven iBot (Bursting) | iBot iterates over a result set, sends personalized report version to each recipient with dynamic filters | Personalized regional/product reports to 100s of managers | Power BI data-driven subscriptions / custom orchestration | Critical — no direct Databricks-native equivalent; requires custom Workflows |
| GO URL (Embedded) | URL-based embedding with SSO token passes filters and renders report inside host application iFrame | Embedded reporting in Oracle EBS or custom portals | Power BI Embedded / Tableau Embedded / Databricks iFrame | High — GO URL parameter passing must be remapped to partner BI embed API |
| Agent / RSS Feed | Personalized alerts via RSS or portal inbox | Exception notification | Partner BI alerts / email | Low |
SA Tip: Data-driven iBot bursting is OBIEE's most-used enterprise delivery feature and has no clean single-step equivalent in Databricks. It requires either a Workflows loop or Power BI's data-driven subscription feature. Identify this early — it is often on the critical path for go-live sign-off.
6. Project Structure and Version Control¶
How artifacts are organized:
- RPD: A single binary file. All metadata for all subject areas lives in one file. Branching/merging requires the offline RPD merge tool (three-way merge). There is no Git-native workflow.
- Web Catalog: A directory tree under
$ORACLE_INSTANCE/bifoundation/OracleBIPresentationServicesComponent/coreapplication_obips1/catalog/. Folders map 1:1 to the portal folder hierarchy. Files are XML with.xanalytics,.xdash,.xpromptextensions. - BI Publisher: A separate directory tree under the BIP repository folder. Templates are RTF/XSL files; data models are
.xdmXML files.
Version control:
- OBIEE has no native version control. The RPD Admin Tool has a check-in/check-out model for multi-developer teams but stores history in Oracle MDS (metadata store DB) — not Git.
- Most customers version-control the RPD by periodically exporting and committing the
.rpdbinary — not diffable. - Web Catalog items are occasionally exported via Catalog Manager and stored as XML zip archives.
Environment promotion:
- RPD is promoted manually: export from Dev, import to QA/Prod via Admin Tool or WLST script (
uploadRPD) - Web Catalog is promoted via
CatalogManagerCLI tool (archive/unarchive) or by copying the catalog directory - No built-in pipeline; most shops have a manual checklist or a shell script wrapper
Key discovery question: Does the customer maintain source-controlled RPD files, or is the Production RPD the only copy? Many customers have no Dev/QA RPD — the production RPD is the source of truth.
SA Tip: If the customer's only complete RPD is in production, the migration inventory must start with an offline export. Treat the RPD as a database backup — get a copy before any discovery work begins.
7. Orchestration and Scheduling¶
Built-in scheduler (iBot / Oracle BI Scheduler):
- Cron-like scheduling with minute/hour/day/week/month triggers
- Jobs defined in the portal UI or via the iBot API
- Jobs can chain: one iBot can trigger another or depend on a preceding execution
- Scheduler service (coreapplication_obisch) must be running; failure silently drops jobs
Bursting (data-driven distribution): - A single job iterates over a query result set - For each row, it generates a personalized report version with filtered parameters - Delivers to each recipient's email from a dynamic list in the data - Business-critical in finance, retail, and distribution industries
External triggers: - Oracle BI Scheduler exposes a SOAP-based Job Manager API — can trigger jobs externally from ETL pipelines or cron - No REST API in OBIEE 11g/12c; OAC adds a REST API for job management
Migration target:
| OBIEE scheduling concept | Migration target |
|---|---|
| Simple scheduled analysis | Databricks Workflows (trigger partner BI refresh) / Power BI native schedule |
| Conditional iBot (run if condition met) | Databricks Workflows with conditional task + partner BI API |
| Bursting iBot | Databricks Workflows loop over result set + Power BI data-driven subscriptions |
| External SOAP trigger | Databricks Workflows REST API trigger / partner BI API |
SA Tip: Ask the DBA or platform team how many active iBot jobs exist and whether any run during business hours. OBIEE iBots that execute complex reports concurrently can cause significant load spikes — understanding this shapes the Databricks SQL warehouse sizing conversation.
8. Metadata, Lineage, and Impact Analysis¶
Where the catalog lives:
- RPD contents: accessible only via BI Admin Tool (GUI) or via offline XML export (bi-init.cmd + runcat.cmd on Windows, or biacm.sh on Linux). No queryable SQL table in standard installs.
- Web Catalog: File system directory — analyzable via Catalog Manager CLI or by parsing XML files
- Usage / audit: Oracle BI Server query log (nqquery.log) and usage tracking tables (if enabled)
Usage tracking (critical for inventory):
OBIEE has an opt-in Usage Tracking feature that writes every query execution to a relational database table. If enabled, this is the most valuable single artifact for scoping a migration.
-- Usage tracking table: S_NQ_ACCT (if usage tracking is enabled in RPD)
-- Count analyses by access in last 90 days
SELECT
SAW_SRC_PATH AS report_path,
COUNT(*) AS executions_90d,
MAX(START_DT) AS last_executed,
USER_NAME
FROM S_NQ_ACCT
WHERE START_DT >= SYSDATE - 90
GROUP BY SAW_SRC_PATH, USER_NAME
ORDER BY executions_90d DESC;
-- Identify reports not accessed in 90 days (candidates for decommission)
SELECT DISTINCT SAW_SRC_PATH
FROM S_NQ_ACCT
WHERE SAW_SRC_PATH NOT IN (
SELECT SAW_SRC_PATH FROM S_NQ_ACCT WHERE START_DT >= SYSDATE - 90
);
-- Data sources in use (physical table hits)
SELECT
QUERY_TEXT,
SAW_SRC_PATH,
PHYSICAL_QUERY_TEXT -- shows actual SQL sent to source DB
FROM S_NQ_ACCT
WHERE START_DT >= SYSDATE - 90
ORDER BY START_DT DESC;
iBot / schedule inventory:
-- Scheduler jobs (Oracle BI Scheduler tables — schema varies by install)
SELECT
JOB_ID,
JOB_NAME,
USER_NAME,
STATUS,
LAST_RUN_DATE,
NEXT_RUN_DATE,
DELIVERY_TYPE -- EMAIL, FILE, PRINTER
FROM S_NQ_JOB
ORDER BY NEXT_RUN_DATE;
Lineage:
- OBIEE has no built-in lineage UI in 11g/12c. OAC adds limited impact analysis.
- Lineage must be inferred by: (a) parsing the RPD Physical layer for source table references, (b) cross-referencing Web Catalog XML for subject area usage, (c) parsing PHYSICAL_QUERY_TEXT in usage tracking logs.
SA Tip: The single most valuable ask during discovery is "is usage tracking enabled and can we get a 90-day export from S_NQ_ACCT?" If yes, the entire migration scope — active vs. inactive reports, top users, data sources — falls out of a handful of SQL queries. If no, inventory must be done the hard way via catalog file parsing.
9. Data Quality and Governance¶
Row-level security (RLS):
OBIEE's RLS is implemented via RPD security filters — logical filters applied in the Business Model layer that reference Session Variables. For example:
- Session variable USER is set at login from a security initialization block (a SQL query run at login that loads variables from a DB table)
- A security filter in the RPD says: Region = VALUEOF(NQ_SESSION.USER_REGION)
- The BI Server appends this filter to every physical query — invisible to analysts
This is query-level filtering, not declarative RLS. Migration to Unity Catalog row filters requires externalizing this logic from the RPD and re-expressing it as ALTER TABLE ... SET ROW FILTER.
Column-level security: - Controlled in the Presentation layer of the RPD: columns can be hidden or made inaccessible per group - Not equivalent to true column masking — it's UI-level suppression, not query-level enforcement - Migration target: Unity Catalog column masks for true enforcement
Data freshness and caching: - Query cache: OBIEE BI Server has a built-in result set cache (configurable TTL). Queries hitting cache return instantly without touching the source DB. - Agent/iBot snapshots: iBots can store rendered report output — consumers see a snapshot, not a live query - No semantic-layer materialization: OBIEE doesn't pre-aggregate; it relies on aggregate tables in the source DB, navigated by aggregate navigation rules in the RPD
Custom code / scripting risks:
- Initialization blocks: SQL queries run at login to populate session variables — these are source-DB-specific and must be reproduced in the target's session/auth layer
- Evaluate() functions: OBIEE's escape hatch — embeds raw database-native SQL inside a logical expression (e.g. EVALUATE('NVL(%1,%2)', col1, col2)). These are non-portable and require rewrite.
- Write-back tables: Some OBIEE deployments enable write-back (analysts write values back to DB via the portal) — this is a non-standard pattern with no Databricks equivalent.
SA Tip: Ask specifically about
EVALUATE()usage in the RPD. It is common in Oracle EBS-based deployments where Oracle-specific functions are embedded. EveryEVALUATE()call is a migration blockers requiring manual SQL rewrite.
10. File Formats and Artifact Reference¶
RPD File (.rpd)¶
What it is: The Oracle BI Repository — a binary file containing the entire semantic layer: Physical layer (connections, tables), Business Model layer (joins, logical columns, metrics, hierarchies), and Presentation layer (subject areas, folders, columns visible to analysts).
| Property | Value |
|---|---|
| Created by | BI Administration Tool (desktop GUI) |
| Stored in | BI Server filesystem; uploaded to MDS/WLS on deployment |
| Contains | All metadata: connections, logical model, security filters, init blocks, variables |
| Human-readable | No (binary) — can be exported to XML with biacm CLI |
| Migration target | dbt semantic layer + Unity Catalog / Power BI semantic model / Tableau data source |
SA Tip: The RPD is the migration crown jewel. Treat it like a database schema export — get a copy on day one. Everything else in the estate is derived from it.
Web Catalog Artifacts¶
What they are: XML files stored in the catalog directory tree, each representing a single BI object.
| Extension | Artifact | Contains |
|---|---|---|
.xanalytics |
Analysis (report) | Column references, filters, table/chart layout |
.xdash |
Dashboard | Page layout, embedded analyses, prompts |
.xprompt |
Dashboard Prompt | Filter definitions, cascading dependencies |
.xscope |
Scope object | Saved filter set |
.xdashboardpages |
Dashboard page | Sub-page layout within a dashboard |
| Property | Value |
|---|---|
| Created by | Answers / Dashboard editor (browser) |
| Stored in | Catalog directory on Presentation Services server |
| Contains | Report layout, column bindings, filter/prompt definitions |
| Human-readable | Yes (XML) |
| Migration target | Power BI reports / Tableau workbooks / Lakeview dashboards |
SA Tip: Web Catalog files are human-readable XML — you can grep for data source names, column references, and filter logic without a running OBIEE instance. Useful for scoping even when the server is unavailable.
BI Publisher Data Model (.xdm)¶
What it is: XML file defining the data sources, queries, and parameters for a BI Publisher report.
| Property | Value |
|---|---|
| Created by | BI Publisher Data Model Editor (browser) |
| Stored in | BI Publisher repository (separate from Web Catalog) |
| Contains | JDBC data source ref, SQL query or stored procedure, parameters, bursting definitions |
| Human-readable | Yes (XML) |
| Migration target | Power BI Paginated data source / SSRS dataset / dbt model |
SA Tip: BIP data models often contain stored procedure calls or Oracle-specific SQL. These are the highest-rewrite-risk items in the Publisher migration stream.
BI Publisher Template (RTF / XSL-FO)¶
What it is: A Microsoft Word RTF file (or XSL-FO) used as a layout template for pixel-perfect report output.
| Property | Value |
|---|---|
| Created by | Template Builder for Word (Word add-in) / XSL editor |
| Stored in | BI Publisher repository alongside .xdm files |
| Contains | Page layout, field bindings (via BIP tags), conditional formatting |
| Human-readable | Yes (RTF/XSL text) |
| Migration target | Power BI Paginated Reports (.rdl) / SSRS / custom PDF generation |
SA Tip: RTF templates have no automated migration path. Each template must be manually recreated in the target tool. Count BIP templates separately from web catalog analyses — they are a distinct effort stream.
iBot / Agent Definition¶
What it is: A portal-stored object defining a scheduled delivery job (schedule, conditions, recipients, delivery format, content).
| Property | Value |
|---|---|
| Created by | Oracle BI Scheduler / Delivers UI |
| Stored in | Web Catalog (.xagent files) and Scheduler DB tables |
| Contains | Schedule (cron), condition analysis ref, recipient list, delivery profile (email/file), bursting query |
| Human-readable | Yes (XML in catalog) |
| Migration target | Databricks Workflows + partner BI native scheduling / Power BI data-driven subscriptions |
Quick Reference Summary¶
| Artifact | Extension / Location | Human-readable | Where stored | Migration target | Risk |
|---|---|---|---|---|---|
| BI Repository | .rpd |
No (binary) | BI Server filesystem / MDS | dbt + Unity Catalog / partner BI semantic model | Critical |
| Analysis | .xanalytics in catalog/ |
Yes (XML) | Web Catalog directory | Power BI report / Tableau workbook / Lakeview | Medium |
| Dashboard | .xdash in catalog/ |
Yes (XML) | Web Catalog directory | Power BI dashboard / Tableau | Medium |
| Dashboard Prompt | .xprompt in catalog/ |
Yes (XML) | Web Catalog directory | Power BI slicer / Tableau filter | Low |
| iBot / Agent | .xagent in catalog/ + Scheduler DB |
Yes (XML) | Web Catalog + Scheduler | Databricks Workflows + partner BI | High |
| BIP Data Model | .xdm |
Yes (XML) | BIP repository | Power BI Paginated dataset / SSRS | High |
| BIP Template | .rtf / .xsl |
Yes | BIP repository | Power BI Paginated (.rdl) / SSRS | Critical |
| Usage Tracking | S_NQ_ACCT DB table |
Yes (SQL) | Configured relational DB | Reference only — inventory source | N/A |
11. Migration Assessment and Artifact Inventory¶
Preferred inventory method: Usage tracking DB (S_NQ_ACCT) + Web Catalog CLI export.
Why not the UI: The Analytics Portal shows only items the logged-in user has permission to see. System folders, shared content owned by service accounts, and inactive content in deep folder trees are easily missed. Always use CatalogManager CLI or direct file system enumeration.
Catalog Manager CLI inventory:
# Export full catalog to a local directory (run on BI server)
catalogmanager.sh -cmd export \
-catalog /oracle/biee/user_projects/domains/bifoundation_domain/servers/bi_server1/tmp/catalog \
-outputPath /tmp/catalog_export
# Count analyses by type
find /tmp/catalog_export -name "*.xanalytics" | wc -l
find /tmp/catalog_export -name "*.xdash" | wc -l
find /tmp/catalog_export -name "*.xagent" | wc -l
Complexity scoring:
| Dimension | Low | Medium | High | Critical |
|---|---|---|---|---|
| Data source type | Single relational DB (Oracle, SQL Server) | Multiple relational sources | Essbase / MDX / stored procedures | Essbase + Oracle DB mixed joins in RPD |
| Query / dataset complexity | Simple subject area drag-drop | Custom SQL in analysis | Stored procedure calls via BIP | Essbase MDX hierarchies + RPD aggregate navigation |
| Parameter complexity | Static filters | Dashboard prompts with Presentation Variables | Cascading prompts | Data-driven bursting with dynamic recipient list |
| Custom code / scripting | None | Simple EVALUATE() | Multiple EVALUATE() with Oracle-specific functions | Write-back tables + EVALUATE() + custom auth |
| Nesting / drill-through | Flat dashboard | One level of drill-through | Multi-level drill + linked reports | BIP sub-templates + nested analyses + drills |
| Delivery complexity | Portal only | Scheduled email | Conditional iBots | Data-driven bursting to dynamic recipient list |
| Security model | Simple group-based access | Session variable RLS | Initialization blocks from DB | Multi-tenancy via VPD + custom init blocks |
Top 6 OBIEE-specific migration risks:
- Essbase / MDX dependency: RPD Physical layer connecting to Essbase is not replicated by any Databricks-native connector. Essbase must be decommissioned or bridged to a dimensional model first.
- RPD aggregate navigation: OBIEE automatically routes queries to pre-built aggregate tables based on the grain of the query. This optimization is implicit — it must be re-expressed explicitly (e.g. dbt materializations, Databricks SQL cached views).
- Data-driven iBot bursting: No single-step equivalent in Databricks or any standard BI tool. Requires custom orchestration.
- EVALUATE() and Oracle-specific SQL: Any
EVALUATE()call is a DB-native function embedded in the semantic layer — not portable. Must be identified and rewritten. - Session variable initialization blocks: RLS depends on DB queries run at login. These must be reproduced in the target's authentication/authorization layer (Unity Catalog row filters, Power BI RLS rules, etc.).
- BI Publisher pixel-perfect templates: No automated migration. Each RTF/XSL template must be manually rebuilt in the target tool. These are often the longest-tail items in the project.
Sample inventory query:
-- Master inventory from usage tracking + iBot table
-- Produces: path, type, last access, 90d executions, data source, has parameters, has subscriptions
SELECT
a.SAW_SRC_PATH AS report_path,
'Analysis' AS artifact_type,
MAX(a.START_DT) AS last_accessed,
COUNT(*) AS executions_90d,
a.DATA_SOURCE_INFO AS data_source,
CASE WHEN a.QUERY_TEXT LIKE '%NQ_SESSION%' THEN 'Y' ELSE 'N' END AS has_rls,
j.JOB_NAME AS schedule_name
FROM S_NQ_ACCT a
LEFT JOIN S_NQ_JOB j ON j.REPORT_PATH = a.SAW_SRC_PATH
WHERE a.START_DT >= SYSDATE - 90
GROUP BY a.SAW_SRC_PATH, a.DATA_SOURCE_INFO, a.QUERY_TEXT, j.JOB_NAME
ORDER BY executions_90d DESC;
12. Migration Mapping to Databricks¶
Core Concept Mapping¶
| OBIEE concept | Databricks / partner BI equivalent |
|---|---|
| RPD Physical layer | Unity Catalog external tables / Delta Lake tables (ETL-replicated) |
| RPD Business Model layer | dbt semantic layer / Power BI semantic model / Tableau data source |
| RPD Presentation layer (Subject Areas) | Power BI datasets / Tableau data sources published to server |
| Analysis (Answers report) | Databricks SQL dashboard / Lakeview dashboard / Power BI report |
| Dashboard | Power BI dashboard / Tableau dashboard / Databricks SQL dashboard |
| Dashboard Prompt (Presentation Variable) | Power BI slicer + field parameter / Tableau filter action |
| BI Publisher report | Power BI Paginated Reports / SSRS / custom PDF generation |
| BIP data model (.xdm) | Power BI Paginated dataset / Databricks SQL query / dbt model |
| iBot (simple schedule) | Databricks Workflows + Power BI native schedule |
| iBot (conditional) | Databricks Workflows conditional task |
| iBot (data-driven bursting) | Databricks Workflows loop + Power BI data-driven subscriptions |
| GO URL embedding | Power BI Embedded / Tableau Embedded / Databricks iFrame |
| Session variable RLS | Unity Catalog row filters + Power BI RLS / Tableau data source filters |
| Column-level suppression | Unity Catalog column masks |
| Aggregate navigation | dbt materializations / Databricks SQL cached queries |
| Query result cache | Databricks SQL result cache / partner BI import mode |
| Initialization blocks | Unity Catalog dynamic views + Power BI row-level security rules |
Data Sources → Databricks¶
| OBIEE source | Databricks migration path |
|---|---|
| Oracle DB (EBS, Fusion) | ETL replication to Delta Lake (Fivetran / Airbyte) → Unity Catalog |
| Oracle Essbase | Dedicated Essbase-to-Lakehouse migration workstream; export to flat files → Delta Lake |
| SQL Server | ETL replication or Databricks SQL Federation |
| Flat files / XML | Ingest to Delta Lake via Auto Loader / COPY INTO |
| JDBC generic | Databricks SQL Federation or ETL replication |
Security Mapping¶
| OBIEE mechanism | Databricks + partner BI equivalent |
|---|---|
| RPD security filter (session variable) | Unity Catalog ROW FILTER using CURRENT_USER() or group membership |
| Presentation layer column suppression | Unity Catalog column mask |
| Initialization block (DB-driven auth) | Unity Catalog dynamic view with group-based predicate |
| Application role → permission mapping | Databricks workspace groups + Unity Catalog grants |
Scheduling / Delivery Mapping¶
| OBIEE delivery | Migration target |
|---|---|
| Simple scheduled report (email PDF) | Power BI subscription / Tableau extract schedule + email |
| Conditional iBot | Databricks Workflows: task A checks condition → conditionally runs task B (trigger BI API) |
| Data-driven bursting | Databricks Workflows ForEach loop over result set → Power BI data-driven subscription |
| File drop (FTP / shared drive) | Databricks Workflows → write to ADLS / S3 / SFTP |
What Doesn't Map Cleanly¶
| OBIEE capability | Why it doesn't map | SA recommendation |
|---|---|---|
| RPD semantic layer (three-tier) | Power BI has a single semantic model; Tableau has a data source layer; neither has OBIEE's three-tier Physical/Business/Presentation architecture. The Business Model layer's implicit join pruning and aggregate navigation have no equivalent. | Rebuild as dbt semantic layer + partner BI certified dataset. Plan 3-6 months for RPD migration on large estates. |
| Data-driven iBot bursting | No modern BI tool has a single-click equivalent that matches OBIEE's bursting: iterate a query, personalize each output, deliver to a dynamic recipient list. Power BI data-driven subscriptions come closest but require Premium license and are paginated-report-only. | Design a Databricks Workflows loop that calls the partner BI API per recipient. Set expectations early — this is bespoke orchestration. |
| BI Publisher pixel-perfect layout | RTF template binding to XML data is a specialized output engine. No modern cloud BI tool offers equivalent word-processor-level layout control. | For truly pixel-perfect documents (invoices, regulatory reports), retain SSRS or move to a document generation tool (e.g. OpenText, Logi). Treat this as a separate migration track. |
| EVALUATE() / database-native SQL passthrough | EVALUATE() embeds raw database function calls in the semantic layer. There is no equivalent passthrough in dbt, Power BI DAX, or Tableau calc syntax. |
Identify every EVALUATE() in the RPD at discovery. Rewrite as standard SQL functions in dbt or native BI calc language. Each occurrence is a manual rewrite. |
| Write-back to source DB | OBIEE write-back allows analysts to enter values in the portal that are persisted to source tables. No standard BI tool supports this pattern. | Recommend a dedicated planning tool (Anaplan, Adaptive Insights) or a custom form layer backed by Databricks Delta. |
| Aggregate navigation | OBIEE's BI Server automatically routes queries to the correct aggregate table based on query grain using the RPD logical model. This is transparent to analysts. | Replicate with dbt materializations at multiple grains + Databricks SQL query routing logic. Requires explicit modeling work. |
13. Quick-Reference Cheat Sheet¶
| Topic | Key fact | SA question to ask |
|---|---|---|
| Report count heuristic | Large OBIEE estates: 500–5,000+ catalog items; typical active set is 20–40% of total | "Can we get a 90-day export from S_NQ_ACCT usage tracking?" |
| Where usage data lives | S_NQ_ACCT table in the usage tracking DB (if enabled); if not enabled, catalog file timestamps are the fallback |
"Is usage tracking enabled? What DB is it writing to?" |
| RPD access | Binary file — requires BI Admin Tool to open; exportable to XML via biacm CLI without a running server |
"Can we get an offline copy of the RPD for analysis?" |
| Top migration risk #1 | Essbase/MDX connections in the RPD have no Databricks native equivalent — separate workstream required | "Are any Subject Areas sourced from Essbase or Hyperion?" |
| Top migration risk #2 | Data-driven iBot bursting requires custom orchestration — no single-tool equivalent | "Which iBots use bursting with a dynamic recipient list?" |
| Top migration risk #3 | EVALUATE() calls in RPD = Oracle-specific SQL passthrough — each is a manual rewrite |
"Can the RPD admin search for EVALUATE() usage in the Business Model layer?" |
| Source control gap | Most OBIEE shops have no Git-based version control; Prod RPD is often the only copy | "Is there a Dev RPD? Where are RPD backups stored?" |
| BI Publisher scope | BIP reports are a separate migration track from Answers/Dashboards — count them separately | "How many BI Publisher reports exist vs. Answers analyses?" |
| Security blocker | Session variable initialization blocks are often the RLS mechanism — DB queries must be reproducible | "Can you share the initialization block SQL from the RPD?" |
| Encryption / access | RPD files can be password-protected; requires password to open offline | "Is the RPD password-protected? Who holds the password?" |