What bursting is
Bursting takes a report that contains data for many employees, customers, or business units, splits it into individual segments, and delivers each segment to the right recipient — via email, FTP, or the content server.
Example: a monthly payslip report runs once, generates one payslip PDF per employee, and emails each to the employee’s address. One BIP job, thousands of deliveries.
How bursting works
- The data model includes a bursting query that maps split key → delivery details
- BIP runs the main query
- The burst splits the XML output by the key column
- Each split section is formatted using the template and delivered per the bursting definition
Setting up a bursting query
In the data model, add a Bursting element with a SQL query:
SELECT
employee_id AS KEY,
employee_email AS EMAIL,
'PDF' AS TEMPLATE,
'Payslip_' || TO_CHAR(SYSDATE, 'YYYYMM') AS FILE_NAME,
'en-US' AS LOCALE,
'EMAIL' AS DELIVERY_CHANNEL,
'payslip@company.com' AS FROM_EMAIL,
'Your payslip for ' || TO_CHAR(SYSDATE, 'Month YYYY') AS SUBJECT
FROM hr_payslip_burst_v
WHERE payroll_period = :P_PERIOD
Delivery channels
BIP supports bursting to:
- Email: attach the rendered document or embed in email body
- FTP/SFTP: deliver files to a file server path
- Printer: print to a network printer
- Content Server (UCM): upload to Oracle’s document management system
- Fax: if a fax server is configured
Scheduling bursts
Configure bursting via the report properties → Bursting → enable. Schedule the report as an ESS job with the relevant parameters. The burst runs automatically.
Debugging burst failures
Common issues:
- Invalid email addresses in the burst query causing partial failures
- Missing data for some keys resulting in blank PDFs
- SMTP server configuration errors
Check the burst report’s job history in BI Publisher — it shows per-key delivery status and error details. Test with a small subset (ROWNUM < 5) before running full production bursts.
Conditional delivery
Use bursting query CASE logic to send different templates to different recipients:
CASE WHEN grade = 'EXEC' THEN 'EXEC_PAYSLIP_TEMPLATE'
ELSE 'STANDARD_PAYSLIP_TEMPLATE'
END AS TEMPLATE