diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index b02c07a0..c0c689ad 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -1152,7 +1152,7 @@ module.exports = { ['features/use-cases', 'Use Cases'], ['features/transaction', 'Transactions'], ['features/risk', 'Risk Management'], - ['features/connectivity', 'Connectivity Support'], + ['features/connectivity', 'DFSP Onboarding'], ['features/product', 'Portals and Operational Features'], ['features/tariffs', 'Fees and Tariffs'], ['features/performance', 'Performance'], diff --git a/docs/product/features/connectivity.md b/docs/product/features/connectivity.md index ef87e432..0d9850f9 100644 --- a/docs/product/features/connectivity.md +++ b/docs/product/features/connectivity.md @@ -1,7 +1,20 @@ -# Connectivity +# DFSP Onboarding -In principle, having developed and documented the [Mojaloop APIs](./transaction.md#Mojaloop APIs), this should be sufficient to enable DFSPs to connect to a Mojaloop Hub. However, as part of the Mojaloop Community's mission to address financial inclusion, it has long been felt that the key to minimising the cost and complexity of connecting a DFSP's back office to a Mojaloop Hub is through the provision of a portfolio of connectivity solutions, allowing a DFSP to select the approach that best meets their needs. +In principle, having developed and documented the [Mojaloop APIs](./transaction.md#Mojaloop APIs), this should be sufficient to enable DFSPs to connect to a Mojaloop Hub. However, as part of the Mojaloop Community's mission to address financial inclusion, it has long been felt that the key to minimising the cost and complexity of connecting a DFSP's back office to a Mojaloop Hub is through the provision of a portfolio of connectivity solutions, allowing a DFSP to select the approach that best meets their needs. These are supplemented by a DFSP Onboarding Playbook, encapsulating the business processes that are needed to onboard a DFSP. +## Business Onboarding +There are many steps needed in the onboarding of a DFSP to a Mojaloop Hub that are nothing to do with technology, and these are addressed in the DFSP Onboarding Playbook. +This playbook, which has been donated by Thitsaworks, comprises a set of tools and templates to assist with the planning and execution of a Mojaloop deployment, specifically focusing on DFSP onboarding. The tools are: +- A workplan template, including samples used in past deployments; +- An example end to end test case, in this case for payee-side DFSP integration; +- A Technical assessment form, used to define the technical assistance required by candidate DFSPs; +- A technical onboarding checklist; +- An API mapping template, used to map between Mojaloop Hub API elements and the corresponding actions required by the DFSP's back office; +- A plan for the setup of the security of the DFSP's connection to the Mojaloop Hub. + +You can [download the Thitsaworks DFSP Onboarding Playbook by clicking on this link](https://drive.google.com/drive/folders/198J65_WtneNV3CsF-M82g7zJqnxfmO9p?usp=sharing). + +## Technical Onboarding The current connectivity portfolio includes a toolkit that would allow a Systems Integrator (SI) to create a connection by combining the various elements of a toolkit in a way that best meets the DFSP's needs. These elements include: - Mojaloop Connection Manager (MCM); - Mojaloop Connector (for integrating with the Mojaloop Hub); @@ -25,11 +38,12 @@ Note that the adoption of an exemplar installation affects the type of service a ## Applicability -This version of this document relates to Mojaloop Version [17.0.0](https://github.com/mojaloop/helm/releases/tag/v17.0.0) +This version of this document relates to Mojaloop Version [17.1.0](https://github.com/mojaloop/helm/releases/tag/v17.1.0) ## Document History |Version|Date|Author|Detail| |:--------------:|:--------------:|:--------------:|:--------------:| +|1.3|6th November 2025| Paul Makin|Linked to Thitsaworks' DFSP Onboarding Playbook| |1.2|9th June 2025| Tony Williams|Added reference to participant feature matrix| |1.1|14th April 2025| Paul Makin|Updates related to the release of V17| |1.0|5th February 2025| Paul Makin|Initial version| \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 19886b39..06013f5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,10 @@ "devDependencies": { "@vuepress/plugin-back-to-top": "^1.9.10", "@vuepress/plugin-medium-zoom": "^1.9.10", - "got": "^14.5.0", + "got": "^14.6.2", "husky": "^9.1.7", "markdownlint-cli": "^0.45.0", - "npm-check-updates": "^19.0.0", + "npm-check-updates": "^19.1.2", "plantuml-encoder": "^1.4.0", "svgo": "^4.0.0", "vuepress": "^1.9.10", @@ -4255,6 +4255,19 @@ "esbuild": ">=0.13" } }, + "node_modules/byte-counter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/byte-counter/-/byte-counter-0.1.0.tgz", + "integrity": "sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -7288,27 +7301,16 @@ } }, "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-10.0.0.tgz", + "integrity": "sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" + "mimic-response": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, "engines": { - "node": ">=10" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9917,17 +9919,18 @@ } }, "node_modules/got": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/got/-/got-14.5.0.tgz", - "integrity": "sha512-rZ8+ZMYz9yeTFmFtOiwf/Trcli8gdqgqAz0kmkEOWcT7C3BFG3Z+dLQu0y8je7RogG7Wp1obnu5GerwCaccftw==", + "version": "14.6.2", + "resolved": "https://registry.npmjs.org/got/-/got-14.6.2.tgz", + "integrity": "sha512-bnhvxegqufyxHAmzwCZSscjGLVpw6/NzTXOk2tQVu/b9Q9FeMAgLabYulXEQRwP04UYltnkcZwvBq14fsdqvyw==", "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/is": "^7.0.1", "@szmarczak/http-timer": "^5.0.1", + "byte-counter": "^0.1.0", "cacheable-lookup": "^7.0.0", "cacheable-request": "^13.0.12", - "decompress-response": "^6.0.0", + "decompress-response": "^10.0.0", "form-data-encoder": "^4.0.2", "http2-wrapper": "^2.2.1", "keyv": "^5.5.3", @@ -12841,10 +12844,11 @@ } }, "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.1.tgz", + "integrity": "sha512-8lqe85PkqQJzIcs2iD7xW/WSxcncC3/DPVbTOafKNJDIMXwGfwXS350mH4SJslomntN2iYtFBuC0yNO3CEap6g==", "dev": true, + "license": "MIT", "dependencies": { "dom-walk": "^0.1.0" } @@ -13351,9 +13355,9 @@ } }, "node_modules/npm-check-updates": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-19.0.0.tgz", - "integrity": "sha512-qcfjZEv6xB+WvW24S8wU1MKISPPiTREraBg62XDo/7zmOLXH3Zj7ti2v/LRfks0qITU8SDZLTWwgIitflvursw==", + "version": "19.1.2", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-19.1.2.tgz", + "integrity": "sha512-FNeFCVgPOj0fz89hOpGtxP2rnnRHR7hD2E8qNU8SMWfkyDZXA/xpgjsL3UMLSo3F/K13QvJDnbxPngulNDDo/g==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 5ae7d4b9..f133e8a2 100644 --- a/package.json +++ b/package.json @@ -24,10 +24,10 @@ "devDependencies": { "@vuepress/plugin-back-to-top": "^1.9.10", "@vuepress/plugin-medium-zoom": "^1.9.10", - "got": "^14.5.0", + "got": "^14.6.2", "husky": "^9.1.7", "markdownlint-cli": "^0.45.0", - "npm-check-updates": "^19.0.0", + "npm-check-updates": "^19.1.2", "plantuml-encoder": "^1.4.0", "svgo": "^4.0.0", "vuepress": "^1.9.10",