- Add OMNL/CBK Indonesia submission and audit binder docs, manifests, attestations - Add scripts/omnl transaction-package pipeline, LEI/PvP helpers, jq/lib fixtures - Update entity master data, MASTER_INDEX, TODOS, dbis-rail docs and rulebook - Add proof_package/regulatory skeleton and transaction package zip + snapshot JSON - validate-omnl-rail workflow, forge-verification-proxy tweak, .gitignore hygiene - Bump smom-dbis-138 (cronos verify docs/scripts) and explorer-monorepo (SPA + env report) Made-with: Cursor
7.3 KiB
OMNL Entity Master Data — Names, LEI, Address, Contacts
Purpose: Single source of truth for the 19 operating / external-facing entities. Used to populate either Offices (Organization / Manage Offices) or Clients (names, LEI, address, contacts).
Data file: OMNL_ENTITY_MASTER_DATA.json
Using entities as Offices (recommended): To model the 15 as offices instead of clients, see OMNL_OFFICES_POPULATE.md. Run omnl-offices-populate-15.sh then omnl-clients-remove-15.sh.
Entity list (reference)
| # | Account No. | Entity name |
|---|---|---|
| 1 | 000000001 | OMNL Head Office (DBIS) – Central Bank |
| 2 | 000000002 | Shamrayan Enterprises |
| 3 | 000000003 | HYBX |
| 4 | 000000004 | TAJ Private Single Family Office |
| 5 | 000000005 | Aseret Mortgage Bank |
| 6 | 000000006 | Mann Li Family Offices |
| 7 | 000000007 | Sovereign Order of Malta OSJ |
| 8 | 000000008 | Alltra Mainnet |
| 9 | 000000009 | FIDIS |
| 10 | 000000010 | Alpha Omega Holdings |
| 11 | 000000011 | SGI Capital |
| 12 | 000000012 | Titan Financial |
| 13 | 000000013 | Roy Walker PLLC |
| 14 | 000000014 | SGI Partners LLC |
| 15 | 000000015 | Tsunami Holdings AG |
| 16 | 000000016 | Anakatech |
| 17 | 000000017 | Anema Camden Walker Global |
| 18 | 000000018 | NEPAL RASTRA BANK (Central Bank) |
| 19 | 000000019 | SANIMA BANK LIMITED |
Fields to complete per entity
1. Entity name
- Already set in the JSON.
- Pushed to Fineract as client firstname (full name); lastname empty.
2. LEI (Legal Entity Identifier)
- Format: 20-character alphanumeric (e.g.
5493001KJTIIGC8Y1R12). - OMNL Head Office (entity 1): Canonical LEI
98450070C57395F6B906— public summary at lei.info. Roster and filing notes: OMNL_BANKING_DIRECTORS_AND_LEI.md. - In Fineract: Stored as a Client Identifier with document type LEI (or “Legal Entity Identifier”). The tenant must have a document/identifier type named LEI (or equivalent); the apply script uses the first matching type from
GET /clients/{clientId}/identifiers/template(allowedDocumentTypes). - In JSON:
"lei": "<20-char LEI>". Leave""if not yet assigned.
2b. LEI, EBICS, BIC, and other codes in Address2 / Address3 or memo fields
Many screens (and offices in particular) have no dedicated LEI, EBICS, BIC, or similar fields. You can still record them on the entity using free-text slots:
- Client addresses (Fineract): Put labeled lines in
addressLine2,addressLine3, and/orstreet/addressLine1as appropriate (e.g. primary premises on line 1; identifiers on lines 2–3). The Client Addresses API accepts all of these fields. - Office / organization UI: Use any memo, description, additional information, or equivalent note field the tenant exposes, with the same labeling convention.
- Suggested format (human- and audit-friendly): One token per line where possible, for example:
LEI:98450070C57395F6B906,BIC:ABCDEFGH,EBICS:<bank-specific id>. Keep the canonical structured LEI in"lei"when you use this JSON as source of truth; mirror or supplement in address lines as needed for Fineract or regulator-facing exports.
3. Address
- In Fineract: Stored via Client Addresses API:
POST /client/{clientId}/addresses(and optionallyPUTto update). Fields:street,addressLine1,addressLine2,addressLine3,city,stateProvinceId,countryId,postalCode,isActive.countryIdand optionallystateProvinceIdare Fineract reference IDs (fromGET /codesor the UI). - In JSON: Under
address: fillstreet,addressLine1,addressLine2,addressLine3,city,postalCode; setcountryId(andstateProvinceIdif applicable) when you have the Fineract code IDs. Usenullor omit to skip address for that entity. UseaddressLine2/addressLine3for LEI / BIC / EBICS (and similar) when those identifiers are not stored elsewhere on the record.
4. Contacts
- In Fineract: Client-level mobile and email (e.g.
mobileNo,emailAddress). May be updatable viaPUT /clients/{clientId}if the server allows it; otherwise via UI or datatables. - In JSON: Under
contact:"mobileNo": "+1234567890","emailAddress": "entity@example.com". Leave""if not yet known.
How to fill the JSON
- Open OMNL_ENTITY_MASTER_DATA.json.
- For each entity in
entities:- LEI: Set
leito the 20-character LEI when assigned; otherwise leave"". If the live system only allows Address2/3 or a memo for identifiers, mirror LEI (and BIC, EBICS, etc.) there and document the same strings inaddress.addressLine2/addressLine3when you want the apply script to push them for clients. - Address: Fill
address.street,addressLine1,addressLine2,addressLine3,city,postalCode. ForcountryId(andstateProvinceId) you need the Fineract code IDs from the tenant (Admin → Code values / address config, orGET /codes). - Contact: Fill
contact.mobileNoandcontact.emailAddressas appropriate; leave""if unknown.
- LEI: Set
- Save the file. The apply script reads this file and updates Fineract (names, then LEI identifiers, addresses, then contact fields when supported).
Applying data to Fineract
From repo root, with omnl-fineract/.env (or root .env) set:
# Data file path (default: docs/04-configuration/mifos-omnl-central-bank/OMNL_ENTITY_MASTER_DATA.json)
ENTITY_DATA="docs/04-configuration/mifos-omnl-central-bank/OMNL_ENTITY_MASTER_DATA.json"
# Dry run: show what would be updated
DRY_RUN=1 bash scripts/omnl/omnl-entity-data-apply.sh
# Apply: names, then LEI (identifiers), addresses, contacts
bash scripts/omnl/omnl-entity-data-apply.sh
Complete all clients (1–15) in one go: If clients 9–15 do not exist yet, create them first, then apply entity data:
bash scripts/omnl/omnl-clients-create-9-15.sh
bash scripts/omnl/omnl-entity-data-apply.sh
See scripts/omnl/README.md for full script list.
Fineract API mapping summary
| Master data | Fineract API | Notes |
|---|---|---|
| Entity name | PUT /clients/{clientId} body firstname, lastname |
One-line display name in UI |
| LEI | POST /clients/{clientId}/identifiers |
documentTypeId = LEI type from template; documentKey = LEI value |
| Address | POST /client/{clientId}/addresses |
Requires countryId (and optionally stateProvinceId) from tenant codes; addressLine2 / addressLine3 may carry LEI, BIC, EBICS, etc. |
| LEI / BIC / EBICS (no dedicated field) | Address lines or UI memo | Same strings as in master JSON; offices often have no identifier API—use org memo or address-style fields in UI |
| Mobile / email | PUT /clients/{clientId} body mobileNo, emailAddress |
If server accepts; else use UI |
References
- OMNL_CLIENT_NAMES_FIX.md — Name-only fix and canonical names
- FINERACT_API_REFERENCE.md — Auth, tenant, base URL
- OpenAPI:
docs/api/omnl-fineract-openapi.json—Client, identifiers, addresses