A complete end-to-end tutorial for creating, deploying, and integrating Jasper Reports in Finacle Core Banking System. This repository contains a working example of a Loan Recovery Details Report with full documentation covering the entire workflow from design to deployment.
Based on 12+ years of production experience implementing 300+ reports across 300+ branches serving 2.1M+ customer accounts.
- Design Phase - Creating reports in iReport Designer using SPBx Proc framework
- Stored Procedure - PL/SQL backend integration with Finacle
- Backend Deployment - Unix/Linux deployment via Putty (chmod, deploy scripts)
- Frontend Integration - Finacle menu configuration (FINRPTC, FINRPT)
- Access Management - Role-based report access control
- Testing & Troubleshooting - Verification and common issues
- Purpose: Display detailed loan recovery transactions for customers
- Type: Finacle SPBx Stored Procedure Report
- Orientation: Landscape (A4 - 1417x842 pixels)
- Framework: Custom SPBx Proc with Finacle integration
- Bank: ABC Bank (sample/template)
- 12 Data Fields: Customer details, loan account info, recovery breakdown
- Financial Breakdown: Principal, Interest, Charges, Total amounts
- Date-based Filtering: Transaction date parameter
- Customer-specific: Filter by Customer ID
- Professional Layout: Table format with borders and headers
- Bank Branding: Header with bank name and report title
P_Cust_id : Customer ID (Number)
P_Tran_date : Transaction Date (Date)
1. Rownum - Serial number
2. Cust_id - Customer identification
3. Account_No - Loan account number
4. Name - Customer name
5. Asset_code - Asset/Product code
6. Asset_desc - Asset description
7. Tran_amt - Transaction amount
8. Charges - Charges applied
9. Interest - Interest amount
10. Principle - Principal amount
11. Offlow_amt - Outflow amount
12. Adj_date - Adjustment date
finacle-jasper-reports-tutorial/
├── README.md # This file
├── LICENSE # MIT License
│
├── 01_example_report/ # Working Example
│ ├── LOAN_RECOVERY_DETAILS2001.jrxml # Complete report file
│ ├── report_overview.md # Detailed explanation
│ └── sample_output.pdf # Expected output
│
├── 02_stored_procedure/ # Backend Code
│ ├── FINPACK_DMD_FLOWS.sql # Package specification
│ ├── FINPROC_DMD_FLOWS.sql # Stored procedure
│ ├── sample_tables.sql # Sample schema
│ └── test_data.sql # Dummy test data
│
├── 03_deployment/ # Deployment Scripts
│ ├── deploy_finrpt.sh # Deployment script
│ ├── chmod_commands.txt # File permissions
│ ├── directory_structure.txt # Server paths
│ └── deployment_guide.md # Step-by-step guide
│
├── 04_finacle_configuration/ # Frontend Setup
│ ├── finrptc_setup.md # Menu FINRPTC guide
│ ├── role_assignment.md # Access control
│ └── testing_procedure.md # FINRPT testing
│
├── 05_design_tutorial/ # iReport Designer
│ ├── step_by_step_guide.md # Complete tutorial
│ ├── ireport_setup.md # Tool installation
│ ├── spbx_proc_framework.md # Framework explanation
│ └── design_best_practices.md # Tips and tricks
│
├── screenshots/ # Visual Documentation
│ ├── 01_ireport_wizard.png
│ ├── 02_spbx_selection.png
│ ├── 03_stored_procedure_mapping.png
│ ├── 04_field_configuration.png
│ ├── 05_report_layout.png
│ ├── 06_putty_deployment.png
│ ├── 07_finrptc_configuration.png
│ ├── 08_role_assignment.png
│ └── 09_final_report_output.png
│
├── templates/ # Reusable Templates
│ ├── blank_finacle_report.jrxml # Starting template
│ ├── report_header_template.jrxml # Standard header
│ └── stored_procedure_template.sql # SP structure
│
└── docs/ # Additional Docs
├── finacle_report_configuration_guide.md # Original PDF converted
├── prerequisites.md # Requirements
├── troubleshooting.md # Common issues
├── glossary.md # Technical terms
└── best_practices.md # Production tips
- iReport Designer 5.6.0 or Jaspersoft Studio
- Oracle Database with Finacle schema access
- Putty or SSH client for server access
- Finacle CBS user credentials with report access
- Basic knowledge of PL/SQL and Jasper Reports
git clone https://github.com/Bhushanv05/jasper-reports-banking.git
cd jasper-reports-banking- Launch iReport Designer or Jaspersoft Studio
- Open
01_example_report/LOAN_RECOVERY_DETAILS2001.jrxml - Configure database connection
- Preview the report
Follow the documentation in sequence:
- Read
05_design_tutorial/step_by_step_guide.md - Review
02_stored_procedure/for backend code - Check
03_deployment/deployment_guide.mdfor deployment - Configure frontend using
04_finacle_configuration/
Plugin → Report Wizard
Choose: Custom → SPBx proc
Select: Target Database Connection
Choose: Template Layout
Settings Tab → Enter Report Name: LOAN_RECOVERY_DETAILS2001
Data Fields → ADD Fields
Query Wizard → Select Database
Find Object → Search: FINPACK_DMD_FLOWS.FINPROC_DMD_FLOWS
Next → ADD Input Parameters (P_Cust_id, P_Tran_date)
Finish → Generates .jrxml file
Plugin → Report Option → Tables
Select All → Map fields → OK
Database Option → Remove Custom
Right-click Static Text → Transform to TextField
# Login to Finacle server via Putty
ssh username@finacle-server-ip# Directory structure
cd SCR
cd ../
cd JRXML
cd Jasper
cd Rpt# Upload your .jrxml file to the Rpt directory
# Using SCP, WinSCP, or FTP# Give execution permissions
chmod 755 LOAN_RECOVERY_DETAILS2001.jrxml# Run deployment script
./deploy_finrpt.com LOAN_RECOVERY_DETAILS2001Navigate to: Menu FINRPTC
Select: ADD
Enter Details:
- Jasper Name: LOAN_RECOVERY_DETAILS2001 (exact filename)
- Template Desc: Loan Recovery Details Report
- Report Category: Loan Reports
Save
ADD Role-id
Select: User roles who can access this report
Assign: Branch users, Managers, etc.
Save
Navigate to: Menu FINRPT
Search: LOAN_RECOVERY_DETAILS2001
Test: Enter parameters and generate report
<textFieldExpression class="java.lang.String">
<![CDATA["ABC Bank"]]>
</textFieldExpression>Change "ABC Bank" to your actual bank name in the Title band.
pageWidth="1417" <!-- A4 Landscape width -->
pageHeight="842" <!-- A4 Landscape height --><font pdfFontName="Helvetica-Bold" size="14" isBold="true"/>The report uses Finacle's SPBx (Stored Procedure Box) framework:
{call FINPACK_DMD_FLOWS.FINPROC_DMD_FLOWS(
$P{FIN_INP_STR}, -- Input parameters concatenated
$P{FIN_OUT_RETCODE}, -- Return code (success/failure)
$P{FIN_OUT_REC} -- Output record set
)}// Input parameters are concatenated
$P{FIN_INP_STR} = $P{P_Cust_id} + "!" + $P{P_Tran_date}Fields are accessed by index from stored procedure output:
<field name="Cust_id" class="java.lang.String">
<fieldDescription><![CDATA[1]]></fieldDescription>
</field>- Use descriptive report names (avoid spaces)
- Always test with sample data first
- Follow consistent naming conventions
- Add proper headers and footers
- Use page numbering for multi-page reports
- Optimize SQL queries for performance
- Handle null values properly
- Add proper error handling
- Use indexed columns in WHERE clauses
- Test with large datasets
- Verify filename matches exactly (case-sensitive)
- Check file permissions (chmod 755)
- Test in development before production
- Keep backup of working reports
- Document all changes
- Use clear, descriptive Template Desc
- Assign appropriate role-based access
- Test with different user roles
- Verify parameter prompts work correctly
- Check output format (PDF/Excel/CSV)
Solution:
- Verify filename in FINRPTC matches deployed file exactly
- Check role assignment - user must have access
- Refresh Finacle cache
- Check deployment logs for errors
Solution:
- Verify procedure exists in database
- Check schema name and procedure name spelling
- Grant execute permissions to Finacle user
- Test procedure independently in SQL Developer
Solution:
- Check parameter names match stored procedure
- Verify parameter data types
- Check @DBQUERY annotations
- Test with hard-coded values first
# Solution: Set correct permissions
chmod 755 filename.jrxml
# Or for directory
chmod -R 755 directory_name/Solution:
- Verify stored procedure returns data
- Check field mappings are correct
- Test SQL query independently
- Check for null value handling
- Verify date formats match
- Finacle CBS Documentation
- Jasper Reports Community
- iReport Designer Guide
- Oracle PL/SQL Documentation
- Finacle Report Framework
- SPBx Stored Procedures
- Jasper Report Design Patterns
- Oracle Performance Tuning
- Unix/Linux Administration
Contributions are welcome! Whether you have:
- Additional report examples
- Improved stored procedures
- Better design templates
- Documentation improvements
- Bug fixes or enhancements
How to Contribute:
- Fork the repository
- Create feature branch (
git checkout -b feature/NewFeature) - Commit changes (
git commit -m 'Add NewFeature') - Push to branch (
git push origin feature/NewFeature) - Open a Pull Request
Author: Bhushan R Chougule
Role: Core Banking Solution Architect | Finacle Specialist
- Email: chougulebhushan@gmail.com
- LinkedIn: linkedin.com/in/bhushanv05
- GitHub: github.com/Bhushanv05
- Portfolio: View Projects
This project is licensed under the MIT License - see LICENSE file for details.
- Finacle CBS Platform by EdgeVerve Systems
- Jaspersoft Community for excellent reporting tools
- ABC Bank for the implementation experience (name changed for privacy)
- Oracle Database documentation
- Open-source community contributors
- Based on: 12+ years of Finacle CBS experience
- Production Reports: 300+ reports deployed
- Users Served: 2.1M+ customer accounts
- Branches: 300+ branch deployment
- Performance: Sub-second report generation
- Accuracy: 99.97% data accuracy
Made with dedication for the Finacle CBS & Banking Community
"Empowering banking professionals with practical, production-ready solutions"