Security Governance & Internal Audit Controls
Core banking security policies, maker-checker authorization gates, four-eyes principles, and tamper-evident audit trails.
1. Overview & Business Value#
This comprehensive operational guide details the architecture, business workflows, configuration parameters, and execution steps for Security Governance & Internal Audit Controls within SmartERP.
Core banking security policies, maker-checker authorization gates, four-eyes principles, and tamper-evident audit trails.
{screenshot:security-and-internal-audit-controls-overview-dashboard}
2. Prerequisites & Security Access Groups#
- Required Modules:
smarterp_sacco_core, smarterp_equb, smarterp_loan_management - Security Groups:
SACCO Loan Officer(Technical ID:smarterp_sacco.group_sacco_officer)SACCO Credit Committee Member(Technical ID:smarterp_sacco.group_sacco_committee)SACCO General Manager(Technical ID:smarterp_sacco.group_sacco_manager)
- Master Data Dependencies: Member KYC profiles, share capital registers, savings product tiers, loan products with reducing-balance schedules, and Equb rotational pool configurations.
3. Step-by-Step Configuration & Execution#
Step 1: Navigating to the Module Interface#
- Log into your SmartERP instance at
https://smarterp.et/odoo. - Open the main App Switcher (grid icon in the top-left corner).
- Select the SACCO & Equb app icon.
- From the top navigation bar, open SACCO & Equb → Members → KYC Registry / Savings Accounts / Loan Applications / Equb Pools.
{screenshot:security-and-internal-audit-controls-app-switcher-navigation}
Step 2: Creating and Parameterizing Records#
- Click the New button in the top-left control panel.
- Complete the mandatory fields in the record form:
- Member Identification Number (Mandatory): Unique membership number complying with Ethiopian Cooperative Commission rules
- Full Name & Kebele ID (Mandatory): Verified member identity with physical residence verification
- Share Capital Subscriptions (Mandatory): Subscribed shares not exceeding statutory 10% member ceiling (Proclamation 985/2016)
- Primary Savings Product (Mandatory): Compulsory regular monthly savings account configuration
- Configure optional operational parameters and localized tags as required:
- Guarantor & Collateral (Optional): Approved co-signers with locked savings accounts or registered vehicle/property lien
- Equb Rotational Group (Optional): Linked digital Equb pool with lottery draw eligibility
- Beneficiary Nominee (Optional): Designated next of kin for death or disability benefit transfer
- Click the Save icon in the control bar to commit the record.
{screenshot:security-and-internal-audit-controls-record-creation-form}
Step 3: Validating and Processing Transactions#
- State Transitions: Execute operational state progression (Application → KYC Verified → Approved → Active / Disbursed → Delinquency Monitored → Settled).
- Ledger & System Impact: Loan disbursement debits loans receivable and credits cash/bank; loan repayments credit interest income and loan principal, updating 5-tier NBE provisioning registers.
- Audit Verification: Automated recording of author ID, timestamp, and immutable revision history.
{screenshot:security-and-internal-audit-controls-transaction-processing-state}
Four-Eyes Principle & Maker-Checker Governance#
To safeguard member funds and prevent internal embezzlement, SmartERP enforces the Four-Eyes Principle (Maker-Checker) across all high-risk transactions:
- Loan Approvals: The loan appraisal officer (Maker) cannot approve the loan; approval requires independent review by the Branch Manager or Committee (Checker).
- Vault Cash Transfers: The teller initiating a cash transfer cannot confirm receipt; the Chief Cashier must authenticate via separate credentials.
- Journal Entries & Write-Offs: Loan write-offs or manual general ledger adjustments mandate dual sign-offs from the Chief Accountant and General Manager.
Role-Based Access Control Matrix#
| Role | Member KYC | Savings Deposits | Loan Appraisal | Loan Approval | Vault Transfers | Audit Logs |
|---|---|---|---|---|---|---|
| Teller | Read | Read/Write | None | None | Request Only | None |
| Credit Officer | Read/Write | Read | Read/Write | None | None | None |
| Branch Manager | Full | Read | Read | Approve ($\le 100k$) | Approve | Read |
| Chief Cashier | Read | Read | None | None | Full Control | None |
| Internal Auditor | Read (All) | Read (All) | Read (All) | None | None | Full Audit (All) |
Tamper-Evident Transaction Logging#
All balance-affecting transactions write to an immutable append-only ledger (sacco.transaction.audit):
- Every record captures SHA-256 hash chaining connecting back to the genesis transaction.
- Direct database
UPDATEorDELETESQL queries against balance tables are programmatically blocked by PostgreSQL triggers.
4. Advanced Configuration Points#
- Automated Actions & Scheduled Tasks (Crons):
SACCO: Accrue monthly member savings interest(smarterp_sacco.ir_cron_savings_interest): Runs on the final day of each calendar month to credit interestLoan: Evaluate 5-tier NBE delinquency classification(smarterp_sacco.ir_cron_loan_delinquency): Runs nightly to compute loan loss provisions per NBE directivesEqub: Execute scheduled lottery draw(smarterp_sacco.ir_cron_equb_draw): Runs on defined pool cycle dates using provably fair random selection
- Custom Print Templates & Reports:
- Member Savings Passbook & Transaction Ledger
- Loan Amortization Schedule (Reducing Balance)
- NBE 5-Tier Delinquency & Loan Loss Provisioning Statement
- Annual Patronage Dividend Distribution Schedule
- Multi-Company Rules: Record-level security isolation under Company 1 (
Ashewa Technology Solutions S.C.), preventing cross-company ledger leakage across parent and subsidiary legal entities.
5. Comprehensive Troubleshooting Matrix#
| Error Symptom / Exception | Probable Root Cause | Corrective Action / Resolution |
|---|---|---|
Loan Blocked: Exceeds 3x savings ceiling | Requested loan principal exceeds 300% of member unencumbered savings balance. | Increase compulsory savings deposit or provide authorized co-signers with sufficient collateral. |
Equb Draw Blocked: Participant arrears detected | Selected Equb member has unpaid rotational dues in current or prior cycles. | Collect outstanding contribution payment before executing lottery draw. |
Share Capital Limit Error: Member exceeds 10% ceiling | Subscribed shares exceed statutory maximum under Proclamation No. 985/2016. | Restrict share allocation to maximum allowable 10% total cooperative equity threshold. |