Birla Corporation Limited

PF Unified Reporting & Dashboard - Technical Strategy Document
Prepared by: Yutitech Innovations Pvt. Ltd. | Date: January 2026 | Version: 2.0

Table of Contents

1. Solution Architecture
Objective: Consolidate PF data from 6 manufacturing plants into a single unified reporting database.

1.1 High-Level Architecture

flowchart LR subgraph SOURCE["SOURCE SYSTEMS"] S1[("Satna")] S2[("BJM")] S3[("Chittore")] S4[("Corporate")] S5[("Durgapur")] S6[("MPBPF")] end subgraph ETL["ETL LAYER"] E1[Extract] E2[Transform] E3[Load] end subgraph TARGET["UNIFIED SCHEMA"] T1[(UNI_PF)] end subgraph REPORT["APACHE SUPERSET"] R1[Member 360] R2[Contributions] R3[Loans] R4[Settlements] end S1 & S2 & S3 & S4 & S5 & S6 --> E1 E1 --> E2 --> E3 --> T1 T1 --> R1 & R2 & R3 & R4

1.2 Plant-wise Source Summary

Plant Schema Key Tables Status
Satna DEVFND2025 PFUND_CONT_MAS, CONTR_PFDTL, LOAN_APP, SETTLE_AC ✅ DDL Available
BJM DEVFND2025 Same as Satna (shared schema) ✅ Using Satna DDL
Chittore DEVPFS PFBAL, PAYYTDPF, LOANSMAS, VOUCHMAIN ✅ DDL Available
Corporate DEVFND2025 Same as Satna (assumed) ⚠️ Using Satna as Reference
Durgapur DEVPAY0001 PFBAL, PFTRN, PFMASTER ⚠️ Metadata Only
MPBPF (Trust) MPBPF PF_MEMBER_MAS, PF_CONT, PF_NOMINEE_MAS ✅ DDL Available
📝 Notes on Source Schemas:
  • BJM: Uses the same DEVFND2025 schema structure as Satna. Satna DDL will be used as reference.
  • Corporate: Schema not available. Assuming same structure as Satna (DEVFND2025). Will be validated during discovery.
  • Durgapur: Only metadata available (table names, column names). Detailed DDL pending. Will be mapped based on available metadata.

1.3 Low-Level Data Flow (ETL Detail)

flowchart TD subgraph EXTRACT["EXTRACTION"] EX1[DB Link to Satna] EX2[DB Link to Chittore] EX3[DB Link to MPBPF] EX4[DB Link to Durgapur] end subgraph STAGE["STAGING"] ST1[STG_MEMBER] ST2[STG_CONTRIBUTION] ST3[STG_LOAN] end subgraph TRANSFORM["TRANSFORMATION"] TR1[Standardize Codes] TR2[Generate Keys] TR3[Validate DQ Rules] end subgraph LOAD["LOADING"] LD1[MERGE Master Tables] LD2[INSERT Transaction Tables] end EX1 & EX2 & EX3 & EX4 --> ST1 & ST2 & ST3 ST1 & ST2 & ST3 --> TR1 --> TR2 --> TR3 TR3 --> LD1 & LD2
2. Target Schema Design (Detailed ERD)

2.1 Complete Entity Relationship Diagram

erDiagram PLANT_MASTER { number PLANT_ID PK varchar PLANT_NAME varchar PLANT_CODE UK varchar LOCATION varchar DB_SCHEMA varchar STATUS } DEPARTMENT_MASTER { number DEPT_ID PK number PLANT_ID FK varchar DEPT_CODE varchar DEPT_NAME } DESIGNATION_MASTER { number DESIG_ID PK number PLANT_ID FK varchar DESIG_CODE varchar GRADE } LOAN_REASON_MASTER { number REASON_ID PK varchar REASON_CODE UK varchar DESCRIPTION varchar LOAN_TYPE } INTEREST_RATE_MASTER { number RATE_ID PK varchar FIN_YEAR UK number EPF_RATE number VPF_RATE } BANK_MASTER { number BANK_ID PK varchar BANK_NAME varchar IFSC_PREFIX } MEMBER_MASTER { number MEMBER_ID PK number PLANT_ID FK varchar EMP_CD UK varchar PF_NO UK varchar FPS_NO varchar UAN_NO UK varchar FULL_NAME date DOB date DOJ date DOL varchar GENDER varchar FATHER_HUSBAND_NAME varchar MARITAL_STATUS varchar BANK_AC_NO varchar BANK_IFSC varchar STATUS varchar SOURCE_TABLE number ETL_BATCH_ID } NOMINEE_MASTER { number NOMINEE_ID PK number MEMBER_ID FK number SEQ_NO varchar NOMINEE_NAME varchar RELATION number SHARE_PERCENT date DOB varchar GUARDIAN_NAME } CONTRIBUTION { number CONTRIB_ID PK number MEMBER_ID FK number PLANT_ID FK varchar FIN_YEAR number YYMM date CONTRIB_DATE number PF_SALARY number EMP_CONTRIB number CO_CONTRIB number VPF_CONTRIB number PENSION_CONTRIB number LOAN_INST number LOAN_INT varchar STATUS } BALANCE { number BALANCE_ID PK number MEMBER_ID FK varchar FIN_YEAR number OP_BAL_EMP number OP_BAL_CO number CUR_CONT_EMP number CUR_CONT_CO number INT_EMP number INT_CO number CL_BAL_EMP number CL_BAL_CO } LOAN { number LOAN_ID PK number MEMBER_ID FK number REASON_ID FK number LOAN_SERIAL varchar LOAN_TYPE date APP_DATE number APP_AMOUNT date SANC_DATE number SANC_AMOUNT number INST_AMOUNT number INST_COUNT number OUTSTANDING varchar STATUS } LOAN_REPAYMENT { number REPAY_ID PK number LOAN_ID FK number YYMM number INST_AMOUNT number PRINCIPAL number INTEREST number BALANCE_AFTER } SETTLEMENT { number SETTLE_ID PK number MEMBER_ID FK date SETTLE_DATE varchar SETTLE_TYPE number EMP_SHARE number CO_SHARE number INT_SHARE number VPF_SHARE number PENSION_SHARE number NET_PAYABLE varchar STATUS } TRANSFER { number TRANSFER_ID PK number MEMBER_ID FK varchar TRANSFER_TYPE date TRANSFER_DATE number AMOUNT_EMP number AMOUNT_CO varchar FROM_TRUST varchar TO_TRUST } VOUCHER { number VOUCHER_ID PK number PLANT_ID FK varchar VOUCHER_NO date VOUCHER_DATE varchar VOUCHER_TYPE varchar NARRATION number DEBIT_TOTAL number CREDIT_TOTAL } LEDGER_ENTRY { number ENTRY_ID PK number VOUCHER_ID FK varchar ACCOUNT_CODE varchar ACCOUNT_NAME number DEBIT number CREDIT varchar NARRATION } INTEREST_CALCULATION { number INT_CALC_ID PK number MEMBER_ID FK varchar FIN_YEAR number RATE_ID FK number OP_BAL number INTEREST_AMT date POSTED_DATE } BONUS_CONTRIBUTION { number BONUS_ID PK number MEMBER_ID FK varchar FIN_YEAR number BONUS_AMOUNT number PF_ON_BONUS date CONTRIB_DATE } PLANT_MASTER ||--o{ MEMBER_MASTER : "employs" PLANT_MASTER ||--o{ DEPARTMENT_MASTER : "has" PLANT_MASTER ||--o{ DESIGNATION_MASTER : "defines" PLANT_MASTER ||--o{ VOUCHER : "creates" MEMBER_MASTER ||--o{ NOMINEE_MASTER : "nominates" MEMBER_MASTER ||--o{ CONTRIBUTION : "pays" MEMBER_MASTER ||--o{ BALANCE : "holds" MEMBER_MASTER ||--o{ LOAN : "applies" MEMBER_MASTER ||--o{ SETTLEMENT : "receives" MEMBER_MASTER ||--o{ TRANSFER : "transfers" MEMBER_MASTER ||--o{ INTEREST_CALCULATION : "earns" MEMBER_MASTER ||--o{ BONUS_CONTRIBUTION : "contributes" LOAN_REASON_MASTER ||--o{ LOAN : "categorizes" LOAN ||--o{ LOAN_REPAYMENT : "repaid_via" INTEREST_RATE_MASTER ||--o{ INTEREST_CALCULATION : "applies" VOUCHER ||--o{ LEDGER_ENTRY : "contains"

2.2 Table Categories

Master Tables (14)

  • PLANT_MASTER
  • MEMBER_MASTER
  • NOMINEE_MASTER
  • DEPARTMENT_MASTER
  • DESIGNATION_MASTER
  • LOAN_REASON_MASTER
  • INTEREST_RATE_MASTER
  • BANK_MASTER
  • BOOK_MASTER
  • INCOME_TYPE_MASTER
  • SETTLEMENT_TYPE_MASTER
  • TRANSACTION_CODE_MASTER
  • PF_SERIES_MASTER
  • FINANCIAL_PERIOD_MASTER

Transaction Tables (10)

  • CONTRIBUTION
  • BALANCE
  • LOAN
  • LOAN_REPAYMENT
  • SETTLEMENT
  • TRANSFER
  • INTEREST_CALCULATION
  • VOUCHER
  • LEDGER_ENTRY
  • BONUS_CONTRIBUTION

Screen-to-Schema Matrix

Screen Primary Table
Employee Master MEMBER_MASTER
Contribution CONTRIBUTION
Loan Application LOAN
Settlement SETTLEMENT
Trial Balance LEDGER_ENTRY
3. Field Mapping Tables

3.1 MEMBER_MASTER

Target Column Satna (DEVFND2025) Chittore (DEVPFS) Durgapur (DEVPAY0001) MPBPF (Trust)
MEMBER_ID Auto-generated (IDENTITY)
PLANT_ID 'SATNA' 'CHITTORE' 'DURGAPUR' 'MPBPF'
EMP_CD PFUND_EMP_CD PFNO EMPNO PM_MEM_NO
PF_NO PFUND_PFNO PFNO PFNO PM_PFNO
UAN_NO PFUND_UAN_NO UAN UAN PM_UAN_NO
FULL_NAME PFUND_EMP_NAME EMP_NAME EMPNAME PM_FNAME || PM_LNAME
DOB PFUND_DOB DOB DOB PM_DOB
DOJ PFUND_DOJ DOJ DOJ PM_DOJ_EPF
GENDER PFUND_GENDER GENDER SEX PM_SEX
STATUS PFUND_ACTIVE_TAG STATUS STATUS PM_STATUS
BANK_AC_NO PFUND_BANK_AC BANKAC BANKAC PM_BANK_AC
BANK_IFSC PFUND_IFSC_CODE IFSC IFSC PM_IFSC

3.2 CONTRIBUTION

Target Column Satna (CONTR_PFDTL) Chittore (PAYYTDPF) Durgapur (PFTRN) MPBPF (PF_CONT)
YYMM CONTR_YYYYMM YRMTH YRMTH TO_CHAR(PF_CONT_DATE,'YYYYMM')
EMP_CONTRIB CONTR_PF_OWN EMP_CONT EMP_CONT PF_CONT_EMPLY
CO_CONTRIB CONTR_PF_COS CO_CONT CO_CONT PF_CONT_EMPLR
VPF_CONTRIB - VPF - PF_ADDL_CONT
PENSION_CONTRIB CONTR_PEN_COS - - -
LOAN_INST CONTR_PF_LOAN_INST LOAN_AMT LOAN_AMT -
PF_SALARY CONTR_TOTPFABLE - - PF_SALARY

3.3 LOAN

Target Column Satna (LOAN_APP) Satna (LOANSMAS) Chittore (LOANSMAS)
LOAN_SERIAL LOAN_SLNO - -
LOAN_TYPE LOAN_TAG mapping LOANS_TYP LOAN_TYPE
APP_DATE LOAN_APP_DATE - -
APP_AMOUNT LOAN_APP_AMT - -
SANC_DATE LOAN_PASS_DATE LOANS_DATE LOAN_DATE
SANC_AMOUNT LOAN_PASS_AMT LOANS_AMT LOAN_AMT
INST_AMOUNT - LOANS_INST INST_AMT
OUTSTANDING - LOANS_BAL -

3.4 SETTLEMENT

Target Column Satna (SETTLE_AC) Satna (FINAL_REG)
SETTLE_DATE SETTLE_DATE -
SETTLE_TYPE SETTLE_TYPE -
EMP_SHARE - REG_CLS_OWN
CO_SHARE - REG_CLS_COS
INT_SHARE - REG_CLS_INT
NET_PAYABLE SETTLE_AMT SUM of above

3.5 Transformation Rules

Rule ID Description Tables
TR-001 Generate MEMBER_ID using Oracle IDENTITY MEMBER_MASTER
TR-002 Set PLANT_ID based on source DB connection All tables
TR-003 Concatenate PM_FNAME + PM_LNAME for FULL_NAME MEMBER_MASTER (MPBPF)
TR-004 Unpivot 5 nominee columns into 5 rows NOMINEE_MASTER
TR-005 Map LOAN_TAG: N=NON_REFUNDABLE, R=REFUNDABLE LOAN
TR-006 Derive FIN_YEAR from YYMM (202404 → '2024-25') CONTRIBUTION, BALANCE
4. ETL Process Design (Screen-wise)

Each dashboard screen is powered by specific ETL processes. Below is the design for each screen from the PF Dashboard and Reporting Outlook document.

📋 Screen: Employee Master Creation
Employee Master Screen

Target Tables

MEMBER_MASTER NOMINEE_MASTER DEPARTMENT_MASTER

ETL Process

Step Source Target Logic
1 PFUND_CONT_MAS MEMBER_MASTER MERGE on EMP_CD + PLANT_ID
2 DEFEMP MEMBER_MASTER Enrich DOB, Gender
3 PF_NOMINEE NOMINEE_MASTER Unpivot 5 nominees
💰 Screen: Monthly Contribution
Monthly Contribution Screen

Target Tables

CONTRIBUTION VOUCHER

ETL Process

Step Source Target Logic
1 CONTR_PFDTL CONTRIBUTION Append monthly records
2 PAYYTD CONTRIBUTION Enrich salary data
3 Aggregate V_CONTRIB_SUMMARY View for totals
📝 Screen: Loan Application
Loan Application Screen

Target Tables

LOAN LOAN_REASON_MASTER

ETL Process

Step Source Target Logic
1 LOAN_APP LOAN Insert applications
2 LOANSMAS LOAN Merge approved
🏦 Screen: Loan Disbursement
Loan Disbursement Screen

Target Tables

LOAN LOAN_REPAYMENT VOUCHER

ETL Process

Step Source Target Logic
1 PFLN_TRN LOAN Update to DISBURSED
2 PFLN_TRN LOAN_REPAYMENT Init schedule
3 CHQ_DETL VOUCHER Payment voucher
✅ Screen: Settlement / Transfer Out
Settlement Screen

Target Tables

SETTLEMENT VOUCHER

ETL Process

Step Source Target Logic
1 SETTLE_AC SETTLEMENT Insert record
2 FINAL_REG SETTLEMENT Finalize amounts
3 Trigger MEMBER_MASTER Update status
📊 Screen: Trial Balance
Trial Balance Screen

Target Tables

LEDGER_ENTRY BALANCE

ETL Process

Step Source Target Logic
1 LEDGER_TRN LEDGER_ENTRY Daily sync
2 Aggregate V_TRIAL_BALANCE Report view
5. Apache Superset - Security Architecture
Reporting Layer: Apache Superset will be used as the BI/Dashboard layer, connecting to the UNI_PF schema for all reporting needs.

5.1 Security Model

flowchart TD subgraph AUTH["🔐 AUTHENTICATION"] A1[LDAP / Active Directory] A2[OAuth2 / SSO] end subgraph SUPERSET["📊 APACHE SUPERSET"] S1[Role-Based Access Control] S2[Row-Level Security] S3[Dataset Permissions] end subgraph DATA["🗄️ UNI_PF SCHEMA"] D1[Views with Plant Filter] D2[Read-Only DB User] end A1 & A2 --> S1 S1 --> S2 --> S3 S3 --> D1 --> D2

5.2 Role-Based Access Control (RBAC)

Role Access Level Dashboards Data Scope
Admin Full Access All dashboards + SQL Lab All plants, all data
Corporate HR View + Export All PF dashboards All plants (consolidated view)
Plant HR (Satna) View Only PF dashboards Satna data only (Row-Level Security)
Plant HR (BJM) View Only PF dashboards BJM data only
Plant HR (Chittore) View Only PF dashboards Chittore data only
Auditor View + Export (Read-Only) All dashboards All plants, historical data

5.3 Row-Level Security (RLS)

Row-Level Security in Superset ensures users only see data for their assigned plants:

RLS Filter Example:

PLANT_ID IN ({{ current_user_plants() }})

This filter is automatically applied to all queries for plant-specific users.

5.4 Database Security

Security Layer Implementation
Database User Dedicated read-only Oracle user (SUPERSET_RO) with SELECT grants only
Connection Encrypted connection (TLS/SSL) to Oracle database
Views Only Superset connects only to VIEWs (V_MEMBER_360, V_CONTRIBUTION, etc.), not base tables
Audit Logging All Superset queries logged with user ID, timestamp, and query text

5.5 Implementation Steps

Step Action Owner
1 Create SUPERSET_RO user in Oracle with SELECT grants on VIEWs DBA
2 Configure Superset to connect to UNI_PF via SUPERSET_RO Superset Admin
3 Create Roles in Superset matching plant assignments Superset Admin
4 Configure RLS filters per role (PLANT_ID based) Superset Admin
5 Integrate with LDAP/AD for user authentication IT Team
6 Test access with sample users from each plant UAT Team