# SDK Support for Bulk Transfers - Overview
This design document describes how the SDK Scheme Adapter has been enhanced to support the bulk transfers use case.
# Why? - Mojaloop bulk transfer limitations overcome
The implementation of bulk transfers within Mojaloop have the following limitations that this SDK bulk enhancement is designed to overcome.
- Only individual transfers that are addressed to the same Payer DFSP may be included in a bulk quotes and bulk transfers call.
- The number of individual quotes and transfers in each bulkQuotes and bulkTransfers respectively are limited to a maximum of 1000.
- In order to allow bulk functionality, all Payee DFSP's need to create integration support for bulk messaging. I.e. If the bulk use case were to be introduced into an existing scheme, then all connecting DFSPs would need to upgrade their connections and integrations into their core banking systems.
- There is currently no bulk discovery call.
# SDK Scheme Adapter bulk enhancement requirements
The enhancements enable:
- Transfers where the discovery has not yet been called.
- No limit on number of transfers (limited by infrastructure, network capabilities but > 1k that ML FSPIOP specifies)
- Payee integration support for bulk being optional
- Optionally support
- a single call that performs Discovery, Agreement and Transfer
- independently accepting of party lookups
- independently accepting of quotes
- setting a fee limit on the auto acceptance of quotes
- the skipping of the discovery phase
- running only the discovery phase
- setting an expiration for the bulk message
- home transaction IDs for both the bulk message and the individual transfers.
- both synchronous API calls and asynchronous API calls
# Features Implemented
The current implementation does not include all the features. All the features that have been completed are functional and can be used. Additional features and enhancements can be added to the existing functionality as prioritized by Mojaloop product and the community. This aligns with the MVP (Minimal Viable Product) agile concept. These are the features that are currently implemented:
Feature | Implementation Status | Release Version |
---|---|---|
Asynchronous Mode | released | v14.1.0 RC |
Synchronous Mode | not started | |
Auto Accept Party | not started | |
Auto Accept Quote (with fee limit) | not started | |
Only Validate Party | not started | |
Skip Party Lookup | not started | |
Bulk Expiration | not started | |
Payee SDK - Demultiplexing bulk quotes | not started | |
Payee SDK - Demultiplexing bulk transfers | not started | |
Mojaloop - Bulk Patch Notification | not started | |
Payee SDK - Demultiplexing bulk patch notification | not started |
# Functional Diagram
# Architectural Diagram
The Event Sourcing architecture has split the implementation into four components
- Backend API : The backend API receives API call and produces corresponding domain events, and monitors domain events to produce API callbacks.
- Domain Event Handler: The Domain Event Handler consumes Domain Events and produces Command events.
- Command Event Handler: The Command Event Handler consumes command events and produces domain events
- FSPIOP API: The FSPIOP API monitors domain events and produces corresponding FSPIOP calls, and monitors API Callbacks to produce corresponding domain events.
# Overview Sequence Diagram
Here is a sequence diagram that outlines the role that the SDK Scheme Adapter will play in a bulk call, both for a Payer DFSP and a Payee DFSP.
← Usage tests API →