Proposal to FSA Investment Capital · October 2026

One system that runs FSA and enforces its policies

Ethereal Purpose delivers FSA's ERP on a proven open-source platform, Frappe with ERPNext, configured to FSA's policies and extended by one FSA-specific app that carries every hard stop.

Response to the Enterprise Business Requirements Document v1.0 · Prepared by Ethereal Purpose Lda. · Prices in US$, excluding taxes, valid 90 days
91 / 91requirements met
5 Apr 2027Release 1 live, all Must items
US$133,500implementation, all 3 lots
US$0licence fees, every year
Executive summary

Priced and planned by Must, Should and Could

64 of the 91 requirements are met as standard or by configuration; 27 need code, all in one documented app on the same framework. FSA can award Lot 1 alone, Lots 1 and 2, or all three.

LotScopeGo-liveTeam effortFixed price (US$)
Lot 1 – Must59 requirements, platform core, Must integrations, set-up, training5 April 2027539 person-days90,400
Lot 2 – Should27 requirements, Should integrations26 July 2027212 person-days35,400
Lot 3 – Could5 requirements, investee/GP portal20 September 202749 person-days7,700
TotalJust over 10 months800 person-days133,500

Configure, don't build

Frappe and ERPNext are open source and proven; FSA's rules live in one parameter schedule its own users can change.

Hard stops, not reminders

KYC, sanctions, limits, dual signature and tax tests block the action itself. All 24 Appendix F tests are covered.

Lowest cost of ownership

No licence fees: US$350,020 over five years for implementation, hosting, support and yearly penetration tests.

Our understanding

The system must do the checking a large back office would do

FSA is a small, fully outsourced investor deploying Funder Capital in African food systems. We read the EBRD as five commitments the platform must keep.

  1. One record per fact. The Deal Data Sheet feeds every memo, register and report; nothing is retyped.
  2. Rules as settings. One versioned parameter schedule and one limit table drive every threshold, timer and approval, with Red limits locked to the Board role.
  3. Hard stops, not reminders. KYC outstanding, a screen older than 30 days, a Red limit, a missing dual signature or a failed Cooperative Jurisdiction test block the transaction.
  4. Evidenced, segregated approvals. Every approval records name, role, authority code and threshold; no user can create, check and approve the same item.
  5. Outsourcing inside the system. ITL, CASS, auditors, AAF and funders work in the platform through limited roles, not by email.
Solution architecture

Nine modules on one shared core

Both application layers read their thresholds and route their approvals through the same core; outside parties connect to the core, not to individual modules.

Users and portalsConsultants, Board, IC, ARC, ITL, CASS, auditors · EN/FR external forms FSA Investments app (developed) Pipeline, IC and Board engineDeal Data Sheet and memo templatesLimit engine, Disbursement PackLoan register and valuationKYC, SEAH and tax controls ERPNext (configured) Budget, restricted fundsProcure-to-paySuppliers, fixed assetsTravel and Consultants Shared core: Frappe FrameworkOne parameter schedule · one limit table · one approvals engineRoles and segregation of duties · audit trail · reports and API Hosted on OVHcloud Paris (3 zones) · daily backups on Hetzner, Germany External parties ITL MCB CASS Screening service Microsoft 365

Platform layers

Frappe Framework (MIT): data model, permissions, workflow engine, notifications, API, portal, audit log.
ERPNext (GPLv3): budgets, procure-to-pay, suppliers, assets, restricted funds.
FSA Investments app: the investment-specific controls, developed by Ethereal Purpose.
Frappe Insights: dashboards and self-service reports.

Hosting and data location

OVHcloud Paris region, three availability zones for live; backups at Hetzner, Germany. RPO 24 h, RTO within the 7.3 targets, ≥ 99.9% availability. EU hosting gives GDPR-level protection for the transfer out of Mauritius; hosting in Africa is available as a priced option.

Hosting itemUS$ per month
Live · OVHcloud Paris, 3 availability zones236.58
Test and UAT · OVHcloud France, single-zone region80.52
Monitoring and secrets · OVHcloud20.14
Backups, first copy · OVHcloud9.59
Backups, second provider · Hetzner, Germany4.06
Contingency for exchange rate and price changes24.10
Fixed monthly fee, year 1375.00

Built line by line from OVHcloud's public price list: see Hosting cost.

Sub-processorPurposeData location
OVHcloudHosting of test, UAT and liveFrance (Paris)
HetznerSecond-provider backup copyGermany
Regional certified penetration-test firmIndependent test before go-live and every yearNo production data retained
Technology stack

Every tool, why we chose it, and where FSA asks for it

Each component below answers a specific requirement of the EBRD v1.0. References give the section and page of FSA's document, with the exact words, so every choice can be checked.

§ = EBRD sectionp. = page in EBRD v1.0Quotes are FSA's own words

Platform and business applicationsThe product FSA buys and configures

Frappe Framework

MIT · open source

What it does for FSA. The shared core of the whole system: data model, roles and permissions, workflow and approvals engine, notifications and timers, scheduler, REST API, web portal, version history of every record.

Why we chose it. It gives FSA the “one shared core” the EBRD asks for, and lets trained FSA users change forms, fields, workflows, templates and reports without code. One parameter schedule and one approvals engine are built once here and used by all nine modules.

Where the EBRD asks for it
  • §4 Capability Map p.7“The system has nine business modules on one shared core … provided the core is shared.”
  • §3 Principle 2 p.6“All thresholds, limits and timings sit in one parameter schedule that authorised users can change.”
  • §7.3 Configuration p.17“trained FSA users can change workflows, forms, fields, templates and settings without code, with every change logged.”
  • §3 Principle 7 p.6“Every policy deadline is a timer with an owner, a reminder before the due date and escalation when missed.”

ERPNext

GPLv3 · open source

What it does for FSA. Ready-made ERP modules on Frappe: budgets and accounting dimensions for restricted funds, procure-to-pay (requisition, request for quotation, purchase order, receipt, invoice), suppliers, fixed assets.

Why we chose it. FSA asks for a proven product bought under licence, not software written from scratch. ERPNext is a mature ERP used in production worldwide; its Buying and Budget modules cover most of finance and procurement out of the box, which keeps custom code low and the price down.

Where the EBRD asks for it
  • §3 Principle 10 p.6“Configure, don't build. FSA prefers a proven cloud product, configured with as little custom code as possible.”
  • App. G Assumptions p.29“The system is cloud-hosted and bought as a licensed product, not developed from scratch.”
  • §5.6 PRC-01 to PRC-06 p.12“Match order, receipt (3 BD) and invoice (3 BD) before Good to Pay”
  • §5.5 FIN-01 to FIN-03 p.11“Keep restricted-fund ledgers by funder, tranche and budget line”

Frappe HR

GPLv3 · open source

What it does for FSA. Travel requests, advances and expense claims, timesheets and reviews, used for FSA's Consultants and missions. Payroll is not used.

Why we chose it. FSA has no employees, only Consultants, and payroll is out of scope; Frappe HR still gives ready-made mission, advance, claim and timesheet flows that we configure to FSA's rules instead of building them.

Where the EBRD asks for it
  • §1 Purpose and Scope p.3“Payroll: FSA has no employees, only Consultants.”
  • §5.7 TRV-01 to TRV-03 p.12“Raise Mission Requests at least 7 BD ahead (12 BD for High-risk)”
  • §5.8 CON-02 to CON-05 p.13“Take monthly invoices with timesheets or deliverables.”

Frappe Lending

GPLv3 · open source

What it does for FSA. Loan products, interest calculation, repayments and collateral, used as the base of FSA's loan and grant register.

Why we chose it. The loan register is one of the most complex Must items. Starting from an existing lending app reduces risk and effort; Ethereal Purpose adds FSA's specifics (3M Term SOFR plus margin with a floor, PIK, billing notices).

Where the EBRD asks for it
  • §5.2 PFA-02 p.9“Keep the loan and grant register: schedules, interest (reference rate plus margin, with a floor), fees and PIK.”
  • §5.2 PFA-03 p.9“Chase arrears: reminder within 1 BD, formal notice within 10 days.”

Frappe Insights

AGPLv3 · open source

What it does for FSA. Dashboards and self-service reporting on the live data, with drill-down to records.

Why we chose it. FSA wants reports straight from the system and wants its own Consultants to build new dashboards without the vendor. Insights does this natively. Under AGPL, FSA as user is entitled to its source code, which it receives anyway.

Where the EBRD asks for it
  • §7.1 Core reports p.16“Every report and dashboard must let users drill down to the underlying records … Trained Consultants must be able to build and save new reports and dashboards without the vendor's help.”
  • §5.3 RSK-06 p.10“Calculate the KRIs and the monthly ALM and FX dashboards”

FSA-specific developmentWhat no ERP does out of the box

FSA Investments app (built by Ethereal Purpose on Frappe)

Delivered to FSA under GPLv3 with full source

What it does for FSA. One separate app holding the investment controls: Deal Data Sheet and memo generation, IC and Board engine, limit engine with look-through, Disbursement Pack hard stops, valuation, KYC and screening, SEAH and tax controls.

Why we chose it. These rules are specific to an investment vehicle and to FSA's policies. Keeping them in one separate app, instead of changing ERPNext itself, means ERPNext upgrades and security patches install cleanly and the custom code stays small, documented and in escrow.

Where the EBRD asks for it
  • §6 Approval and Authority Rules p.14“The workflow engine must route each item to the approver below and refuse anything outside the limits.”
  • §3 Principle 5 p.6“Hard stops, not reminders.”
  • App. F Acceptance Tests p.27“These 24 tests prove the hard stops work.”
  • §5.1 INV-04 p.8“Hold the Deal Data Sheet. Generate from it the ISN … PIC Memo, FIA Memo …”

Document templates (Jinja print formats, Word via python-docx)

Open source (BSD / MIT)

What it does for FSA. Generates FSA's own documents (ISN, memos, Decision Records, Disbursement Pack, QIR) from the Deal Data Sheet, in FSA's existing layouts.

Why we chose it. Data is entered once and every memo is generated from it, in the templates FSA already uses.

Where the EBRD asks for it
  • §3 Principle 1 p.6“Enter data once. … Memos, registers and reports draw from it rather than being retyped.”
  • App. D Templates p.25“FSA's investment templates (screening note, memos, decision records, Disbursement Pack, quarterly review)”

PowerPoint export (python-pptx)

MIT

What it does for FSA. Exports dashboards and reports to .pptx for Board, IC and ARC packs.

Why we chose it. PowerPoint export is required but not standard in Frappe; this small library closes the gap and is included in the price.

Where the EBRD asks for it
  • §7.1 Core reports p.16“export to PDF, Excel and PowerPoint”

Runtime and dataWhat the system runs on

MariaDB (primary + replica in another zone)

GPLv2 · open source

What it does for FSA. The database behind Frappe and ERPNext; a live replica in a second availability zone with point-in-time recovery.

Why we chose it. It is the database Frappe is built and supported on. The replica and daily backups meet FSA's recovery targets.

Where the EBRD asks for it
  • §7.3 Continuity p.17“24-hour recovery point, daily backups held with a second provider, and a restore test every year.”

Redis, Gunicorn and Nginx

Open source (BSD / MIT / BSD-2)

What it does for FSA. Standard Frappe runtime: Redis for queues, cache and real-time updates; Gunicorn to serve the application; Nginx as web server with TLS.

Why we chose it. This is Frappe's supported production set-up, which keeps pages fast for a small user base and on slow connections.

Where the EBRD asks for it
  • §7.3 Performance and access p.17“pages load in under 2 seconds under normal use and remain usable on a 1 Mbps connection”

Translations (Frappe EN/FR)

Built into Frappe

What it does for FSA. British English user interface; French for external forms and guides.

Why we chose it. Required for the open-call portal, external forms and user guides.

Where the EBRD asks for it
  • §7.3 Language and units p.17“British English. External forms are also in French.”
  • App. H Guides and training p.31“User and administrator guides in English and French”

Hosting, security and identityWhere it runs and how it is protected

OVHcloud Public Cloud – Paris region (3 availability zones)

Cloud provider (sub-processor)

What it does for FSA. Hosts the test, UAT and live environments; live spread across zones with a load balancer.

Why we chose it. Cloud-hosted with a stated location, three zones for ≥ 99.9% availability, EU data protection, at about a third of the cost of an African cloud region. Hosting in Africa remains a priced option.

Where the EBRD asks for it
  • §7.3 Hosting and support p.17“cloud-hosted, with data location and all sub-processors stated in the bid; at least 99.9% availability a month”
  • App. H Environments p.31“Separate test, user-acceptance and live environments”

Hetzner Storage (Germany)

Backup provider (sub-processor)

What it does for FSA. Encrypted daily copy of database and files, plus a small server for the yearly restore test.

Why we chose it. FSA requires backups at a second provider, independent of the hosting provider.

Where the EBRD asks for it
  • §7.3 Continuity p.17“daily backups held with a second provider, and a restore test every year”

Microsoft Entra ID (FSA's identity provider)

FSA's existing Microsoft 365

What it does for FSA. Single sign-on for all users over SAML 2.0 / OpenID Connect, with MFA enforced and step-up MFA on payment signatures.

Why we chose it. FSA asks for single sign-on through its own identity provider and MFA for everyone, mandatory on banking.

Where the EBRD asks for it
  • §7.2 Integrations – Microsoft 365 p.17“single sign-on through FSA's identity provider (SAML 2.0 or OpenID Connect)”
  • §7.3 Security p.17“MFA for all users and mandatory on banking”

Secrets vault (OVHcloud KMS or HashiCorp Vault)

Managed service / open source

What it does for FSA. Holds credentials, API keys and encryption keys outside the code.

Why we chose it. Required explicitly by the security requirements.

Where the EBRD asks for it
  • §7.3 Security p.17“credentials and keys held in a secure vault”

Encryption and audit

TLS 1.2+/AES-256; Frappe version log + append-only audit store

What it does for FSA. Encrypts traffic and stored data; logs every create, change, approval and export in a store that cannot be altered.

Why we chose it. Required for security, for retention and for auditors and funders.

Where the EBRD asks for it
  • §7.3 Security p.17“encryption in transit (TLS 1.2 or higher) and at rest (AES-256)”
  • §7.3 Audit trail p.17“every create, change, approval and export is logged and cannot be altered”
  • §3 Principle 8 p.6“Full audit trail.”

Integrations and standardsHow the system talks to FSA's partners

ISO 20022 camt.053 / SWIFT MT940 and pain.001

Banking standards

What it does for FSA. Reads MCB bank statements and confirmations; produces payment files.

Why we chose it. These are the formats named by FSA for MCB; host-to-host if MCB offers it, secure upload otherwise.

Where the EBRD asks for it
  • §7.2 Integrations – MCB p.16“Bank statements (MT940 or camt.053), payment confirmations, FX conversions”
  • §5.6 PRC-08 p.12“Send payment instructions to ITL and MCB and receive confirmations.”
  • App. G Dependencies p.29“MCB online banking and data feeds for statements and payment confirmations.”
  • App. E Go-live readiness p.26“one test payment has completed end to end”

REST API and SFTP

Frappe API / standard protocols

What it does for FSA. Exchanges postings, payment instructions, Panel B approvals and registers with ITL; read-only API for FSA's own BI tools.

Why we chose it. ITL keeps the books and executes payments; the system must feed it without email.

Where the EBRD asks for it
  • §7.2 Integrations – ITL p.16“Postings and journals, payment instructions, master data, Panel B approvals”
  • §7.2 Reporting and BI tools p.17“Read-only connector or documented API”
  • §3 Principle 9 p.6“ITL, CASS and auditors work inside the system with limited roles”

UN Consolidated List feed + CASS screening provider

Public data / FSA subscription

What it does for FSA. Daily UN list import with rescreening; other lists (PEP, adverse media) through CASS's provider.

Why we chose it. The UN list is mandatory; the commercial screening subscription is listed by FSA as its own dependency.

Where the EBRD asks for it
  • §7.2 Screening service p.16“UN Consolidated List (mandatory) and other lists, with continuous rescreening”
  • App. G Dependencies p.29“A subscription to a sanctions-screening service.”

E-signature API (DocuSign or Adobe Sign)

FSA's chosen provider

What it does for FSA. Sends deal documents for signature in a set order and stores the signed copies and certificates.

Why we chose it. Required in Release 2; integrating FSA's own provider avoids lock-in.

Where the EBRD asks for it
  • §7.2 E-signature service p.17“Documents for signature, signing order, signed copies and audit certificates”
  • §5.1 INV-19 p.9“support e-signature in a set signing order”

Market-data feeds

Public / licensed sources

What it does for FSA. Imports 3M Term SOFR, daily FX closing rates and ICSC DSA rates.

Why we chose it. Needed for loan interest, FX conversions and mission allowances.

Where the EBRD asks for it
  • §7.2 Market data p.17“3M Term SOFR; daily closing FX rates by automatic feed; ICSC DSA rates”

Quality, delivery and exitHow we prove it works and how FSA stays free

Automated tests (Frappe test runner, Playwright)

Open source (MIT / Apache 2.0)

What it does for FSA. Unit tests on calculations and rules; browser tests replaying the 24 acceptance scenarios, including the refusals.

Why we chose it. FSA requires functional and negative tests for every Must requirement, with evidence kept.

Where the EBRD asks for it
  • App. F Acceptance Tests p.27“The vendor adds functional tests for every Must requirement.”
  • App. H Acceptance p.31“User-acceptance test scripts, including negative tests”

Load testing (k6 or Locust)

Open source

What it does for FSA. Simulates peak use, such as an IC pack issue during month-end close.

Why we chose it. A load test at peak is a named deliverable.

Where the EBRD asks for it
  • App. H Acceptance p.31“a load test at expected peak use”

Independent penetration test (regional certified firm)

Third-party service

What it does for FSA. Full test before go-live, then a retest every year; findings fixed by Ethereal Purpose.

Why we chose it. Required before go-live and yearly; a regional firm keeps it independent and affordable.

Where the EBRD asks for it
  • §7.3 Security p.17“an independent penetration test before go-live and every year after”
  • App. H Acceptance p.31“an independent penetration test”

Git repository, CI/CD and monitoring

Private Git repository with CI; open-source monitoring

What it does for FSA. Every change reviewed and deployed through test and UAT before live; 24/7 uptime and error monitoring.

Why we chose it. Controlled releases protect the hard stops; monitoring supports the 99.9% target and the support SLA.

Where the EBRD asks for it
  • §7.3 Hosting and support p.17“at least 99.9% availability a month outside planned maintenance”
  • App. H Support p.31“critical issues answered within 1 hour and resolved or worked around within 8 hours”

Source code and data export

GPLv3 source to FSA; CSV, JSON, SQL exports

What it does for FSA. FSA receives the full source code of the FSA app and can export all its data at any time and at contract end.

Why we chose it. Open-source licensing gives FSA the source directly, which meets and exceeds the escrow requirement.

Where the EBRD asks for it
  • App. H Exit p.31“Full data export in open formats at any time and at contract end, a documented exit plan, and source-code escrow or equivalent protection”

Options we consideredand why Frappe + ERPNext fits FSA best

OptionStrengthWhy not chosen (or the condition for it)EBRD reference
Commercial ERP (e.g. Microsoft Dynamics 365, SAP Business One, Oracle NetSuite, Odoo Enterprise)Proven products; strong financeYearly per-user subscriptions for ~35 named users over five years; investment-specific controls still need custom development; use of the product depends on keeping the subscription, a weaker exit position§7.3 p.17 · App. H p.31 (TCO, escrow)
Custom development from scratchFull freedom of designContradicts principle 10 and Appendix G; FSA users could not change workflows without code unless a whole configuration engine is built; higher price and risk§3 p.6 · App. G p.29 · §7.3 p.17
Generic low-code platformFast screens and formsNo ready finance, procurement or budget modules; most of the ERP would still be built§3 p.6 · §5.5–5.6 p.11–12
Frappe + ERPNext (chosen)Proven open-source ERP, no licence fees, no-code configuration, full source to FSAPython stack: team includes experienced Frappe developersAll of the above

Licences in one line

Frappe Framework MIT; ERPNext, Frappe HR and Frappe Lending GPLv3; Frappe Insights AGPLv3. No licence fee in any year. FSA receives the full source of everything it runs, including the FSA app.

Names and trademarks

Frappe, ERPNext, Frappe HR and Frappe Insights are trademarks of Frappe Technologies Pvt. Ltd. Ethereal Purpose Lda. is an independent implementer; the solution is built on these products, not endorsed by their publisher.

Requirements coverage

91 requirements: 3 standard, 61 configured, 27 developed

Development is concentrated where FSA's rules are specific to an investment vehicle: the IC and Board engine, the limit engine, the Disbursement Pack, the loan register and valuation.

StandardConfigurationDevelopment5.1 Investment pipeline and approvals5.1 Investment pipeline and approvals: 10 cfg105.1 Investment pipeline and approvals: 9 dev9195.2 Portfolio, loan and valuation5.2 Portfolio, loan and valuation: 10 cfg105.2 Portfolio, loan and valuation: 6 dev6165.3 Risk, limits and early warning5.3 Risk, limits and early warning: 5 cfg55.3 Risk, limits and early warning: 3 dev385.4 Compliance, KYC and integrity5.4 Compliance, KYC and integrity: 11 cfg115.4 Compliance, KYC and integrity: 2 dev2135.5 Finance, budget and treasury5.5 Finance, budget and treasury: 1 std15.5 Finance, budget and treasury: 7 cfg75.5 Finance, budget and treasury: 2 dev2105.6 Procurement and payables5.6 Procurement and payables: 2 std25.6 Procurement and payables: 4 cfg45.6 Procurement and payables: 2 dev285.7 Travel and missions5.7 Travel and missions: 4 cfg45.7 Travel and missions: 1 dev155.8 Consultants5.8 Consultants: 4 cfg45.8 Consultants: 1 dev155.9 Governance, Board and audit5.9 Governance, Board and audit: 6 cfg65.9 Governance, Board and audit: 1 dev17
ModuleRequirementsStandardConfigurationDevelopmentDeveloped items
5.1 Investment pipeline and approvals190109INV-02, INV-03, INV-04, INV-07, INV-08, INV-10, INV-15, INV-16, INV-19
5.2 Portfolio, loan and valuation160106PFA-01, PFA-02, PFA-06, PFA-10, PFA-11, PFA-14
5.3 Risk, limits and early warning8053RSK-02, RSK-06, RSK-07
5.4 Compliance, KYC and integrity130112CMP-02, CMP-10
5.5 Finance, budget and treasury10172FIN-03, FIN-05
5.6 Procurement and payables8242PRC-07, PRC-08
5.7 Travel and missions5041TRV-02
5.8 Consultants5041CON-03
5.9 Governance, Board and audit7061GOV-01
Total9136127

The line-by-line response is in the compliance matrix at the end of this page and in Annex 1 (Excel).

Approvals engine and hard stops

No disbursement reaches the bank until every check passes

Every approval goes through one engine; every threshold comes from one versioned parameter schedule. A hard stop disables the action itself and maps to an Appendix F acceptance test.

Deal team builds Pack Counsel confirms CPs RCM and HFO checks Hard stops – all must pass KYC complete · sanctions/PEP screen ≤ 30 days oldLimits within Red · liquidity coverage passesBoard approval current, signed ≤ 6 months · IC conditions met · DDS = signed agreement any check fails MD approveswithin 2 BD HFO instructswithin 1 BD Panels A and Bcall-back checked ITL executesvia MCB
The MD's Approve button stays disabled until the dashed gate is fully green; a failed check returns the Pack to the deal team and is logged.
Hard stopWhere it appliesWho can overrideAcceptance test
KYC outstandingDisbursement Pack, paymentsNobodyAT-01
Sanctions/PEP/adverse-media screen older than 30 daysDisbursement PackNobody (rescreen)AT-02
Red limit or allocation cap reachedIC approval, commitmentBoard Express Approval onlyAT-03, AT-19
IC quorum not met (no Independent)IC decisionNobodyAT-04
No Objection lapse or objectionBoard routingBoard meetingAT-05
Third signatory missing above thresholdPayment releaseNobodyAT-06
Preparer signs own paymentPayment releaseNobodyAT-07
Bank details changed without call-backPayment releaseNobody (call-back)AT-08
12-month supplier total exceeds RfQ limitProcurementCompetitive TenderAT-09
Reallocation beyond funder marginBudgetAAF consentAT-10
Mission Request under lead timeTravelJustified exceptionAT-11
Unsettled advanceTravelNobodyAT-12
Arrears at 15 and 90 daysEarly warningEscalation, not overrideAT-13
Red limit changed by the MDParameter scheduleBoard role onlyAT-14
Gift on Funder Capital contractGifts registerNobodyAT-15
Acting MD on transaction agreementApprovalsSpecific Board authorityAT-16
Data lost after an outageContinuityRestore within RPO/RTOAT-17
Paper cleared under 7 BD before ICIC packNext meetingAT-18
Second IC deadlockIC decisionNobody (rejection)AT-20
Fast track requested (e.g. US$800,000 grant)Deal trackNobody (standard track with PIC)AT-21
Documents signed more than 6 months after Board approvalDisbursement PackRe-approvalAT-22
SEAH concern about a user with case accessSEAH registerAutomatic lock-out, routed to the Whistleblowing ChampionAT-23
Jurisdiction on the EU non-cooperative listIC approval, follow-onsNobodyAT-24
Core eligibility criterion failedScreeningNobodyFunctional test
Integrations

ITL and MCB first: every payment passes through them

Both are in Lot 1 and are tested end to end with a real test payment before go-live (Appendix E).

PartyData exchangedMethodLot
ITLPostings and journals, payment instructions, master data, Panel B approvals, statutory registers, tax filingsITL works inside the system with its own role; postings by REST API or SFTP1
MCBStatements, payment confirmations, FX conversionscamt.053 / MT940 in, pain.001 or MCB file out; host-to-host if MCB offers it, secure upload otherwise1
CASSKYC files, screening results, suspicious-activity referralsCASS users inside the system plus file exchange1
Screening serviceUN Consolidated List and other lists, continuous rescreeningDaily UN list feed; other lists through CASS's provider1
Microsoft 365Single sign-on, email, calendar, documentsEntra ID (SAML 2.0 / OIDC), Exchange, SharePoint1
Market data3M Term SOFR, FX closing rates, ICSC DSAScheduled import2
AAFConsolidation pack, funder reportsGenerated pack, read-only access2
E-signatureDocuments, signing order, signed copiesProvider API (e.g. DocuSign, Adobe Sign)2
BI toolsRead-only data accessDocumented REST API2
Investees and GPsReports, certificates, capital callsUpload portal with templates3

MCB: two ways to connect, the same controls

FSA's document asks for the bank formats, not for a specific connection: MCB statements must be read in MT940 or camt.053 (§7.2, p.16), and FSA lists “MCB online banking and data feeds for statements and payment confirmations” as its own dependency (Appendix G, p.29). The system therefore works whichever way MCB provides the files.

Option 1 · Host-to-host, if MCB offers it

Statements (camt.053 or MT940) and payment confirmations arrive automatically every day through a secure channel; payment files (pain.001 or MCB's format) are sent the same way. Subject to MCB's onboarding, certificates and tests.

Option 2 · Secure upload from MCB online banking (ready on day one)

The HFO downloads the daily MT940 or camt.053 statement from MCB online banking and uploads it; the system reads it, matches every line and flags exceptions. Payment files are generated by the system and uploaded to MCB the same way. Only the file transfer is manual.

ControlOption 1Option 2EBRD reference
Statements read in MT940 or camt.053YesYes§7.2 MCB · p.16
Automatic matching and bank reconciliation by BD5YesYes§5.5 FIN-04 · p.11
Payment instructions to ITL and MCB, confirmations recordedYesYes§5.6 PRC-08 · p.12
Panel A + Panel B release, call-back on changed bank detailsYesYes§5.6 PRC-07 · p.12
One end-to-end test payment before go-liveYesYesApp. E · p.26

Lot 1 goes live with Option 2 if MCB has not enabled host-to-host by then; switching to Option 1 later changes only the transport, not the controls or the data.

All 16 core reports of section 7.1 come straight from the system, drill down to records and export to PDF, Excel and PowerPoint. Trained Consultants build their own reports without Ethereal Purpose.
Security and continuity

Every section 7.3 requirement met in Lot 1

Verified before go-live through the acceptance tests, the restore test and the independent penetration test.

AreaHow Ethereal Purpose meets it
AuthenticationSSO through FSA's Entra ID with MFA enforced; step-up MFA on every payment signature
Access controlRoles from Appendix B; record- and field-level rules; quarterly access review; access ends on a Consultant's last day
Segregation of dutiesEnforced by the approvals engine on every item, including users holding several roles
EncryptionTLS 1.2/1.3 in transit; AES-256 at rest for database, files and backups
SecretsDedicated vault (OVHcloud KMS or HashiCorp Vault); no credentials in code
Audit trailEvery create, change, approval and export logged in an append-only store; read-only auditor and funder access
ContinuityMulti-zone live environment; daily backups at a second provider; point-in-time recovery; yearly restore test (AT-17)
Data protectionDPA under the Mauritius Data Protection Act 2017; notice to FSA within 24 h so FSA meets its 72 h duty
Penetration testIndependent regional certified firm: full test before go-live, retest every year; all findings fixed
PerformancePages under 2 s; usable on 1 Mbps; load-tested at peak
Availability≥ 99.9% a month, 24/7 monitoring
Delivery plan

Release 1 live in five months; all three lots by September 2027

Each lot follows the same five phases. Prices are built bottom-up: each person's time on each phase × their day rate. Open a phase to see who works on it and what they do.

Nov2026DecJan2027FebMarAprMayJunJulAugSepOctLot 1US$90,400Lot 1 – Mobilisation and design: 16 – 20 Nov 2026Lot 1 – Configuration and build sprints: 23 Nov 2026 – 26 Feb 2027Lot 1 – System and integration test: 1 – 12 Mar 2027Lot 1 – UAT, acceptance and training: 15 Mar – 2 Apr 2027Lot 1 – Go-live and hypercare: 5 – 16 Apr 2027live 5 April 2027Lot 2US$35,400Lot 2 – Mobilisation and design: 3 – 7 May 2027Lot 2 – Configuration and build sprints: 10 May – 2 Jul 2027Lot 2 – System and integration test: 5 – 9 Jul 2027Lot 2 – UAT, acceptance and training: 12 – 23 Jul 2027Lot 2 – Go-live and hypercare: 26 – 30 Jul 2027live 26 July 2027Lot 3US$7,700Lot 3 – Mobilisation and design: 2 – 6 Aug 2027Lot 3 – Configuration and build sprints: 9 Aug – 3 Sep 2027Lot 3 – System and integration test: 6 – 10 Sep 2027Lot 3 – UAT, acceptance and training: 13 – 17 Sep 2027Lot 3 – Go-live and hypercare: 20 – 24 Sep 2027live 20 September 2027DesignBuild sprintsSystem testUAT & trainingGo-live & hypercare

Lot 1 – Must · Release 1

US$90,400 fixed price538.6 person-days106 working dayslive 5 April 2027
1. Mobilisation and design16 – 20 Nov 20265 BD · 12 p-dUS$2,610
WhoTimeDaysWhat they do
EL Engagement lead40%2Runs the kick-off with the MD and signs off the design at the end of the week.
BA Functional consultant100%5Validates the EBRD's Appendices A to D with each FSA owner in five days of short workshops; issues the parameter schedule, Delegation of Authority matrix and role matrix for sign-off, with any open values logged and closed in sprint 1.
SD1 Lead developer40%2Installs Frappe/ERPNext and the FSA app skeleton; confirms the shared-core model (parameter schedule, approvals engine, audit trail).
SD2 Senior developer, finance20%1Agrees file formats with ITL, MCB and CASS.
OPS DevOps engineer40%2Deploys the test, UAT and live environments from templates and connects single sign-on and MFA.
2. Configuration and build sprints23 Nov 2026 – 26 Feb 202766 BD · 419.1 p-dUS$68,574
WhoTimeDaysWhat they do
EL Engagement lead20%13.2Plans each two-week sprint and runs the demo to FSA; design authority and code review of every hard stop; fortnightly steering committee.
BA Functional consultant70%46.2Configures the no-code items (forms, workflows, notifications, clocks) from the signed design; loads the parameter schedule; builds FSA's memo templates with DEV3; writes the UAT scripts.
SD1 Lead developer100%66Builds the platform core, limit engine (RSK-02/03), IC and Board engine (INV-07/08), Disbursement Pack hard stops (PFA-01) and segregation of duties.
SD2 Senior developer, finance100%66Builds the loan and grant register (PFA-02/03), valuation and IFRS 9 (PFA-06/12), restricted funds and liquidity tests (FIN-03/05), payment release (PRC-07) and the ITL and MCB links (PRC-08).
DEV1 Developer, governance100%66Builds the pipeline and screening (INV-01 to 03, 05, 06, 09, 10, 13, 14), tax checks (INV-15, CMP-12), integrity registers (CMP-04 to 07, 09), the restricted SEAH register (CMP-10) and the Board portal (GOV-01 to 03).
DEV2 Developer, operations100%66Builds KYC and screening with the CASS link (CMP-01 to 03), procurement (PRC-01, 02, 04, 06), travel (TRV-01 to 03), Consultants (CON-02, 03, 05), budget, close and tax calendar (FIN-01, 02, 04, 09, 10).
DEV3 Developer, reports100%66Builds document generation from the Deal Data Sheet (INV-04), the core reports and dashboards with PDF, Excel and PowerPoint export, covenants and investee reporting (PFA-04, 13), QIR (PFA-05), registers (PFA-07, 08) and early warning (RSK-01, 04, 05).
QA QA engineer40%26.4Writes a functional and a negative test for each Must requirement, tests every sprint, automates regression tests on the calculations.
OPS DevOps engineer5%3.3Sets up deployment pipeline, security hardening, monitoring and backups to the second provider.
3. System and integration test1 – 12 Mar 202710 BD · 50 p-dUS$8,315
WhoTimeDaysWhat they do
EL Engagement lead30%3Reviews test results and decides with FSA whether UAT can start.
BA Functional consultant40%4Checks results against FSA's policies; prepares UAT data and training material.
SD1 Lead developer100%10Fixes defects on the core, limits and IC/Board engine.
SD2 Senior developer, finance70%7Fixes defects on finance; runs integration tests with ITL and MCB test environments.
DEV1 Developer, governance70%7Fixes defects on governance and compliance.
DEV2 Developer, operations30%3Fixes defects; runs the CASS and screening integration tests.
DEV3 Developer, reports30%3Fixes report and template defects.
QA QA engineer100%10Runs all functional and negative tests, the 24 Appendix F tests and the load test.
OPS DevOps engineer30%3Supports the independent penetration test; runs the first restore test (AT-17).
4. UAT, acceptance and training15 Mar – 2 Apr 202715 BD · 40.5 p-dUS$7,598
WhoTimeDaysWhat they do
EL Engagement lead30%4.5Chairs UAT progress meetings; agrees go-live readiness with the MD against Appendix E.
BA Functional consultant80%12Leads UAT with FSA users; delivers role-based training, the Board/IC/ARC portal session and train-the-trainer; finalises EN/FR guides.
SD1 Lead developer40%6Fixes UAT defects on controls.
SD2 Senior developer, finance20%3Fixes UAT defects on finance; supports reconciliation of FSA's starting data (Appendix D).
DEV1 Developer, governance30%4.5Fixes UAT defects.
QA QA engineer60%9Runs the Appendix F tests witnessed by FSA and compiles the signed evidence pack.
OPS DevOps engineer10%1.5Prepares production, runs the restore test, completes the security checklist.
5. Go-live and hypercare5 – 16 Apr 202710 BD · 17 p-dUS$3,265
WhoTimeDaysWhat they do
EL Engagement lead20%2Takes the go-live decision with the MD; hands over to support with named contacts.
BA Functional consultant40%4Supports users day to day for two weeks; answers process questions.
SD1 Lead developer40%4Fixes any live issue; watches the first live disbursement and payment cycle.
DEV1 Developer, governance30%3Fixes any live issue.
QA QA engineer10%1Regression-tests every fix.
OPS DevOps engineer30%3Cut-over, end-to-end test payment through ITL and MCB, monitoring.

Lot 2 – Should · Release 2

US$35,400 fixed price212 person-days65 working dayslive 26 July 2027
1. Mobilisation and design3 – 7 May 20275 BD · 8.5 p-dUS$1,980
WhoTimeDaysWhat they do
EL Engagement lead40%2Plans Release 2 and holds the steering committee.
BA Functional consultant100%5Validates the 27 Should items with FSA owners in one week, building on Release 1, and updates the design.
SD1 Lead developer30%1.5Designs the pricing model, fund features and market-data and e-signature links.
2. Configuration and build sprints10 May – 2 Jul 202740 BD · 158 p-dUS$25,400
WhoTimeDaysWhat they do
EL Engagement lead15%6Sprint demos and design authority.
BA Functional consultant40%16Configures no-code items and writes UAT scripts.
SD1 Lead developer100%40Builds the loan pricing model (PFA-10), capital calls and GP NAV (PFA-11), KRIs, ALM and FX dashboards (RSK-06), upload checks (PFA-14), market data, AAF, e-signature and BI links.
DEV1 Developer, governance100%40Builds the open-call portal (INV-02, 16), fund features (INV-11), data room and DD checklists (INV-12, 17), site visits (INV-18), clause library (INV-19), workouts and impact (PFA-09, 16), SEAH, grievance and training (CMP-08, 11, 13), policy, audit and IC registers (GOV-04, 05, 07).
DEV2 Developer, operations100%40Builds evaluations and contract management (PRC-03, 05), treasury, FX and asset registers (FIN-06 to 08), Consultant engagement and performance (CON-01, 04), travel tracker (TRV-04).
QA QA engineer35%14Tests every Should requirement and runs regression on Release 1.
OPS DevOps engineer5%2Exposes the BI API and deploys the integrations.
3. System and integration test5 – 9 Jul 20275 BD · 17.5 p-dUS$2,755
WhoTimeDaysWhat they do
EL Engagement lead20%1Test status and UAT go/no-go.
BA Functional consultant30%1.5Prepares UAT data.
SD1 Lead developer60%3Fixes defects; integration tests.
DEV1 Developer, governance80%4Fixes defects.
DEV2 Developer, operations40%2Fixes defects on procurement, treasury and Consultant features.
QA QA engineer100%5Runs all Release 2 tests and Release 1 regression.
OPS DevOps engineer20%1Load check after Release 2.
4. UAT, acceptance and training12 – 23 Jul 202710 BD · 22 p-dUS$4,065
WhoTimeDaysWhat they do
EL Engagement lead20%2UAT meetings and readiness.
BA Functional consultant80%8Leads UAT and training on Release 2.
SD1 Lead developer30%3Fixes UAT defects.
DEV1 Developer, governance30%3Fixes UAT defects.
QA QA engineer60%6Compiles UAT evidence.
5. Go-live and hypercare26 – 30 Jul 20275 BD · 6 p-dUS$1,230
WhoTimeDaysWhat they do
EL Engagement lead10%0.5Go-live decision and handover.
BA Functional consultant40%2User support for one week.
SD1 Lead developer40%2Fixes any live issue.
OPS DevOps engineer30%1.5Deployment and monitoring.

Lot 3 – Could

US$7,700 fixed price49 person-days40 working dayslive 20 September 2027
1. Mobilisation and design2 – 6 Aug 20275 BD · 3 p-dUS$715
WhoTimeDaysWhat they do
EL Engagement lead10%0.5Plans Lot 3.
BA Functional consultant50%2.5Workshops on the Could items.
2. Configuration and build sprints9 Aug – 3 Sep 202720 BD · 32 p-dUS$4,930
WhoTimeDaysWhat they do
EL Engagement lead5%1Sprint demo.
BA Functional consultant15%3Configures registers and writes UAT scripts.
SD1 Lead developer25%5Builds the stress-test engine with DEV1 and reviews code.
DEV1 Developer, governance100%20Builds the health score (PFA-15), stress tests (RSK-07), RCSA (RSK-08), travel insurance and carbon report (TRV-05), succession registers (GOV-06) and the investee/GP upload portal.
QA QA engineer15%3Tests each Could requirement.
3. System and integration test6 – 10 Sep 20275 BD · 6.5 p-dUS$840
WhoTimeDaysWhat they do
DEV1 Developer, governance80%4Fixes defects.
QA QA engineer50%2.5Runs all Lot 3 tests and regression.
4. UAT, acceptance and training13 – 17 Sep 20275 BD · 5.5 p-dUS$958
WhoTimeDaysWhat they do
BA Functional consultant50%2.5Leads UAT and training.
DEV1 Developer, governance30%1.5Fixes UAT defects.
QA QA engineer30%1.5Compiles UAT evidence.
5. Go-live and hypercare20 – 24 Sep 20275 BD · 2 p-dUS$292
WhoTimeDaysWhat they do
DEV1 Developer, governance30%1.5Fixes any live issue.
OPS DevOps engineer10%0.5Deployment and monitoring.

Method

One-week design validates the EBRD's own Appendices A to D with each owner. Two-week sprints end with a demo to FSA. Ethereal Purpose runs system tests, FSA runs UAT, then go-live with hypercare.

What FSA provides

One owner per module (MD, HFO, RCM, Investment Manager, Team Assistant), about one day a week in design and UAT; approved policies and Delegation of Authority; test access to ITL, CASS and MCB.

Team

Nine roles, one named lead

A Tunisia-based Frappe team working in Mauritius office hours, with the engagement lead and functional consultant on site for the kick-off and the Lot 1 go-live.

CodeRoleDay rate (US$)Lot 1 daysLot 2 daysLot 3 days
ELEngagement lead and solution architect (named lead)$28024.711.51.5
BAFunctional consultant – investment and finance$23071.232.58
SD1Lead Frappe developer – platform core and controls$1808849.55
SD2Senior Frappe developer – finance and integrations$18077––
DEV1Frappe developer – governance and compliance$13580.54727
DEV2Frappe developer – procurement, travel, Consultants, KYC$1356942–
DEV3Frappe developer – reports, dashboards, document templates$13569––
QAQA and test engineer$12046.4257
OPSDevOps and security engineer$18012.84.50.5
Total person-days53921249

Named lead: to be confirmed by Ethereal Purpose. Every role has a named back-up.

Financial offer

Fixed price per lot, paid on accepted milestones

FSA pays each lot on four milestones tied to what it has accepted, not phase by phase.

Lot 1 – Must
US$90,400
59 requirements · live 5 April 2027
Lot 2 – Should
US$35,400
27 requirements · live 26 July 2027
Lot 3 – Could
US$7,700
5 requirements · live 20 September 2027
MilestoneTriggerShareLot 1 (US$)Lot 2 (US$)Lot 3 (US$)
M1Contract signature / lot start20%18,080 · 13 Nov 20267,080 · 3 May 20271,540 · 2 Aug 2027
M2Design and configuration sign-off30%27,120 · 20 Nov 202610,620 · 7 May 20272,310 · 6 Aug 2027
M3UAT and Appendix F tests passed30%27,120 · 2 Apr 202710,620 · 23 Jul 20272,310 · 17 Sep 2027
M4Go-live + 30 days stable20%18,080 · 5 May 20277,080 · 25 Aug 20271,540 · 20 Oct 2027
Total100%90,40035,4007,700

Excludes VAT and withholding tax, travel to Mauritius (at cost, pre-approved) and third-party subscriptions FSA holds directly (Microsoft 365, e-signature, commercial screening lists, market data).

Total cost of ownership

US$350,020 over five years, with no licence fees

Year 1 carries the three lots; from year 2 FSA pays only hosting, support and the yearly penetration test, about US$45,000 a year.

040k80k120k160kYear 1 – Implementation: US$133,500Year 1 – Hosting and backups: US$4,500Year 1 – Support: US$21,000Year 1 – Penetration test: US$4,500$163,500Year 1Year 2 – Hosting and backups: US$4,635Year 2 – Support: US$37,080Year 2 – Penetration test: US$3,000$44,715Year 2Year 3 – Hosting and backups: US$4,774Year 3 – Support: US$38,192Year 3 – Penetration test: US$3,000$45,966Year 3Year 4 – Hosting and backups: US$4,917Year 4 – Support: US$39,338Year 4 – Penetration test: US$3,000$47,255Year 4Year 5 – Hosting and backups: US$5,065Year 5 – Support: US$40,518Year 5 – Penetration test: US$3,000$48,583Year 5Implementation (3 lots)Hosting and backupsSupportPenetration test
Cost line (US$)Year 1Year 2Year 3Year 4Year 55-year total
Software licences000000
Implementation – Lot 1 (Must)90,40090,400
Implementation – Lot 2 (Should)35,40035,400
Implementation – Lot 3 (Could)7,7007,700
Hosting and backups4,5004,6354,7744,9175,06523,891
Support and maintenance21,00037,08038,19239,33840,518176,129
Independent penetration test4,5003,0003,0003,0003,00016,500
Total163,50044,71545,96647,25548,583350,020

Every sprint, the week-by-week Gantt and the payment schedule are in the cost workbook. Support starts at Lot 1 go-live; hosting and support rise 3% a year from year 2. The hosting line is broken down item by item in the next section.

10a · Hosting cost, line by line

US$375 a month, built from OVHcloud's public price list

Every server, disk and backup FSA's ERP needs, priced at the list prices OVHcloud and Hetzner publish today. The fee is fixed for FSA and rises 3% a year from year 2: US$23,891 over five years.

Monthly fee, year 1
US$375
US$351 at list price + US$24 contingency
Year 1
US$4,500
12 months from contract start
Five years
US$23,891
3% a year from year 2

The monthly bill

ItemSizeQtyOVHcloud / Hetzner list priceBilledUS$ / month
Live · OVHcloud Paris, 3 availability zonesHourly list price: 3-AZ resources are not eligible for Savings Plans
Application servers (Frappe, Gunicorn, Redis, background workers), one per zoneb3-8 · 2 vCPU · 8 GB RAM2US$0.0605 per hour730 h88.33
Local NVMe disk of the application servers50 GB each2US$0.1256 per GB-month50 GB12.56
Database servers: MariaDB primary and replica in different zonesb3-8 · 2 vCPU · 8 GB RAM2US$0.0605 per hour730 h88.33
Local NVMe disk of the database servers50 GB each2US$0.1256 per GB-month50 GB12.56
Database data volumes (Block Storage High Speed Gen2)100 GB each2US$0.09636 per GB-month100 GB19.27
Load Balancer across the zonesSize S1US$0.0095 per hour730 h6.93
Public floating IP of the load balancerIPv4 /321US$0.00319 per hour730 h2.33
Gateway: outbound internet for the private serversSize S1US$0.0032 per hour730 h2.34
Documents and attachments (Object Storage Standard, 3-AZ)250 GiB1US$0.0157 per GiB-month250 GiB3.92
Subtotal236.58
Test and UAT · OVHcloud France, single-zone region12-month Savings Plan (−15% on compute) allowed outside 3-AZ
UAT server: copy of live on one serverb3-8 · 2 vCPU · 8 GB RAM1US$37.54 per month (12-month plan)1 month37.54
Local NVMe disk of the UAT server50 GB1US$0.1256 per GB-month50 GB6.28
Test server for sprints and system testd2-8 · 4 vCPU · 8 GB RAM1US$0.0439 per hour730 h32.05
Public IPv4 of the test and UAT serversIPv4 /322US$0.00319 per hour730 h4.66
Subtotal80.52
Monitoring and secrets · OVHcloudPrometheus, Grafana, Uptime Kuma and HashiCorp Vault (open source) on one server
Monitoring and secrets-vault serverd2-4 · 2 vCPU · 4 GB RAM1US$0.0244 per hour730 h17.81
Public IPv4 of the monitoring serverIPv4 /321US$0.00319 per hour730 h2.33
Subtotal20.14
Backups, first copy · OVHcloudDaily, encrypted, 30 days kept
Daily database and file backups (Object Storage Standard, deduplicated)300 GiB1US$0.0157 per GiB-month300 GiB4.71
Weekly backups of the 4 live servers, 2 kept (Instance Backup)400 GB1US$0.0122 per GB-month400 GB4.88
Subtotal9.59
Backups, second provider · Hetzner, GermanyRequired by §7.3: backups held with a second provider
Storage Box BX11: encrypted daily copy (€3.20 a month)1 TB1US$3.58 per month1 month3.58
Quarterly restore test on a temporary server (24 h, 4 times a year)b3-8, billed by the hour1US$0.0605 per hour8 h avg0.48
Subtotal4.06
Total at list prices350.90
Contingency for exchange rate and supplier price changes (6.9%)24.10
Fixed monthly hosting fee to FSA, year 1375.00

Monthly cost = quantity × list price × use (730 hours a month for anything billed by the hour). Hetzner's euro price converted at 1 EUR = US$1.12 (EUR/USD was 1.1239 on 16 October 2026).

Why it is sized this way

Two of everything in live, one zone apart

Two application servers and a MariaDB primary and replica sit in different Paris zones behind one load balancer. If a zone fails, the other carries all 35 users alone, which is how the ≥ 99.9% availability and the section 7.3 recovery times are met (§7.3, p.17).

Right-sized for 35 users, room for 100

FSA has “a small number of users” (Appendix G, p.29); we size for about 35 named users, few of them at the same time. 2 vCPU and 8 GB per server runs Frappe comfortably at this scale and leaves headroom for Lots 2 and 3 and the investee portal; beyond about 100 users the servers move one size up.

Live priced at full hourly rate

OVHcloud does not give Savings Plan discounts in its 3-AZ region, so live is priced at the full hourly list price, with no discount assumed. Test and UAT run in a single-zone French region where the 12-month plan saves 15% on compute.

No hidden traffic charges

OVHcloud includes outbound traffic in Europe and charges nothing for traffic between zones or on the private network. A large cloud would bill database replication between zones and every download.

Backups twice, at two providers

A daily encrypted copy stays at OVHcloud for fast restores, and a second copy goes to Hetzner in Germany: “daily backups held with a second provider” (§7.3, p.17). A quarterly restore test on a temporary server proves the copy works.

Contingency of US$24 a month

OVHcloud prices are set in euros, and in 2026 OVHcloud raised prices by 9–11% and began billing local disks and IPv4 addresses separately. The margin absorbs that kind of change within year 1, so FSA's fee does not move.

Five-year hosting cost

YearMonthly fee (US$)Yearly cost (US$)What the year covers
Year 1375.004,500Contract start; the three environments are built in the design phase and used all year for data-migration rehearsals, system test, UAT, the pre-go-live penetration test, then live use from 5 April 2027
Year 2386.254,635Lot 2 (Should) live; no new servers needed, Frappe Insights and the new modules run on the same servers
Year 3397.844,774Steady state; 3% covers routine supplier price changes and growth of stored documents and backups
Year 4409.774,917Steady state; disks and backups sized for five years of FSA data from the start
Year 5422.075,065Steady state; FSA can reprice or move provider at renewal, with a full export of data and code
5-year total23,891Under 7% of the five-year cost of ownership

OVHcloud and Hetzner list prices used

ResourcePublic list price (US$, excl. VAT)Source
b3-8 instance (2 vCPU, 8 GB)US$0.0605 / hour · US$37.54 / month on a 12-month planOVHcloud price list
d2-8 instance (4 vCPU, 8 GB)US$0.0439 / hourOVHcloud price list
d2-4 instance (2 vCPU, 4 GB)US$0.0244 / hourOVHcloud price list
Local NVMe storage (billed separately since 1 Oct 2026)US$0.1256 / GB / monthOVHcloud price list · OVHcloud blog
Block Storage High Speed Gen2US$0.09636 / GB / monthOVHcloud price list
Object Storage StandardUS$0.0157 / GiB / month (first 50 TiB)OVHcloud price list
Instance BackupUS$0.0122 / GB / monthOVHcloud price list
Load Balancer SUS$0.0095 / hour (≈ US$6.94 / month)OVHcloud price list
Gateway SUS$0.0032 / hour (≈ US$2.34 / month)OVHcloud price list
Public IPv4 / floating IPUS$0.00319 / hour (≈ US$2.33 / month)OVHcloud price list
Outbound traffic and traffic between zonesIncluded, no per-GB charge in EuropeOVHcloud price list
Private network between serversFreeOVHcloud price list
Hetzner Storage Box BX11 (1 TB)€3.20 / month, no set-up feeHetzner listing
Prices exclude VAT. They are public list prices with no negotiated discount; Ethereal Purpose will confirm them with OVHcloud on award. Hosting in an African region stays available as a priced option (see Deviations).

Sources:

Appendix H deliverables

All five deliverables, fully met

Priced inside the lots and the recurring fees above.

DeliverableWhat Ethereal Purpose provides
EnvironmentsThree isolated environments (test, UAT, live) from mobilisation; anonymised test-data refresh within 2 BD
Guides and trainingUser and administrator guides in English and French; role-based training; Board/IC/ARC portal session; train-the-trainer
SupportDesk 08:00–18:00 Mauritius time; critical incidents 24/7: answered in 1 h, resolved or worked around in 8 h
AcceptanceUAT scripts with negative tests; AT-01 to AT-24 evidence pack; load test; independent penetration test; data-load reconciliation
ExitExport to CSV, JSON and SQL at any time; full dump at contract end; exit plan; FSA receives the full source code under GPLv3, which meets and exceeds the escrow requirement; the platform itself is open source

Support severity levels

SeverityDefinitionResponseResolution or workaround
1 – CriticalSystem down, payments or approvals blocked, security incident1 hour, 24/78 hours
2 – HighA module or hard stop unusable, no workaround4 business hours2 BD
3 – MediumFunction impaired, workaround exists1 BD10 BD
4 – LowQuestion, cosmetic issue, small change2 BDNext release
Risks and deviations

The main risks sit on rules and availability, not technology

Each risk has a mitigation built into the plan; every qualification of the EBRD is stated openly.

RiskLikelihoodImpactMitigation
Policies or parameter values not final at designMediumHighEvery value is a setting, so build continues; open values closed in sprint 1; MD signs the schedule before go-live
Limited availability of FSA's ConsultantsMediumHighFixed weekly slots agreed at kick-off; recorded demos; UAT scripts prepared by Ethereal Purpose
Complex calculations disagree with FSA's workbooksMediumHighEarly parallel run against the Loan Register and Limit Assessment workbooks; differences signed off
MCB host-to-host not available in timeMediumMediumSecure file upload with the same controls from day one
Scope growth during designMediumMediumChange control through the steering committee; Must items always first
Key-person dependencyLowHighNamed back-up for every role; code and configuration documented and in escrow

Qualified deviations

EBRD referenceQualification
Principle 10, App. GWe configure an open-source licensed product (Frappe/ERPNext) and develop only FSA-specific controls: 27 of 91 requirements.
INV-19, 7.2E-signature through FSA's chosen provider; subscription paid by FSA.
CMP-02, 7.2UN list feed included; PEP and adverse-media lists use the screening subscription listed in Appendix G as FSA's dependency.
PRC-08, 7.2MCB host-to-host depends on MCB; secure upload with the same controls until then.
7.1PowerPoint export is not standard in Frappe; developed and included in the price.
7.3Data hosted in the EU (France), backups in Germany; African hosting available as a priced option.
App. ETwo weeks of hypercare after Lot 1 go-live (one week for Lots 2 and 3), then the support retainer applies.
Annex 1 · Compliance matrix

Line-by-line response to the 91 requirements

Filter by module, priority or how each requirement is met.

91 requirements
IDRequirementPriorityHow metEthereal Purpose response
INV-01Log every lead at first contact and time the entry check (5 BD), the decline notice (21 days) and holds (≤3 months)MustConfigurationLead DocType with SLA timers (5 BD entry check, 21-day decline, 3-month hold) from the parameter schedule; reminders and escalation via Notification rules.
INV-02Run open calls through an external portal in English and French, with Q&A, panel scoring and feedbackShouldDevelopmentBilingual EN/FR open-call portal built on Frappe Web Forms and portal pages; Q&A thread, panel scoring sheet and feedback letters.
INV-03Screen each lead against the food systems test, the Exclusion List and sanctions (UN list and any funder list). Core eligibility criteria cannot be waived by anyone. For funds, require that no more than 10% of commitments fall outside agri-food, with an FSA excuse right in the side letterMustDevelopmentScreening checklist (food systems test, Exclusion List) plus sanctions hit check via the screening integration; core criteria coded as non-waivable hard stop; fund 10% agri-food test.
INV-04Hold the Deal Data Sheet. Generate from it the ISN (cleared by the MD, never sent to the IC), PIC Memo, FIA Memo, Updated FIA Memo, Follow-on FIA Memo, Resubmission Addendum, IC Decision Record, Decision Request and Closing MemoMustDevelopmentDeal Data Sheet is the single record; Jinja/Word templates generate ISN, PIC, FIA, Updated/Follow-on FIA, Addendum, Decision Record, Decision Request, Closing Memo. ISN excluded from IC pack by rule.
INV-05Record the track (standard or enhanced) set by the MD on the RCM's advice; enhanced overrides standard. There is no fast track: reimbursable grants below US$1m follow the standard track. Flag any expedited process used (follow-on, resubmission after deadlock, re-approval) and apply its conditionsMustConfigurationTrack field set by MD with RCM advice recorded first; expedited-process flag with condition checklist; no fast-track path exists in the workflow.
INV-06Track due diligence spend before PIC against the MD's limit; the IC approves spend above itMustConfigurationPer-deal DD spend counter against MD limit (parameter); above limit routes to IC.
INV-07Run the IC: twice-monthly calendar; one IC pack issued 5 BD before each meeting, admitting only papers the MD cleared at least 7 BD before, and locked after issue except for a Chair-approved correction; special meetings and written resolutions only for post-approval matters, authorised by the Chair, papers 2 BD before; quorum of 3 including 1 Independent; recusals; on a first deadlock, resubmission at either of the next two meetings, a second deadlock rejects; Decision Record within 2 BD, Chair signature within 1 BD, Board pack sent the same dayMustDevelopmentIC calendar, pack assembly with 7 BD clearance cut-off and 5 BD issue, pack lock and Chair-approved correction, quorum (3 incl. 1 Independent), recusals, deadlock counter, Decision Record and signature timers.
INV-08Route each approval to the Board: No Objection on a 7 BD lapse, or Express Approval for Critical, Limit Breach (Red limit or allocation cap reached) or E&S Category A. Parameter exceptions and related-party investments (after ARC review) go on No Objection. A director's objection triggers a meeting within 10 BDMustDevelopmentBoard routing rules: No Objection with 7 BD lapse timer, Express Approval for Critical / Limit Breach / E&S Cat A; objection stops clock and schedules meeting within 10 BD.
INV-09Track approval lapse (at signing, at 6 months or on a material adverse effect) and warn 2 weeks before. Allow expedited re-approval on an Updated FIA Memo only within 3 months, with RCM confirmation that investee, instrument and E&S category are unchanged, the rating is not High or Critical and no Red limit is reachedMustConfigurationLapse tracking with 2-week warning; expedited re-approval gated by RCM confirmations and rating/limit checks.
INV-10Apply the material change test and route changes to the IC, and to the Board where the amount or rating rises. Block a conversion above 25% of an investee until Board Express ApprovalMustDevelopmentMaterial change test on Deal Data Sheet versions; routing to IC/Board; conversion >25% blocked pending Board Express Approval.
INV-11Support fund investments (fund DDQ, side letters, LPAC, MFN) and expedited follow-ons, which use the regular IC pack and deadlinesShouldConfigurationFund DDQ template, side-letter and MFN tracker, LPAC records; follow-ons reuse the standard IC pack.
INV-12Provide a secure data room for each deal, with NDA trackingShouldConfigurationPer-deal restricted folders (Frappe File / Microsoft 365 SharePoint), NDA register with access gated on signed NDA.
INV-13Hold the investee stage (operating, early-stage, brownfield and expansion, greenfield) and test each proposal against the instrument eligibility criteria for that stage, held as Board-set parametersMustConfigurationInvestee stage field; eligibility matrix by stage held as Board-set parameters and tested on submission.
INV-14Keep an exceptions register: parameter exceptions (IC, then Board No Objection), built-in allowances (flagged, not exceptions) and Board-only waivers of minimum fund termsMustConfigurationExceptions register DocType with IC then Board No Objection workflow; allowances flagged separately; Board-only waiver path.
INV-15Run the intermediate-jurisdiction tax check and tax due diligence for each deal and fund, signed by the Deal Manager and RCM. Block IC approval of a structure that fails the Cooperative Jurisdiction test, with no overrideMustDevelopmentIntermediate-jurisdiction tax checklist signed by Deal Manager and RCM; Cooperative Jurisdiction test as hard stop on IC approval, no override.
INV-16Run the application portal so applicants can save and resume, with duplicate applications flagged, reminders at 7 and 14 days and incomplete applications closed at 30 days. Screen a whole call in bulk against the version of the eligibility criteria in force, keeping each versionShouldDevelopmentSave-and-resume applications, duplicate detection, 7/14-day reminders, auto-close at 30 days, bulk screening against versioned criteria.
INV-17Generate a due diligence checklist for each deal type and instrument, and track every data-room request with its owner, due date and statusShouldConfigurationDD checklist templates by deal type and instrument; data-room request tracker with owner, due date and status.
INV-18Record site visits with notes and geo-tagged photos from a mobile device, and give external advisers and consultants deal-specific access that expires automaticallyShouldConfigurationSite-visit form usable on mobile with geo-tagged photo capture; time-boxed external adviser access.
INV-19Hold a clause library of FSA's approved terms, flag any departure in a counterparty draft for review, support e-signature in a set signing order, and capture key terms (amounts, dates, conditions precedent, covenants) as data that feeds the loan register and covenant trackerShouldDevelopmentClause library, comparison of counterparty drafts against approved clauses, e-signature via FSA's provider in set order; key terms captured as data feeding loan register and covenants.
PFA-01Build the Disbursement Pack: counsel's written CP confirmation, RCM checks of limits and KYC, HFO liquidity; MD approves within 2 BD; HFO issues the payment instruction within 1 BD and ITL only executes it. Block if the sanctions, PEP and adverse-media screen is over 30 days old; Board approval is missing or documents were not signed within 6 months of it; an IC condition is neither met nor deferred; or the Deal Data Sheet version differs from the signed agreementMustDevelopmentPack assembles CP confirmation, RCM limit/KYC checks, HFO liquidity; all hard stops (screen ≤30 days, Board approval current, 6-month signing, IC conditions, DDS version match) block MD approval.
PFA-02Keep the loan and grant register: schedules, interest (reference rate plus margin, with a floor), fees and PIK. Calculate ≥20 days and send billing notices ≥15 days before the due dateMustDevelopmentFacility schedules, reference rate + margin with floor, fees, PIK; billing calculated ≥20 days and notices ≥15 days before due date. Reuses the open-source Frappe Lending app for schedules and interest accrual.
PFA-03Chase arrears: reminder within 1 BD, formal notice within 10 days. Reconcile the register monthly within 10 BDMustConfigurationArrears clocks (1 BD reminder, 10-day formal notice); monthly reconciliation task within 10 BD.
PFA-04Track covenants, investee reporting (quarterly management accounts 45 days, or 30 days for the June and December quarters; equity reports 20 days monthly or 30 days quarterly; audited accounts 120 days; ESG 90 days), compliance certificates and annual tax confirmationsMustConfigurationCovenant and reporting obligations with due-date rules per report type; compliance certificates and annual tax confirmations.
PFA-05Run a Quarterly Investment Review (QIR) for every investment and supervision visits. The MD approves the QIR; the IC approves the semi-annual valuations, notes the quarterly valuation reviews and approves any interim revaluation; the ARC reviews half-year and year-end valuationsMustConfigurationQIR form per investment and supervision visits; approval chain MD → IC → ARC as configured.
PFA-06Value holdings twice a year (30 June and 31 December) at fair value (IPEV), using ≥2 methods and explaining gaps over 20%; loans at amortised cost with IFRS 9 staging and ECL. At 31 March and 30 September, roll carrying values forward unless a Valuation Trigger Event requires an interim revaluationMustDevelopmentSemi-annual fair value (IPEV) with ≥2 methods and >20% gap explanation; amortised cost, IFRS 9 staging and ECL inputs; quarterly roll-forward unless trigger event.
PFA-07Keep the security, shareholder rights, LP rights, nominee director and concessionality registersMustConfigurationSecurity, shareholder rights, LP rights, nominee director and concessionality registers as linked DocTypes.
PFA-08Classify waivers within 3 BD (routine: MD; material: IC) and reserved matters within 5 BDMustConfigurationWaiver and reserved-matter classification with 3/5 BD timers and routing (MD routine, IC material).
PFA-09Manage workouts (plan within 30 days), divestment plans, exit and closure reports, and security release within 30 daysShouldConfigurationWorkout plan (30 days), divestment plan, exit/closure reports, security release timer.
PFA-10Price loans with FSA's loan pricing model (CRR, Affordability Rate, pricing floor, Grant Element) and keep the pricing record with the memoShouldDevelopmentFSA loan pricing model (CRR, Affordability Rate, floor, Grant Element) rebuilt from the Loan Pricing Workbook; pricing record attached to memo.
PFA-11Handle fund capital calls (pay ≥2 BD before the due date, pack within 3 BD), checking no underlying investment is excluded or outside agri-food, and roll forward GP NAVsShouldDevelopmentCapital call handling with payment ≥2 BD before due, pack within 3 BD, exclusion and agri-food checks; GP NAV roll-forward.
PFA-12Run the valuation calendar: Valuation Dates, quarterly reviews, trigger-event log, IC approval timer, Semi-annual Valuation Report, independent valuer programme and back-testing of exits (differences over 10% explained)MustConfigurationValuation calendar, trigger-event log, IC approval timer, Semi-annual Valuation Report, valuer programme and exit back-testing.
PFA-13Send investees and fund managers automatic reminders before each report is due and when it is missed, and give fund managers a standard reporting templateMustConfigurationAutomatic reminders before and after report due dates; standard fund-manager reporting template.
PFA-14Check reported figures on upload and flag any movement beyond a set percentage from the prior period or the plan for the Deal Manager to explainShouldDevelopmentUpload validation flags movements beyond a parameter % vs prior period or plan for Deal Manager explanation.
PFA-15Show a health score for each investee, combining risk rating, arrears, covenant status, reporting timeliness and E&S findings, with the weights held as settingsCouldConfigurationWeighted investee health score (weights as settings) on a dashboard.
PFA-16Hold an impact indicator library (food security, livelihoods, enterprise growth, resilience) tagged to the SDGs and Agenda 2063, and track each investment's results against its targetsShouldConfigurationImpact indicator library tagged to SDGs and Agenda 2063; targets vs results per investment.
RSK-01Score risk 1–25 (Low, Moderate, High, Critical) and rate investees 1–5, mapped to early-warning status and IFRS 9 stageMustConfigurationRisk score 1–25 and investee rating 1–5 mapped to early-warning status and IFRS 9 stage via parameter tables.
RSK-02Test each proposal against every limit in FSA's limit schedule before commitment and show the headroom. Measure on a committed basis, including undrawn amounts, by group and with fund look-through. Each allocation cap has an Amber early-warning trigger below the cap; reaching a cap is a Limit BreachMustDevelopmentSingle limit table; pre-commitment test on committed basis incl. undrawn, by group, with fund look-through; Amber triggers and Limit Breach at cap; headroom display.
RSK-03Monitor limits monthly. Amber: to the MD within 2 BD. Red (Limit Breach): immediate notice, in writing within 2 BD, remediation plan within 10 BD, new exposure blockedMustConfigurationMonthly limit run (scheduled job); Amber/Red notifications and remediation clocks; new exposure blocked on Red.
RSK-04Run early warning from investee data. Amber: review within 10 BD. Red: IC and ARC Chair within 1 BD, plan within 30 days. Watch-list reviewed monthlyMustConfigurationEarly-warning rules from investee data; Amber/Red escalation clocks; monthly watch-list review.
RSK-05Keep the risk register, risk event register and actions tracker, and the exceptions and breach registers. Events are due within 2 BD; losses above a set threshold are escalatedMustConfigurationRisk register, risk event register, actions tracker, exceptions and breach registers; loss escalation threshold.
RSK-06Calculate the KRIs and the monthly ALM and FX dashboardsShouldDevelopmentKRI calculations and monthly ALM and FX dashboards in Frappe Insights.
RSK-07Run stress tests from stored scenarios (portfolio quarterly; reverse stress annually)CouldDevelopmentStored stress scenarios applied to portfolio quarterly; annual reverse stress test.
RSK-08Support the annual risk and control self-assessment, with control ratings and samplingCouldConfigurationRCSA campaigns with control ratings and sampling.
CMP-01Hold KYC files for investees, sponsors, beneficial owners, suppliers and Consultants. The beneficial-owner threshold is a settingMustConfigurationKYC party record for investees, sponsors, beneficial owners, suppliers and Consultants; BO threshold as parameter.
CMP-02Screen against the UN list (mandatory) and other lists at onboarding, within 30 days before each disbursement and on any changeMustDevelopmentUN Consolidated List (mandatory) and other lists at onboarding, ≤30 days pre-disbursement and on change, via screening service API or CASS exchange.
CMP-03Schedule KYC refreshes by risk ratingMustConfigurationRefresh schedule by KYC risk rating with timers.
CMP-04Log suspicious-activity reports in confidence, with no tipping off. Track FIU decisions and the 24-hour sanctions report to the National Sanctions SecretariatMustConfigurationConfidential SAR log with role-restricted access, FIU decision tracking and 24-hour sanctions-report clock.
CMP-05Keep declarations of interest (on appointment, by 31 January, within 5 BD of a change, per deal, per meeting), recusals and the Restricted ListMustConfigurationDeclarations of interest (appointment, annual 31 Jan, change, per deal, per meeting), recusals, Restricted List.
CMP-06Keep the gifts register, with limits as settings and gifts blocked under Funder Capital contractsMustConfigurationGifts register with value bands as settings; blocked under Funder Capital contracts.
CMP-07Run a confidential whistleblowing log: acknowledge within 3 BD, Champion within 5, terms within 10, updates every 30 days, close within 90 daysMustConfigurationConfidential whistleblowing log with 3/5/10/30/90-day clocks.
CMP-08Track Code acknowledgements, annual certifications and mandatory trainingShouldConfigurationCode acknowledgements, annual certifications and training tracker.
CMP-09Keep the regulatory and funder calendar, including funder reports and allegation notices within 2 BDMustConfigurationRegulatory and funder calendar with 2 BD allegation notice clock.
CMP-10Keep a restricted SEAH case register, visible only to the RCM, MD, Whistleblowing Champion and named investigators, with the person concerned locked out. Run the clocks: focal-point actions in 24 hours, ARC Chair in 1 BD, investee and AAF notices in 2 BD, acknowledgement in 3 BD, investigation target 90 daysMustDevelopmentRow- and field-level restricted SEAH register; person concerned locked out; 24h/1/2/3 BD and 90-day clocks.
CMP-11Hold SEAH undertakings, pre-appointment checks and training dates, and record SEAH due diligence, conditions and investee reporting for each deal and fundShouldConfigurationSEAH undertakings, pre-appointment checks, training dates and deal/fund SEAH due diligence.
CMP-12Keep the tax risk register and the status of each jurisdiction used. On a tax trigger event, notify the MD and ARC Chair within 2 BD; block follow-ons through a non-cooperative jurisdictionMustConfigurationTax risk register and jurisdiction status; trigger-event notices within 2 BD; follow-ons blocked through non-cooperative jurisdictions.
CMP-13Keep an external grievance log for affected communities and workers (anonymous allowed), acknowledged within 10 BD and reported to the ARC at least twice a yearShouldConfigurationExternal grievance form (anonymous allowed), 10 BD acknowledgement, semi-annual ARC report.
FIN-01Run the budget calendar (call on 30 September, Board approval before 31 December), with monthly monitoring, a half-year reforecast and the interim 1/12 ruleMustConfigurationBudget calendar, monthly monitoring, half-year reforecast and interim 1/12 rule.
FIN-02Control reallocations within the MD's delegated limit, with Board approval above it and the funder's margin applied to funder lines; change log within 2 BDMustConfigurationReallocation workflow within MD limit, Board above; funder margin applied on funder lines; change log.
FIN-03Keep restricted-fund ledgers by funder, tranche and budget line, with an eligibility check before each Good to PayMustDevelopmentFunder / tranche / budget-line dimensions with eligibility check before Good to Pay.
FIN-04Run the close: bank reconciliations by BD5, HFO review by BD7, management accounts by BD10, MD approval by BD12. Produce the quarterly NAV within 45 days on carrying values; at 30 June and 31 December restate it within 10 BD of the MD approving the valuations; reflect any IC change in the next NAVMustConfigurationClose checklist (BD5/7/10/12) with timers; quarterly NAV pack from carrying values and semi-annual restatement.
FIN-05Forecast cash (13-week, 12-month, 5-year). Before each commitment, test the liquidity coverage ratio and the asset test against Board limitsMustDevelopment13-week, 12-month and 5-year cash forecasts; liquidity coverage ratio and asset test before each commitment.
FIN-06Track surplus cash in permitted investments against counterparty limits, within the operating balance limitShouldConfigurationPermitted investments register with counterparty limits and operating balance limit.
FIN-07Record FX conversions, with two quotes above a set threshold. Convert local-currency receipts within 10 BDShouldConfigurationFX conversion records, two quotes above threshold, 10 BD local-currency conversion clock.
FIN-08Keep the fixed-asset register and the bank account and signatory registerShouldStandardFixed-asset register (ERPNext Assets) and bank account / signatory register.
FIN-09Produce funder reports through AAF (pre-tranche 45 days before release; annual within 45 days of year end)MustConfigurationFunder report templates (pre-tranche, annual) via AAF with timers.
FIN-10Keep the tax file and calendar: returns prepared by ITL, reviewed by the HFO and approved by the MD; Tax Residence Certificate and substance evidence; FATCA and CRS filings; withholding tax and treaty relief recorded before each closingMustConfigurationTax file and calendar, TRC and substance evidence, FATCA/CRS tracking, withholding tax and treaty relief before closing.
PRC-01Raise requisitions against budget and set the method by value: RfQ up to US$25,000 (3 quotes); Competitive Tender up to US$150,000; Open Tender above that (21 BD, 90-day bid validity, 7-day standstill)MustStandardMaterial Request against budget; method set by value thresholds (RfQ/Competitive/Open Tender) with tender timers.
PRC-02Add up 12 months of purchases from each supplier to stop contract splitting; require a reason for single sourcingMustConfigurationRolling 12-month supplier aggregation check; single-source justification mandatory.
PRC-03Run evaluations with conflict declarations before bids are opened, scoring grids fixed at publication, and minutesShouldConfigurationEvaluation with conflict declarations before opening, locked scoring grid and minutes.
PRC-04Onboard suppliers with due diligence tiered by value, and periodic refreshMustConfigurationSupplier onboarding with tiered due diligence and refresh dates.
PRC-05Manage contracts: variations, renewals (never automatic), annual supplier reviews, and complaints on timersShouldConfigurationContract variations, renewals (never automatic), annual reviews and complaint timers.
PRC-06Match order, receipt (3 BD) and invoice (3 BD) before Good to PayMustStandardThree-way match (PO, receipt within 3 BD, invoice within 3 BD) before Good to Pay.
PRC-07Release payments only with Panel A and Panel B, adding a third signatory above a set threshold. Call back on any new or changed bank details. Payments to the MD need a separate approverMustDevelopmentPanel A + Panel B release, third signatory above threshold, call-back on bank detail change, no self-release, separate approver for MD payments.
PRC-08Send payment instructions to ITL and MCB and receive confirmations. No cashMustDevelopmentPayment instruction files to ITL and MCB; confirmation import. (Integration effort costed separately.)
TRV-01Raise Mission Requests at least 7 BD ahead (12 BD for High-risk), with an HFO budget check, an RCM risk level and approval by traveller and riskMustConfigurationMission Request with 7/12 BD lead time, HFO budget check, RCM risk level and approval matrix.
TRV-02Calculate DSA from ICSC rates, with reductions. Pay advances at least 3 BD before departure; block a new advance while one is unsettledMustDevelopmentDSA calculation from ICSC rates with reductions; advance timing and block on unsettled advance. Reuses Frappe HR travel request, advance and expense claim.
TRV-03Settle claims and advances within 10 BD of return, with the back-to-office report (BTOR) within 5 BD. Recover unsettled advances from fees after 30 daysMustConfigurationClaim settlement 10 BD, BTOR 5 BD, recovery from fees after 30 days.
TRV-04Keep a travel tracker with daily check-ins for High-risk trips and incident reports within 24 hoursShouldConfigurationTravel tracker with daily check-ins and 24h incident reports.
TRV-05Confirm insurance cover and HEAT training before High-risk travel. Produce the annual travel and carbon reportCouldConfigurationInsurance and HEAT training check before High-risk travel; annual travel and carbon report.
CON-01Run engagement: positions register, adverts (≥14 days), panel scoring, pre-engagement checks, contract issue with a copy to ITLShouldConfigurationPositions register, adverts ≥14 days, panel scoring, pre-engagement checks, contract issue copied to ITL.
CON-02Track onboarding: objectives within 30 days, a 3-month review, and renewal reminders 60 and 30 days before expiryMustConfigurationOnboarding objectives (30 days), 3-month review, renewal reminders at 60/30 days.
CON-03Take monthly invoices with timesheets or deliverables. The Supervisor certifies within 5 BD and ITL pays within 10 BD. Track non-service days. Hold any performance-related fee the Board withholds or recovers (malus and clawback)MustDevelopmentMonthly invoices with timesheets/deliverables, Supervisor certification 5 BD, ITL payment 10 BD, non-service days, malus/clawback holds. Reuses Frappe HR timesheets and advances.
CON-04Hold mid-year and year-end performance reviews and improvement plansShouldConfigurationMid-year and year-end reviews and improvement plans.
CON-05Offboard: revoke access and signing authorities on the last day, reconcile advances, final invoice within 30 daysMustConfigurationOffboarding: access and signing authorities revoked on last day, advances reconciled, final invoice timer.
GOV-01Provide a Board and committee portal: calendar, minutes and action logs; papers 7 days ahead for the Board, the IC pack 5 BD ahead, 5 BD for the ARC; quorum checks (the Board needs 1 independent and 1 resident director)MustDevelopmentBoard and committee portal: calendar, minutes, action logs, paper deadlines and quorum checks (independent and resident director).
GOV-02Run written resolutions and No Objection votes, with Company Secretary certificationMustConfigurationWritten resolutions and No Objection voting with Company Secretary certification.
GOV-03Activate an acting MD after 5 BD of absence, with limited powers (no transaction agreements), and record Board ratificationMustConfigurationActing MD activation after 5 BD absence with restricted authority codes and Board ratification record.
GOV-04Keep the policy register, with review dates and version control, including the SEAH and Tax PoliciesShouldConfigurationPolicy register with review dates and version control.
GOV-05Track internal audit findings against remediation clocks (Critical 30 days, High 90, Medium 180, Low 12 months), with the risk-acceptance ladderShouldConfigurationInternal audit findings with remediation clocks and risk-acceptance ladder.
GOV-06Keep the key-person and succession registersCouldConfigurationKey-person and succession registers.
GOV-07Keep the IC membership register: composition, terms, the 9-year limit for Independents, the 90-day vacancy clock, attendance and the annual self-assessmentShouldConfigurationIC membership register with terms, 9-year limit, 90-day vacancy clock, attendance and self-assessment.