From 583daafb33c9f793735a0a548f2acf0a92158308 Mon Sep 17 00:00:00 2001 From: Uduak 'Eren Date: Tue, 28 Dec 2021 13:25:52 -0800 Subject: [PATCH] feat: migrate central settlement service docs --- .../versioned_docs/v1.0.1/sidebar.config.json | 96 + .../technical/central-settlements/.gitkeep | 0 .../technical/central-settlements/README.md | 24 + .../central-settlements/assets/.gitkeep | 0 .../assets/diagrams/Settlement_ERD.png | Bin 0 -> 184297 bytes .../Arch-Mojaloop-Settlements-PI4.svg | 3 + .../funds-in-out/README.md | 27 + ...0.a-reconciliationTransferPrepare.plantuml | 127 ++ ...-5.1.0.a-reconciliationTransferPrepare.svg | 267 +++ ....b-transferStateAndPositionChange.plantuml | 179 ++ ...5.1.0.b-transferStateAndPositionChange.svg | 473 +++++ .../sequence/seq-recfunds-5.1.1-in.plantuml | 150 ++ .../sequence/seq-recfunds-5.1.1-in.svg | 426 ++++ ...ecfunds-5.2.1-out-prepare-reserve.plantuml | 157 ++ ...seq-recfunds-5.2.1-out-prepare-reserve.svg | 443 +++++ .../seq-recfunds-5.2.2-out-commit.plantuml | 125 ++ .../seq-recfunds-5.2.2-out-commit.svg | 334 ++++ .../seq-recfunds-5.2.3-out-abort.plantuml | 125 ++ .../sequence/seq-recfunds-5.2.3-out-abort.svg | 334 ++++ .../funds-in-prepare-reserve-commit.md | 8 + .../funds-in-out/funds-out-abort.md | 8 + .../funds-in-out/funds-out-commit.md | 8 + .../funds-in-out/funds-out-prepare-reserve.md | 9 + .../reconciliation-transfer-prepare.md | 8 + .../transfer-state-and-position-change.md | 8 + .../central-settlements/oss-settlement-fsd.md | 1723 ++++++++++++++++ .../settlement-process/README.md | 111 ++ .../seq-gross-settlement-handler.plantuml | 204 ++ .../sequence/seq-gross-settlement-handler.svg | 567 ++++++ .../sequence/seq-rules-handler.plantuml | 219 ++ .../diagrams/sequence/seq-rules-handler.svg | 642 ++++++ .../sequence/seq-settlement-6.2.1.plantuml | 355 ++++ .../sequence/seq-settlement-6.2.1.svg | 1060 ++++++++++ .../sequence/seq-settlement-6.2.2.plantuml | 209 ++ .../sequence/seq-settlement-6.2.2.svg | 609 ++++++ .../sequence/seq-settlement-6.2.3.plantuml | 282 +++ .../sequence/seq-settlement-6.2.3.svg | 916 +++++++++ .../sequence/seq-settlement-6.2.4.plantuml | 159 ++ .../sequence/seq-settlement-6.2.4.svg | 442 +++++ .../sequence/seq-settlement-6.2.5.plantuml | 584 ++++++ .../sequence/seq-settlement-6.2.5.svg | 1754 +++++++++++++++++ .../sequence/seq-settlement-6.2.6.plantuml | 282 +++ .../sequence/seq-settlement-6.2.6.svg | 801 ++++++++ .../sequence/seq-setwindow-6.1.1.plantuml | 123 ++ .../diagrams/sequence/seq-setwindow-6.1.1.svg | 297 +++ .../sequence/seq-setwindow-6.1.2.plantuml | 374 ++++ .../diagrams/sequence/seq-setwindow-6.1.2.svg | 1135 +++++++++++ .../sequence/seq-setwindow-6.1.3.plantuml | 121 ++ .../diagrams/sequence/seq-setwindow-6.1.3.svg | 297 +++ .../central-settlements-db-schema-dbeaver.erd | 134 ++ .../central-settlements-db-schema.png | Bin 0 -> 736476 bytes .../get-settlement-by-id.md | 8 + .../get-settlement-by-spa.md | 8 + .../get-settlement-window-by-id.md | 8 + .../get-settlement-windows-by-params.md | 8 + .../get-settlements-by-params.md | 8 + .../gross-settlement-handler-consumer.md | 7 + .../post-close-settlement-window.md | 8 + .../post-create-settlement.md | 8 + .../put-settlement-abort.md | 8 + .../put-settlement-transfer-ack.md | 8 + .../rules-handler-consumer.md | 169 ++ 62 files changed, 16987 insertions(+) create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/.gitkeep create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/README.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/assets/.gitkeep create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/Settlement_ERD.png create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/architecture/Arch-Mojaloop-Settlements-PI4.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/README.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-in-prepare-reserve-commit.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-abort.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-commit.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-prepare-reserve.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/reconciliation-transfer-prepare.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/transfer-state-and-position-change.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/oss-settlement-fsd.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/README.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.plantuml create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.svg create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema-dbeaver.erd create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema.png create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-id.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-spa.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-window-by-id.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-windows-by-params.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlements-by-params.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/gross-settlement-handler-consumer.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-close-settlement-window.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-create-settlement.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-abort.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-transfer-ack.md create mode 100644 website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/rules-handler-consumer.md diff --git a/website/versioned_docs/v1.0.1/sidebar.config.json b/website/versioned_docs/v1.0.1/sidebar.config.json index 183766aa6..6975f24d2 100644 --- a/website/versioned_docs/v1.0.1/sidebar.config.json +++ b/website/versioned_docs/v1.0.1/sidebar.config.json @@ -527,6 +527,102 @@ ], "sidebarDepth": 2 }, + { + "title": "Central Settlements Services", + "collapsable": true, + "children": [ + { + "title": "Settlement Process", + "collapsable": false, + "children": [ + { + "title": "Overview", + "path": "central-settlements/settlement-process/" + }, + { + "title": "Settlement Windows By Params", + "path": "central-settlements/settlement-process/get-settlement-windows-by-params" + }, + { + "title": "Request Settlement By Window", + "path": "central-settlements/settlement-process/get-settlement-window-by-id" + }, + { + "title": "Close Settlement Window", + "path": "central-settlements/settlement-process/post-close-settlement-window" + }, + { + "title": "Create Settlement", + "path": "central-settlements/settlement-process/post-create-settlement" + }, + { + "title": "Request Settlement", + "path": "central-settlements/settlement-process/get-settlement-by-id" + }, + { + "title": "Settlement Transfer Acknowledgment", + "path": "central-settlements/settlement-process/put-settlement-transfer-ack" + }, + { + "title": "Settlement Abort", + "path": "central-settlements/settlement-process/put-settlement-abort" + }, + { + "title": "Request Settlement By SPA", + "path": "central-settlements/settlement-process/get-settlement-by-spa" + }, + { + "title": "Request Settlement By Params", + "path": "central-settlements/settlement-process/get-settlements-by-params" + }, + { + "title": "Gross Settlement Handler", + "path": "central-settlements/settlement-process/gross-settlement-handler-consumer" + }, + { + "title": "Rules Handler", + "path": "central-settlements/settlement-process/rules-handler-consumer" + } + ] + }, + { + "title": "Funds In/Out", + "collapsable": false, + "path": "central-settlements/funds-in-out", + "children": [ + { + "title": "Reconciliation Transfer Prepare", + "path": "central-settlements/funds-in-out/reconciliation-transfer-prepare" + }, + { + "title": "Transfer State and Position Change", + "path": "central-settlements/funds-in-out/transfer-state-and-position-change" + }, + { + "title": "Funds In", + "path": "central-settlements/funds-in-out/funds-in-prepare-reserve-commit" + }, + { + "title": "Funds Out - Prepare & Reserve", + "path": "central-settlements/funds-in-out/funds-out-prepare-reserve" + }, + { + "title": "Funds Out - Commit", + "path": "central-settlements/funds-in-out/funds-out-commit" + }, + { + "title": "Funds Out - Abort", + "path": "central-settlements/funds-in-out/funds-out-abort" + } + ] + }, + { + "title": "OSS Settlement FSD", + "collapsable": false, + "path": "central-settlements/oss-settlement-fsd" + } + ] + }, { "title": "Central Event Processor Service", "collapsable": true, diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/.gitkeep b/website/versioned_docs/v1.0.1/technical/central-settlements/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/README.md b/website/versioned_docs/v1.0.1/technical/central-settlements/README.md new file mode 100644 index 000000000..596744601 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/README.md @@ -0,0 +1,24 @@ +# Central-Settlements Service + +The Central Settlements service is part of the Mojaloop project and deployment. + +* The central settlements service exposes Settlement API to manage the settlements between FSPs and the Central Hub. +* The service manages Settlement Windows and Settlements Event Triggers and provides information about FSPs accounts and settlements. + +## 1. Settlement Process Design + +### 1.1. Architecture overview + +![The Settlements Architecture](./assets/diagrams/architecture/Arch-Mojaloop-Settlements-PI4.svg) + +## 2. Funds In/Out + +Record Funds In and Record Funds Out operations are used respectively to deposit and withdraw funds into participant SETTLEMENT ledgers. The balance of the SETTLEMENT account relates to the NET_DEBIT_CAP set by the switch for every participant of the scheme. NET_DEBIT_CAP value is always lower or equal to the SETTLEMENT value. On the other side, the balance of the participant's POSITION account is limited to the value of the NET_DEBIT_CAP. + +## 3. API Specification + +Refer to **Central Settlements API** in the [API Specifications](../../api/README.md#central-settlements-api) section. + +## 4. Rules Engine + +The rules engine is separate handler within the Central-Settlement handler, that can be deployed if needed. Rules format and way of operation can be found on [Rules Handler . Interchange fees example. File format.](./settlement-process/rules-handler-consume.md) \ No newline at end of file diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/assets/.gitkeep b/website/versioned_docs/v1.0.1/technical/central-settlements/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/Settlement_ERD.png b/website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/Settlement_ERD.png new file mode 100644 index 0000000000000000000000000000000000000000..d5724815ec3fb3babc3ffa37bfe68547bae363ae GIT binary patch literal 184297 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

qj?j&{#lgXe5ww5-Y4@Z&ZtbNC$qQ4l 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 T$C{#Q1;A!yfyY*udBpt(KRQ4C literal 0 HcmV?d00001 diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/architecture/Arch-Mojaloop-Settlements-PI4.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/architecture/Arch-Mojaloop-Settlements-PI4.svg new file mode 100644 index 000000000..fa626d7bd --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/assets/diagrams/architecture/Arch-Mojaloop-Settlements-PI4.svg @@ -0,0 +1,3 @@ + + +
 Settlements Engine
[Not supported by viewer]
A.3. Store Settlement
B.3. Retrieve Settlement Data
D.3. Store Settlement Acks

[Not supported by viewer]
DB
DB
<alt> E.3 Position Update
Failure Notification

[Not supported by viewer]
Central Services
<font style="font-size: 20px">Central Services</font>
Settlement Adapter
<font style="font-size: 18px">Settlement Adapter</font>
FSP
[Not supported by viewer]
E.3. Notification
[Not supported by viewer]
E.2 Position
Update
Consumed
[Not supported by viewer]
positions
positions<br>
Scheme Settlement Processor
Scheme Settlement Processor<br>
Settlement API
Settlement API
Settlements Handler
Settlements Handler
Hub Operator
[Not supported by viewer]
A.1 Create Settlement
A.4. OK (201)
[Not supported by viewer]
A.2. Create Settlement
B.2. Request Settlement Report
D.2. Process Settlement Acks
[Not supported by viewer]
B.1. Request Settlement Report
B.4. OK (200) - Settlement Report Received
<b>B</b>.1. Request Settlement Report<br><b>B</b>.4. OK (200) - Settlement Report Received<br>
D.1. Send Settlement Acknowledgement
D.5. OK (200) - Provide Settlement Ack Result
<alt> Error (5xx)
[Not supported by viewer]
E.1 Update 
Position

[Not supported by viewer]
Settlement Processes
A. Create Settlement
B. Request Settlement Report
C. Process Settlement
D. Provider Sends through Acks
E. Position Updates from Settlement
[Not supported by viewer]
C. Process Settlement
<b>C</b>. Process Settlement
Settlement Bank
[Not supported by viewer]
E.4 Position change
due to Settlement
[Not supported by viewer]
OK (200)
[Not supported by viewer]
<alt> E.4 Position
change 
failure from
Settlement
[Not supported by viewer]
notifications
notifications
PositionHandler
PositionHandler
DB
DB
Mojaloop Hub
[Not supported by viewer]
Central
Event
Processor
[Not supported by viewer]
Notification
Adapter
/email, ml-api/
[Not supported by viewer]
\ No newline at end of file diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/README.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/README.md new file mode 100644 index 000000000..1e9340be7 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/README.md @@ -0,0 +1,27 @@ +# Funds In / Out + +## 1. Sequence diagrams + +### 1.1. Reconciliation Transfer Prepare + +- [Sequence Diagram for Reconciliation Transfer Prepare sub-process](reconciliation-transfer-prepare.md) + +### 1.2. Transfer State and Position Change + +- [Sequence Diagram for Transfer State and Position Change Prepare sub-process](transfer-state-and-position-change.md) + +### 1.3. Funds In - Prepare, Reserve, Commit + +- [Sequence Diagram for Funds In](funds-in-prepare-reserve-commit.md) + +### 1.4. Funds Out - Prepare & Reserve + +- [Sequence Diagram for Funds Out Prepare & Reserve](funds-out-prepare-reserve.md) + +### 1.5. Funds Out - Commit + +- [Sequence Diagram for Funds Out Commit](funds-out-commit.md) + +### 1.6. Funds Out - Abort + +- [Sequence Diagram for Funds Out Abort](funds-out-abort.md) diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.plantuml new file mode 100644 index 000000000..76c7c9f27 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.plantuml @@ -0,0 +1,127 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 5.1.0.a. Reconciliation transfer prepare (reconciliationTransferPrepare) + +autonumber + +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors +entity "Transfer DAO" as TRANSFER_DAO +database "Central Store" as DB + +box "Central Service" #LightYellow + participant TRANSFER_DAO + participant DB +end box + +' start flow +group reconciliationTransferPrepare (payload, trx) + TRANSFER_DAO -> DB: Insert transferDuplicateCheck + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferDuplicateCheck** (transferId, hash, createdDate) + VALUES ({payload.transferId}, hashCode({payload.transferId}), {transactionTimestamp}) + end hnote + + TRANSFER_DAO -> DB: Insert transfer + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transfer** (transferId, amount, currencyId, + ilpCondition, expirationDate, createdDate) + VALUES ({payload.transferId}, {payload.amount.amount}, + {payload.amount.curency}, 0, + {new Date()+Config.INTERNAL_TRANSFER_VALIDITY_SECONDS}, + {transactionTimestamp}) + end hnote + + TRANSFER_DAO -> DB: Retrieve hub reconciliation account + activate DB + hnote over DB #lightyellow + SELECT participantCurrencyId AS reconciliationAccountId + FROM **participantCurrency** + WHERE participantId = 1 + AND currencyId = {payload.amount.currency} + LIMIT 1 + end hnote + deactivate DB + TRANSFER_DAO <-- DB: Return **reconciliationAccountId** + + alt payload.action == 'RECORD_FUNDS_IN' + note right of TRANSFER_DAO #lightgray + **ledgerEntryTypeId** = 'RECORD_FUNDS_IN' + **amount** = payload.amount.amount + end note + else payload.action == 'RECORD_FUNDS_OUT_PREPARE' + note right of TRANSFER_DAO #lightgray + **ledgerEntryTypeId** = 'RECORD_FUNDS_OUT' + **amount** = -payload.amount.amount + end note + end + + TRANSFER_DAO -> DB: Insert transferParticipant records + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferParticipant** + (transferId, participantCurrencyId, transferParticipantRoleTypeId, + ledgerEntryTypeId, amount, createdDate) + VALUES (payload.transferId, reconciliationAccountId, 'HUB', + {ledgerEntryTypeId}, {amount}, {transactionTimestamp}) + + INSERT INTO **transferParticipant** + (transferId, participantCurrencyId, transferParticipantRoleTypeId, + ledgerEntryTypeId, amount, createdDate) + VALUES ({payload.transferId}, {payload.participantCurrencyId}, 'DFSP_SETTLEMENT', + {ledgerEntryTypeId}, {-amount}, {transactionTimestamp}) + end hnote + + TRANSFER_DAO -> DB: Insert transferStateChange record + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferStateChange** + (transferId, transferStateId, reason, createdDate) + VALUES ({payload.transferId}, 'RECEIVED_PREPARE', + {payload.reason}, {transactionTimestamp}) + end hnote + + TRANSFER_DAO -> DB: Save externalReference and extensions + activate DB + deactivate DB + hnote over DB #lightyellow + transferExtension + end hnote +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.svg new file mode 100644 index 000000000..56512040f --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.svg @@ -0,0 +1,267 @@ + + + + + + + + + + + 5.1.0.a. Reconciliation transfer prepare (reconciliationTransferPrepare) + + + + Central Service + + + + + + + + Transfer DAO + + + + + Transfer DAO + + + + + Central Store + + + + + Central Store + + + + + + + + reconciliationTransferPrepare (payload, trx) + + + + + 1 + + + Insert transferDuplicateCheck + + + + INSERT INTO + + + transferDuplicateCheck + + + (transferId, hash, createdDate) + + + VALUES ({payload.transferId}, hashCode({payload.transferId}), {transactionTimestamp}) + + + + + 2 + + + Insert transfer + + + + INSERT INTO + + + transfer + + + (transferId, amount, currencyId, + + + ilpCondition, expirationDate, createdDate) + + + VALUES ({payload.transferId}, {payload.amount.amount}, + + + {payload.amount.curency}, 0, + + + {new Date()+Config.INTERNAL_TRANSFER_VALIDITY_SECONDS}, + + + {transactionTimestamp}) + + + + + 3 + + + Retrieve hub reconciliation account + + + + SELECT participantCurrencyId AS reconciliationAccountId + + + FROM + + + participantCurrency + + + WHERE participantId = 1 + + + AND currencyId = {payload.amount.currency} + + + LIMIT 1 + + + + + 4 + + + Return + + + reconciliationAccountId + + + + + alt + + + [payload.action == 'RECORD_FUNDS_IN'] + + + + + ledgerEntryTypeId + + + = 'RECORD_FUNDS_IN' + + + amount + + + = + + + payload.amount.amount + + + + [payload.action == 'RECORD_FUNDS_OUT_PREPARE'] + + + + + ledgerEntryTypeId + + + = 'RECORD_FUNDS_OUT' + + + amount + + + = + + + -payload.amount.amount + + + + + 5 + + + Insert transferParticipant records + + + + INSERT INTO + + + transferParticipant + + + (transferId, participantCurrencyId, transferParticipantRoleTypeId, + + + ledgerEntryTypeId, amount, createdDate) + + + VALUES (payload.transferId, reconciliationAccountId, 'HUB', + + + {ledgerEntryTypeId}, {amount}, {transactionTimestamp}) + + + INSERT INTO + + + transferParticipant + + + (transferId, participantCurrencyId, transferParticipantRoleTypeId, + + + ledgerEntryTypeId, amount, createdDate) + + + VALUES ({payload.transferId}, {payload.participantCurrencyId}, 'DFSP_SETTLEMENT', + + + {ledgerEntryTypeId}, {-amount}, {transactionTimestamp}) + + + + + 6 + + + Insert transferStateChange record + + + + INSERT INTO + + + transferStateChange + + + (transferId, transferStateId, reason, createdDate) + + + VALUES ({payload.transferId}, 'RECEIVED_PREPARE', + + + {payload.reason}, {transactionTimestamp}) + + + + + 7 + + + Save externalReference and extensions + + + + transferExtension + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.plantuml new file mode 100644 index 000000000..3c3228d60 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.plantuml @@ -0,0 +1,179 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 5.1.0.b. Transfer state and position change (transferStateAndPositionChange) + +autonumber + +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors +entity "Transfer DAO" as TRANSFER_DAO +database "Central Store" as DB + +box "Central Service" #LightYellow + participant TRANSFER_DAO + participant DB +end box + +' start flow +group transferStateAndPositionUpdate (param1, trx) + note right of TRANSFER_DAO #lightgray + **param1** = { + transferId: {payload.transferId}, + transferStateId: "enum", + reason: {payload.reason}, + createdDate: {transactionTimestamp}, + drUpdated: "boolean", + crUpdated: "boolean" + } + end note + + TRANSFER_DAO -> DB: Select all required info + activate DB + hnote over DB #lightyellow + SELECT dr.participantCurrencyId AS drAccountId, + dr.amount AS drAmount, drp.participantPositionId AS drPositionId, + drp.value AS drPositionValue, drp.reservedValue AS drReservedValue, + cr.participantCurrencyId AS crAccountId, + cr.amount AS crAmount, crp.participantPositionId AS crPositionId, + crp.value AS crPositionValue, crp.reservedValue AS crReservedValue, + tsc.transferStateId + FROM **transfer** t + JOIN **transferParticipant** dr + ON dr.transferId = t.transferId + AND dr.amount > 0 + JOIN **participantCurrency** drpc + ON drpc.participantCurrencyId = dr.participantCurrencyId + JOIN **participantPosition** drp + ON drp.participantCurrencyId = dr.participantCurrencyId + JOIN **transferParticipant** cr + ON cr.transferId = t.transferId + AND cr.amount < 0 + JOIN **participantCurrency** crpc + ON crpc.participantCurrencyId = dr.participantCurrencyId + JOIN **participantPosition** crp + ON crp.participantCurrencyId = cr.participantCurrencyId + JOIN **transferStateChange** tsc + ON tsc.transferId = t.transferId + WHERE t.transferId = param1.tranferId + AND drpc.ledgerAccountTypeId IN('POSITION', 'SETTLEMENT', ' + HUB_RECONCILIATION', 'HUB_MULTILATERAL_SETTLEMENT') + AND crpc.ledgerAccountTypeId IN('POSITION', 'SETTLEMENT', ' + HUB_RECONCILIATION', 'HUB_MULTILATERAL_SETTLEMENT') + ORDER BY transferStateChangeId DESC + LIMIT 1 + end hnote + TRANSFER_DAO <-- DB: Return **info** + deactivate DB + + opt param1.transferStateId == 'COMMITTED' + TRANSFER_DAO -> DB: Change transfer state + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferStateChange** (transferId, transferStateId, reason, createdDate) + VALUES ({param1.transferId, 'RECEIVED_FULFIL', {param1.reason}, {param1.createdDate}) + end hnote + else param1.transferStateId == 'ABORTED' + TRANSFER_DAO -> DB: Change transfer state + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferStateChange** (transferId, transferStateId, reason, createdDate) + VALUES ({param1.transferId, 'REJECTED', {param1.reason}, {param1.createdDate}) + end hnote + end + + TRANSFER_DAO -> DB: Change transfer state + activate DB + hnote over DB #lightyellow + INSERT INTO **transferStateChange** (transferId, transferStateId, reason, createdDate) + VALUES ({param1.transferId, {param1.transferStateId}, {param1.reason}, {param1.createdDate}) + end hnote + TRANSFER_DAO <-- DB: Return **transferStateChangeId** + deactivate DB + + opt param1.drUpdated == true + opt param1.transferStateId == 'ABORTED' + note right of TRANSFER_DAO #lightgray + info.drAmount = -info.drAmount + end note + end + + TRANSFER_DAO -> DB: Change DR position + activate DB + deactivate DB + hnote over DB #lightyellow + UPDATE **participantPosition** + SET value = {info.drPositionValue + info.drAmount} + WHERE participantPositionId = {info.drPositionId} + + INSERT INTO **participantPositionChange** (participantPositionId, + transferStateChangeId, value, reservedValue, createdDate) + VALUES ({info.drPositionId}, {transferStateChangeId}, + {info.drPositionValue + info.drAmount}, {info.drReservedValue}, + {param1.createdDate}) + end hnote + end + + opt param1.crUpdated == true + opt param1.transferStateId == 'ABORTED' + note right of TRANSFER_DAO #lightgray + info.crAmount = -info.crAmount + end note + end + + TRANSFER_DAO -> DB: Change CR position + activate DB + deactivate DB + hnote over DB #lightyellow + UPDATE **participantPosition** + SET value = {info.crPositionValue + info.crAmount} + WHERE participantPositionId = {info.crPositionId} + + INSERT INTO **participantPositionChange** (participantPositionId, + transferStateChangeId, value, reservedValue, createdDate) + VALUES ({info.crPositionId}, {transferStateChangeId}, + {info.crPositionValue + info.crAmount}, {info.crReservedValue}, + {param1.createdDate}) + end hnote + end + + note right of TRANSFER_DAO #lightgray + **return** { + transferStateChangeId, + drPositionValue: {info.drPositionValue + info.drAmount} + crPositionValue: {info.crPositionValue + info.crAmount} + } + end note +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.svg new file mode 100644 index 000000000..57ab88b3f --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.svg @@ -0,0 +1,473 @@ + + + + + + + + + + + 5.1.0.b. Transfer state and position change (transferStateAndPositionChange) + + + + Central Service + + + + + + + + + + + Transfer DAO + + + + + Transfer DAO + + + + + Central Store + + + + + Central Store + + + + + + + + transferStateAndPositionUpdate (param1, trx) + + + + + param1 + + + = { + + + transferId: {payload.transferId}, + + + transferStateId: "enum", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: "boolean", + + + crUpdated: "boolean" + + + } + + + + + 1 + + + Select all required info + + + + SELECT dr.participantCurrencyId AS drAccountId, + + + dr.amount AS drAmount, drp.participantPositionId AS drPositionId, + + + drp.value AS drPositionValue, drp.reservedValue AS drReservedValue, + + + cr.participantCurrencyId AS crAccountId, + + + cr.amount AS crAmount, crp.participantPositionId AS crPositionId, + + + crp.value AS crPositionValue, crp.reservedValue AS crReservedValue, + + + tsc.transferStateId + + + FROM + + + transfer + + + t + + + JOIN + + + transferParticipant + + + dr + + + ON dr.transferId = t.transferId + + + AND dr.amount > 0 + + + JOIN + + + participantCurrency + + + drpc + + + ON drpc.participantCurrencyId = dr.participantCurrencyId + + + JOIN + + + participantPosition + + + drp + + + ON drp.participantCurrencyId = dr.participantCurrencyId + + + JOIN + + + transferParticipant + + + cr + + + ON cr.transferId = t.transferId + + + AND cr.amount < 0 + + + JOIN + + + participantCurrency + + + crpc + + + ON crpc.participantCurrencyId = dr.participantCurrencyId + + + JOIN + + + participantPosition + + + crp + + + ON crp.participantCurrencyId = cr.participantCurrencyId + + + JOIN + + + transferStateChange + + + tsc + + + ON tsc.transferId = t.transferId + + + WHERE t.transferId = param1.tranferId + + + AND drpc.ledgerAccountTypeId IN('POSITION', 'SETTLEMENT', ' + + + HUB_RECONCILIATION', 'HUB_MULTILATERAL_SETTLEMENT') + + + AND crpc.ledgerAccountTypeId IN('POSITION', 'SETTLEMENT', ' + + + HUB_RECONCILIATION', 'HUB_MULTILATERAL_SETTLEMENT') + + + ORDER BY transferStateChangeId DESC + + + LIMIT 1 + + + + + 2 + + + Return + + + info + + + + + opt + + + [param1.transferStateId == 'COMMITTED'] + + + + + 3 + + + Change transfer state + + + + INSERT INTO + + + transferStateChange + + + (transferId, transferStateId, reason, createdDate) + + + VALUES ({param1.transferId, 'RECEIVED_FULFIL', {param1.reason}, {param1.createdDate}) + + + + [param1.transferStateId == 'ABORTED'] + + + + + 4 + + + Change transfer state + + + + INSERT INTO + + + transferStateChange + + + (transferId, transferStateId, reason, createdDate) + + + VALUES ({param1.transferId, 'REJECTED', {param1.reason}, {param1.createdDate}) + + + + + 5 + + + Change transfer state + + + + INSERT INTO + + + transferStateChange + + + (transferId, transferStateId, reason, createdDate) + + + VALUES ({param1.transferId, {param1.transferStateId}, {param1.reason}, {param1.createdDate}) + + + + + 6 + + + Return + + + transferStateChangeId + + + + + opt + + + [param1.drUpdated == true] + + + + + opt + + + [param1.transferStateId == 'ABORTED'] + + + + + info.drAmount = -info.drAmount + + + + + 7 + + + Change DR position + + + + UPDATE + + + participantPosition + + + SET value = {info.drPositionValue + info.drAmount} + + + WHERE participantPositionId = {info.drPositionId} + + + INSERT INTO + + + participantPositionChange + + + (participantPositionId, + + + transferStateChangeId, value, reservedValue, createdDate) + + + VALUES ({info.drPositionId}, {transferStateChangeId}, + + + {info.drPositionValue + info.drAmount}, {info.drReservedValue}, + + + {param1.createdDate}) + + + + + opt + + + [param1.crUpdated == true] + + + + + opt + + + [param1.transferStateId == 'ABORTED'] + + + + + info.crAmount = -info.crAmount + + + + + 8 + + + Change CR position + + + + UPDATE + + + participantPosition + + + SET value = {info.crPositionValue + info.crAmount} + + + WHERE participantPositionId = {info.crPositionId} + + + INSERT INTO + + + participantPositionChange + + + (participantPositionId, + + + transferStateChangeId, value, reservedValue, createdDate) + + + VALUES ({info.crPositionId}, {transferStateChangeId}, + + + {info.crPositionValue + info.crAmount}, {info.crReservedValue}, + + + {param1.createdDate}) + + + + + return + + + { + + + transferStateChangeId, + + + drPositionValue: {info.drPositionValue + info.drAmount} + + + crPositionValue: {info.crPositionValue + info.crAmount} + + + } + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.plantuml new file mode 100644 index 000000000..a8e45e4a2 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.plantuml @@ -0,0 +1,150 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 5.1.1. Record Funds In (recordFundsIn) + +autonumber + +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Central Service\n Admin API" as CS_ADMIN_API +collections "Admin-Transfer-Topic" as TOPIC_ADMIN_TRANSFER +control "Admin Event Handler" as ADMIN_HANDLER +entity "Transfer DAO" as TRANSFER_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Central Service" #LightYellow + participant CS_ADMIN_API + participant TOPIC_ADMIN_TRANSFER + participant ADMIN_HANDLER + participant TRANSFER_DAO + participant DB +end box + +' start flow +activate ADMIN_HANDLER +group Record Funds In + note right of OPERATOR #yellow + { + "transferId": , + "externalReference": "string", + "action": "recordFundsIn", + "amount": { + "amount": , + "currency": "string" + + }, + "reason": "string", + "extensionList": { + "extension": [ + { + "key": "string", + "value": "string" + } + ] + } + } + end note + OPERATOR -> CS_ADMIN_API: POST - /participants/{name}/accounts/{id} + activate CS_ADMIN_API + + note right of CS_ADMIN_API #yellow + Message: + { + id: + from: "dfspName", + to: "Hub", + type: "application/json" + content: { + headers: , + payload: + }, + metadata: { + event: { + id: , + responseTo: "", + type: "transfer", + action: "recordFundsIn", + createdAt: , + state: "" + } + }, + pp: "" + } + end note + CS_ADMIN_API -> TOPIC_ADMIN_TRANSFER: Route & Publish Prepare event\nError code: 2003 + activate TOPIC_ADMIN_TRANSFER + TOPIC_ADMIN_TRANSFER <-> TOPIC_ADMIN_TRANSFER: Ensure event is replicated\nas configured (ACKS=all)\nError code: 2003 + TOPIC_ADMIN_TRANSFER --> CS_ADMIN_API: Respond replication acks\nhave been received + deactivate TOPIC_ADMIN_TRANSFER + CS_ADMIN_API ---> OPERATOR: Respond HTTP - 202 (Accepted) + deactivate CS_ADMIN_API + + TOPIC_ADMIN_TRANSFER <- ADMIN_HANDLER: Consume message + ADMIN_HANDLER -> TRANSFER_DAO: Prepare transfer + activate TRANSFER_DAO + group DB TRANSACTION + group Reconciliation Transfer Prepare + ||| + ref over TRANSFER_DAO, DB:**reconciliationTransferPrepare**\n(payload, trx)\n + end + + group Reconciliation Transfer Reserve + ||| + ref over TRANSFER_DAO, DB: **transferStateAndPositionUpdate**\n({\n transferId: {payload.transferId},\n transferStateId: "RESERVED",\n reason: {payload.reason},\n createdDate: {transactionTimestamp},\n drUpdated: true,\n crUpdated: false\n}, trx)\n + end + + group Reconciliation Transfer Commit + TRANSFER_DAO -> DB: Insert transferFulfilment record + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferFulfilment** + (transferFulfilmentId, transferId, ilpFulfilment, + completedDate, isValid, settlementWindowId, createdDate) + VALUES ({Uuid()}, {payload.transferId}, 0, {transactionTimestamp}, + 1, NULL, {transactionTimestamp}) + end hnote + ||| + ref over TRANSFER_DAO, DB:**transferStateAndPositionUpdate**\n({\n transferId: {payload.transferId},\n transferStateId: "COMMITTED",\n reason: {payload.reason},\n createdDate: {transactionTimestamp},\n drUpdated: false,\n crUpdated: true\n}, trx)\n + end + end + ADMIN_HANDLER <-- TRANSFER_DAO: Finished await + deactivate TRANSFER_DAO +end +deactivate ADMIN_HANDLER +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.svg new file mode 100644 index 000000000..c83a1ab9b --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.svg @@ -0,0 +1,426 @@ + + + + + + + + + + + 5.1.1. Record Funds In (recordFundsIn) + + + + Central HUB + + + + Central Service + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Central Service + + + Admin API + + + + + Central Service + + + Admin API + + + + + + + Admin-Transfer-Topic + + + + + Admin-Transfer-Topic + + + Admin Event Handler + + + + + Admin Event Handler + + + + + Transfer DAO + + + + + Transfer DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Record Funds In + + + + + { + + + "transferId": <uuid>, + + + "externalReference": "string", + + + "action": "recordFundsIn", + + + "amount": { + + + "amount": <decimal>, + + + "currency": "string" + + + }, + + + "reason": "string", + + + "extensionList": { + + + "extension": [ + + + { + + + "key": "string", + + + "value": "string" + + + } + + + ] + + + } + + + } + + + + + 1 + + + POST - /participants/{name}/accounts/{id} + + + + + Message: + + + { + + + id: <payload.transferId> + + + from: "dfspName", + + + to: "Hub", + + + type: "application/json" + + + content: { + + + headers: <payloadHeaders>, + + + payload: <payloadMessage> + + + }, + + + metadata: { + + + event: { + + + id: <uuid>, + + + responseTo: "", + + + type: "transfer", + + + action: "recordFundsIn", + + + createdAt: <timestamp>, + + + state: "" + + + } + + + }, + + + pp: "" + + + } + + + + + 2 + + + Route & Publish Prepare event + + + Error code: + + + 2003 + + + + + 3 + + + Ensure event is replicated + + + as configured (ACKS=all) + + + Error code: + + + 2003 + + + + + 4 + + + Respond replication acks + + + have been received + + + + + 5 + + + Respond HTTP - 202 (Accepted) + + + + + 6 + + + Consume message + + + + + 7 + + + Prepare transfer + + + + + DB TRANSACTION + + + + + Reconciliation Transfer Prepare + + + + + ref + + + reconciliationTransferPrepare + + + (payload, trx) + + + + + Reconciliation Transfer Reserve + + + + + ref + + + transferStateAndPositionUpdate + + + ({ + + + transferId: {payload.transferId}, + + + transferStateId: "RESERVED", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: true, + + + crUpdated: false + + + }, trx) + + + + + Reconciliation Transfer Commit + + + + + 8 + + + Insert transferFulfilment record + + + + INSERT INTO + + + transferFulfilment + + + (transferFulfilmentId, transferId, ilpFulfilment, + + + completedDate, isValid, settlementWindowId, createdDate) + + + VALUES ({Uuid()}, {payload.transferId}, 0, {transactionTimestamp}, + + + 1, NULL, {transactionTimestamp}) + + + + + ref + + + transferStateAndPositionUpdate + + + ({ + + + transferId: {payload.transferId}, + + + transferStateId: "COMMITTED", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: false, + + + crUpdated: true + + + }, trx) + + + + + 9 + + + Finished await + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.plantuml new file mode 100644 index 000000000..c6e914484 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.plantuml @@ -0,0 +1,157 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 5.2.1. Record Funds Out - Prepare & Reserve (recordFundsOutPrepareReserve) + +autonumber + +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Central Service\n Admin API" as CS_ADMIN_API +collections "Admin-Transfer-Topic" as TOPIC_ADMIN_TRANSFER +control "Admin Event Handler" as ADMIN_HANDLER +entity "Transfer DAO" as TRANSFER_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Central Service" #LightYellow + participant CS_ADMIN_API + participant TOPIC_ADMIN_TRANSFER + participant ADMIN_HANDLER + participant TRANSFER_DAO + participant DB +end box + +' start flow +activate ADMIN_HANDLER +group Record Funds Out - Prepare & Reserve + note right of OPERATOR #yellow + { + "transferId": , + "externalReference": "string", + "action": "recordFundsOutPrepareReserve", + "amount": { + "amount": , + "currency": "string" + + }, + "reason": "string", + "extensionList": { + "extension": [ + { + "key": "string", + "value": "string" + } + ] + } + } + end note + OPERATOR -> CS_ADMIN_API: POST - /participants/{name}/accounts/{id} + activate CS_ADMIN_API + + note right of CS_ADMIN_API #yellow + Message: + { + id: + from: "Hub", + to: "dfspName", + type: "application/json" + content: { + headers: , + payload: + }, + metadata: { + event: { + id: , + responseTo: "", + type: "transfer", + action: "recordFundsOutPrepareReserve", + createdAt: , + state: "" + } + }, + pp: "" + } + end note + CS_ADMIN_API -> TOPIC_ADMIN_TRANSFER: Route & Publish Prepare event\nError code: 2003 + activate TOPIC_ADMIN_TRANSFER + TOPIC_ADMIN_TRANSFER <-> TOPIC_ADMIN_TRANSFER: Ensure event is replicated\nas configured (ACKS=all)\nError code: 2003 + TOPIC_ADMIN_TRANSFER --> CS_ADMIN_API: Respond replication acks\nhave been received + deactivate TOPIC_ADMIN_TRANSFER + CS_ADMIN_API ---> OPERATOR: Respond HTTP - 202 (Accepted) + deactivate CS_ADMIN_API + + TOPIC_ADMIN_TRANSFER <- ADMIN_HANDLER: Consume message + ADMIN_HANDLER -> TRANSFER_DAO: Prepare transfer\nand reserve + activate TRANSFER_DAO + group DB TRANSACTION + group Reconciliation Transfer Prepare + ||| + ref over TRANSFER_DAO, DB: **reconciliationTransferPrepare**\n(payload, trx)\n + end + + group Reconciliation Transfer Reserve + ||| + ref over TRANSFER_DAO, DB: **transferStateAndPositionUpdate**\n({\n transferId: {payload.transferId},\n transferStateId: "RESERVED",\n reason: {payload.reason},\n createdDate: {transactionTimestamp},\n drUpdated: true,\n crUpdated: false\n}, trx)\n + end + + ||| + opt transferStateAndPositionUpdate.crPositionValue > 0 + note right of TRANSFER_DAO #lightgray + payload.reason = 'Aborted due to insufficient funds' + end note + + group Reconciliation Transfer Abort + TRANSFER_DAO -> DB: Insert transferFulfilment record + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferFulfilment** + (transferFulfilmentId, transferId, ilpFulfilment, + completedDate, isValid, settlementWindowId, createdDate) + VALUES ({Uuid()}, {payload.transferId}, 0, {transactionTimestamp}, + 1, NULL, {transactionTimestamp}) + end hnote + ||| + ref over TRANSFER_DAO, DB: **transferStateAndPositionUpdate**\n({\n transferId: {payload.transferId},\n transferStateId: "ABORTED",\n reason: {payload.reason},\n createdDate: {transactionTimestamp},\n drUpdated: true,\n crUpdated: false\n}, trx)\n + end + end + end + ADMIN_HANDLER <-- TRANSFER_DAO: Finished await + deactivate TRANSFER_DAO +end +deactivate ADMIN_HANDLER +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.svg new file mode 100644 index 000000000..a22743415 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.svg @@ -0,0 +1,443 @@ + + + + + + + + + + + 5.2.1. Record Funds Out - Prepare & Reserve (recordFundsOutPrepareReserve) + + + + Central HUB + + + + Central Service + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Central Service + + + Admin API + + + + + Central Service + + + Admin API + + + + + + + Admin-Transfer-Topic + + + + + Admin-Transfer-Topic + + + Admin Event Handler + + + + + Admin Event Handler + + + + + Transfer DAO + + + + + Transfer DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Record Funds Out - Prepare & Reserve + + + + + { + + + "transferId": <uuid>, + + + "externalReference": "string", + + + "action": "recordFundsOutPrepareReserve", + + + "amount": { + + + "amount": <decimal>, + + + "currency": "string" + + + }, + + + "reason": "string", + + + "extensionList": { + + + "extension": [ + + + { + + + "key": "string", + + + "value": "string" + + + } + + + ] + + + } + + + } + + + + + 1 + + + POST - /participants/{name}/accounts/{id} + + + + + Message: + + + { + + + id: <payload.transferId> + + + from: "Hub", + + + to: "dfspName", + + + type: "application/json" + + + content: { + + + headers: <payloadHeaders>, + + + payload: <payloadMessage> + + + }, + + + metadata: { + + + event: { + + + id: <uuid>, + + + responseTo: "", + + + type: "transfer", + + + action: "recordFundsOutPrepareReserve", + + + createdAt: <timestamp>, + + + state: "" + + + } + + + }, + + + pp: "" + + + } + + + + + 2 + + + Route & Publish Prepare event + + + Error code: + + + 2003 + + + + + 3 + + + Ensure event is replicated + + + as configured (ACKS=all) + + + Error code: + + + 2003 + + + + + 4 + + + Respond replication acks + + + have been received + + + + + 5 + + + Respond HTTP - 202 (Accepted) + + + + + 6 + + + Consume message + + + + + 7 + + + Prepare transfer + + + and reserve + + + + + DB TRANSACTION + + + + + Reconciliation Transfer Prepare + + + + + ref + + + reconciliationTransferPrepare + + + (payload, trx) + + + + + Reconciliation Transfer Reserve + + + + + ref + + + transferStateAndPositionUpdate + + + ({ + + + transferId: {payload.transferId}, + + + transferStateId: "RESERVED", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: true, + + + crUpdated: false + + + }, trx) + + + + + opt + + + [transferStateAndPositionUpdate.crPositionValue > 0] + + + + + payload.reason = 'Aborted due to insufficient funds' + + + + + Reconciliation Transfer Abort + + + + + 8 + + + Insert transferFulfilment record + + + + INSERT INTO + + + transferFulfilment + + + (transferFulfilmentId, transferId, ilpFulfilment, + + + completedDate, isValid, settlementWindowId, createdDate) + + + VALUES ({Uuid()}, {payload.transferId}, 0, {transactionTimestamp}, + + + 1, NULL, {transactionTimestamp}) + + + + + ref + + + transferStateAndPositionUpdate + + + ({ + + + transferId: {payload.transferId}, + + + transferStateId: "ABORTED", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: true, + + + crUpdated: false + + + }, trx) + + + + + 9 + + + Finished await + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.plantuml new file mode 100644 index 000000000..a22129bbf --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.plantuml @@ -0,0 +1,125 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 5.2.2. Record Funds Out Commit (recordFundsOutCommit) + +autonumber + +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Central Service\n Admin API" as CS_ADMIN_API +collections "Admin-Transfer-Topic" as TOPIC_ADMIN_TRANSFER +control "Admin Event Handler" as ADMIN_HANDLER +entity "Transfer DAO" as TRANSFER_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Central Service" #LightYellow + participant CS_ADMIN_API + participant TOPIC_ADMIN_TRANSFER + participant ADMIN_HANDLER + participant TRANSFER_DAO + participant DB +end box + +' start flow +activate ADMIN_HANDLER +group Record Funds Out Commit + note right of OPERATOR #yellow + { + "action": "recordFundsOutCommit", + "reason": "string" + } + end note + OPERATOR -> CS_ADMIN_API: PUT - /participants/{name}/accounts/\n {id}/transfers/{transferId} + activate CS_ADMIN_API + + note right of CS_ADMIN_API #yellow + Message: + { + id: + from: "Hub", + to: "dfspName", + type: "application/json" + content: { + headers: , + payload: + }, + metadata: { + event: { + id: , + responseTo: "", + type: "transfer", + action: "recordFundsOutCommit", + createdAt: , + state: "" + } + }, + pp: "" + } + end note + CS_ADMIN_API -> TOPIC_ADMIN_TRANSFER: Route & Publish Prepare event\nError code: 2003 + activate TOPIC_ADMIN_TRANSFER + TOPIC_ADMIN_TRANSFER <-> TOPIC_ADMIN_TRANSFER: Ensure event is replicated\nas configured (ACKS=all)\nError code: 2003 + TOPIC_ADMIN_TRANSFER --> CS_ADMIN_API: Respond replication acks\nhave been received + deactivate TOPIC_ADMIN_TRANSFER + CS_ADMIN_API ---> OPERATOR: Respond HTTP - 202 (Accepted) + deactivate CS_ADMIN_API + + TOPIC_ADMIN_TRANSFER <- ADMIN_HANDLER: Consume message + ADMIN_HANDLER -> TRANSFER_DAO: Commit transfer + activate TRANSFER_DAO + group DB TRANSACTION + group Reconciliation Transfer Commit + TRANSFER_DAO -> DB: Insert transferFulfilment record + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferFulfilment** + (transferFulfilmentId, transferId, ilpFulfilment, + completedDate, isValid, settlementWindowId, createdDate) + VALUES ({transferFulfilmentId}, {payload.transferId}, 0, {transactionTimestamp}, + 1, NULL, {transactionTimestamp}) + end hnote + ||| + ref over TRANSFER_DAO, DB: **transferStateAndPositionUpdate**\n({\n transferId: {payload.transferId},\n transferStateId: "COMMITTED",\n reason: {payload.reason},\n createdDate: {transactionTimestamp},\n drUpdated: false,\n crUpdated: true\n}, trx)\n + end + end + ADMIN_HANDLER <-- TRANSFER_DAO: Finished await + deactivate TRANSFER_DAO +end +deactivate ADMIN_HANDLER +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.svg new file mode 100644 index 000000000..fd276ff59 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + 5.2.2. Record Funds Out Commit (recordFundsOutCommit) + + + + Central HUB + + + + Central Service + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Central Service + + + Admin API + + + + + Central Service + + + Admin API + + + + + + + Admin-Transfer-Topic + + + + + Admin-Transfer-Topic + + + Admin Event Handler + + + + + Admin Event Handler + + + + + Transfer DAO + + + + + Transfer DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Record Funds Out Commit + + + + + { + + + "action": "recordFundsOutCommit", + + + "reason": "string" + + + } + + + + + 1 + + + PUT - /participants/{name}/accounts/ + + + {id}/transfers/{transferId} + + + + + Message: + + + { + + + id: <payload.transferId> + + + from: "Hub", + + + to: "dfspName", + + + type: "application/json" + + + content: { + + + headers: <payloadHeaders>, + + + payload: <payloadMessage> + + + }, + + + metadata: { + + + event: { + + + id: <uuid>, + + + responseTo: "", + + + type: "transfer", + + + action: "recordFundsOutCommit", + + + createdAt: <timestamp>, + + + state: "" + + + } + + + }, + + + pp: "" + + + } + + + + + 2 + + + Route & Publish Prepare event + + + Error code: + + + 2003 + + + + + 3 + + + Ensure event is replicated + + + as configured (ACKS=all) + + + Error code: + + + 2003 + + + + + 4 + + + Respond replication acks + + + have been received + + + + + 5 + + + Respond HTTP - 202 (Accepted) + + + + + 6 + + + Consume message + + + + + 7 + + + Commit transfer + + + + + DB TRANSACTION + + + + + Reconciliation Transfer Commit + + + + + 8 + + + Insert transferFulfilment record + + + + INSERT INTO + + + transferFulfilment + + + (transferFulfilmentId, transferId, ilpFulfilment, + + + completedDate, isValid, settlementWindowId, createdDate) + + + VALUES ({transferFulfilmentId}, {payload.transferId}, 0, {transactionTimestamp}, + + + 1, NULL, {transactionTimestamp}) + + + + + ref + + + transferStateAndPositionUpdate + + + ({ + + + transferId: {payload.transferId}, + + + transferStateId: "COMMITTED", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: false, + + + crUpdated: true + + + }, trx) + + + + + 9 + + + Finished await + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.plantuml new file mode 100644 index 000000000..0372380da --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.plantuml @@ -0,0 +1,125 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 5.2.3. Record Funds Out Abort (recordFundsOutAbort) + +autonumber + +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Central Service\n Admin API" as CS_ADMIN_API +collections "Admin-Transfer-Topic" as TOPIC_ADMIN_TRANSFER +control "Admin Event Handler" as ADMIN_HANDLER +entity "Transfer DAO" as TRANSFER_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Central Service" #LightYellow + participant CS_ADMIN_API + participant TOPIC_ADMIN_TRANSFER + participant ADMIN_HANDLER + participant TRANSFER_DAO + participant DB +end box + +' start flow +activate ADMIN_HANDLER +group Record Funds Out Abort + note right of OPERATOR #yellow + { + "action": "recordFundsOutAbort", + "reason": "string" + } + end note + OPERATOR -> CS_ADMIN_API: PUT - /participants/{name}/accounts/\n {id}/transfers/{transferId} + activate CS_ADMIN_API + + note right of CS_ADMIN_API #yellow + Message: + { + id: + from: "Hub", + to: "dfspName", + type: "application/json" + content: { + headers: , + payload: + }, + metadata: { + event: { + id: , + responseTo: "", + type: "transfer", + action: "recordFundsOutAbort", + createdAt: , + state: "" + } + }, + pp: "" + } + end note + CS_ADMIN_API -> TOPIC_ADMIN_TRANSFER: Route & Publish Prepare event\nError code: 2003 + activate TOPIC_ADMIN_TRANSFER + TOPIC_ADMIN_TRANSFER <-> TOPIC_ADMIN_TRANSFER: Ensure event is replicated\nas configured (ACKS=all)\nError code: 2003 + TOPIC_ADMIN_TRANSFER --> CS_ADMIN_API: Respond replication acks\nhave been received + deactivate TOPIC_ADMIN_TRANSFER + CS_ADMIN_API ---> OPERATOR: Respond HTTP - 202 (Accepted) + deactivate CS_ADMIN_API + + TOPIC_ADMIN_TRANSFER <- ADMIN_HANDLER: Consume message + ADMIN_HANDLER -> TRANSFER_DAO: Abort transfer + activate TRANSFER_DAO + group DB TRANSACTION + group Reconciliation Transfer Abort + TRANSFER_DAO -> DB: Insert transferFulfilment record + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **transferFulfilment** + (transferFulfilmentId, transferId, ilpFulfilment, + completedDate, isValid, settlementWindowId, createdDate) + VALUES ({transferFulfilmentId}, {payload.transferId}, 0, {transactionTimestamp}, + 1, NULL, {transactionTimestamp}) + end hnote + ||| + ref over TRANSFER_DAO, DB: **transferStateAndPositionUpdate**\n({\n transferId: {payload.transferId},\n transferStateId: "ABORTED",\n reason: {payload.reason},\n createdDate: {transactionTimestamp},\n drUpdated: true,\n crUpdated: false\n}, trx)\n + end + end + ADMIN_HANDLER <-- TRANSFER_DAO: Finished await + deactivate TRANSFER_DAO +end +deactivate ADMIN_HANDLER +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.svg new file mode 100644 index 000000000..8db2df0c4 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.svg @@ -0,0 +1,334 @@ + + + + + + + + + + + 5.2.3. Record Funds Out Abort (recordFundsOutAbort) + + + + Central HUB + + + + Central Service + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Central Service + + + Admin API + + + + + Central Service + + + Admin API + + + + + + + Admin-Transfer-Topic + + + + + Admin-Transfer-Topic + + + Admin Event Handler + + + + + Admin Event Handler + + + + + Transfer DAO + + + + + Transfer DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Record Funds Out Abort + + + + + { + + + "action": "recordFundsOutAbort", + + + "reason": "string" + + + } + + + + + 1 + + + PUT - /participants/{name}/accounts/ + + + {id}/transfers/{transferId} + + + + + Message: + + + { + + + id: <payload.transferId> + + + from: "Hub", + + + to: "dfspName", + + + type: "application/json" + + + content: { + + + headers: <payloadHeaders>, + + + payload: <payloadMessage> + + + }, + + + metadata: { + + + event: { + + + id: <uuid>, + + + responseTo: "", + + + type: "transfer", + + + action: "recordFundsOutAbort", + + + createdAt: <timestamp>, + + + state: "" + + + } + + + }, + + + pp: "" + + + } + + + + + 2 + + + Route & Publish Prepare event + + + Error code: + + + 2003 + + + + + 3 + + + Ensure event is replicated + + + as configured (ACKS=all) + + + Error code: + + + 2003 + + + + + 4 + + + Respond replication acks + + + have been received + + + + + 5 + + + Respond HTTP - 202 (Accepted) + + + + + 6 + + + Consume message + + + + + 7 + + + Abort transfer + + + + + DB TRANSACTION + + + + + Reconciliation Transfer Abort + + + + + 8 + + + Insert transferFulfilment record + + + + INSERT INTO + + + transferFulfilment + + + (transferFulfilmentId, transferId, ilpFulfilment, + + + completedDate, isValid, settlementWindowId, createdDate) + + + VALUES ({transferFulfilmentId}, {payload.transferId}, 0, {transactionTimestamp}, + + + 1, NULL, {transactionTimestamp}) + + + + + ref + + + transferStateAndPositionUpdate + + + ({ + + + transferId: {payload.transferId}, + + + transferStateId: "ABORTED", + + + reason: {payload.reason}, + + + createdDate: {transactionTimestamp}, + + + drUpdated: true, + + + crUpdated: false + + + }, trx) + + + + + 9 + + + Finished await + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-in-prepare-reserve-commit.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-in-prepare-reserve-commit.md new file mode 100644 index 000000000..64288328a --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-in-prepare-reserve-commit.md @@ -0,0 +1,8 @@ +# Funds In - Prepare, Reserve, Commit + +Funds In operation performs all the stages of the transfer (prepare, reserve and commit) at once. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.1-in.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-abort.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-abort.md new file mode 100644 index 000000000..ad93a4b73 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-abort.md @@ -0,0 +1,8 @@ +# Funds Out - Abort + +Funds out abort of a prepared reconciliation transfer. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.3-out-abort.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-commit.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-commit.md new file mode 100644 index 000000000..5a10b0a3d --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-commit.md @@ -0,0 +1,8 @@ +# Funds Out - Commit + +Funds out commit of a prepared reconciliation transfer. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.2-out-commit.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-prepare-reserve.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-prepare-reserve.md new file mode 100644 index 000000000..5fb1ad08e --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/funds-out-prepare-reserve.md @@ -0,0 +1,9 @@ +# Funds Out - Prepare & Reserve + +Funds Out operation performs the prepare and reserve stages of the transfer at once. But the commit of the transfer or the abort operation are separate processes. + +## Sequence Diagram + + +{% uml src="mojaloop-technical-overview/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.2.1-out-prepare-reserve.plantuml" %} +{% enduml %} \ No newline at end of file diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/reconciliation-transfer-prepare.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/reconciliation-transfer-prepare.md new file mode 100644 index 000000000..b4c76a93f --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/reconciliation-transfer-prepare.md @@ -0,0 +1,8 @@ +# Reconciliation Transfer Prepare + +Design for Reconciliation Transfer Prepare sub-process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.a-reconciliationTransferPrepare.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/transfer-state-and-position-change.md b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/transfer-state-and-position-change.md new file mode 100644 index 000000000..65188d67f --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/funds-in-out/transfer-state-and-position-change.md @@ -0,0 +1,8 @@ +# Transfer State and Position Change + +Design for Transfer State and Position Change sub-process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/funds-in-out/assets/diagrams/sequence/seq-recfunds-5.1.0.b-transferStateAndPositionChange.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/oss-settlement-fsd.md b/website/versioned_docs/v1.0.1/technical/central-settlements/oss-settlement-fsd.md new file mode 100644 index 000000000..58b38fc9d --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/oss-settlement-fsd.md @@ -0,0 +1,1723 @@ +--- +title: "OSS Settlement \n \nBusiness Requirements Document" +--- + +Introduction +============ + +This document describes the requirements for changes to the functionality of the +OSS Mojaloop switch to support: + +1. The immediate requirement for Mowali of being able to settle according to + different timetables for different currencies. + +2. The requirement for TIPS to be able to settle gross via a pooled account. + +3. The requirement for TIPS to use the settlement process for interchange fees. + +4. The requirement for Mojaloop to support the evolving Settlement API + +References +========== + +The following external references are used in this document: + +| Reference | Document | +| :--- | :--- | +| 1 | [Open API for FSP Interoperability Specification](http://mojaloop.io/mojaloop-specification/documents/API%20Definition%20v1.0.html) | +| 2 | [Settlement API Interface Definition](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json)| +| 3 | [Current administration API definition](https://mojaloop.io/documentation/api/central-ledger-api-specification.html)| +| | | + +Versions +======== + +| Version | Description | Author | Date | Changes tracked | +|:---------|:------------------|:------------------|:------------|:-----------------| +| 1.0 | Baseline version | Michael Richards | 2 Dec 2019 | No | +| | | | | | + +Definition of terms +=================== + +Settlement model +---------------- + +A settlement model defines a kind of settlement within the scheme. Settlement +models can be defined by scheme administrators, and have the following +characteristics: + +1. They can support settlement either gross or net settlements. If gross, then + a settlement is executed after each transfer is completed. If net, a group + of transfers is settled together. + +2. They can support either multilateral or bilateral settlements. If + settlements are multilateral, each participant settles with the scheme for + the net of its transfers which are included in the settlement. If they are + multilateral, each participant settles separately with each of the other + participants and the scheme is not a party to the settlement. + +3. They can support either deferred or immediate settlements. If settlements + are immediate, they are actioned immediately they are completed. If they are + deferred, they are actioned after a period of delay. + +4. They can support continuous or discontinuous settlements. Discontinuous + settlements require a formal approval from a resource outside the system to + confirm that they have been completed. Continuous settlements can be + approved from within the switch, provided that the criteria for approval are + met. + +5. They can require liquidity support or not. + +Ledger account type +------------------- + +A ledger account type defines a type of internal account. Current values are: + +1. POSITION. Accounts of this type are used for provisioning transfers + +2. SETTLEMENT. Accounts of this type are intended to be reflections of + Settlement Accounts held at the Settlement Bank + +3. HUB_RECONCILIATION. Each implementation of the switch has one account of + this type for each currency supported by the switch, owned by the virtual + DFSP which represents the Hub in the implementation. The account is used + during FUNDS IN/OUT operations to represent movements in participants’ + SETTLEMENT accounts. + +4. HUB_MULTILATERAL_SETTLEMENT. Each implementation of the switch has one + account of this type for each currency supported by the switch, owned by the + virtual DFSP which represents the Hub in the implementation. This account + type is used to record counterparty information for net amounts paid to or + from participants as part of settlements. Entries in this account represent + balancing values corresponding with the net value in a participant’s + POSITION account for a given settlement. + +5. HUB_FEE. Accounts of this type represent accounts into which fees are + collected, or from which they are disbursed. (Not implemented) + +Ledger entry type +----------------- + +A ledger entry type categorises the type of funds which are the content of a +transfer and which are due to or from a participant as a consequence of that +transfer. The current values are: + +1. PRINCIPLE_VALUE. This designates the funds moved as the content of a + transfer in the Interoperability API Specification sense of that term (i.e. + the **amount.amount** item in the **Transaction** object described in + [Section 7.4.17](https://mojaloop.io/mojaloop-specification/documents/API%20Definition%20v1.0.html#7317-ilpcondition) of the Interoperability API specification[1](https://mojaloop.io/mojaloop-specification/documents/API%20Definition%20v1.0.html).) It should be + spelt “principal.” + +2. INTERCHANGE_FEE. This designates fees paid between participants in the + system. (Not implemented) + +3. HUB_FEE. This designates fees paid between participants and the scheme. (Not + implemented) + +4. POSITION_DEPOSIT. This is used to designate funds transfers which are + intended to increase the value of the position in a particular ledger + account. (Not implemented) + +5. POSITION_WITHDRAWAL. This is used to designate funds transfers which are + intended to reduce the value of the position in a particular ledger account. + (Not implemented) + +6. SETTLEMENT_NET_RECIPIENT. This is used to designate funds which a + participant is owed by the counterparty as part of a settlement (in a + multilateral settlement model, the counterparty will be the hub; in a + bilateral settlement model, it will be another party.) + +7. SETTLEMENT_NET_SENDER. This is used to designate funds which a participant + owes to the counterparty as part of a settlement (in a multilateral + settlement model, the counterparty will be the hub; in a bilateral + settlement model, it will be another party.) + +8. SETTLEMENT_NET_ZERO. This is used to generate formal records where a + participant’s net position in a settlement is zero. + +9. RECORD_FUNDS_IN. This is used to record funds deposited by a participant to + the SETTLEMENT account. + +10. RECORD_FUNDS_OUT. This is used to record funds withdrawn by a participant + from the SETTLEMENT account. + +The last seven of these types relate to the internal structure of the switch and +should be neither visible to nor modifiable by a scheme. The first three fall +into a category which is expected to be extensible by the scheme. The table does +not currently have an indicator to mark this distinction, but one is proposed in +Section TODO. + +Participant role types +---------------------- + +A participant role type defines the role that a particular participant is +playing in a given transaction. The current values of this table are: + +1. PAYER_DFSP. The participant is the debtor in a transfer. + +2. PAYEE_DFSP. The participant is a creditor in a transfer. + +3. HUB. The participant is representing the scheme, and may be either the + creditor or the debtor in a transaction. + +4. DFSP_SETTLEMENT. The participant represents the settlement account of a + participant in the scheme. It may be either the creditor or the debtor in a + transaction. It is used during FUNDS IN/OUT operations. This is used for + entries whose counterparty is an entry in the HUB account. + +5. DFSP_POSITION. The participant represents the position of a participant in + the scheme. It may be either the creditor or the debtor in a transaction. It + is used during the settlement process. This is used for entries whose + counterparty is an entry in the HUB account. + +Settlement states +----------------- + +A settlement may be in a number of possible states. The states currently +supported are: + +1. PENDING_SETTLEMENT. A new settlement consisting of one or more settlement + windows has been created. The net amounts due to or from each participant + have been calculated and a report detailing these net amounts has been + produced. + +2. PS_TRANSFERS_RECORDED: all the calculated net amounts for the settlement + have been converted into transfers between the creditor and debtor accounts. + It is applied for each settlement entry and at settlement level, when all + entries are recorded. This state is not applied to settlement windows. + +3. PS_TRANSFERS_RESERVED: all the funds required for settlement have been + reserved (debit amounts only.) It is applied for each settlement entry and + at settlement level, when all entries are reserved. + +4. PS_TRANSFERS_COMMITTED: all the credit amounts required as part of the + settlement have been committed. It is applied for each settlement entry and + at settlement level, when all entries are committed. + +5. SETTLING: It is used only at settlement level if all accounts are not yet + settled. + +6. SETTLED: This state is applied to settlement accounts in + PS_TRANSFERS_COMMITTED state. When applied to even one account, the + settlement will transit to SETTLING state. When all accounts in a window are + SETTLED, the settlement window will change from PENDING_SETTLEMENT to + SETTLED, while the settlement is still in SETTLING state. When all accounts + from all windows are SETTLED, the settlement will be changed to SETTLED. It + is possible for a settlement to change directly from PS_TRANSFERS_COMMITTED + to SETTLED if all accounts are settled with one request. + +7. ABORTED: the settlement could not be completed and should be rolled back. It + is currently only possible to abort a settlement if the state is one of: + PENDING_SETTLEMENT, PS_TRANSFERS_RECORDED or PS_TRANSFERS_RESERVED. After + having even one account in PS_TRANSFERS_COMMITTED state (even if the + settlement as a whole is still in PS_TRANSFERS_RESERVED), a request to abort + the settlement is rejected. It should be noted that this prevents abortion + in cases such as the default of a participant midway through the settlement + process. + +The present data model contains a foreign key to the enumeration table +containing settlement states from the +**settlementParticipantCurrencyStateChange** table, which maps onto a table +which contains a record for each participant/currency/account type combination. + +Assumption: this means that the states appropriate to a settlement are also to +be applied to the individual elements of a settlement. As a consequence, the +descriptions should be taken to refer to individual settlement amounts as well +as to the settlement as a whole. + +Settlement window states +------------------------ + +A settlement is made up of one or more settlement windows. Each settlement +window has a state associated with it. The current values of this table are as +follows: + +1. OPEN: the settlement window can have ledger movements added to it. + +2. CLOSED: the settlement window cannot have any additional ledger movements + added to it. It is available for settlement. + +3. PENDING_SETTLEMENT: the settlement window’s contents have been included in a + settlement request, but this request is a request for deferred settlement + which has not yet been completed. + +4. SETTLED: the scheme has confirmed that the obligations incurred by + participants as a consequence of the settlement to which this settlement + window belongs have been met by those participants and the settlement is + therefore complete. + +5. ABORTED: the settlement to which this settlement window belongs did not + complete. The settlement window is available to be included in another + settlement. + +Transfer states +--------------- + +Each transaction which passes through the system can be assigned one of a fixed +number of states. The current values of this state are: + +1. RECEIVED_PREPARE: the switch has received the transaction request. + +2. RESERVED: the switch has reserved the funds required to cover the + transaction. + +3. RECEIVED_FULFIL: the switch has received the fulfilment request, and the + transaction has been assigned to a settlement window + +4. COMMITTED: the transaction has been committed. + +5. FAILED: the transaction has failed in some unspecified way and has been + aborted. (Not implemented) + +6. RESERVED_TIMEOUT: the transaction has timed out while in the reserved state + and has been aborted. + +7. RECEIVED_REJECT: the transaction has been rejected by the payee DFSP and + should be aborted. + +8. ABORTED_REJECTED: the transaction has been aborted by the switch as a + consequence of its having been rejected by the payee DFSP. + +9. RECEIVED_ERROR: the transaction was not received correctly by the payee DFSP + and should be aborted. + +10. ABORTED_ERROR: the transaction has been aborted by the switch as a + consequence of its not having been received correctly. + +11. EXPIRED_PREPARED: the transaction has expired during the prepare process and + has been aborted. + +12. EXPIRED_RESERVED: the transaction has timed out during the reservation + process and has been aborted. + +13. INVALID: the transaction has failed the switch’s internal validation process + and has been aborted. + +Transfers and transactions +-------------------------- + +Transfers define a movement of funds in the system. There is a table in the +switch which has this name. Some entries in this table are the consequence of +external movements which are generated by scheme participants and processed by +the switch; others are internally generated by the switch (e.g. to record net +movements of funds associated with settlements.) + +It may be a source of confusion that, although “transfers” is a term used e.g. +in the Interoperability API specification to designate the movement of funds +between participants, it is used as the name of a table in the switch which +stores other types of funds movement as well. + +This document will therefore adopt the following convention: + +- “Transfers” refers to the content of instructions issued using the + **/transfers** resource of the Interoperability API definition[1](http://mojaloop.io/mojaloop-specification/documents/API%20Definition%20v1.0.html). (see [Section 6.7](http://mojaloop.io/mojaloop-specification/documents/API%20Definition%20v1.0.html#67-api-resource-transfers) of the Interoperability API definition[1](http://mojaloop.io/mojaloop-specification/documents/API%20Definition%20v1.0.html).) + +- “Transactions” refers to all movements of funds which are tracked by the + switch. + +In scope and out of scope +========================== + +In scope +-------- + +The following functional items are in scope: + +1. Requesting a settlement by currency + +2. Requesting a settlement by currency and settlement model + +Out of scope +------------ + +Business rules +============== + +How do things happen now? +------------------------- + +This section describes how the current settlement process works. + +### Categorisation + +The process leading to settlement is initially defined by entries in the +*participantCurrency* table. This table holds a record for each combination of: + +1. Participant + +2. Currency + +3. Ledger account type (see Section 2.2 above.) + +### Recording positions + +Each entry in this table has a corresponding entry in the *participantPosition* +table. This table stores the current committed and reserved positions for each +of the combinations described above. Each change to the positions in this table +is documented by an entry in the *participantPositionChange* table, which refers +the change back to the *transfer* table and thence to the authoritative record +of transactions. + +### Assigning transactions to settlement windows + +As each transfer is fulfilled, a record is created for it in the +**transferFulfilment** table. This record contains a link to the currently open +settlement window. + +Records may be created for transactions which are not transfers. Non-transfer +transactions have their ilpFulfilment set to 0. + +The settlement API [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) contains a resource +(**closeSettlementWindow**) to allow an administrator to close a settlement +window and create a new one. The resource takes a settlement window ID as part +of the query string, together with a string describing the status to be assigned +and a string describing the reason for the change of status. In-line +documentation for the resource states: “If the settlementWindow is open, it can +be closed and a new window is created. If it is already closed, return an error +message. Returns the new settlement window.” + +Settlement windows can only be passed a status of CLOSED using this resource. + +### Initiating a settlement + +The initiation of a settlement is initiated by making a call triggered by the +scheme making a **POST** to the **/settlements** resource in the settlement API. +The caller gives a reason for the settlement request. This is a synchronous +call, whose return is described in Section 4.1.5 below. Internally, the +initiation is marked by the creation of a record in the **settlement** table and +the association of a number of settlement window records in the +**settlementWindow** table with the settlement created. This says: I want this +settlement to contain these settlement windows. Each of the settlement windows +selected to form part of this settlement must have the status CLOSED or ABORTED. +When selected to form part of a settlement, the status of each window should be +changed to PENDING_SETTLEMENT. The status of the settlement itself should also +be set to PENDING_SETTLEMENT. + +### Calculating the content of a settlement + +When a settlement has been requested and the windows which it will contain have +been selected, the switch produces an aggregation of the content of the proposed +settlement at the following levels: + +1. Settlement window (from **settlementWindow**) + +2. Participant (from **participantCurrency**) + +3. Currency (from **participantCurrency**) + +4. Account type (from **participantCurrency**) + +5. Participant role type (from **transferParticipant**) + +6. Ledger entry type (from **transferParticipant**) + +This query can be provisioned from the database FK links from **settlement** to +**settlementwindow**, to **transferFulfilment** (all fulfilled transfers), to +**transfer**, to **transferParticipant**. The amount is taken from the +**transferParticipant** table. Correct! + +Only transfers are included in a settlement. This is implied by the first +aggregation criterion above (Settlement window) and the fact that only transfers +are assigned to the current OPEN window when a **transferFulfilment** record is +created. All COMMITTED transactions should have an entry in the +**transferFulfilment** table. + +The results of this query are used to construct a number of records in the +**settlementParticipantCurrency** table, representing the net amount due to or +from each participant and currency in the settlement as a consequence of the +settlement. For a given settlement, these records are segmented by: Correct! + +1. Participant (from **participantCurrency**) + +2. Currency (from **participantCurrency**) + +3. Account type (from **participantCurrency)** + +This report is used as the basis of the information returned from the initial +**POST** to the **/createSettlement** resource of the settlement API (see +Section 4.1.4 above.) + +Bilateral settlements are not currently implemented. + +### Creating position records for the settlement + +A record is inserted in the **transfer** table for each net amount calculated in +the previous step when the settlement account transitions from +PENDING_SETTLEMENT to PS_TRANSFERS_RECORDED. Please note that PS stands for +PENDING_SETTLEMENT. Each of these records will have the account type SETTLEMENT. +The ledger entry type will be SETTLEMENT_NET_SENDER, SETTLEMENT_NET_RECIPIENT or +SETTLEMENT_NET_ZERO depending on whether the participant owes money to the +scheme, is owed money by the scheme or is neutral in the settlement, +respectively. The transfer participant type is HUB for the Hub participant and +DFSP_POSITION for the DFSP participant. The account type is imposed by the +participant currency – for the Hub participant it is the +HUB_MULTILATERAL_SETTLEMENT and for the DFSP participant it is the POSITION +account. This enables the switch to reset the participant’s position when the +window enters the PS_TRANSFERS_COMMITTED state. + +### Progress of the settlement + +As the scheme verifies that participants have settled the amounts due from them, +the scheme administrator can update the switch with this information. + +#### Updating the status of settlement windows + +Three methods of performing this update are supported. Each of these methods is +discussed in more detail below. + +##### **updateSettlementById** + +An administrator may issue a **PUT** to the **/updateSettlementById** resource +on the settlement API, giving the settlement ID of the settlement they wish to +update as part of the query (e.g. **PUT +/updateSettlementById/settlements/123.**) The content of the request is as +follows: + +1. A state to be assigned to the participants required. The state is + constrained to be either ABORTED or INVALID + +2. A reason for the change of state. + +3. An external reference for the change. + +4. An array of participants to which the status is to be applied. The following + information is given for each participant: + + 1. The ID of the participant. This is the internal Mojaloop ID of the + participant. + + 2. An array of *accounts*. The content of each account is as follows: + + 1. An ID. The description characterises this as the participant’s + currency ID QUESTION: Is this correct? It is an integer, where a + VARCHAR(3) would be expected. + + 2. A reason. A string which presumably can contain anything. + + 3. The state of the settlement for the account. This is not constrained + by an enum, but is a simple string. It is not clear how this status + relates to the overall state given in Item 1 above. + + 4. An external reference for the change in state. + +> A call to this API resource may contain *either* items 1-3 above *or* an +> array of accounts as specified in item 4 above, but not both. If it contains +> items 1-3 above, then all the items must be present. If these rules are +> breached, then the switch will reject the request. + +##### **updateSettlementBySettlementParticipant** + +An administrator may issue a **PUT** to the +**/updateSettlementBySettlementParticipant** resource on the settlement API, +giving the settlement ID and the participant ID of the parts of the settlement +they wish to update as part of the query (e.g. **PUT +/updateSettlementByParticipant/settlements/123/participants/56789.**) The +content of the request is as follows: + +1. An array of state changes, whose content is as follows: + + 1. The currency ID whose status is to be changed. This is an integer, where + a VARCHAR(3) would be expected. + + 2. A reason for the state change. + + 3. The state requested. This is a string, where an enumeration would be + expected. + + 4. An external reference for the change in state. + +Note that this is an array with the same structure as that described in item 4 +of Section 5.1.7.1 above, although it is defined separately in the API +definition. + +##### **updateSettlementBySettlementParticipantAccount** + +An administrator may issue a **PUT** to the +**/updateSettlementBySettlementParticipantAccount** resource on the settlement +API, giving the settlement ID, the participant ID and the account ID of the part +of the settlement they wish to update as part of the query (e.g. **PUT +/updateSettlementByParticipant/settlements/123/participants/56789/accounts/1.**) +The content of the request is as follows: + +1. The state requested. This is a string, where an enumeration would be + expected. + +2. A reason. A string which presumably can contain anything. + +3. An external reference for the change in state. + +Note that this is a structure with most of the same members as the structure +defined in Item 1 of Section 5.1.7.2 above, although the items appear in a +different order. + +#### How changes in settlement window state are processed + +The action taken in response to these calls depends on the status assigned to +the account. In any case, a record is created in the +**settlementParticipantCurrencyStateChange** table, giving the state identifier, +the reason and an external reference for the change. + +There is a sequence of steps defined for a settlement. Each step must be +followed in order, and no steps may be omitted. The sequence of steps is +hard-coded into the application and is as follows: + +1. PENDING_SETTLEMENT + +2. PS_TRANSFERS_RECORDED + +3. PS_TRANSFERS_RESERVED + +4. PS_TRANSFERS_COMMITTED + +5. SETTLED + +A settlement can be aborted provided no account in the settlement has reached a +status of PS_TRANSFERS_COMMITTED. + +The following actions are taken on each change of status: + +##### PENDING_SETTLEMENT to PS_TRANSFERS_RECORDED + +A record is generated in the **transfer** table to record the change in state. +The parties to this transfer are the POSITION account type and the +HUB_MULTILATERAL_SETTLEMENT type. If the participant account is a net creditor +for the settlement, then the ledger entry type will be set to +SETTLEMENT_NET_RECIPIENT. If the participant account is a net debtor for the +settlement, then the ledger entry type will be set to SETTLEMENT_NET_SENDER. If +the participant account is neutral for the settlement, then the ledger entry +type will be set to SETTLEMENT_NET_ZERO. + +A record is also created in the **transferstatechange** table with the +RECEIVED_PREPARE state, which means that no positions have been changed. + +When the last participating account is changed to PS_TRANSFERS_RECORDED, then +the settlement’s status is also changed to PS_TRANSFERS_RECORDED. + +If an administrator attempts to change an account’s state to +PS_TRANSFERS_RECORDED and either the settlement’s state or the settlement +account’s state is not PENDING_SETTLEMENT or PS_TRANSFERS_RECORDED, then the +request will be rejected. + +##### PS_TRANSFERS_RECORDED to PS_TRANSFERS_RESERVED + +A new record is created in the **transferstatechange** table for the transfer +that was created in section 5.1.7.2 above. This record will have a status of +RESERVED. If the participant is a net creditor as a result of the settlement, +then a record will also be created in the participantPositionChange table if the +account being reserved is for a net creditor in the settlement, as defined in +Section 5.1.7.2 above. The Net Debit Cap is checked at this point, and if the +current position exceeds the Net Debit Cap, then the Net Debit Cap is +automatically adjusted by the amount of the net credit due to the account as +part of the settlement and the participant is sent a notification of the new Net +Debit Cap value and its currency. + +When the last participating account is changed to PS_TRANSFERS_RESERVED, then +the settlement’s status is also changed to PS_TRANSFERS_RESERVED. + +If an administrator attempts to change an account’s state to +PS_TRANSFERS_RESERVED and either the settlement’s state or the settlement +account’s state is not PS_TRANSFERS_RECORDED or PS_TRANSFERS_RESERVED, then the +request will be rejected. + +##### PS_TRANSFERS_RESERVED to PS_TRANSFERS_COMMITTED + +A new record is created in the **transferstatechange** table for the transfer +that was created in section 5.1.7.2 above. This record will have a status of +COMMITTED. If the participant is a net debtor as a result of the settlement, +then a record will also be created in the participantPositionChange table if the +account being reserved is for a net debtor in the settlement, as defined in +Section 5.1.7.2 above. + +When the last participating account is changed to PS_TRANSFERS_COMMITTED, then +the settlement’s status is also changed to PS_TRANSFERS_COMMITTED. + +If an administrator attempts to change an account’s state to +PS_TRANSFERS_COMMITTED and either the settlement’s state or the settlement +account’s state is not to PS_TRANSFERS_RESERVED or PS_TRANSFERS_COMMITTED, then +the request will be rejected. + +##### PS_TRANSFERS_COMMITTED to SETTLED + +When the first account is changed to a status of SETTLED, the settlement’s state +is changed to SETTLING. + +When the last participating account is changed to SETTLED, then the settlement’s +status is also changed to SETTLED. + +If an administrator attempts to change an account’s state to SETTLED and either +the settlement’s state or the settlement account’s state is not to +PS_TRANSFERS_COMMITTED or SETTLED, then the request will be rejected. + +### Aborting the settlement + +If there is any failure in the scheme’s process for recovering the amounts due +from participants in a settlement, the scheme can update the switch with this +information by issuing a **PUT** to the **/updateSettlementById** resource of +the settlement API and setting the **state** value of the content of the message +to ABORTED. A **PUT** call on the **/updateSettlementById** resource is the only +method which may be used for ABORTING a settlement. If any account information +is given in the call, then neither the **state** nor the **reason** nor the +**externalReference** fields may be set. if the **state** value is set at the +top level of the call, then the **reason** field must also be set, and the +request will be rejected if any account information is given in the call. + +If an attempt is made to abort a settlement, and any of the accounts in the +settlement have the status PS_TRANSFERS_COMMITTED or SETTLED, then the request +will be rejected. + +When a call is received, a new record is created in the +**settlementParticipantCurrencyStateChange** table, and is given the appropriate +status based on the status reported by the caller. Depending on the update that +was received, this may also require the status of the transaction and that of +the participant position to be updated. No, it is done at settlement level for +the entire settlement and all entries in settlementParticipantCurrency are +affected. + +Note: if the settlement is bilateral, then there is no obvious reason to abort +the entire settlement if one interchange fails. We should think about this use +case and how we would want to represent it. This document does not consider this +use case. + +Aborting a settlement comprises the following steps: + +1. The status of the transfers created in Section 5.1.6 above should be changed + to ABORTED. + +2. A new record is added to the **settlementParticipantCurrencyStateChange** + table for each of the participant records in the settlement. This record has + a status of ABORTED, and the **currentStateChangeId** column in the + **settlementParticipantCurrency** table for that participant record is + changed to point to this new record. + +3. A new record is added to the **settlementWindowStateChange** table for each + settlement window in the settlement. This record has a status of ABORTED, + and the **currentStateChangeId** column in the settlementWindow table for + that window is changed to point to this new record. + +4. A new record is added to the **settlementStateChange** table for the + settlement. This record has a status of ABORTED, and the + **currentStateChangeId** column in the **settlement** table is changed to + point to this new record. + +5. If positions have been reserved for net creditors as a result of the + settlement (see Section 5.1.7.3 above,) then a balancing entry will be + created in the **participantPositionChange** table to reverse the + reservation of funds. This action does not at present reverse any change to + the account’s Net Debit Cap that may have been made as a consequence of this + reservation. + +6. Any records created in the **transfers** table (see Section 5.1.7.2 above) + will have their state changed in two steps by adding records to the + **transferStateChange** table. The first step will change the transfer state + to REJECTED. The second step will change the state to ABORTED. + +Question: should there be/is there a time-out after which a settlement will be +aborted if it has not completed? If there is, how is it set? No, there isn’t +timeout on a settlement level. But when transfers are prepared (for +PS_TRANSFERS_RECORED) expiration is set on a transfer level. Its value is +controlled by a Config.TRANSFER_VALIDITY_SECONDS, which currently defaults to +432000 seconds, which equals 5 days. It is big enough to avoid expiration. +Still, if that happens, it would leave the data in an unrecoverable by the API +state. This is very good point and should be certainly addressed with the next +increment! + +Recording the deposit of funds +------------------------------ + +As participants are informed of their liabilities under the settlement, it is +expected that they will deposit funds in their settlement account to cover those +liabilities. These activities are recorded via the central ledger administration +interface resource **recordFundsIn**. + +This action is called through a POST to the administration interface, giving the +name of the participant and the account to be credited in the form POST +/participants/{participantName}/accounts/{accountId} (e.g. **POST +/participants/myDfsp/accounts/1234**) The content of this message is as follows. + +1. transferId: a UUID to be used to identify the transfer in the switch. + +2. externalReference: a reference used to identify the transfer for the + administrator + +3. action: this should be set to “recordFundsIn” for recording funds in. + +4. reason: the reason why the transfer is being made. + +5. amount: the amount of the transfer. + + 1. amount: the actual amount being transferred + + 2. currency: the ISO 4217 code of the currency of the deposit. + +6. extensionList: a series of key/value pairs which are used to carry + additional information + +When an administrator records that a participant has deposited funds to an +account, the amount deposited is recorded in an entry in the **transfer** table. +The parties to the transfer are recorded by entries in the +**transferParticipant** table, with a ledger account type of the type requested +in the POST for the participant and HUB_RECONCILIATION for the balancing entry. +For deposits, the participant account will be the creditor and the +HUB_RECONCILIATION account the debtor. The application will currently reject +requests to this interface which do not have a ledger account type of +SETTLEMENT. + +A deposit goes through the following changes of state: + +1. A record is created for the transfer in the **transferStateChange** table + with a state of RECEIVED_PREPARE. + +2. Next, a record is created in the **transferStateChange** table with the + state RESERVED. This also creates a record in the + **participantPositionChange** table to record the reservation of funds in + the HUB_RECONCILIATION account, and the **participantPosition** table’s + value for that account is updated. + +3. Finally, a record is created in the **transferStateChange** table with the + state COMMITTED. After this act, records are created in the + **participantPositionChange** table for the creditor account to record the + completion of the deposit, and the appropriate record in the + **participantPosition** table has its balance updated. + +These changes of state are simply chained together in sequence. There is no +interval or trigger between the steps. + +This activity has no direct effect on the settlement process or on the Net Debit +Cap. + +Recording the withdrawal of funds +--------------------------------- + +At various times, participants may wish to withdraw funds from their settlement +accounts: for instance, if they are long-term net beneficiaries of transfers and +are building up a surplus of liquidity. These activities are recorded via a +two-phase process. In the first phase, the funds for the proposed withdrawal are +reserved via the central ledger administration interface resource +**recordFundsOutPrepareReserve**. In the second phase, the withdrawal is +committed via the **recprdFundsOutCommit** resource or aborted through the +**recordFundsOutAbort** resource. + +These activities are defined below. + +### **recordFundsOutPrepareReserve** + +This action is called through a POST to the administration interface, giving the +name of the participant and the account to be credited (e.g. **POST +/participants/myDfsp/accounts/1234**) The content of this message is as follows. + +1. transferId: a UUID to be used to identify the transfer in the switch. + +2. externalReference: a reference used to identify the transfer for the + administrator + +3. action: this should be set to “recordFundsOutPrepareReserve” for recording + funds withdrawals. + +4. reason: the reason why the transfer is being made. + +5. amount: the amount of the transfer. + + 1. amount: the actual amount being transferred + + 2. currency: the ISO 4217 code of the currency of the deposit. + +6. extensionList: a series of key/value pairs which are used to carry + additional information + +When an administrator records that a participant has requested the withdrawal of +funds from an account, the amount to be withdrawn is recorded in an entry in the +**transfer** table. The parties to the transfer are recorded by entries in the +**transferParticipant** table, with a ledger account type of the type requested +in the POST for the participant and HUB_RECONCILIATION for the balancing entry. +For withdrawals, the participant account will be the debtor and the +HUB_RECONCILIATION account the creditor. The application will currently reject +requests to this interface which do not have a ledger account type of +SETTLEMENT. + +Reservation of a withdrawal goes through the following changes of state: + +1. A record is created for the transfer in the **transferStateChange** table + with a state of RECEIVED_PREPARE. + +2. Next, a record is created in the **transferStateChange** table with the + state RESERVED. This also creates a record in the + **participantPositionChange** table to record the reservation of funds in + the participant’s settlement account, and the **participantPosition** + table’s value for that account is updated. + +These changes of state are simply chained together in sequence. There is no +interval or trigger between the steps.**recordFundsOutCommit** + +This action is called through a POST to the administration interface, giving the +name of the participant and the account to be credited (e.g. **POST +/participants/myDfsp/accounts/1234**) The content of this message is as follows. + +1. transferId: a UUID to be used to tie the commit to the preceding reservation + in the switch. + +2. externalReference: a reference used to identify the transfer for the + administrator + +3. action: this should be set to “recordFundsOutCommit” for recording funds + commitments. + +4. reason: the reason why the transfer is being made. + +5. amount: the amount of the transfer. + + 1. amount: the actual amount being transferred + + 2. currency: the ISO 4217 code of the currency of the deposit. + +6. extensionList: a series of key/value pairs which are used to carry + additional information + +When an administrator records that a participant wants to commit the withdrawal +of funds from an account, the original entry in the **transfer** table is +identified. The parties to the transfer are recorded by entries in the +**transferParticipant** table, with a ledger account type of the type requested +in the POST for the participant and HUB_RECONCILIATION for the balancing entry. +For withdrawals, the participant account will be the debtor and the +HUB_RECONCILIATION account the creditor. The application will currently reject +requests to this interface which do not have a ledger account type of +SETTLEMENT. + +Commitment of a withdrawal goes through the following changes of state: a record +is created in the **transferStateChange** table with the state COMMITTED. After +this act, records are created in the **participantPositionChange** table for the +creditor account to record the completion of the deposit, and the appropriate +record in the **participantPosition** table has its balance updated. These +changes of state are simply chained together in sequence. There is no interval +or trigger between the steps. + +This activity has no direct effect on the settlement process or on the Net Debit +Cap. + +Proposed enhancements +===================== + +This section describes the enhancements to the existing OSS settlement process +(described in Section 4.1 above) which are proposed. Each enhancement is shown +in a separate section and, where there are dependencies between enhancements, +these are listed in the enhancement’s description. + +Request settlement by currency [EPIC] +------------------------------------- + +The following changes are required to support settling separately for different +currencies. + +### Database changes + +The following changes are required to support multi-currency settlement. + +#### Addition of a settlementWindowContent table [Story \#1] + +A new table will be added to the database. The name of this table will be +**settlementWindowContent**. The table will contain an entry for each item of +content in a given settlement window, broken down by ledger account type and +currency. The full column structure of the table is as follows: + +| **Column name** | **Description** | **Attributes** | +|-----------------------------------------|---------------------------------------------------|---------------------------------------------------------------------------------------| +| **settlementWindowContentId** | Auto-generated key for the record. | BIGINT(20). Unsigned, not null, primary key, autoincrement | +| **settlementWindowId** | The settlement window that the record belongs to. | BIGINT(20). Unsigned, not null. Foreign Key to **settlementWindow** | +| **ledgerAccountTypeId** | The ledger account that the record refers to. | INT(10). Unsigned, not null. Foreign key to **ledgerAccountType** | +| **currencyId** | The currency that the record refers to. | VARCHAR(3). Not null. Foreign key to **currency**. | +| **createdDate** | The date and time when the record was created. | DATETIME. Not null. Defaults to CURRENT_TIMESTAMP. | +| **currentStateChangeId** | The current state of this entry. | BIGINT(20). Unsigned. Foreign key to **settlementWindowContentStateChange** | + +  + +#### Addition of a settlementWindowContentStateChange table [Story \#2] + +A new table will be added to the database. The name of this table will be +**settlementWindowContentStateChange**. The table will track changes to the +status of entries in the **settlementWindowContent** table. The full column +structure of the table is as follows: + +| **Column name** | **Description** | **Attributes** | +|------------------------------------------|---------------------------------------------------------------------|----------------------------------------------------------------------------| +| **settlementWindowContentStateChangeId** | Auto-generated key for the record. | BIGINT(20). Unsigned, not null, primary key, autoincrement | +| **settlementWindowContentId** | The settlement window content record whose status is being tracked. | BIGINT(20). Unsigned, not null. Foreign Key to **settlementWindowContent** | +| **settlementWindowStateId** | The record’s status. | VARCHAR(50). Not null. Foreign key to **settlementWindowState** | +| **reason** | An optional field giving the reason for the state being set. | VARCHAR(512). | +| **createdDate** | The date and time when the record was created | DATETIME. Not null. Defaults to CURRENT_TIMESTAMP | + +  + +#### Changes to the settlementTransferParticipant table [Story \#3] + +The name of the **settlementTransferParticipant** table should be changed to +**settlementContentAggregation**. + +The column structure of the **settlementContentAggregation** table should be +modified as follows: + +1. Remove the following foreign keys from the table: + 1. settlementtransferparticipant_settlementid_foreign + 2. settlementtransferparticipant_settlementwindowid_foreign +2. Remove the following columns from the table: + 1. settlementId + 2. settlementWindowId +3. Add the following column to the table: + 1. Column name: **settlementWindowContentId** + 2. Attributes: BIGINT(20), unsigned, not null +4. Add the following foreign key to the table: + 1. Name: settlementContentAggregation_settlementwindowcontent_foreign + 2. Child column **settlementWindowContentId** + 3. Refers to table: **settlementWindowContent** + 4. Refers to column: **settlementWindowContentId** + +All database scripts which use the **settlementTransferParticipant** table will +be changed to accommodate the new name and structure of the table. [Story \#8] + +Queries to filter the records in the **settlementContentAggregation** table +required for a settlement in a particular currency will need to join across from +that table to the **participantCurrency** table using the +**participantCurrencyId** column to ascertain the currency to which a particular +row refers. The **currencyId** column is held in the **participantCurrency** +table. [Story \#9] + +#### Add structures relating to settlement models [Story \#4] + +In order to support the specification of settlement models, which will include +currencies, the database changes specified in Section 6.2.1.1 below should be +added to the database. + +Settlement models describing the settlement types required for a given +implementation will be developed and tested.**[Story \#4a]** + +#### Change to settlement table [Story \#5] + +The **settlement** table in the central ledger database needs to be modified to +add a *settlementModel* column. This column should have the following +characteristics: + +- The column should be required (NOT NULL) and unsigned. +- The column’s data type should be integer(10) +- The column should be defined as a foreign key reference to the +*settlementModelId* field of the **settlementModel** table. + +When this change is applied to an existing database, a settlement model to +describe the default settlement should be created. The settlementCurrencyId +column in this model should be left blank (= all currencies.) The +settlementModel column in all existing records in the settlement table should be +set to point to this model’s ID. A script to apply this change should be +created, tested and stored in the repository. + +### Changes to processing + +The following changes to the processing code are required to support +multi-currency settlement. + +#### Change to code supporting closeSettlementWindow resource + +The existing API [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) provides a single function +(**closeSettlementWindow**) to manage settlement windows. This function allows +its user to select a settlement window by ID number and to input a new status +for the window and a reason for that status. + +When a settlement window is closed, the code supporting this activity should +perform two functions, as follows. These functions should be performed in the +background and without impacting system performance. + +##### Generate records in the settlementWindowContent table [Story \#1095] + +The code should generate a record in the **settlementWindowContent** table for +each ledger entry type/currency combination found in the transfers in the +settlement window. This information can be obtained from the following query: +``` +SELECT DISTINCT + @mySettlementWindowId, pc.ledgerAccountTypeId, pc.currencyId +FROM transferFulfilment tf +INNER JOIN transferParticipant tp + ON tp.transferId = tf.transferId +INNER JOIN participantCurrency pc + ON pc.participantCurrencyId = tp.participantCurrencyId +WHERE tf.settlementWindowId = @mySettlementWindowId; +``` + +##### Generate records in the settlementContentAggregation table [Story \#1095] + +The code should calculate the aggregate values for all transfers which form part +of that settlement window and store them in the **settlementContentAggregation** +table. Aggregates should be produced for the following segmentation: + +1. Participant +2. Currency +3. Ledger account type +4. Participant role type +5. Ledger entry type + +The following query will perform this function for a given settlement window: + +``` +INSERT INTO settlementContentAggregation + (settlementWindowContentId, participantCurrencyId, + transferParticipantRoleTypeId, ledgerEntryTypeId, amount) +SELECT swc.settlementWindowContentId, pc.participantCurrencyId, + tp.transferParticipantRoleTypeId, tp.ledgerEntryTypeId, SUM(tp.amount) +FROM transferFulfilment tf +INNER JOIN transferParticipant tp + ON tf.transferId = tp.transferId +INNER JOIN participantCurrency pc + ON pc.participantCurrencyId = tp.participantCurrencyId +INNER JOIN settlementWindowContent swc + ON swc.settlementWindowId = tf.settlementWindowId +  AND swc.ledgerAccountTypeId = pc.ledgerAccountTypeId + AND swc.currencyId = pc.currencyId +WHERE tf.settlementWindowId = @mySettlementWindowId +GROUP BY swc.settlementWindowContentId, pc.participantCurrencyId, + tp.transferParticipantRoleTypeId, tp.ledgerEntryTypeId; +``` + +#### createSettlement + +The parameters for the **createSettlement** resource should be extended to +include the settlement model for which the settlement is required. + +When the settlement is created, the settlement model for which the settlement is +required should be added to the new row in the **settlement** table. [Story \#1097] + +When a settlement is requested, the switch should check that the settlement +model for which settlement is being requested requires NET settlement and not +GROSS settlement. If the requested settlement model requires GROSS settlement, +then the request should be rejected with an error. + +The verification procedures associated with the **createSettlement** resource +should be changed to check that some of the settlement windows associated with +the proposed settlement contain entries for the settlement model requested. If +there are no entries for the settlement model requested for any of the +settlement windows requested, then an error should be returned and the +settlement request rejected. [Story \#1096] + +#### Updating the progress of a settlement + +When the status for a settlement participant is changed to SETTLED, this will result in +changes to the status of all the records in the **settlementContentAggregation** +table for the given participant, identified by the compound key: settlementId + participantCurrencyId. + +[Story \#16] + +The code should then check to see if, as a result of the updates to the records +in **settlementContentAggregation**, all records for a given combination of +settlement window, ledger account type and currency have the same status. If +they have, then the appropriate record in the **settlementWindowContent** table +should be updated to have that status. + +The code should then check to see if all records in the +**settlementWindowContent** table for a given settlement window have the same +status. If they have, then the appropriate record in the **settlementWindow** + +Support continuous gross settlement +----------------------------------- + +Continuous Gross Settlement is a settlement model in which each transaction is +settled as soon as it is fulfilled. The following changes are required to +implement this change. + +### Database changes + +The database changes shown in Section 8 below should be implemented. These can +be summarised as follows: + +#### Changes to support the settlement model + +A number of new tables are required to define a settlement model and to store +the enumerations for its definition types. This comprises the following tables +in the ERD: + +- settlementDelay + +- settlementInterchange + +- settlementModel + +In addition, the **settlementmodel** table has foreign keys to two existing +tables, as follows: + +1. A foreign key to the **currency** table to enable the settlement model to + settle only scheme accounts in a particular currency. If this entry is + blank, this should be interpreted as saying that the settlement model + settles all currencies that are not specified as being settled by other + settlement models for the same account type. + +2. A foreign key to the **ledgerAccountType** table. This specifies that the + settlement model settles accounts of this type. + +#### Changes to the **ledgeraccounttype** table + +The current **ledgeraccounttype** table stores a number of entries for account +types which should not be used for settlements – for instance, +HUB_MULTILATERAL_SETTLEMENT. A column should therefore be added to the +**ledgeraccounttype** table to indicate whether the account type can be attached +to a settlement model or not. This column is called **settleable**, and is +specified as a Boolean value, NOT NULL and with a default of FALSE. + +Of the existing ledger account types, PRINCIPAL_VALUE, INTERCHANGE_FEE and +HUB_FEE should be marked as capable of being attached to settlement models (this +value should be TRUE.) For all other ledger account types, the column should be +set to FALSE. If new ledger account types are added to this table via the +eventual settlement API, then they should have a value of TRUE. + +#### Changes to the **ledgerentrytype** table + +Implementation of the TIPS settlement model requires an explicit association +between ledger entry types and the account types in which they should appear. +Since each ledger entry type should only appear in a single account type, though +multiple ledger entry types may appear in a given account type, this is modelled +by including a foreign key reference to the **ledgeraccounttype** table as a +column in the **ledgerentrytype** table. It should be noted that this applies +only to ledger entry types which are associated with a settlement model, as +described in Section 6.2.1.2 above. The assignment of existing entries in the +database would be as follows: + +| Ledger Entry Type | Ledger Account Type | +|-------------------|---------------------------| +| PRINCIPAL_VALUE | POSITION | +| INTERCHANGE_FEE | INTERCHANGE_FEE | +| HUB_FEE | HUB_FEE | +| | | + +#### Changes to the **settlement** table + +The **settlement** table should have a column added to it to allow the +settlement model to be used in settling it to be specified. The column should be +called *settlementModelId*. It should have the same data type as the equivalent +field in the **settlementModel** table, and should be a foreign key into that +table. It should be defined as not null. + +#### Changes to the **settlementWindow** table + +As well as settlements, individual settlement windows will need to be assigned +to settlement models. The **settlementWindow** table should therefore have a +column added to it to allow the settlement model to be used in settling it to be +specified. The column should be called *settlementModelId*. It should have the +same data type as the equivalent field in the **settlementModel** table, and +should be a foreign key into that table. It should be defined as not null. + +This concludes the list of schema changes required to support the TIPS +settlement models + +### API changes + +API Support for the settlement functionality required for TIPS will include the +following functions: + +#### Close a settlement window + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a +**closeSettlementWindow** resource. This function allows its user to select a +settlement window by ID number and to input a new status for the window and a +reason for that status. This resource will retain its current signature, but the +code supporting it needs to change as follows. + +When a settlement window is closed, the system should create a new settlement +window with the same settlement model as the newly closed settlement window, and +should make this the active window. + +When a settlement window is closed, the code supporting this activity should +calculate the aggregate values for all transfers which form part of that +settlement window and store them in the **settlementTransferParticipant** table. +Aggregates should be produced for the following segmentation: + +1. Participant + +2. Currency + +3. Ledger account type + +4. Participant role type + +5. Ledger entry type + +The following example code will produce the aggregations required for a given +settlement window (identified as \@MyWindow in the example): + +SELECT + +S.settlementId + +, W.settlementWindowId + +, P.participantCurrencyId + +, P.transferParticipantRoleTypeId + +, P.ledgerEntryTypeId + +, SUM(P.amount) + +, CURRENT_TIMESTAMP AS createdDate + +FROM + +settlementWindow W INNER JOIN settlementModel M ON W.settlementModelId = +M.idsettlementModel + +INNER JOIN settlementSettlementWindow S ON W.settlementWindowId = +S.settlementWindowId + +INNER JOIN ledgerAccountType L ON M.idsettlementModel = L.settlementModelId + +INNER JOIN transferFulfilment F ON W.settlementWindowId = F.settlementWindowId + +INNER JOIN transferParticipant P ON F.transferId = P.TransferId + +INNER JOIN participantCurrency PC ON P.participantCurrencyId = +PC.participantCurrencyId + +AND PC.ledgerAccountTypeId = L.ledgerAccountTypeId + +WHERE + +W.settlementWindowId = \@MyWindow + +AND + +(PC.currencyId = M.settlementcurrencyId OR M.settlementcurrencyId IS NULL) + +GROUP BY + +S.settlementId + +, W.settlementWindowId + +, P.participantCurrencyId + +, P.transferParticipantRoleTypeId + +, P.ledgerEntryTypeId; + +#### Getting information about a settlement window + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a +**getSettlementWindowById** resource. This function allows its user to obtain +information about a settlement window by giving the ID that was returned when +the settlement window was created. + +This call returns a **SettlementWindow** object. This object will need to be +extended to include the name of the settlement model to which the settlement +window belongs. + +#### Getting information about settlement windows using parameters + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a +**getSettlementWindowsByParams** resource. This function allows its user to +obtain information about all settlement windows which meet the criteria +specified by the user. The following changes will need to be made to this call: + +1. The parameters supported by the call will need to be extended to allow a + user to request settlement windows by settlement model. The user should be + able to enter the name of a settlement model. + +2. This call returns an array of **SettlementWindow** objects. It is assumed + that these objects will have been changed by the changes specified in + Section 6.2.2.2 above, and that no further processing will be required for + this call. + +#### Requesting a settlement + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a **createSettlement** +resource. This function allows its user to request a settlement for a given set +of settlement windows, which are passed to the resource as parameters. The +following changes will need to be made to this call: + +The parameters for the **createSettlement** resource are defined in the +**SettlementEventPayload** object. This object will need to have a parameter +added to specify the settlement model which is to be settled. The parameter +should be called *settlementModel*, and it should be a string. It should be +required. + +The following validation should be performed on this parameter when the request +is received via the API: + +1. The content of the parameter is a case-insensitive match for an active entry + in the **settlementmodel** table, ignoring whitespace. + +2. The *settlementtypeid* column in the record in the selected settlement model + should not point to a record in the **settlementdelay** table whose + *settlementDelayName* value is “IMMEDIATE”. If it does, the request should + be rejected and an error message returned to the caller. + +The id of the settlement model requested should be stored in the +settlementModelId column of the row created in the **settlement** table to +describe the settlement. + +#### Returning the status of a settlement + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a **getSettlementById** +resource. This function allows its user to obtain information about a settlement +by giving the ID that was returned when the settlement was created. + +Information about settlements is returned in a **Settlement** object. A +parameter should be added to the Settlement object to record the settlement +model which is being settled by the settlement. + +The parameter should be called *settlementModel*, and it should be a string. It +should be required. + +**Note**: when a settlement is requested, a reason is given; but the +**Settlement** object does not contain the reason. It might be worth including +this in the definition of the **Settlement** object. + +#### Getting information about settlements using parameters + +The existing API definition[2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a +**getSettlementsByParams** resource. This function allows its user to obtain +information about all settlements by giving the ID that was returned when the +settlement was created. The following changes will need to be made to this call: + +1. This call returns an array of **Settlement** objects. It is assumed that + these objects will have been changed by the changes specified in Section + 6.2.2.5 above, and that no further processing will be required for this + call. + +#### Getting information about a specific participant in a settlement + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports a +**getSettlementBySettlementParticipant** resource. This function allows its user +to obtain information about a settlement which meet the criteria specified by +the user. The following changes will need to be made to this call: + +1. This call returns a **Settlement** object. It is assumed that this object + will have been changed by the changes specified in Section 6.2.2.5 above, + and that no further processing will be required for this call. + +#### Updating a specific settlement + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports an +**updateSettlementById** resource. This function allows its user to update +information about a settlement by giving the ID that was returned when the +settlement was created. + +This call returns a **Settlement** object. It is assumed that this object will +have been changed by the changes specified in Section 6.2.2.5 above, and that no +further processing will be required for this call. + +#### Updating a settlement for a specific participant + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports an +**updateSettlementBySettlementParticipant** resource. This function allows its +user to update information about a settlement by giving the ID that was returned +when the settlement was created, and the participant whose information is to be +updated. + +This call returns a **Settlement** object. It is assumed that this object will +have been changed by the changes specified in Section 6.2.2.5 above, and that no +further processing will be required for this call. + +#### Updating a settlement for a specific participant and account + +The existing API definition [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json) supports an +**updateSettlementBySettlementParticipantAccount** resource. This function +allows its user to update information about a settlement by giving the ID that +was returned when the settlement was created, and the participant and account +whose information is to be updated. + +This call returns a **Settlement** object. It is assumed that this object will +have been changed by the changes specified in Section 6.2.2.5 above, and that no +further processing will be required for this call. + +#### Recording the deposit of funds by a participant + +The existing administration API [3](https://mojaloop.io/documentation/api/central-ledger-api-specification.html) contains functions to enable +an administrator to record a deposit made by a participant to an account. This +process is described in Section 5.2 above. The API should be changed to align it +with the structures used in the existing settlement API [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json). In addition, the signature of the API should be extended to allow the +administrator to specify the account type that will be updated by the deposit. + +#### Recording the withdrawal of funds by a participant + +The existing administration API [3](https://mojaloop.io/documentation/api/central-ledger-api-specification.html) contains functions to enable +an administrator to record a withdrawal made by a participant from an account. +This process is described in Section 5.3 above. The API should be changed to +align it with the structures used in the existing settlement API [2](https://github.com/mojaloop/central-settlement/blob/master/src/interface/swagger.json). In addition, the signature of the API should be extended to allow +the administrator to specify the account type that will be updated by the +withdrawal. + +#### New resource: openSettlementWindow + +In the current architecture, an instance of each settlement window is created +when the instance is set up, and subsequent settlement windows are created by +closing the current settlement window. In the new settlement management +structure, we will need the ability to create new settlement windows where no +predecessors exist: for instance, when an administrator decides to settle a +particular currency using a different settlement model. + +### Processing changes + +The following processing changes are required to implement the changes required +to support continuous gross settlement. + +#### Attributing ledger entries to the correct ledger account type + +When a ledger entry is created, it should be assigned to the ledger account type +specified in the *ledgeraccounttypeid* column of the row in the +**ledgerentrytype** table appropriate to the ledger entry type which is being +created. + +For example: if a normal entry representing a transfer is being created, it will +have a ledger entry type of PRINCIPAL_VALUE. It should be assigned to the +POSITION account type (the default position at present.) This implies that the +match described in Section 6.2.1.3 above has been implemented. + +Question: how does the switch decide whether or when to construct a record in +the **participantPositionChange** table? How would it be possible to select the +ledger account type to which the position refers? + +Processing interchange fees +---------------------------- + +In order to support the scheme model implemented by TIPS, we need to generate +and settle liabilities incurred as a consequence of making transfers between +particular types of customer. The general form of this rule is as follows: + +- If the transaction is a wallet-to-wallet P2P transaction, then the receiver + DFSP pays the sender DFSP 0.6% of the amount of the transaction. + +- No interchange fees are levied for on-us transactions. + +The business decisions around this requirement are: + +1. The definition of whether or not a payee account is a wallet will be + returned by the payee DFSP as part of customer discovery. The mechanism by + which this is implemented is outside the scope of this document. + +2. Interchange fees will be captured by the switch when the transfers which + incur them are completed. + +3. Interchange fees will have the ledger entry type INTERCHANGE_FEE and will be + recorded in accounts whose type is INTERCHANGE_FEE. + +4. Interchange fees will be settled multilaterally, net and deferred. It is + expected that this settlement will take place monthly. + +5. Interchange fees do not require liability cover by participants. + +This functionality will be implemented as a partial instance of a general +process for defining and executing rules, and for taking actions based on the +outcome of evaluation of a rule. For this particular case, we propose the +changes described in the following sections. + +### Part 1: Run script for batch update of interchange fees when settlement window is closed. + +Include stories to manage account type definition + +### Part 2: Add reservation on prepare using script and modify fulfilment to fulfil all ledger types for which an entry has been made + +### Evaluating a rule + +The process of evaluating a rule is based on the following assumptions: + +1. There will be a standard form of rule evaluation with the following + structure: + + 1. A transaction object will be passed as the parameter to the rule + evaluation function. + + 2. The rule evaluation itself will use a complex if statement. + + 3. If the rule evaluates to TRUE, then an action should be executed as + described in Section 6.3.2 below. + +An example of a rule function to evaluate a TIPS interchange fee rule could be: + +function evaluateInterchangeFee (transaction) { + +if( + +(transaction.payee.fspId.toLowerCase() != transaction.payer.fspId.toLowerCase()) + +&& (transaction.extensionList[“payerAccountType”].toLowerCase() == +"Wallet".toLowerCase() + +&& transaction.extensionList[“payeeAccountType”].toLowerCase() == +"Wallet".toLowerCase()) + +&& (transaction.transactionType.scenario.toLowerCase() == +"TRANSFER".toLowerCase() + +&& transaction.transactionType.initiator.toLowerCase() == "PAYER".toLowerCase() + +&& transaction.transactionType.initiatorType.toLowerCase() == +"CONSUMER".toLowerCase()) + +) { + +// Do some good stuff + +}; + +}; + +### Taking action after evaluating a rule + +If a rule evaluates to TRUE as described in Section 6.3.1 above, then +appropriate action should be taken. In the case of the immediate example of +interchange fees, the action taken should be to add two entries to the +participants’ interchange fee accounts, on recording the debit from the payee of +the interchange fee amount and the other recording the credit to the payer of +the interchange fee amount. + +A simple yet general way of supporting actions of this type is to define a class +(which might be called ruleAction) and adding methods to it to represent the +actions to be taken. The rule evaluation function can then instantiate the class +and call the appropriate function. + +In the case of the interchange fees, we would define an action called +addLedgerEntry, with the following parameters: + +1. The transfer ID for which the ledger entry is being created + +2. The ledger entry type to be used + +3. The currency in which the amount is denominated + +4. The amount of the fee + +5. The FSP ID of the credit party + +6. The FSP ID of the debit party + +This might appear in the rule evaluation function as: + +myAction.addLedgerEntry(transaction.transactionId, + +transaction.transactionId, + +"INTERCHANGE_FEE“, + +transaction.currency, + +transaction.amount\*0.006, + +transaction.payer.fspId, + +transaction.payee.fspId); + +### Providing a generic framework for rule evaluation + +Finally, we will need to provide a generic framework to trigger the evaluation +of rules. This should be an array of evaluation functions, which are triggered +when the status of a transfer changes to FULFILLED. + +Process transfers for continuous gross settlement [EPIC] +------------------------------------------------- + +When a settlement model specifies that an account is to be settled immediate gross, then each ledger entry which is of a type belonging to that scheme account should be settled immediately. This immediate settlement should have the following characteristics: + +- It should be performed by a process which is forensically logged. +- It should be performed immediately, so that participants can check their current position against the transfers that comprise it. +- It should be aggregated to settlement window level, so that the checks which are currently performed on the overall status of a settlement window will continue to work. + +The following sections describe the changes that are required to process transfers for accounts which are settled immediate gross. + +### Database changes + +The following changes are required to the database to implement transfer processing for continuous gross settlement + +#### Addition of a new table to store changes in state + +A new table should be added to store changes in state for ledger entries for individual transfers. The name of this table should be **transferParticipantStateChange**. Its column structure should be as follows: + +1. The unique key to the record. Column name: **transferParticipantStateChangeId**; type: unsigned BIGINT; not nullable; primary key +2. The record in **TransferParticipant** whose state change this record marks. Column name: **transferParticipantId**; type: unsigned BIGINT; not nullable; foreign key to the **transferParticipantId** column of the **transferParticipant** table. +3. The current state of the record in **transferParticipant** to which this state record refers. Column name: **settlementWindowStateId**; data type VARCHAR(50); not nullable; foreign key to the **settlementWindowStateId** column of the **settlementWindowState** table. +4. An explanation of the state change. Column name: **reason**; type: VARCHAR(512); nullable. +5. The date and time when the change was recorded. Column name: **createdDate**; type DATETIME; not nullable; default value **CURRENT_TIMESTAMP**. + +#### Changes to the TransferParticipant table + +No changes to the **transferParticipant** table are required. The relationship between records in the **transferParticipant** table and records in the **transferParticipantStateChange** table is managed via the **transferParticipantId** column in the **transferParticipantStateChange** table. + +#### Changes to the settlementModel table + +Existing implementations have functionality which automatically adjusts participants' positions when settlements are completed. In order to support backwards compatibility for these implementations, the settlement model will be expanded to allow automated position adjustment to be switched off and on. + +This functionality will be managed through a new column in the **settlementModel** table. The name of the column will be **adjustPosition**. Its type will be TINYINT(1), and it should not be nullable. It should have a default value of zero (FALSE). + +### Processing changes + +The following changes to processing are required to support immediate settlement of gross ledger entries. + + +#### Generating entries in settlementContentAggregation + +The following changes to the process that creates aggregation records in the **settlementContentAggregation** table are required. + +1. The aggregation process for a settlement window may not be performed if there are any records in the **transferParticipant** table which belong to the settlement window to be aggregated (as defined by joining the **transferParticipant** records to the matching records in the **transferFulfilment** table on the **transferId** column in both tables) and which do not have any corresponding entries in the **transferParticipantStateChange** table. This test is performed via a LEFT OUTER JOIN relationship between the **transferParticipantStateChange** table and the **transferParticipant** table, using the foregin key relation between the **transferParticipantId** columns in the **transferParticipant** table and the **transferParticipantStateChange** table. +2. In the discussion which follows, the current status of a record in **transferParticipant** is defined as: the status of the record in the **transferParticipantStateChange** table which is keyed to the record in **transferParticipant** and which has the latest value in the **createdDate** column of the **transferParticipantStateChange** table. +3. When there are no records in **transferParticipant** which meet the blocking criteria described in step 1 above, then all records belonging to the settlement window which has just been closed, and which currently have the status OPEN, should have their status set to CLOSED. This means: a record should be added to the **transferParticipantStateChange** table for the qualifying **transferParticipant** record whose status is CLOSED, and the **currentStateChangeId** column for the qualifying **transferParticipant** record should be set to point to the newly created record. +4. When aggregating records for insertion into the **settlementContentAggregation** table, if all the records in the **transferParticipant** table which are to be aggregated into a single record in the **settlementContentAggregation** table have the same value in their **currentStateChangeId** column, then the value of the **currentStateId** column in the newly created record in the **settlementContentAggregation** table should be set as follows. The value of the **currentStateId** column in the newly created record in the **settlementContentAggregation** table should be set to the shared value in the constituent records from the **transferParticipant** table, except in the following case: if the shared value in the constituent records from the **transferParticipant** table is OPEN, then the value of the **currentStateId** column should be set to the value CLOSED. + +#### Marking transfers as settled + +The following additional processes are required in order to mark ledger entries which are settled immediate gross as having been settled. + +##### Queueing transfers for settlement processing + +When a transfer is completed, a record is generated in the **transferFulfilment** table. As part of the process that generates this record, the transfer should be placed on a Kafka stream for immediate settlement processing. + +##### Processing settlements + +A new service should be developed for processing gross (i.e. per-transfer) settlements. The requirements for this service are as follows: +1. It should enable an auditor to verify that a given transfer has been settled using the agreed process +2. It should allow transfer settlement to be recorded either internally, using an automatic process, or externally, exporting the information for each transfer to be settled to a configurable endpoint. +3. It should not delay processing of the transfer itself + +The characteristics of the service should be as follows: + +1. Pick a transfer from the Kafka stream holding transfers awaiting settlement processing. There is no requirement for sequence preservation, so this service can pick up multiple transfer entries if this would accelerate processing. +2. For each record in the **transferParticipant** table which belongs to the transfer *and* whose **ledgerEntryType** column specifies a ledger entry type which belongs to a settlement model which is settled both GROSS and IMMEDIATE, the service should generate consecutive records in the **transferParticipantStateChange** table with the values: CLOSED, PENDING_SETTLEMENT, and SETTLED, in that order. The **currentStateChangeId** column for the record in the **transferParticipant** table should be set to point to the record in the **transferParticipantStateChange** table whose value is SETTLED. +3. For each record in the **transferParticipant** table which belongs to the transfer *and* whose **ledgerEntryType** column specifies a ledger entry type which belongs to a settlement model which is settled both GROSS and IMMEDIATE *and* where the settlement model has an export endpoint configured, the process should export the information relating to the entry that is being settled to the endpoint specified in an agreed format. The format to be used, the means of specifying the endpoint to be addressed, and the process by which exports are generated and acknowledged, are not specified at this time. +4. For all other records in the **transferParticipant** table which belong to the transfer, the service should generate a record in the **transferParticipantStateChange** table with a value of OPEN. The **currentStateChangeId** column for the record in the **transferParticipant** table should be set to point to the record in the **transferParticipantStateChange** table which was created. + +#### Updating status values for net settlements + +When the status is updated for a participant in a settlement which belongs to a settlement model which is not settled both GROSS and IMMEDIATE, then the constituent records for that participant in the settlement in the **transferParticipant** table need to be updated. The rules for this are: + +1. When the settlement is created, all the records in **transferParticipant** which belong to a transfer which belongs to a window which belongs to the settlement being created (i.e. which are contained in the inner join between **transferParticipant**, **transferfulfilment** (on **transferId**) and **settlementSettlementWindow** (on **settlementWindowId**) for the settlement Id which is being created) should have a record created in **settlementContentAggregationStateChange** with the **settlementWindowStateId** column set to PENDING_SETTLEMENT. +2. When a participant's settlement status is updated to SETTLED in **settlementParticipantCurrency**, then all the records in **transferParticipant** for settlement windows which belong to that settlement, and whose participant and currency IDs match the participant and currency of the records in **settlementParticipantCurrency** which have been updated, should have their status set to SETTLED. + +#### Gross settlement and position management + +If gross settlement is enabled for a settlement model and that settlement model also has its **adjustPosition** flag set to TRUE, then an adjustment to both participants' positions should be made. This should be done in the following way: + +1. For each record in the **transferParticipant** table which is being settled, create a record in the **participantPositionChange** table with the following characteristics: + a. The **participantPositionId** column should be set to the value of the **participantPositionId** column in the **participantPosition** table for the record whose **participantCurrencyId** field is the same as that of the record in the **transferParticipant** table which has been settled. + b. The **transferStateChangeId** column should be set to the value of the **transferStateChangeId** column for the record in the **transferStateChange** table whose **transferId** column is the same as the value of the **transferId** column in the **transferParticipant** table for the record which is being settled, and which has the latet value in its **createdDate** column. + c. The **value** column should be set to the **amount** column in the **transferParticipant** table for the record which is being settled. + d. The **reservedValue** column should be set to zero. + e. The **createdDate** column should be set to the current date and time. +2. The record in the **participantPosition** table whose **participantCurrencyId** field matches that of the record in the **transferParticipant** table which has been settled should have the **amount** column of the corresponding record in the **transferParticipant** table added to its **value** column. + +Domain class diagram +==================== + +ERD +=== + +The following ERD describes the new data structures required to model settlements. + +![](/mojaloop-technical-overview/central-settlements/assets/diagrams/Settlement_ERD.png) + +Enumerations +------------ + +The following enumerations are required to support the new ERD: +``` +DELETE FROM settlementGranularity; +INSERT INTO settlementGranularity (name) +VALUES ('GROSS'), ('NET'); + +DELETE FROM settlementInterchange; +INSERT INTO settlementInterchange (name) +VALUES ('BILATERAL'), ('MULTILATERAL'); + +DELETE FROM settlementDelay; +INSERT INTO settlementDelay(name) +VALUES ('IMMEDIATE'), ('DEFERRED'); +``` diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/README.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/README.md new file mode 100644 index 000000000..1cf8e627b --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/README.md @@ -0,0 +1,111 @@ +# Settlement Process + +## 1. Database Design + +### Notes: + +- `settlementWindow` - a table where all settlement windows are stored; +- `settlementWindowStateChange` - stores information regarding settlement windows state; +- `settlement` - keeps data regarding all settlements; +- `settlementContentAggregation` - contains aggregated values for a settlement, participant currency, role type and ledger entry type grouping in a settlement; +- `settlementModel` - contains the configured settlement models for the switch; +- `settlementWindowContent` - contains an entry for each item of content in a given settlement window, broken down by ledger account type and currency; +- `settlementWindowContentStateChange` - tracks settlement window content state changes; +- `settlementSettlementWindow` - association table for settlements and settlement windows, providing connection many-to-many; +- `settlementStateChange` - tracks the settlement state change; +- `settlementTransferParticipant` - this table is used for staging data for all transfers which are to be included in a settlement; +- `settlementParticipantCurrency` - stores grouped information by participant and currency. For calculation of netAmount, the summarized data from `settlementTransferParticipant` is used; +- `settlementParticipantCurrencyStateChange` - used to track the state change of each individual settlement participant account. + +The remaining tables in the below ERD are either transfer-specific (gray) or lookup (blue) and are included as direct dependencies to depict the relation between the settlement tables and transfer specific entities. + +![Central Settlements. Service ERD](./assets/entities/central-settlements-db-schema.png) + +* [Central Settlements Service DBeaver ERD](./assets/entities/central-settlements-db-schema-dbeaver.erd) + +## 2. Sequence diagrams + +### 2.1. Settlement Windows By Params + +Used for acquiring information regarding Settlement Windows. E.g.: +1. Find the ID of the current OPEN window by querying by state and later use the information for closing that window; +2. Find all CLOSED and/or ABORTED windows to be used for creating a settlement; +3. Other reporting needs. +- [Sequence Diagram for Get Settlement Windows by Parameters](get-settlement-windows-by-params.md) + +### 2.2. Settlement Windows By Params + +Used for acquiring settlement window information when ID is present. +- [Sequence Diagram for Request Settlement Window by Id](get-settlement-window-by-id.md) + +### 2.3. Close Settlement Window + +There is always one open settlement window which groups all ongoing transfers. This functionality is used to close the currently opened window and create the next one. The operations starts on the API and then the Deferred handler consumes a message after the validations are passed and prepares the Settlement Window Content and Settlement Content Aggregation records for the settlement process. +- [Sequence Diagram for Close Settlement Window](post-close-settlement-window.md) + +### 2.4. Create Settlement + +The creation of settlement is possible when at least one OPEN or ABORTED window is provided. The data from all transfers in all provided windows is summarized and as a result the settlement amount is calculated per participant and currency. Depending on its sign we distinct 3 types of participants in regards to the newly created settlement: SETTLEMENT_NET_RECIPIENT, SETTLEMENT_NET_SENDER and SETTLEMENT_NET_ZERO. Newly generated id of type bigint is returned as a response together it all other information. +- [Sequence Diagram for Trigger Settlement Event](post-create-settlement.md) + +### 2.5. Request Settlement + +This endpoint is used for acquiring information regarding a settlement and all included windows and accounts/positions. The ID from the previous request is being utilized for that purpose. +- [Sequence Diagram for Get Settlement by Id](get-settlement-by-id.md) + +### 2.6. Settlement Transfer Acknowledgment + +It is used to advance the settlement through all the states initiated with the creation and finilized by settle or abort. The actual state flow is: +- PENDING_SETTLEMENT: The net settlement report for this window has been taken, with the parameter set to indicate that settlement is to be processed; +- PS_TRANSFERS_RECORDED: Record transfer entries against the Position Account and the Multi-lateral Net Settlement Account, these are the "multi-lateral net  settlement transfers" (MLNS transfers). An identifier might be provided to be past to the reference bank; +- PS_TRANSFERS_RESERVED: All the debit entries for the MLNS transfers are reserved; +- PS_TRANSFERS_COMMITTED: All the credit entries for the MLNS transfers are committed. An identifier might be received and recorded from the Settlement bank to allow reconciliation; +- SETTLING: If all accounts are not yet SETTLED, the Status of the settlement is moved to SETTLING. Note: applies only on settlement level; +- SETTLED: Final state when all outstanding accounts are SETTLED, the entire Settlement is moved to SETTLED. + +[Sequence Diagram for Acknowledgement of Settlement Transfer](put-settlement-transfer-ack.md) + +### 2.7. Settlement Abort + +- ABORTED: Final state when the settlement is not possible. Please, note the settlement might be aborted up to when no account/position has been marked as PS_TRANSFERS_COMMITTED. Also there is no possibility to mark an individual account as ABORTED, but rahter the entire settlement is ABORTED. After performing such operation there is possibility to create a new settlement by including only non-problematic ABORTED accounts + +[Sequence Diagram for Settlement Abort](put-settlement-abort.md) + +### 2.8. Request Settlement By SPA + +Used to request drill-down information regarding a settlement, participant and account. Even though participant and account are optional, the order settlement/{id}/participant/{id}/account/{id} is mandatory. + +- [Sequence Diagram for Get Settlement by Settlement/Participant/Account](get-settlement-by-spa.md) + +### 2.9. Request Settlements By Params + +This endpoint enables advanced reporting capabilities. + +- [Sequence Diagram for Query Settlements by Parameters](get-settlements-by-params.md) + +### 2.10 Gross Settlement Handler + +This handler executes after each transfer is committed and performs the following operations on success: + Handle the updating of the POSITION and SETTLEMENT accounts for participants involved in a transfer where there is a settlement model defined as immediate and gross on the POSITION account to facilitate RTCGS (Real-Time Continuous Gross Settlement) per transfer. + +This is done by consuming events of the notification topic. + +- [Sequence Diagram for Gross Settlement Handler](gross-settlement-handler-consume.md) + +### 2.11 Rules Handler + +This handler executes after each transfer is committed and performs the following operations on success: + Execute the rules defined by the scripts in the SCRIPTS_FOLDER. The rules are validated for valid headers before loading. + +This is done by consuming events of the notification topic. + +- [Sequence Diagram for Rules Handler](rules-handler-consume.md) + +### 2.12 Deferred Handler + +This handler executes after close settlement window operation has been received and validated: + + Handle the updating of the participant accounts involved in the transfers for the settlement window that is closed. The process then continues with settlement event trigger. + +This is done by consuming events of the notification topic, that are emitted by the service after close settlement window command has been sent and validated. +- [Sequence Diagram for Close Settlement Window](post-close-settlement-window.md) \ No newline at end of file diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.plantuml new file mode 100644 index 000000000..fc837adab --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.plantuml @@ -0,0 +1,204 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Neal Donnan + * Shashikant Hirugade + -------------- + ******'/ + +@startuml +' declare title +title Gross Settlement Handler Consume (Success) +autonumber +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors + +collections "topic-notification" as TOPIC_NOTIFICATION +control "Gross Settlement Handler" as SETTLEMENT_HANDLER +control "Gross Settlement Service" as SETTLEMENT_SERVICE +database "central_ledger" as DB +entity "Settlement DAO" as SETTLEMENT_DAO + +box "Settlement Service" #LightGreen + participant TOPIC_NOTIFICATION + participant SETTLEMENT_HANDLER + participant SETTLEMENT_SERVICE + participant SETTLEMENT_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +activate SETTLEMENT_HANDLER +group Gross Settlement Handler Consume (Success) + alt Consume Single Message + TOPIC_NOTIFICATION <- SETTLEMENT_HANDLER: Consume notification event message + activate TOPIC_NOTIFICATION + deactivate TOPIC_NOTIFICATION + group Validate Message + SETTLEMENT_HANDLER <-> SETTLEMENT_HANDLER: Validate event - Rule: message has payload\nError codes: 2001 + end + opt action == 'COMMIT' + + group Retry (default 3 retries) + group DB TRANSACTION: settle transfer + SETTLEMENT_HANDLER -> SETTLEMENT_SERVICE: Process fulfil message + SETTLEMENT_SERVICE -> SETTLEMENT_DAO: Get Gross settlement model + SETTLEMENT_DAO -> DB: Get settlement model records + activate DB + deactivate DB + hnote over DB #lightyellow + SELECT settlementModel.* + FROM **settlementModel** + INNER JOIN `participantCurrency` AS `pc` ON `pc`.`currencyId` = `settlementModel`.`currencyId` + AND `pc`.`ledgerAccountTypeId` `settlementModel`.`ledgerAccountTypeId` + INNER JOIN `transferParticipant` AS `tp` ON `tp`.`participantCurrencyId` = `pc`.`participantCurrencyId` + INNER JOIN settlementGranularity AS `g` ON `g`.`settlementGranularityId` = `settlementModel`.`settlementGranularityId` + WHERE `tp`.`transferId`, {transferId} + AND `g`.`name`, {settlementGranularityName} + AND `settlementModel`.`isActive`, {1}; + end hnote + SETTLEMENT_DAO <-- DB: Gross settlement model result + SETTLEMENT_SERVICE <-- SETTLEMENT_DAO: Gross settlement model result + group Validate settlement model + SETTLEMENT_SERVICE <-> SETTLEMENT_SERVICE: Valid Gross settlement model with given currency does not exist + SETTLEMENT_SERVICE <-> DB: Get all settlement models + alt Check if NET settlement model with the transfer currency exists + SETTLEMENT_SERVICE <-> SETTLEMENT_SERVICE: Return true + else + SETTLEMENT_SERVICE <-> SETTLEMENT_SERVICE: filter all settlement models by currencyId === null and granularityType === GROSS + SETTLEMENT_SERVICE <-> SETTLEMENT_SERVICE: Return default GROSS settlement model + end + end + SETTLEMENT_SERVICE -> SETTLEMENT_DAO: Settle transfer if CGS + SETTLEMENT_DAO -> DB: Insert transferParticipant entries + activate DB + deactivate DB + hnote over DB #lightyellow + insert into **`transferParticipant`** (transferID, participantCurrencyId, transferParticipantRoleTypeId, ledgerEntryTypeId, + amount) + select `TP`.`transferId`, + `TP`.`participantCurrencyId`, + `TP`.`transferParticipantRoleTypeId`, + `TP`.`ledgerEntryTypeId`, + `TP`.`amount` * -1 + from `transferParticipant` as `TP` + inner join `participantCurrency` as `PC` on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + inner join `settlementModel` as `M` on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + inner join `settlementGranularity` as `G` on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')) + union + select `TP`.`transferId`, + `PC1`.`participantCurrencyId`, + `TP`.`transferParticipantRoleTypeId`, + `TP`.`ledgerEntryTypeId`, + `TP`.`amount` + from `transferParticipant` as `TP` + inner join `participantCurrency` as `PC` on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + inner join `settlementModel` as `M` on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + inner join `settlementGranularity` as `G` on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + inner join `participantCurrency` as `PC1` + on `PC1`.`currencyId` = `PC`.`currencyId` and `PC1`.`participantId` = `PC`.`participantId` and + `PC1`.`ledgerAccountTypeId` = `M`.`settlementAccountTypeId` + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')); + end hnote + SETTLEMENT_DAO -> DB: Update participantPosition records + activate DB + deactivate DB + hnote over DB #lightyellow + update **`participantPosition`** as `PP` + inner join (select `PC`.`participantCurrencyId`, `TP`.`Amount` + from `transferParticipant` as `TP` + inner join `participantCurrency` as `PC` + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + inner join `settlementModel` as `M` + on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + inner join `settlementGranularity` as `G` + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')) + union + select `PC1`.`participantCurrencyId`, `TP`.`amount` + from `transferParticipant` as `TP` + inner join `participantCurrency` as `PC` + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + inner join `settlementModel` as `M` + on `M`.`ledgerAccountTypeId` = `PC`.`ledgerAccountTypeId` + inner join `settlementGranularity` as `G` + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + inner join `participantCurrency` as `PC1` + on `PC1`.`currencyId` = `PC`.`currencyId` and + `PC1`.`participantId` = `PC`.`participantId` and + `PC1`.`ledgerAccountTypeId` = `M`.`settlementAccountTypeId` + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS'))) + AS TR ON PP.participantCurrencyId = TR.ParticipantCurrencyId + set `value` = `PP`.`value` - `TR`.`amount`; + end hnote + SETTLEMENT_DAO -> DB: Insert participantPositionChange records + activate DB + deactivate DB + hnote over DB #lightyellow + insert into **`participantPositionChange`** (participantPositionId, transferStateChangeId, value, reservedValue) + select `PP`.`participantPositionId`, `TSC`.`transferStateChangeId`, `PP`.`value`, `PP`.`reservedValue` + from `participantPosition` as `PP` + inner join (select `PC`.`participantCurrencyId` + from `transferParticipant` as `TP` + inner join `participantCurrency` as `PC` + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + inner join `settlementModel` as `M` + on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + inner join `settlementGranularity` as `G` + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')) + union + select `PC1`.`participantCurrencyId` + from `transferParticipant` as `TP` + inner join `participantCurrency` as `PC` + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + inner join `settlementModel` as `M` + on `PC`.`ledgerAccountTypeId` = `PC`.`ledgerAccountTypeId` + inner join `settlementGranularity` as `G` + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + inner join `participantCurrency` as `PC1` on `PC1`.`currencyId` = `PC`.`currencyId` and + `PC1`.`participantId` = `PC`.`participantId` and + `PC1`.`ledgerAccountTypeId` = `M`.`settlementAccountTypeId` + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS'))) AS TR + ON PP.participantCurrencyId = TR.ParticipantCurrencyId + inner join `transferStateChange` as `TSC` + on `TSC`.`transferID` = {transferId} and `TSC`.`transferStateId` = 'SETTLED'; + end hnote + end + end + end + else Consume Batch Messages + note left of SETTLEMENT_HANDLER #lightblue + To be delivered by future story + end note + end +end +deactivate SETTLEMENT_HANDLER +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.svg new file mode 100644 index 000000000..5d560d536 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-gross-settlement-handler.svg @@ -0,0 +1,567 @@ + + + + + + + + + + + Gross Settlement Handler Consume (Success) + + + + Settlement Service + + + + Central Services + + + + + + + + + + + + + + + topic-notification + + + + + topic-notification + + + Gross Settlement Handler + + + + + Gross Settlement Handler + + + + + Gross Settlement Service + + + + + Gross Settlement Service + + + + + Settlement DAO + + + + + Settlement DAO + + + + + central_ledger + + + + + central_ledger + + + + + + + + Gross Settlement Handler Consume (Success) + + + + + alt + + + [Consume Single Message] + + + + + 1 + + + Consume notification event message + + + + + Validate Message + + + + + 2 + + + Validate event - Rule: message has payload + + + Error codes: + + + 2001 + + + + + opt + + + [action == 'COMMIT'] + + + + + Retry (default 3 retries) + + + + + DB TRANSACTION: settle transfer + + + + + 3 + + + Process fulfil message + + + + + 4 + + + Get Gross settlement model + + + + + 5 + + + Get settlement model records + + + + SELECT settlementModel.* + + + FROM + + + settlementModel + + + INNER JOIN `participantCurrency` AS `pc` ON `pc`.`currencyId` = `settlementModel`.`currencyId` + + + AND `pc`.`ledgerAccountTypeId` `settlementModel`.`ledgerAccountTypeId` + + + INNER JOIN `transferParticipant` AS `tp` ON `tp`.`participantCurrencyId` = `pc`.`participantCurrencyId` + + + INNER JOIN settlementGranularity AS `g` ON `g`.`settlementGranularityId` = `settlementModel`.`settlementGranularityId` + + + WHERE `tp`.`transferId`, {transferId} + + + AND `g`.`name`, {settlementGranularityName} + + + AND `settlementModel`.`isActive`, {1}; + + + + + 6 + + + Gross settlement model result + + + + + 7 + + + Gross settlement model result + + + + + Validate settlement model + + + + + 8 + + + Valid Gross settlement model with given currency does not exist + + + + + 9 + + + Get all settlement models + + + + + alt + + + [Check if NET settlement model with the transfer currency exists] + + + + + 10 + + + Return true + + + + + + 11 + + + filter all settlement models by currencyId === null and granularityType === GROSS + + + + + 12 + + + Return default GROSS settlement model + + + + + 13 + + + Settle transfer if CGS + + + + + 14 + + + Insert transferParticipant entries + + + + insert into + + + `transferParticipant` + + + (transferID, participantCurrencyId, transferParticipantRoleTypeId, ledgerEntryTypeId, + + + amount) + + + select `TP`.`transferId`, + + + `TP`.`participantCurrencyId`, + + + `TP`.`transferParticipantRoleTypeId`, + + + `TP`.`ledgerEntryTypeId`, + + + `TP`.`amount` * -1 + + + from `transferParticipant` as `TP` + + + inner join `participantCurrency` as `PC` on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + + + inner join `settlementModel` as `M` on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + + + inner join `settlementGranularity` as `G` on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + + + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')) + + + union + + + select `TP`.`transferId`, + + + `PC1`.`participantCurrencyId`, + + + `TP`.`transferParticipantRoleTypeId`, + + + `TP`.`ledgerEntryTypeId`, + + + `TP`.`amount` + + + from `transferParticipant` as `TP` + + + inner join `participantCurrency` as `PC` on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + + + inner join `settlementModel` as `M` on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + + + inner join `settlementGranularity` as `G` on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + + + inner join `participantCurrency` as `PC1` + + + on `PC1`.`currencyId` = `PC`.`currencyId` and `PC1`.`participantId` = `PC`.`participantId` and + + + `PC1`.`ledgerAccountTypeId` = `M`.`settlementAccountTypeId` + + + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')); + + + + + 15 + + + Update participantPosition records + + + + update + + + `participantPosition` + + + as `PP` + + + inner join (select `PC`.`participantCurrencyId`, `TP`.`Amount` + + + from `transferParticipant` as `TP` + + + inner join `participantCurrency` as `PC` + + + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + + + inner join `settlementModel` as `M` + + + on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + + + inner join `settlementGranularity` as `G` + + + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + + + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')) + + + union + + + select `PC1`.`participantCurrencyId`, `TP`.`amount` + + + from `transferParticipant` as `TP` + + + inner join `participantCurrency` as `PC` + + + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + + + inner join `settlementModel` as `M` + + + on `M`.`ledgerAccountTypeId` = `PC`.`ledgerAccountTypeId` + + + inner join `settlementGranularity` as `G` + + + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + + + inner join `participantCurrency` as `PC1` + + + on `PC1`.`currencyId` = `PC`.`currencyId` and + + + `PC1`.`participantId` = `PC`.`participantId` and + + + `PC1`.`ledgerAccountTypeId` = `M`.`settlementAccountTypeId` + + + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS'))) + + + AS TR ON PP.participantCurrencyId = TR.ParticipantCurrencyId + + + set `value` = `PP`.`value` - `TR`.`amount`; + + + + + 16 + + + Insert participantPositionChange records + + + + insert into + + + `participantPositionChange` + + + (participantPositionId, transferStateChangeId, value, reservedValue) + + + select `PP`.`participantPositionId`, `TSC`.`transferStateChangeId`, `PP`.`value`, `PP`.`reservedValue` + + + from `participantPosition` as `PP` + + + inner join (select `PC`.`participantCurrencyId` + + + from `transferParticipant` as `TP` + + + inner join `participantCurrency` as `PC` + + + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + + + inner join `settlementModel` as `M` + + + on `PC`.`ledgerAccountTypeId` = `M`.`ledgerAccountTypeId` + + + inner join `settlementGranularity` as `G` + + + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + + + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS')) + + + union + + + select `PC1`.`participantCurrencyId` + + + from `transferParticipant` as `TP` + + + inner join `participantCurrency` as `PC` + + + on `TP`.`participantCurrencyId` = `PC`.`participantCurrencyId` + + + inner join `settlementModel` as `M` + + + on `PC`.`ledgerAccountTypeId` = `PC`.`ledgerAccountTypeId` + + + inner join `settlementGranularity` as `G` + + + on `M`.`settlementGranularityId` = `G`.`settlementGranularityId` + + + inner join `participantCurrency` as `PC1` on `PC1`.`currencyId` = `PC`.`currencyId` and + + + `PC1`.`participantId` = `PC`.`participantId` and + + + `PC1`.`ledgerAccountTypeId` = `M`.`settlementAccountTypeId` + + + where (`TP`.`transferId` = {transferId} and (`G`.`name` = 'GROSS'))) AS TR + + + ON PP.participantCurrencyId = TR.ParticipantCurrencyId + + + inner join `transferStateChange` as `TSC` + + + on `TSC`.`transferID` = {transferId} and `TSC`.`transferStateId` = 'SETTLED'; + + + + [Consume Batch Messages] + + + + + To be delivered by future story + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.plantuml new file mode 100644 index 000000000..88ff1491c --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.plantuml @@ -0,0 +1,219 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * Neal Donnan + * Valentin Genev + -------------- + ******'/ + +@startuml +' declare title +title Rules Handler Consume (Success) +autonumber +' Actor Keys: +' boundary - APIs/Interfaces, etc +' collections - Kafka Topics +' control - Kafka Consumers +' entity - Database Access Objects +' database - Database Persistance Store + +' declare actors + +collections "topic-notification" as TOPIC_NOTIFICATION +control "Rules Handler" as RULES_HANDLER +database "central_ledger" as DB +entity "Scripts Loader" as SCRIPTS_LOADER +entity "Script Engine" as SCRIPT_ENGINE +entity "Transaction DAO" as TRANSACTION_DAO +entity "Settlement DAO" as SETTLEMENT_DAO +entity "Central Ledger DAO" as CENTRAL_LEDGER_DAO + +box "Settlement Service" #LightGreen + participant TOPIC_NOTIFICATION + participant RULES_HANDLER + participant SCRIPTS_LOADER + participant SCRIPT_ENGINE + participant TRANSACTION_DAO + participant SETTLEMENT_DAO + participant CENTRAL_LEDGER_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +activate RULES_HANDLER +group Rules Handler Consume (Success) + group Load Scripts + RULES_HANDLER -> SCRIPTS_LOADER: load scripts (yaml file) (scriptDirectory) + activate SCRIPTS_LOADER + loop script + SCRIPTS_LOADER -> SCRIPTS_LOADER: validate script type, action and status against enums; validate script is valid JS; validate start and end timestamps; Create a map ScriptMap[type][action][result] + end + SCRIPTS_LOADER --> RULES_HANDLER: create script map + note right of RULES_HANDLER #yellow + example: + { + scriptType: { + scriptAction: { + scriptStatus: {[ + { + name: "interchangeFeeCalculation", + startTime: "2020-06-01T00:00:00.000Z", + endTime: "2100-12-31T23:59:59.999Z", + script: [vm.Script] + } + ]} + } + } + } + end note + deactivate SCRIPTS_LOADER + end + group Process Single Message + TOPIC_NOTIFICATION <- RULES_HANDLER: Consume notification event message + activate TOPIC_NOTIFICATION + deactivate TOPIC_NOTIFICATION + group Validate Message + RULES_HANDLER <-> RULES_HANDLER: Validate event - Rule: message has payload\nError codes: 2001 + end + alt Rule found + RULES_HANDLER <-> RULES_HANDLER: check if ScriptMap[type][action][result] has valid script assigned + group Execute Scripts + RULES_HANDLER -> SCRIPTS_LOADER: execute scripts + activate SCRIPTS_LOADER + loop script + SCRIPTS_LOADER -> SCRIPT_ENGINE: execute(script, message payload) + activate SCRIPT_ENGINE + SCRIPT_ENGINE -> TRANSACTION_DAO: Get transaction by transfer Id + activate TRANSACTION_DAO + TRANSACTION_DAO -> DB: retrieve ILP packet from ilpPacket + activate DB + DB --> TRANSACTION_DAO: ilpPacket row + deactivate DB + TRANSACTION_DAO --> SCRIPT_ENGINE: ilpPacket row + SCRIPT_ENGINE -> TRANSACTION_DAO: Get transaction object + TRANSACTION_DAO -> TRANSACTION_DAO: decode ILP packet + TRANSACTION_DAO --> SCRIPT_ENGINE: Transaction object + SCRIPT_ENGINE -> SCRIPT_ENGINE: execute script in sandbox + deactivate + SCRIPT_ENGINE --> SCRIPTS_LOADER: Ledger entries + deactivate SCRIPT_ENGINE + SCRIPTS_LOADER -> SCRIPTS_LOADER: Merge results + end + SCRIPTS_LOADER --> RULES_HANDLER: script results + deactivate SCRIPTS_LOADER + end + + alt Has ledger entries + group DB TRANSACTION: Validate and Insert ledger entries + RULES_HANDLER -> SETTLEMENT_DAO: Insert valid ledger entries + SETTLEMENT_DAO -> DB: Get the records to insert + activate DB + hnote over DB #lightyellow + select {transferId} AS transferId, + `PC`.`participantCurrencyId`, + IFNULL(`T1`.`transferparticipantroletypeId`, + `T2`.`transferparticipantroletypeId`) as `transferParticipantRoleTypeId`, + `E`.`ledgerEntryTypeId`, + CASE `P`.`name` + WHEN {ledgerEntry.payerFspId} THEN {ledgerEntry.amount} + WHEN {ledgerEntry.payeeFspId} THEN {ledgerEntry.amount * -1} + ELSE 0 + END AS `amount` + from `participantCurrency` as `PC` + inner join `participant` as `P` on `P`.`participantId` = `PC`.`participantId` + inner join `ledgerEntryType` as `E` on `E`.`LedgerAccountTypeId` = `PC`.`LedgerAccountTypeId` + left outer join `transferParticipantRoleType` as `T1` on `P`.`name` = {ledgerEntry.payerFspId} and `T1`.`name` = 'PAYER_DFSP' + left outer join `transferParticipantRoleType` as `T2` on `P`.`name` = {ledgerEntry.payerFspId} and `T2`.`name` = 'PAYEE_DFSP' + where `E`.`name` = {ledgerEntry.ledgerEntryTypeId} + and `P`.`name` in ({ledgerEntry.payerFspId}, {ledgerEntry.payeeFspId}) + and `PC`.`currencyId` = {ledgerEntry.currency}; + end hnote + SETTLEMENT_DAO <-- DB: recordsToInsert + deactivate DB + + alt Has records to insert + SETTLEMENT_DAO -> DB: Insert transferParticipant records + activate DB + deactivate DB + hnote over DB #lightyellow + insert into **transferParticipant** + + end hnote + SETTLEMENT_DAO -> DB: Update positions + activate DB + deactivate DB + loop transferParticipant records + hnote over DB #lightyellow + update **`participantPosition`** + set `value` = `value` + {record.amount} + where `participantCurrencyId` = {record.participantCurrencyId}; + end hnote + end + SETTLEMENT_DAO -> DB: Get transferStateChange record + activate DB + hnote over DB #lightyellow + select `transferStateChangeId` + from **`transferStateChange`** + where `transferId` = {transferId} + and `transferStateId` = 'COMMITTED'; + end hnote + SETTLEMENT_DAO <-- DB: transferStateChange record + deactivate DB + SETTLEMENT_DAO -> DB: Get participantPosition record + activate DB + hnote over DB #lightyellow + select `participantPositionId`, `value`, `reservedValue` + from **`participantPosition`** + where `participantCurrencyId` = {recordsToInsert[0].participantCurrencyId} + OR `participantCurrencyId` = {recordsToInsert[1].participantCurrencyId}; + end hnote + SETTLEMENT_DAO <-- DB: participantPosition record + deactivate DB + SETTLEMENT_DAO -> DB: Insert participantPositionChange records + activate DB + deactivate DB + hnote over DB #lightyellow + insert into **`participantPositionChange`** + select `participantPositionId`, {transferStateChangeId}, `value`, `reservedValue` + from `participantPosition` + where `participantCurrencyId` = {transferParticipantRecord1.participantCurrencyId} + or `participantCurrencyId` = {transferParticipantRecord2.participantCurrencyId}; + end hnote + else No records found + SETTLEMENT_DAO <-> SETTLEMENT_DAO: Error + end + else + SETTLEMENT_DAO <-> SETTLEMENT_DAO: Rollback on Error + end + else + RULES_HANDLER <-> RULES_HANDLER: exit + end + + + else + RULES_HANDLER <-> RULES_HANDLER: exit + end + end +end +deactivate RULES_HANDLER +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.svg new file mode 100644 index 000000000..1a26ed085 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-rules-handler.svg @@ -0,0 +1,642 @@ + + + + + + + + + + + Rules Handler Consume (Success) + + + + Settlement Service + + + + Central Services + + + + + + + + + + + + + + + + + topic-notification + + + + + topic-notification + + + Rules Handler + + + + + Rules Handler + + + + + Scripts Loader + + + + + Scripts Loader + + + + + Script Engine + + + + + Script Engine + + + + + Transaction DAO + + + + + Transaction DAO + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Ledger DAO + + + + + Central Ledger DAO + + + + + central_ledger + + + + + central_ledger + + + + + + + + Rules Handler Consume (Success) + + + + + Load Scripts + + + + + 1 + + + load scripts (yaml file) (scriptDirectory) + + + + + loop + + + [script] + + + + + 2 + + + validate script type, action and status against enums; validate script is valid JS; validate start and end timestamps; Create a map ScriptMap[type][action][result] + + + + + 3 + + + create script map + + + + + example: + + + { + + + scriptType: { + + + scriptAction: { + + + scriptStatus: {[ + + + { + + + name: "interchangeFeeCalculation", + + + startTime: "2020-06-01T00:00:00.000Z", + + + endTime: "2100-12-31T23:59:59.999Z", + + + script: [vm.Script] + + + } + + + ]} + + + } + + + } + + + } + + + + + Process Single Message + + + + + 4 + + + Consume notification event message + + + + + Validate Message + + + + + 5 + + + Validate event - Rule: message has payload + + + Error codes: + + + 2001 + + + + + alt + + + [Rule found] + + + + + 6 + + + check if ScriptMap[type][action][result] has valid script assigned + + + + + Execute Scripts + + + + + 7 + + + execute scripts + + + + + loop + + + [script] + + + + + 8 + + + execute(script, message payload) + + + + + 9 + + + Get transaction by transfer Id + + + + + 10 + + + retrieve ILP packet from ilpPacket + + + + + 11 + + + ilpPacket row + + + + + 12 + + + ilpPacket row + + + + + 13 + + + Get transaction object + + + + + 14 + + + decode ILP packet + + + + + 15 + + + Transaction object + + + + + 16 + + + execute script in sandbox + + + + + 17 + + + Ledger entries + + + + + 18 + + + Merge results + + + + + 19 + + + script results + + + + + alt + + + [Has ledger entries] + + + + + DB TRANSACTION: Validate and Insert ledger entries + + + + + 20 + + + Insert valid ledger entries + + + + + 21 + + + Get the records to insert + + + + select {transferId} AS transferId, + + + `PC`.`participantCurrencyId`, + + + IFNULL(`T1`.`transferparticipantroletypeId`, + + + `T2`.`transferparticipantroletypeId`) as `transferParticipantRoleTypeId`, + + + `E`.`ledgerEntryTypeId`, + + + CASE `P`.`name` + + + WHEN {ledgerEntry.payerFspId} THEN {ledgerEntry.amount} + + + WHEN {ledgerEntry.payeeFspId} THEN {ledgerEntry.amount * -1} + + + ELSE 0 + + + END AS `amount` + + + from `participantCurrency` as `PC` + + + inner join `participant` as `P` on `P`.`participantId` = `PC`.`participantId` + + + inner join `ledgerEntryType` as `E` on `E`.`LedgerAccountTypeId` = `PC`.`LedgerAccountTypeId` + + + left outer join `transferParticipantRoleType` as `T1` on `P`.`name` = {ledgerEntry.payerFspId} and `T1`.`name` = 'PAYER_DFSP' + + + left outer join `transferParticipantRoleType` as `T2` on `P`.`name` = {ledgerEntry.payerFspId} and `T2`.`name` = 'PAYEE_DFSP' + + + where `E`.`name` = {ledgerEntry.ledgerEntryTypeId} + + + and `P`.`name` in ({ledgerEntry.payerFspId}, {ledgerEntry.payeeFspId}) + + + and `PC`.`currencyId` = {ledgerEntry.currency}; + + + + + 22 + + + recordsToInsert + + + + + alt + + + [Has records to insert] + + + + + 23 + + + Insert transferParticipant records + + + + insert into + + + transferParticipant + + + + + 24 + + + Update positions + + + + + loop + + + [transferParticipant records] + + + + update + + + `participantPosition` + + + set `value` = `value` + {record.amount} + + + where `participantCurrencyId` = {record.participantCurrencyId}; + + + + + 25 + + + Get transferStateChange record + + + + select `transferStateChangeId` + + + from + + + `transferStateChange` + + + where `transferId` = {transferId} + + + and `transferStateId` = 'COMMITTED'; + + + + + 26 + + + transferStateChange record + + + + + 27 + + + Get participantPosition record + + + + select `participantPositionId`, `value`, `reservedValue` + + + from + + + `participantPosition` + + + where `participantCurrencyId` = {recordsToInsert[0].participantCurrencyId} + + + OR `participantCurrencyId` = {recordsToInsert[1].participantCurrencyId}; + + + + + 28 + + + participantPosition record + + + + + 29 + + + Insert participantPositionChange records + + + + insert into + + + `participantPositionChange` + + + select `participantPositionId`, {transferStateChangeId}, `value`, `reservedValue` + + + from `participantPosition` + + + where `participantCurrencyId` = {transferParticipantRecord1.participantCurrencyId} + + + or `participantCurrencyId` = {transferParticipantRecord2.participantCurrencyId}; + + + + [No records found] + + + + + 30 + + + Error + + + + + + 31 + + + Rollback on Error + + + + + + 32 + + + exit + + + + + + 33 + + + exit + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.plantuml new file mode 100644 index 000000000..54cafaa6c --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.plantuml @@ -0,0 +1,355 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.2.1. Trigger Settlement Event (createSettlement) +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Trigger Settlement Event +activate OPERATOR + note right of OPERATOR #yellow + { + "settlementModel": "string", + "reason": "string", + "settlementWindows": [ + { + "id": 1, + }, + { + "id": 2, + } + ] + } + end note + OPERATOR -> SSAPI: POST - /settlements + activate SSAPI + + SSAPI-> SETTLE_DAO: Request settlementModel\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve settlementModel + activate DB + hnote over DB #lightyellow + SELECT sg.name settlementGranularity, si.name settlementInterchange, + sd.name settlementDelay, sm.ledgerAccountTypeId, + sm.currencyId, sm.requireLiquidityCheck + FROM **settlementModel** sm + JOIN **settlementGranularity** sg + ON sg.settlementGranularityId = sm.settlementGranularityId + JOIN **settlementInterchange** si + ON si.settlementInterchangeId = sm.settlementInterchangeId + JOIN **settlementDelay** sd + ON sd.settlementDelayId = sm.settlementDelayId + WHERE name = {settlementModelName} + AND isActive = 1 + end hnote + SETTLE_DAO <-- DB: Return data + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlementModelData (smd)** + deactivate SETTLE_DAO + + break smd.settlementGranularity != 'NET' ||\nsmd.settlementInterchange != 'MULTILATERAL' ||\nsmd.settlementDelay != 'DEFERRED' + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "Invalid settlement model" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + end + + SSAPI-> SETTLE_DAO: Request settlementWindow(s)\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve settlementWindow(s) + activate DB + hnote over DB #lightyellow + SELECT DISTINCT sw.settlementWindowId, sw.currentStateChangeId, sw.createdDate + FROM **settlementWindow** sw + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + JOIN **settlementWindowContent** swc + ON swc.settlementWindowId = sw.settlementWindowId + JOIN **settlementWindowContentStateChange** swcsc + ON swcsc.settlementWindowContentStateChangeId = sw.currentStateChangeId + WHERE sw.settlementWindowId IN {payload.settlementWindows.idList} + AND swc.ledgerAccountType = smd.ledgerAccountType + AND swc.currencyId = ISNULL(smd.currencyId, swc.currencyId) + AND swsc.settlementWindowStateId IN ('CLOSED', 'ABORTED', 'PENDING_SETTLEMENT') + AND swcsc.settlementWindowStateId IN ('CLOSED', 'ABORTED') + end hnote + SETTLE_DAO <-- DB: Return data + deactivate DB + SSAPI <-- SETTLE_DAO: Return **windowsData** + deactivate SETTLE_DAO + + break payload.settlementWindows.length != windowsData.length + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "Inapplicable windows found: ${windowId1}, ${windowId2}, ..." + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + end + + note right of SSAPI #lightgray + All preliminary validations succeeded + end note + + group Main processing + SSAPI ->SETTLE_DAO: Create settlement\nError code: 2001 + activate SETTLE_DAO + group DB TRANSACTION + note right of SETTLE_DAO #lightgray + let **transactionTimestamp** = now() + end note + + SETTLE_DAO -> DB: Insert new settlement + activate DB + hnote over DB #lightyellow + INSERT INTO **settlement** (reason, createdDate) + VALUES ({payload.reason}, {transactionTimestamp}) + end hnote + SETTLE_DAO <-- DB: Return **settlementId** + deactivate DB + + SETTLE_DAO -> DB: Associate settlement windows with the settlement + activate DB + SETTLE_DAO -> DB: Retrieve SettlementWindowContent id List + opt Settlement Model is Default + SETTLE_DAO -> SETTLE_DAO: filter out the SettlementWindowContent id List\n to exclude content that is not settled by default settlement model + end + hnote over DB #lightyellow + INSERT INTO **settlementSettlementWindow** (settlementId, settlementWindowId, createdDate) + VALUES ({settlementId}, {payload.settlementWindows.idList}, {transactionTimestamp}) + end hnote + deactivate DB + + SETTLE_DAO -> DB: Bind to settlement + activate DB + hnote over DB #lightyellow + **settlementWindowContent** + .settlementId + **settlementContentAggregation** + .settlementId + .currentStateId + end hnote + deactivate DB + + SETTLE_DAO -> DB: Change state to 'PENDING_SETTLEMENT' + activate DB + hnote over DB #lightyellow + transferParticipantStateChange + transferParticipant + settlementWindowContentStateChange + settlementWindowContent + end hnote + deactivate DB + + SETTLE_DAO -> DB: Aggregate settlement net amounts + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementParticipantCurrency** + (settlementId, participantCurrencyId, netAmount, createdDate) + SELECT settlementId, participantCurrencyId, SUM(amount), {transactionTimestamp} + JOIN **settlementContentAggregation** + WHERE settlementId = {settlementId} + GROUP BY settlementId, participantCurrencyId + end hnote + SETTLE_DAO <-- DB: Return inserted **settlementParticipantCurrencyIdList** + deactivate DB + + SETTLE_DAO -> DB: Insert initial settlement accounts state 'PENDING_SETTLEMENT' + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementParticipantCurrencyStateChange** + (settlementParticipantCurrencyId, settlementStateId, reason, createdDate) + VALUES ({settlementParticipantCurrencyIdList}, 'PENDING_SETTLEMENT', + {payload.reason}, {transactionTimestamp}) + end hnote + SETTLE_DAO <-- DB: Return inserted **settlementParticipantCurrencyStateChangeIdList** + deactivate DB + SETTLE_DAO -> SETTLE_DAO: Merge settlementParticipantCurrencyStateChangeIdList\nto settlementParticipantCurrencyIdList in order to\nissue the following update in one knex command + + SETTLE_DAO -> DB: Update pointers to current state change ids + activate DB + hnote over DB #lightyellow + UPDATE **settlementParticipantCurrency** + SET currentStateChangeId = {settlementParticipantCurrencyStateChangeIdList} + WHERE settlementParticipantCurrencyId = {settlementParticipantCurrencyIdList} + end hnote + deactivate DB + + loop foreach w in windowsData + opt if w.currentStateChangeId IN ('CLOSED', 'ABORTED') + SETTLE_DAO -> DB: Insert new state for settlementWindow 'PENDING_SETTLEMENT' + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementWindowStateChange** + (settlementWindowId, settlementWindowStateId, reason, createdDate) + VALUES ({w.settlementWindowId}, 'PENDING_SETTLEMENT', + {payload.reason}, {transactionTimestamp}) + end hnote + SETTLE_DAO <-- DB: Return inserted **settlementWindowStateChangeId** + deactivate DB + + SETTLE_DAO -> DB: Update pointers to current state change ids + activate DB + hnote over DB #lightyellow + UPDATE **settlementWindow** + SET currentStateChangeId = {settlementWindowStateChangeId} + WHERE settlementWindowId = {w.settlementWindowId} + end hnote + deactivate DB + end + end + + SETTLE_DAO -> DB: Insert initial state for settlement 'PENDING_SETTLEMENT' + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementStateChange** + (settlementId, settlementStateId, reason, createdDate) + VALUES ({settlementId}, ‘PENDING_SETTLEMENT’, + {payload.reason}, {transactionTimestamp}) + end hnote + SETTLE_DAO <-- DB: Return **settlementStateChangeId** + deactivate DB + + SETTLE_DAO -> DB: Update pointer to current state change id + activate DB + hnote over DB #lightyellow + UPDATE **settlement** + SET currentStateChangeId = {settlementStateChangeId} + WHERE settlementId = {settlementId} + end hnote + deactivate DB + end + + SETTLE_DAO -> DB: Retrieve all content + activate DB + hnote over DB #lightyellow + settlementWindowContent + settlementWindowContentStateChange + ledgerAccountType + currency + settlementWindow + settlementWindowStateChange + end hnote + SETTLE_DAO <-- DB: Return **settlementWindowContentReport** + deactivate DB + + SETTLE_DAO -> SETTLE_DAO: Use previous result to produce settlementWindowsData (**swd**) array + + SETTLE_DAO -> DB: Select account data for response + activate DB + hnote over DB #lightyellow + SELECT pc.participantId, spc.participantCurrencyId, spc.netAmount, pc.currencyId + FROM **settlementParticipantCurrency** spc + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementId = {settlementId} + end hnote + SETTLE_DAO <-- DB: Return **accountData** + deactivate DB + + SSAPI <-- SETTLE_DAO: Construct and return result + deactivate SETTLE_DAO + note left of SSAPI #yellow + { + "id": settlementId, + "state": "PENDING_SETTLEMENT", + "settlementWindows": [ + { + "id": swd[m].id, + "state": swd[m].state, + "reason": swd[m].reason, + "createdDate": swd[m].createdDate, + "changedDate": swd[m].changedDate, + "content": [ + { + "id": swd[m].content[n].settlementWindowContentId, + "state": swd[m].content[n].settlementWindowStateId, + "ledgerAccountType": swd[m].content[n].ledgerAccountType, + "currencyId": swd[m].content[n].currencyId, + "createdDate": swd[m].content[n].createdDate, + "changedDate": swd[m].content[n].changedDate + } + ] + } + ], + "participants": [ + { + "id": accountData.participantId, + "accounts": [ + { + "id": accountData.participantCurrencyId, + "state": "PENDING_SETTLEMENT", + "reason": payload.reason, + "netSettlementAmount": { + "amount": accountData.netAmount, + "currency": accountData.currencyId + } + } + ] + } + ] + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 201 (Created) + end + deactivate SSAPI + deactivate OPERATOR +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.svg new file mode 100644 index 000000000..7a99625e7 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.svg @@ -0,0 +1,1060 @@ + + + + + + + + + + + 6.2.1. Trigger Settlement Event (createSettlement) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Trigger Settlement Event + + + + + { + + + "settlementModel": "string", + + + "reason": "string", + + + "settlementWindows": [ + + + { + + + "id": 1, + + + }, + + + { + + + "id": 2, + + + } + + + ] + + + } + + + + + 1 + + + POST - /settlements + + + + + 2 + + + Request settlementModel + + + Error code: + + + 2001 + + + + + 3 + + + Retrieve settlementModel + + + + SELECT sg.name settlementGranularity, si.name settlementInterchange, + + + sd.name settlementDelay, sm.ledgerAccountTypeId, + + + sm.currencyId, sm.requireLiquidityCheck + + + FROM + + + settlementModel + + + sm + + + JOIN + + + settlementGranularity + + + sg + + + ON sg.settlementGranularityId = sm.settlementGranularityId + + + JOIN + + + settlementInterchange + + + si + + + ON si.settlementInterchangeId = sm.settlementInterchangeId + + + JOIN + + + settlementDelay + + + sd + + + ON sd.settlementDelayId = sm.settlementDelayId + + + WHERE name = {settlementModelName} + + + AND isActive = 1 + + + + + 4 + + + Return data + + + + + 5 + + + Return + + + settlementModelData (smd) + + + + + break + + + [smd.settlementGranularity != 'NET' || + + + smd.settlementInterchange != 'MULTILATERAL' || + + + smd.settlementDelay != 'DEFERRED'] + + + + + Log ERROR event + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "Invalid settlement model" + + + } + + + } + + + + + 6 + + + Respond HTTP - 4xx (Client error) + + + + + 7 + + + Request settlementWindow(s) + + + Error code: + + + 2001 + + + + + 8 + + + Retrieve settlementWindow(s) + + + + SELECT DISTINCT sw.settlementWindowId, sw.currentStateChangeId, sw.createdDate + + + FROM + + + settlementWindow + + + sw + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + JOIN + + + settlementWindowContent + + + swc + + + ON swc.settlementWindowId = sw.settlementWindowId + + + JOIN + + + settlementWindowContentStateChange + + + swcsc + + + ON swcsc.settlementWindowContentStateChangeId = sw.currentStateChangeId + + + WHERE sw.settlementWindowId IN {payload.settlementWindows.idList} + + + AND swc.ledgerAccountType = smd.ledgerAccountType + + + AND swc.currencyId = ISNULL(smd.currencyId, swc.currencyId) + + + AND swsc.settlementWindowStateId IN ('CLOSED', 'ABORTED', 'PENDING_SETTLEMENT') + + + AND swcsc.settlementWindowStateId IN ('CLOSED', 'ABORTED') + + + + + 9 + + + Return data + + + + + 10 + + + Return + + + windowsData + + + + + break + + + [payload.settlementWindows.length != windowsData.length] + + + + + Log ERROR event + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "Inapplicable windows found: ${windowId1}, ${windowId2}, ..." + + + } + + + } + + + + + 11 + + + Respond HTTP - 4xx (Client error) + + + + + All preliminary validations succeeded + + + + + Main processing + + + + + 12 + + + Create settlement + + + Error code: + + + 2001 + + + + + DB TRANSACTION + + + + + let + + + transactionTimestamp + + + = now() + + + + + 13 + + + Insert new settlement + + + + INSERT INTO + + + settlement + + + (reason, createdDate) + + + VALUES ({payload.reason}, {transactionTimestamp}) + + + + + 14 + + + Return + + + settlementId + + + + + 15 + + + Associate settlement windows with the settlement + + + + + 16 + + + Retrieve SettlementWindowContent id List + + + + + opt + + + [Settlement Model is Default] + + + + + 17 + + + filter out the SettlementWindowContent id List + + + to exclude content that is not settled by default settlement model + + + + INSERT INTO + + + settlementSettlementWindow + + + (settlementId, settlementWindowId, createdDate) + + + VALUES ({settlementId}, {payload.settlementWindows.idList}, {transactionTimestamp}) + + + + + 18 + + + Bind to settlement + + + + settlementWindowContent + + + .settlementId + + + settlementContentAggregation + + + .settlementId + + + .currentStateId + + + + + 19 + + + Change state to 'PENDING_SETTLEMENT' + + + + transferParticipantStateChange + + + transferParticipant + + + settlementWindowContentStateChange + + + settlementWindowContent + + + + + 20 + + + Aggregate settlement net amounts + + + + INSERT INTO + + + settlementParticipantCurrency + + + (settlementId, participantCurrencyId, netAmount, createdDate) + + + SELECT settlementId, participantCurrencyId, SUM(amount), {transactionTimestamp} + + + JOIN + + + settlementContentAggregation + + + WHERE settlementId = {settlementId} + + + GROUP BY settlementId, participantCurrencyId + + + + + 21 + + + Return inserted + + + settlementParticipantCurrencyIdList + + + + + 22 + + + Insert initial settlement accounts state 'PENDING_SETTLEMENT' + + + + INSERT INTO + + + settlementParticipantCurrencyStateChange + + + (settlementParticipantCurrencyId, settlementStateId, reason, createdDate) + + + VALUES ({settlementParticipantCurrencyIdList}, 'PENDING_SETTLEMENT', + + + {payload.reason}, {transactionTimestamp}) + + + + + 23 + + + Return inserted + + + settlementParticipantCurrencyStateChangeIdList + + + + + 24 + + + Merge settlementParticipantCurrencyStateChangeIdList + + + to settlementParticipantCurrencyIdList in order to + + + issue the following update in one knex command + + + + + 25 + + + Update pointers to current state change ids + + + + UPDATE + + + settlementParticipantCurrency + + + SET currentStateChangeId = {settlementParticipantCurrencyStateChangeIdList} + + + WHERE settlementParticipantCurrencyId = {settlementParticipantCurrencyIdList} + + + + + loop + + + [foreach w in windowsData] + + + + + opt + + + [if w.currentStateChangeId IN ('CLOSED', 'ABORTED')] + + + + + 26 + + + Insert new state for settlementWindow 'PENDING_SETTLEMENT' + + + + INSERT INTO + + + settlementWindowStateChange + + + (settlementWindowId, settlementWindowStateId, reason, createdDate) + + + VALUES ({w.settlementWindowId}, 'PENDING_SETTLEMENT', + + + {payload.reason}, {transactionTimestamp}) + + + + + 27 + + + Return inserted + + + settlementWindowStateChangeId + + + + + 28 + + + Update pointers to current state change ids + + + + UPDATE + + + settlementWindow + + + SET currentStateChangeId = {settlementWindowStateChangeId} + + + WHERE settlementWindowId = {w.settlementWindowId} + + + + + 29 + + + Insert initial state for settlement 'PENDING_SETTLEMENT' + + + + INSERT INTO + + + settlementStateChange + + + (settlementId, settlementStateId, reason, createdDate) + + + VALUES ({settlementId}, ‘PENDING_SETTLEMENT’, + + + {payload.reason}, {transactionTimestamp}) + + + + + 30 + + + Return + + + settlementStateChangeId + + + + + 31 + + + Update pointer to current state change id + + + + UPDATE + + + settlement + + + SET currentStateChangeId = {settlementStateChangeId} + + + WHERE settlementId = {settlementId} + + + + + 32 + + + Retrieve all content + + + + settlementWindowContent + + + settlementWindowContentStateChange + + + ledgerAccountType + + + currency + + + settlementWindow + + + settlementWindowStateChange + + + + + 33 + + + Return + + + settlementWindowContentReport + + + + + 34 + + + Use previous result to produce settlementWindowsData ( + + + swd + + + ) array + + + + + 35 + + + Select account data for response + + + + SELECT pc.participantId, spc.participantCurrencyId, spc.netAmount, pc.currencyId + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementId = {settlementId} + + + + + 36 + + + Return + + + accountData + + + + + 37 + + + Construct and return result + + + + + { + + + "id": settlementId, + + + "state": "PENDING_SETTLEMENT", + + + "settlementWindows": [ + + + { + + + "id": swd[m].id, + + + "state": swd[m].state, + + + "reason": swd[m].reason, + + + "createdDate": swd[m].createdDate, + + + "changedDate": swd[m].changedDate, + + + "content": [ + + + { + + + "id": swd[m].content[n].settlementWindowContentId, + + + "state": swd[m].content[n].settlementWindowStateId, + + + "ledgerAccountType": swd[m].content[n].ledgerAccountType, + + + "currencyId": swd[m].content[n].currencyId, + + + "createdDate": swd[m].content[n].createdDate, + + + "changedDate": swd[m].content[n].changedDate + + + } + + + ] + + + } + + + ], + + + "participants": [ + + + { + + + "id": accountData.participantId, + + + "accounts": [ + + + { + + + "id": accountData.participantCurrencyId, + + + "state": "PENDING_SETTLEMENT", + + + "reason": payload.reason, + + + "netSettlementAmount": { + + + "amount": accountData.netAmount, + + + "currency": accountData.currencyId + + + } + + + } + + + ] + + + } + + + ] + + + } + + + + + 38 + + + Respond HTTP - 201 (Created) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.plantuml new file mode 100644 index 000000000..527d09f20 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.plantuml @@ -0,0 +1,209 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.2.2. Query Settlements by Parameters (getSettlementsByParams) + +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #LightPink + participant OPERATOR +end box + +box "Settlement Service" #LightGreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #LightYellow + participant DB +end box + +' start flow +group Query Settlements by Parameters + activate OPERATOR + note right of OPERATOR #Yellow + **Params:** + ?[state={settlementStateId}] + [&fromDateTime={fromDateTime}] + [&toDateTime={toDateTime}] + [¤cy={currencyId}] + [&settlementWindowId={settlementWindowId}] + [&fromSettlementWindowDateTime={fromSettlementWindowDateTime}] + [&toSettlementWindowDateTime={toSettlementWindowDateTime}] + [&participantId={participantId}] + [&accountId={participantCurrencyId}] + end note + + OPERATOR -> SSAPI: GET - /settlements + activate SSAPI + SSAPI -> SETTLE_DAO: Retrieve settlements\nError code: 2001 + activate SETTLE_DAO + + SETTLE_DAO -> DB: Retrieve requested data + activate DB + hnote over DB #lightyellow + SELECT **//DISTINCT//** s.settlementId, ssc.settlementStateId, + ssw.settlementWindowId, swsc.settlementWindowStateId, swsc.reason + settlementWindowReason, sw.createdDate, swsc.createdDate changedDate, + pc.participantId, spc.participantCurrencyId, spcsc.reason + accountReason, spcsc.settlementStateId accountState, spc.netAmount + accountAmount, pc.currencyId accountCurrency + FROM **settlement** s + JOIN **settlementStateChange** ssc + ON ssc.settlementStateChangeId = s.currentStateChangeId + JOIN **settlementSettlementWindow** ssw + ON ssw.settlementId = s.settlementId + JOIN **settlementWindow** sw + ON sw.settlementWindowId = ssw.settlementWindowId + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + JOIN **//settlementWindowContent//** swc + ON swc.settlementWindowId = sw.settlementWindowId + JOIN **//settlementWindowContentAggregation//** swca + ON swca.settlementWindowContentId = swc.settlementWindowContentId + JOIN **settlementParticipantCurrency** spc + ON spc.settlementId = s.settlementId + AND spc.participantCurrencyId = swca.participantCurrencyId + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE [ssc.settlementStateId = {settlementStateId}] + [AND s.createdDate >= {fromDateTime}] + [AND s.createdDate <= {toDateTime}] + [AND pc.currencyId = {currencyId}] + [AND sw.settlementWindowId = //{settlementWindowId}//] + [AND sw.createdDate >= {fromSettlementWindowDateTime}] + [AND sw.createdDate <= {toSettlementWindowDateTime}] + [AND pc.participantId = {participantId}] + [AND spc.participantCurrencyId = {participantCurrencyId}] + end hnote + SETTLE_DAO <-- DB: Return data + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlementsData** + deactivate SETTLE_DAO + alt Settlement(s) found + note right of SSAPI #lightgray + let settlements = {} + let settlement + let participant + end note + loop settlementsData + note right of SSAPI #lightgray + if (!settlements[settlementsData.settlementId]) { + settlements[settlementsData.settlementId] = { + "id: settlementsData.settlementId, + "state": settlementsData.settlementStateId + } + } + settlement = settlements[settlementsData.settlementId] + if (!settlement.settlementWindows[settlementsData.settlementWindowId]) { + settlement.settlementWindows[settlementsData.settlementWindowId] = { + "id": settlementsData.settlementWindowId, + "state": settlementsData.settlementWindowStateId, + "reason": settlementsData.settlementWindowReason, + "createdDate": settlementsData.createdDate, + "changedDate": settlementsData.changedDate + } + } + if (!settlement.participants[settlementsData.participantId]) { + settlement.participants[settlementsData.participantId] = { + "id": settlementsData.participantId + } + } + participant = settlement.participants[settlementsData.participantId] + participant.accounts[settlementsData.accountId] = { + "id": settlementsData.participantCurrencyId, + "state": settlementsData.accountState, + "reason": settlementsData.accountReason, + "netSettlementAmount": { + "amount": settlementsData.accountAmount, + "currency": settlementsData.accountCurrency + } + } + end note + end + SSAPI -> SSAPI: Transform **settlements** map to array + deactivate SETTLE_DAO + note left of SSAPI #yellow + [ + { + "id": settlementId, + "state": settlementStateId, + "settlementWindows": [ + { + "id": settlementWindowId, + "state": settlementWindowStateId, + "reason": settlementWindowReason, + "createdDate": createdDate, + "changedDate": changedDate + } + ], + "participants": [ + { + "id": participantId, + "accounts": [ + { + "id": participantCurrencyId, + "state": accountState, + "reason": accountReason, + "netSettlementAmount": { + "amount": accountAmount, + "currency": accountCurrency + } + } + ] + } + ] + } + ] + end note + OPERATOR <-- SSAPI: Respond HTTP - 200 (OK) + else + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "Client error description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + deactivate SSAPI + deactivate OPERATOR + end +end +@enduml \ No newline at end of file diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.svg new file mode 100644 index 000000000..f47d21e98 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.svg @@ -0,0 +1,609 @@ + + + + + + + + + + + 6.2.2. Query Settlements by Parameters (getSettlementsByParams) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Query Settlements by Parameters + + + + + Params: + + + ?[state={settlementStateId}] + + + [&fromDateTime={fromDateTime}] + + + [&toDateTime={toDateTime}] + + + [&currency={currencyId}] + + + [&settlementWindowId={settlementWindowId}] + + + [&fromSettlementWindowDateTime={fromSettlementWindowDateTime}] + + + [&toSettlementWindowDateTime={toSettlementWindowDateTime}] + + + [&participantId={participantId}] + + + [&accountId={participantCurrencyId}] + + + + + 1 + + + GET - /settlements + + + + + 2 + + + Retrieve settlements + + + Error code: + + + 2001 + + + + + 3 + + + Retrieve requested data + + + + SELECT + + + DISTINCT + + + s.settlementId, ssc.settlementStateId, + + + ssw.settlementWindowId, swsc.settlementWindowStateId, swsc.reason + + + settlementWindowReason, sw.createdDate, swsc.createdDate changedDate, + + + pc.participantId, spc.participantCurrencyId, spcsc.reason + + + accountReason, spcsc.settlementStateId accountState, spc.netAmount + + + accountAmount, pc.currencyId accountCurrency + + + FROM + + + settlement + + + s + + + JOIN + + + settlementStateChange + + + ssc + + + ON ssc.settlementStateChangeId = s.currentStateChangeId + + + JOIN + + + settlementSettlementWindow + + + ssw + + + ON ssw.settlementId = s.settlementId + + + JOIN + + + settlementWindow + + + sw + + + ON sw.settlementWindowId = ssw.settlementWindowId + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + JOIN + + + settlementWindowContent + + + swc + + + ON swc.settlementWindowId = sw.settlementWindowId + + + JOIN + + + settlementWindowContentAggregation + + + swca + + + ON swca.settlementWindowContentId = swc.settlementWindowContentId + + + JOIN + + + settlementParticipantCurrency + + + spc + + + ON spc.settlementId = s.settlementId + + + AND spc.participantCurrencyId = swca.participantCurrencyId + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE [ssc.settlementStateId = {settlementStateId}] + + + [AND s.createdDate >= {fromDateTime}] + + + [AND s.createdDate <= {toDateTime}] + + + [AND pc.currencyId = {currencyId}] + + + [AND sw.settlementWindowId = + + + {settlementWindowId} + + + ] + + + [AND sw.createdDate >= {fromSettlementWindowDateTime}] + + + [AND sw.createdDate <= {toSettlementWindowDateTime}] + + + [AND pc.participantId = {participantId}] + + + [AND spc.participantCurrencyId = {participantCurrencyId}] + + + + + 4 + + + Return data + + + + + 5 + + + Return + + + settlementsData + + + + + alt + + + [Settlement(s) found] + + + + + let settlements = {} + + + let settlement + + + let participant + + + + + loop + + + [settlementsData] + + + + + if (!settlements[settlementsData.settlementId]) { + + + settlements[settlementsData.settlementId] = { + + + "id: settlementsData.settlementId, + + + "state": settlementsData.settlementStateId + + + } + + + } + + + settlement = settlements[settlementsData.settlementId] + + + if (!settlement.settlementWindows[settlementsData.settlementWindowId]) { + + + settlement.settlementWindows[settlementsData.settlementWindowId] = { + + + "id": settlementsData.settlementWindowId, + + + "state": settlementsData.settlementWindowStateId, + + + "reason": settlementsData.settlementWindowReason, + + + "createdDate": settlementsData.createdDate, + + + "changedDate": settlementsData.changedDate + + + } + + + } + + + if (!settlement.participants[settlementsData.participantId]) { + + + settlement.participants[settlementsData.participantId] = { + + + "id": settlementsData.participantId + + + } + + + } + + + participant = settlement.participants[settlementsData.participantId] + + + participant.accounts[settlementsData.accountId] = { + + + "id": settlementsData.participantCurrencyId, + + + "state": settlementsData.accountState, + + + "reason": settlementsData.accountReason, + + + "netSettlementAmount": { + + + "amount": settlementsData.accountAmount, + + + "currency": settlementsData.accountCurrency + + + } + + + } + + + + + 6 + + + Transform + + + settlements + + + map to array + + + + + [ + + + { + + + "id": settlementId, + + + "state": settlementStateId, + + + "settlementWindows": [ + + + { + + + "id": settlementWindowId, + + + "state": settlementWindowStateId, + + + "reason": settlementWindowReason, + + + "createdDate": createdDate, + + + "changedDate": changedDate + + + } + + + ], + + + "participants": [ + + + { + + + "id": participantId, + + + "accounts": [ + + + { + + + "id": participantCurrencyId, + + + "state": accountState, + + + "reason": accountReason, + + + "netSettlementAmount": { + + + "amount": accountAmount, + + + "currency": accountCurrency + + + } + + + } + + + ] + + + } + + + ] + + + } + + + ] + + + + + 7 + + + Respond HTTP - 200 (OK) + + + + + + Log ERROR event + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "Client error description" + + + } + + + } + + + + + 8 + + + Respond HTTP - 4xx (Client error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.plantuml new file mode 100644 index 000000000..0cd3845b6 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.plantuml @@ -0,0 +1,282 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.2.3. Get Settlement By Settlement, Participant and Account (getSettlementBySPA) +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Get Settlement By Settlement, Participant and Account +activate OPERATOR + alt + OPERATOR -> SSAPI: GET - /settlements/{settlementId}/\nparticipants/{participantId} + else + OPERATOR -> SSAPI: GET - /settlements/{settlementId}/\nparticipants/{participantId}/\naccounts/{accountId} + end + + activate SSAPI + + note right of SSAPI #lightgray + let settlementFound = false + let participantFoundInSettlement = false + let accountProvided = accountId > 0 + let participantAndAccountMatched = !accountProvided + let accountFoundInSettlement = !accountProvided + end note + SSAPI-> SETTLE_DAO: Request settlement state\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve settlement + activate DB + hnote over DB #lightyellow + SELECT s.settlementId, ssc.settlementStateId, s.reason, s.createdDate + FROM **settlement** s + JOIN **settlementStateChange** ssc + ON ssc.settlementStateChangeId = s.currentStateChangeId + WHERE s.settlementId = {id} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlement** + deactivate SETTLE_DAO + note right of SSAPI #lightgray + if (settlement.settlementId) { + **settlementFound** = true + } + end note + + opt settlementFound + SSAPI-> SETTLE_DAO: Check participant\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Check exists + activate DB + hnote over DB #lightyellow + SELECT settlementParticipantCurrencyId + FROM **settlementParticipantCurrency** spc + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementId = {id} + AND pc.participantId = {participantId} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlementParticipantCurrencyIdList** + deactivate SETTLE_DAO + note right of SSAPI #lightgray + if (settlementParticipantCurrencyIdList.length > 0) { + **participantFoundInSettlement** = true + } + end note + + opt participantFoundInSettlement && accountProvided + SSAPI-> SETTLE_DAO: Check participant\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Check exists + activate DB + hnote over DB #lightyellow + SELECT participantCurrencyId + JOIN **participantCurrency** + WHERE participantCurrencyId = {accountId} + AND participantId = {participantId} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **account** + deactivate SETTLE_DAO + note right of SSAPI #lightgray + if (account) { + **participantAndAccountMatched** = true + } + end note + + opt participantAndAccountMatched + SSAPI-> SETTLE_DAO: Check account in settlement\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Check exists + activate DB + hnote over DB #lightyellow + SELECT settlementParticipantCurrencyId + FROM **settlementParticipantCurrency** + WHERE spc.settlementId = {id} + AND pc.participantCurrencyId = {accountId} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlementParticipantCurrencyId** + deactivate SETTLE_DAO + + note right of SSAPI #lightgray + if (settlementParticipantCurrencyId) { + **accountFoundInSettlement** = true + } + end note + end + end + end + + alt settlementFound && participantFoundInSettlement && participantAndAccountMatched && accountFoundInSettlement + SSAPI-> SETTLE_DAO: Request settlement windows\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve windows + activate DB + alt accountProvided + hnote over DB #lightyellow + SELECT **//DISTINCT//** sw.settlementWindowId, swsc.settlementWindowStateId, + swsc.reason, sw.createdDate, swsc.createdDate changedDate + FROM **settlementSettlementWindow** ssw + JOIN **settlementWindow** sw + ON sw.settlementWindowId = ssw.settlementWindowId + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + JOIN **//settlementWindowContent//** swc + ON swc.settlementWindowId = sw.settlementWindowId + JOIN **//settlementWindowContentAggregation//** swca + ON swca.settlementWindowContentId = swc.settlementWindowContentId + AND swca.participantCurrencyId = //{accountId}// + WHERE ssw.settlementId = {id} + end hnote + else + hnote over DB #lightyellow + SELECT DISTINCT sw.settlementWindowId, swsc.settlementWindowStateId, + swsc.reason, sw.createdDate, swsc.createdDate changedDate + FROM **settlementSettlementWindow** ssw + JOIN **settlementWindow** sw + ON sw.settlementWindowId = ssw.settlementWindowId + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + JOIN **//settlementWindowContent//** swc + ON swc.settlementWindowId = sw.settlementWindowId + JOIN **//settlementWindowContentAggregation//** swca + ON swca.settlementWindowContentId = swc.settlementWindowContentId + AND swca.participantCurrencyId IN( + SELECT participantCurrencyId + FROM participantCurrency + WHERE participantId = //{participantId}// + ) + WHERE ssw.settlementId = {id} + end hnote + end + deactivate DB + SSAPI <-- SETTLE_DAO: Return **windows** + deactivate SETTLE_DAO + + SSAPI-> SETTLE_DAO: Request settlement accounts\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve accounts + activate DB + alt accountProvided + hnote over DB #lightyellow + SELECT pc.participantId, spc.participantCurrencyId, spcsc.settlementStateId, + spcsc.reason, spc.netAmount, pc.currencyId + FROM **settlementParticipantCurrency** spc + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementParticipantCurrencyId = {settlementParticipantCurrencyId} + end hnote + else + hnote over DB #lightyellow + SELECT pc.participantId, spc.participantCurrencyId, spcsc.settlementStateId, + spcsc.reason, spc.netAmount, pc.currencyId + FROM **settlementParticipantCurrency** spc + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementParticipantCurrencyId IN {settlementParticipantCurrencyIdList} + end hnote + end + deactivate DB + SSAPI <-- SETTLE_DAO: Return **accounts** + deactivate SETTLE_DAO + + note left of SSAPI #yellow + { + "id": settlement.settlementId, + "state": settlement.settlementStateId, + "settlementWindows": [ + [ + { + "id": window.settlementWindowId, + "reason": window.reason, + "state": window.settlementWindowStateId, + "createdDate": window.createdDate, + "changedDate": window.changedDate + } + ] + ], + "participants": [ + { + "id": account.participantId, + "accounts": [ + { + "id": account.participantCurrencyId, + "reason": account.reason, + "state": account.settlementStateId, + "netSettlementAmount": { + "amount": account.netAmount, + "currency": account.currencyId + } + } + ] + } + ] + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 200 (OK) + else !settlementFound || !participantFoundInSettlement || !participantAndAccountMatched || !accountFoundInSettlement + note right of SSAPI #lightgray + Log ERROR event (based on the failure) + end note + note left of SSAPI #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "Client error description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + deactivate SSAPI + deactivate OPERATOR + end +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.svg new file mode 100644 index 000000000..47915f13b --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.svg @@ -0,0 +1,916 @@ + + + + + + + + + + + 6.2.3. Get Settlement By Settlement, Participant and Account (getSettlementBySPA) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Get Settlement By Settlement, Participant and Account + + + + + alt + + + + + 1 + + + GET - /settlements/{settlementId}/ + + + participants/{participantId} + + + + + + 2 + + + GET - /settlements/{settlementId}/ + + + participants/{participantId}/ + + + accounts/{accountId} + + + + + let settlementFound = false + + + let participantFoundInSettlement = false + + + let accountProvided = accountId > 0 + + + let participantAndAccountMatched = !accountProvided + + + let accountFoundInSettlement = !accountProvided + + + + + 3 + + + Request settlement state + + + Error code: + + + 2001 + + + + + 4 + + + Retrieve settlement + + + + SELECT s.settlementId, ssc.settlementStateId, s.reason, s.createdDate + + + FROM + + + settlement + + + s + + + JOIN + + + settlementStateChange + + + ssc + + + ON ssc.settlementStateChangeId = s.currentStateChangeId + + + WHERE s.settlementId = {id} + + + + + 5 + + + Return + + + settlement + + + + + if (settlement.settlementId) { + + + settlementFound + + + = true + + + } + + + + + opt + + + [settlementFound] + + + + + 6 + + + Check participant + + + Error code: + + + 2001 + + + + + 7 + + + Check exists + + + + SELECT settlementParticipantCurrencyId + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementId = {id} + + + AND pc.participantId = {participantId} + + + + + 8 + + + Return + + + settlementParticipantCurrencyIdList + + + + + if (settlementParticipantCurrencyIdList.length > 0) { + + + participantFoundInSettlement + + + = true + + + } + + + + + opt + + + [participantFoundInSettlement && accountProvided] + + + + + 9 + + + Check participant + + + Error code: + + + 2001 + + + + + 10 + + + Check exists + + + + SELECT participantCurrencyId + + + JOIN + + + participantCurrency + + + WHERE participantCurrencyId = {accountId} + + + AND participantId = {participantId} + + + + + 11 + + + Return + + + account + + + + + if (account) { + + + participantAndAccountMatched + + + = true + + + } + + + + + opt + + + [participantAndAccountMatched] + + + + + 12 + + + Check account in settlement + + + Error code: + + + 2001 + + + + + 13 + + + Check exists + + + + SELECT settlementParticipantCurrencyId + + + FROM + + + settlementParticipantCurrency + + + WHERE spc.settlementId = {id} + + + AND pc.participantCurrencyId = {accountId} + + + + + 14 + + + Return + + + settlementParticipantCurrencyId + + + + + if (settlementParticipantCurrencyId) { + + + accountFoundInSettlement + + + = true + + + } + + + + + alt + + + [settlementFound && participantFoundInSettlement && participantAndAccountMatched && accountFoundInSettlement] + + + + + 15 + + + Request settlement windows + + + Error code: + + + 2001 + + + + + 16 + + + Retrieve windows + + + + + alt + + + [accountProvided] + + + + SELECT + + + DISTINCT + + + sw.settlementWindowId, swsc.settlementWindowStateId, + + + swsc.reason, sw.createdDate, swsc.createdDate changedDate + + + FROM + + + settlementSettlementWindow + + + ssw + + + JOIN + + + settlementWindow + + + sw + + + ON sw.settlementWindowId = ssw.settlementWindowId + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + JOIN + + + settlementWindowContent + + + swc + + + ON swc.settlementWindowId = sw.settlementWindowId + + + JOIN + + + settlementWindowContentAggregation + + + swca + + + ON swca.settlementWindowContentId = swc.settlementWindowContentId + + + AND swca.participantCurrencyId = + + + {accountId} + + + WHERE ssw.settlementId = {id} + + + + + SELECT DISTINCT sw.settlementWindowId, swsc.settlementWindowStateId, + + + swsc.reason, sw.createdDate, swsc.createdDate changedDate + + + FROM + + + settlementSettlementWindow + + + ssw + + + JOIN + + + settlementWindow + + + sw + + + ON sw.settlementWindowId = ssw.settlementWindowId + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + JOIN + + + settlementWindowContent + + + swc + + + ON swc.settlementWindowId = sw.settlementWindowId + + + JOIN + + + settlementWindowContentAggregation + + + swca + + + ON swca.settlementWindowContentId = swc.settlementWindowContentId + + + AND swca.participantCurrencyId IN( + + + SELECT participantCurrencyId + + + FROM participantCurrency + + + WHERE participantId = + + + {participantId} + + + ) + + + WHERE ssw.settlementId = {id} + + + + + 17 + + + Return + + + windows + + + + + 18 + + + Request settlement accounts + + + Error code: + + + 2001 + + + + + 19 + + + Retrieve accounts + + + + + alt + + + [accountProvided] + + + + SELECT pc.participantId, spc.participantCurrencyId, spcsc.settlementStateId, + + + spcsc.reason, spc.netAmount, pc.currencyId + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementParticipantCurrencyId = {settlementParticipantCurrencyId} + + + + + SELECT pc.participantId, spc.participantCurrencyId, spcsc.settlementStateId, + + + spcsc.reason, spc.netAmount, pc.currencyId + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementParticipantCurrencyId IN {settlementParticipantCurrencyIdList} + + + + + 20 + + + Return + + + accounts + + + + + { + + + "id": settlement.settlementId, + + + "state": settlement.settlementStateId, + + + "settlementWindows": [ + + + [ + + + { + + + "id": window.settlementWindowId, + + + "reason": window.reason, + + + "state": window.settlementWindowStateId, + + + "createdDate": window.createdDate, + + + "changedDate": window.changedDate + + + } + + + ] + + + ], + + + "participants": [ + + + { + + + "id": account.participantId, + + + "accounts": [ + + + { + + + "id": account.participantCurrencyId, + + + "reason": account.reason, + + + "state": account.settlementStateId, + + + "netSettlementAmount": { + + + "amount": account.netAmount, + + + "currency": account.currencyId + + + } + + + } + + + ] + + + } + + + ] + + + } + + + + + 21 + + + Respond HTTP - 200 (OK) + + + + [!settlementFound || !participantFoundInSettlement || !participantAndAccountMatched || !accountFoundInSettlement] + + + + + Log ERROR event (based on the failure) + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "Client error description" + + + } + + + } + + + + + 22 + + + Respond HTTP - 4xx (Client error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.plantuml new file mode 100644 index 000000000..37f9694bd --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.plantuml @@ -0,0 +1,159 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.2.4. Get Settlement By Id (getSettlementById) +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Get Settlement By Id +activate OPERATOR + OPERATOR -> SSAPI: GET - /settlements/{id} + activate SSAPI + + SSAPI-> SETTLE_DAO: Request settlement state\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve settlement + activate DB + hnote over DB #lightyellow + SELECT s.settlementId, ssc.settlementStateId, s.reason, s.createdDate + FROM **settlement** s + JOIN **settlementStateChange** ssc + ON ssc.settlementStateChangeId = s.currentStateChangeId + WHERE s.settlementId = {id} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlement** + deactivate SETTLE_DAO + + alt settlement found + SSAPI-> SETTLE_DAO: Request settlement windows\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve windows + activate DB + hnote over DB #lightyellow + SELECT sw.settlementWindowId, swsc.settlementWindowStateId, + swsc.reason, sw.createdDate, swsc.createdDate changedDate + FROM **settlementSettlementWindow** ssw + JOIN **settlementWindow** sw + ON sw.settlementWindowId = ssw.settlementWindowId + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + WHERE ssw.settlementId = {id} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **windows** + deactivate SETTLE_DAO + + SSAPI-> SETTLE_DAO: Request settlement accounts\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Retrieve accounts + activate DB + hnote over DB #lightyellow + SELECT pc.participantId, spc.participantCurrencyId, spcsc.settlementStateId, + spcsc.reason, spc.netAmount, pc.currencyId + FROM **settlementParticipantCurrency** spc + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementId = {id} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **accounts** + deactivate SETTLE_DAO + + note left of SSAPI #yellow + { + "id": settlement.settlementId, + "state": settlement.settlementStateId, + "settlementWindows": [ + [ + { + "id": window.settlementWindowId, + "reason": window.reason, + "state": window.settlementWindowStateId, + "createdDate": window.createdDate, + "changedDate": window.changedDate + } + ] + ], + "participants": [ + { + "id": account.participantId, + "accounts": [ + { + "id": account.participantCurrencyId, + "reason": account.reason, + "state": account.settlementStateId, + "netSettlementAmount": { + "amount": account.netAmount, + "currency": account.currencyId + } + } + ] + } + ] + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 200 (OK) + else + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "Client error description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + deactivate SSAPI + deactivate OPERATOR + end +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.svg new file mode 100644 index 000000000..460c5a1ac --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.svg @@ -0,0 +1,442 @@ + + + + + + + + + + + 6.2.4. Get Settlement By Id (getSettlementById) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Get Settlement By Id + + + + + 1 + + + GET - /settlements/{id} + + + + + 2 + + + Request settlement state + + + Error code: + + + 2001 + + + + + 3 + + + Retrieve settlement + + + + SELECT s.settlementId, ssc.settlementStateId, s.reason, s.createdDate + + + FROM + + + settlement + + + s + + + JOIN + + + settlementStateChange + + + ssc + + + ON ssc.settlementStateChangeId = s.currentStateChangeId + + + WHERE s.settlementId = {id} + + + + + 4 + + + Return + + + settlement + + + + + alt + + + [settlement found] + + + + + 5 + + + Request settlement windows + + + Error code: + + + 2001 + + + + + 6 + + + Retrieve windows + + + + SELECT sw.settlementWindowId, swsc.settlementWindowStateId, + + + swsc.reason, sw.createdDate, swsc.createdDate changedDate + + + FROM + + + settlementSettlementWindow + + + ssw + + + JOIN + + + settlementWindow + + + sw + + + ON sw.settlementWindowId = ssw.settlementWindowId + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + WHERE ssw.settlementId = {id} + + + + + 7 + + + Return + + + windows + + + + + 8 + + + Request settlement accounts + + + Error code: + + + 2001 + + + + + 9 + + + Retrieve accounts + + + + SELECT pc.participantId, spc.participantCurrencyId, spcsc.settlementStateId, + + + spcsc.reason, spc.netAmount, pc.currencyId + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementId = {id} + + + + + 10 + + + Return + + + accounts + + + + + { + + + "id": settlement.settlementId, + + + "state": settlement.settlementStateId, + + + "settlementWindows": [ + + + [ + + + { + + + "id": window.settlementWindowId, + + + "reason": window.reason, + + + "state": window.settlementWindowStateId, + + + "createdDate": window.createdDate, + + + "changedDate": window.changedDate + + + } + + + ] + + + ], + + + "participants": [ + + + { + + + "id": account.participantId, + + + "accounts": [ + + + { + + + "id": account.participantCurrencyId, + + + "reason": account.reason, + + + "state": account.settlementStateId, + + + "netSettlementAmount": { + + + "amount": account.netAmount, + + + "currency": account.currencyId + + + } + + + } + + + ] + + + } + + + ] + + + } + + + + + 11 + + + Respond HTTP - 200 (OK) + + + + + + Log ERROR event + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "Client error description" + + + } + + + } + + + + + 12 + + + Respond HTTP - 4xx (Client error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.plantuml new file mode 100644 index 000000000..66e9c65b0 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.plantuml @@ -0,0 +1,584 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.2.5. Acknowledgement of Settlement Transfer (updateSettlementById) +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Acknowledgement of Settlement Transfer + activate OPERATOR + note right of OPERATOR #yellow + { + "participants": [ + { + "id": 1 + "accounts" : [ + { "id": 1, "state": "PENDING_SETTLEMENT", "reason": }, + { "id": 2, "state": "PS_TRANSFERS_RECORDED", "reason": , "externalReference": }, + { "id": 3, "state": "PS_TRANSFERS_RESERVED", "reason": }, + { "id": 4, "state": "PS_TRANSFERS_COMMITTED", "reason": , "externalReference": }, + { "id": 5, "state": "SETTLED", "reason": } + ] + }, + { + "id": 2 + "accounts" : [ + { "id": 6, "state": "SETTLED", "reason": } + ] + } + ] + } + end note + + OPERATOR -> SSAPI: PUT - /settlement/{id} + activate SSAPI + SSAPI -> SETTLE_DAO: updateSettlementById routine\nError code: 2001 + activate SETTLE_DAO + group DB TRANSACTION + SETTLE_DAO -> DB: Retrieve settlement information + activate DB + hnote over DB #lightyellow + SELECT s.settlementId, ssc.settlementStateId, + ssc.reason, ssc.createdDate, sm.autoPositionReset + FROM **settlement** s + JOIN **settlementStateChange** ssc + ON ssc.settlementStateChangeId = s.currentStateChangeId + JOIN **settlementModel** sm + ON sm.settlementModelId = s.settlementModelId + WHERE s.settlementId = {id} + FOR UPDATE + end hnote + SETTLE_DAO <-- DB: Return **settlementData** + deactivate DB + + SETTLE_DAO -> DB: Retrive settlement accounts information + activate DB + hnote over DB #lightyellow + SELECT pc.participantId, spc.participantCurrencyId, + spcsc.settlementStateId, spcsc.reason, + spcsc.createdDate, spc.netAmount, pc.currencyId, + spc.settlementParticipantCurrencyId AS key + FROM **settlementParticipantCurrency** spc + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = + spc.currentStateChangeId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementId = {id} + FOR UPDATE + end hnote + SETTLE_DAO <-- DB: Return **settlementAccountsList** + deactivate DB + + ||| + note right of SETTLE_DAO #lightblue + All objects below are for the purpose of the syncronous request. + If at some point, Node process memory limit is reached, we may decide to: + A. Limit the amount of transfers per window and windows per settlement or + B. Move to asyncronous processing where we don't need these objects + end note + note right of SETTLE_DAO #lightgray + Available raw datasets from DB: + **settlementData** contains information about settlement and its current state/reason + **settlementAccountsList** holds information about all accounts and their current state/reason + + Local variables and objects: + **settlementAccounts**: { // (derived from settlementAccountsList) + pendingSettlementCount: , // count of accounts in PENDING_SETTLEMENT state + psTransfersRecordedCount: , // count of accounts in PS_TRANSFERS_RECORDED state + psTransfersReservedCount: , // count of accounts in PS_TRANSFERS_RESERVED state + psTransfersCommittedCount: , // count of accounts in PS_TRANSFERS_COMMITTED state + settledCount: , // count of accounts in SETTLED state + abortedCount: // count of accounts in ABORTED state + unknownCount: , + settledIdList: , + changedIdList: + } + **settlementAccountsInit** copy of previous object to be preserved for comparission at the end + **allAccounts**: { // same as previous but accessed by account id (derived from settlementAccountsList) + participantCurrencyId_key: { // number used to access the object in map-like style + id: participantCurrencyId, + state: settlementStateId, + reason: reason, + createdDate: createdDate, + netSettlementAmount: { + amount: netAmount, + currency: currencyId + }, + participantId: participantId, // could be used to reconstruct allParticipants + key: key // will be used to insert new state for settlementParticipantCurrency + } + } + let **transactionTimestamp** = now() + end note + ||| + SETTLE_DAO -> SETTLE_DAO: Declare and initialize variables + note right of SETTLE_DAO #lightgray + let settlementAccounts = { + pendingSettlementCount: 0, + psTransfersRecordedCount: 0, + psTransfersReservedCount: 0, + psTransfersCommittedCount: 0, + settledCount: 0, + abortedCount: 0, + unknownCount: 0 + } + ' let allParticipants = {} // declare map + let allAccounts = {} // declare map + let pid // participantId + let aid // accountId (participantCurrencyId) + let state + end note + + loop settlementAccountsList as account + SETTLE_DAO -> SETTLE_DAO: Populate **allAccounts** + ' and **allParticipants** + note right of SETTLE_DAO #lightgray + pid = account.participantId + aid = account.participantCurrencyId + state = account.settlementStateId + + allAccounts[aid] = { + id: aid, + state, + reason: account.reason, + createDate: account.createdDate, + netSettlementAmount: { + amount: account.netAmount, + currency: account.currencyId + }, + participantId: pid, + key: account.key + } + ' allParticipants[pid] = allParticipants[pid] ? allParticipants[pid] : {id: pid, accounts: {}} + ' allParticipants[pid].accounts[aid] = allAccounts[aid] + end note + + SETTLE_DAO -> SETTLE_DAO: Populate **settlementAccounts** + alt state == 'PENDING_SETTLEMENT' + note right of SETTLE_DAO #lightgray + settlementAccounts.pendingSettlementCount++ + end note + else state == 'PS_TRANSFERS_RECORDED' + note right of SETTLE_DAO #lightgray + settlementAccounts.psTransfersRecordedCount++ + end note + else state == 'PS_TRANSFERS_RESERVED' + note right of SETTLE_DAO #lightgray + settlementAccounts.psTransfersReservedCount++ + end note + else state == 'PS_TRANSFERS_COMMITTED' + note right of SETTLE_DAO #lightgray + settlementAccounts.psTransfersCommittedCount++ + end note + else state == 'SETTLED' + note right of SETTLE_DAO #lightgray + settlementAccounts.settledCount++ + end note + else state == 'ABORTED' + note right of SETTLE_DAO #lightgray + settlementAccounts.abortedCount++ + end note + else default + note right of SETTLE_DAO #lightgray + settlementAccounts.unknownCount++ + end note + end + end + SETTLE_DAO -> SETTLE_DAO: Make a copy of settlementAccounts into **settlementAccountsInit** + note right of SETTLE_DAO #lightgray + settlementAccountsInit = Object.assign({}, settlementAccounts) + end note + ||| + note right of SETTLE_DAO #lightgray + Available objects after the setup: + **settlementAccounts** is used for tracing settlement state and state transition allowance + **allAccounts** is helper object, same as previous, providing direct access to account by id + + Now we are ready to process the **payload**: + **participants** = [] // part of the response object that lists the affected participants and respective accounts + **settlementParticipantCurrencyStateChange** = [] // array to collect inserts to the table + **settlementParticipantCurrencySettledList** = [] // array to collect settled accounts + **processedAccounts** = [] // array to log processed accounts and restrict subsequent processing + end note + + loop let participant IN payload.participants + SETTLE_DAO -> SETTLE_DAO: Loop payload for each **participantPayload** + note right of SETTLE_DAO #lightgray + let participantPayload = payload.participants[participant] + participants.push({id: participantPayload.id, accounts: []}) + let pi = participants.length - 1 + participant = participants[pi] + end note + + loop let account IN participantPayload.accounts + SETTLE_DAO -> SETTLE_DAO: Loop payload for each **accountPayload** + note right of SETTLE_DAO #lightgray + let accountPayload = participantPayload.accounts[account] + end note + alt allAccounts[accountPayload.id] == undefined + SETTLE_DAO -> SETTLE_DAO: If the account doesn't match the settlement + note right of SETTLE_DAO #lightgray + participant.accounts.push({ + id: accountPayload.id, + errorInformation: { + errorCode: 3000, + errorDescription: 'Account not found' + } + }) + end note + else participantPayload.id != allAccounts[accountPayload.id].participantId + SETTLE_DAO -> SETTLE_DAO: If the account doesn't match the participant + note right of SETTLE_DAO #lightgray + participant.accounts.push({ + id: accountPayload.id, + errorInformation: { + errorCode: 3000, + errorDescription: 'Participant and account mismatch' + } + }) + end note + else processedAccounts.indexOf(accountPayload.id) > -1 + SETTLE_DAO -> SETTLE_DAO: If the account has been previosly processed (duplicated in the payload) + note right of SETTLE_DAO #lightgray + participant.accounts.push({ + id: accountPayload.id, + state: allAccounts[accountPayload.id].state, + reason: allAccounts[accountPayload.id].reason, + createdDate: allAccounts[accountPayload.id].createdDate, + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + errorInformation: { + errorCode: 3000, + errorDescription: 'Account already processed once' + } + }) + end note + else allAccounts[account.id].state == accountPayload.state // allowed + SETTLE_DAO -> SETTLE_DAO: Same-state reason amendment is always allowed + note right of SETTLE_DAO #lightgray + processedAccounts.push(accountPayload.id) + participant.accounts.push({ + id: accountPayload.id, + state: accountPayload.state, + reason: accountPayload.reason, + externalReference: accountPayload.externalReference, + createdDate: transactionTimestamp, + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + }) + settlementParticipantCurrencyStateChange.push({ + settlementParticipantCurrencyId: allAccounts[accountPayload.id].key, + settlementStateId: accountPayload.state, + reason: accountPayload.reason, + externalReference: accountPayload.externalReference + }) + allAccounts[accountPayload.id].reason = accountPayload.reason + allAccounts[accountPayload.id].createdDate = currentTimestamp + end note + else settlementData.state == 'PENDING_SETTLEMENT' && accountPayload.state == 'PS_TRANSFERS_RECORDED' + else settlementData.state == 'PS_TRANSFERS_RECORDED' && accountPayload.state == 'PS_TRANSFERS_RESERVED' + else settlementData.state == 'PS_TRANSFERS_RESERVED' && accountPayload.state == 'PS_TRANSFERS_COMMITTED' + else settlementData.state == 'PS_TRANSFERS_COMMITTED' || settlementData.state == 'SETTLING' && accountPayload.state == 'SETTLED' + note right of SETTLE_DAO #lightgray + **Note**: Since we previously checked same-state, here we don't need to match + allAccounts[account.id].state == settlementData.state. + end note + + SETTLE_DAO -> SETTLE_DAO: Settlement acknowledgement + note right of SETTLE_DAO #lightgray + processedAccounts.push(accountPayload.id) + participant.accounts.push({ + id: accountPayload.id, + state: accountPayload.state, + reason: accountPayload.reason, + externalReference: accountPayload.externalReference, + createdDate: transactionTimestamp, + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + }) + settlementParticipantCurrencyStateChange.push({ + settlementParticipantCurrencyId: allAccounts[accountPayload.id].key, + settlementStateId: accountPayload.state, + reason: accountPayload.reason, + externalReference: accountPayload.externalReference, + settlementTransferId: Uuid() -- only for PS_TRANSFERS_RECORDED + }) + if (accountPayload.state == 'PS_TRANSFERS_RECORDED') { + settlementAccounts.pendingSettlementCount-- + settlementAccounts.psTransfersRecordedCount++ + } else if (accountPayload.state == 'PS_TRANSFERS_RESERVED') { + settlementAccounts.psTransfersRecordedCount-- + settlementAccounts.psTransfersReservedCount++ + } else if (accountPayload.state == 'PS_TRANSFERS_COMMITTED') { + settlementAccounts.psTransfersReservedCount-- + settlementAccounts.psTransfersCommittedCount++ + } else if (accountPayload.state == 'SETTLED') { + settlementParticipantCurrencySettledIdList.push(allAccounts[accountPayload.id].key) + settlementAccounts.psTransfersCommittedCount-- + settlementAccounts.settledCount++ + settlementAccounts.settledIdList.push(accountPayload.id) + } + settlementAccounts.changedIdList.push(accountPayload.id) + allAccounts[accountPayload.id].state = accountPayload.state + allAccounts[accountPayload.id].reason = accountPayload.reason + allAccounts[accountPayload.id].externalReference = accountPayload.externalReference + allAccounts[accountPayload.id].createdDate = currentTimestamp + end note + else + SETTLE_DAO -> SETTLE_DAO: All other state transitions are not permitted + note right of SETTLE_DAO #lightgray + participant.accounts.push({ + id: accountPayload.id, + state: allAccounts[accountPayload.id].state, + reason: allAccounts[accountPayload.id].reason, + createdDate: allAccounts[accountPayload.id].createdDate, + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + errorInformation: { + errorCode: , + errorDescription: 'State change not allowed' + } + }) + end note + end + end + end + group Bulk insert settlementParticipantCurrencyStateChange + SETTLE_DAO -> DB: Insert settlementParticipantCurrencyStateChange + activate DB + hnote over DB #lightyellow + settlementParticipantCurrencyStateChange + end hnote + SETTLE_DAO <-- DB: Return **settlementParticipantCurrencyStateChangeIdList** + deactivate DB + + SETTLE_DAO -> SETTLE_DAO: Merge settlementParticipantCurrencyStateChangeIdList\nto **settlementParticipantCurrencyIdList** in order to\nissue the following update in one knex command + + SETTLE_DAO -> DB: Update pointers to current state change ids + activate DB + hnote over DB #lightyellow + UPDATE **settlementParticipantCurrency** + SET currentStateChangeId = + {settlementParticipantCurrencyStateChangeIdList}, + settlementTransferId = + settlementParticipantCurrencyStateChange.settlementTransferId + -- only for PENDING_SETTLEMENT to PS_TRANSFERS_RECORDED + WHERE settlementParticipantCurrencyId = + {settlementParticipantCurrencyStateChange + .settlementParticipantCurrencyIdList} + end hnote + deactivate DB + end + + opt autoPositionReset == true + alt settlementData.state == 'PENDING_SETTLEMENT' + ||| + ref over SETTLE_DAO, DB: Settlement Transfer Prepare\n\n**Inputs**: settlementId, transactionTimestamp, enums, trx\n + ||| + else settlementData.state == 'PS_TRANSFERS_RECORDED' + ||| + ref over SETTLE_DAO, DB: Settlement Transfer Reserve\n\n**Inputs**: settlementId, transactionTimestamp, enums, trx\n + ||| + else settlementData.state == 'PS_TRANSFERS_RESERVED' + ||| + ref over SETTLE_DAO, DB: Settlement Transfer Commit\n\n**Inputs**: settlementId, transactionTimestamp, enums, trx\n + ||| + end + end + + group Update aggregations, contents & windows + opt settlementParticipantCurrencySettledIdList.length > 0 + SETTLE_DAO -> DB: Change settlementWindowState where applicable + activate DB + deactivate DB + hnote over DB #lightyellow + settlementContentAggregation + transferParticipantStateChange + transferParticipant + settlementWindowContentStateChange + settlementWindowContent + settlementWindowStateChange + settlementWindow + end hnote + end + + SETTLE_DAO -> DB: Retrieve all affected content (incl. when settled) + activate DB + hnote over DB #lightyellow + settlementContentAggregation + settlementWindowContent + settlementWindowContentStateChange + ledgerAccountType + settlementWindow + settlementWindowStateChange + end hnote + SETTLE_DAO <-- DB: Return **affectedWindowsReport** + deactivate DB + + SETTLE_DAO -> SETTLE_DAO: Use previous result to produce settlementWindowsData (**swd**) array + end + + group Prepare and insert settlementStateChange + note right of SETTLE_DAO #lightgray + let settlementStateChanged = true + end note + alt settlementData.state == 'PENDING_SETTLEMENT'\n&& settlementAccounts.pendingSettlementCount == 0 + note right of SETTLE_DAO #lightgray + settlementData.state = 'PS_TRANSFERS_RECORDED' + settlementData.reason = 'All settlement accounts are PS_TRANSFERS_RECORDED' + end note + else settlementData.state == 'PS_TRANSFERS_RECORDED'\n&& settlementAccounts.psTransfersRecordedCount == 0 + note right of SETTLE_DAO #lightgray + settlementData.state = 'PS_TRANSFERS_RESERVED' + settlementData.reason = 'All settlement accounts are PS_TRANSFERS_RESERVED' + end note + else settlementData.state == 'PS_TRANSFERS_RESERVED'\n&& settlementAccounts.psTransfersReservedCount == 0 + note right of SETTLE_DAO #lightgray + settlementData.state = 'PS_TRANSFERS_COMMITTED' + settlementData.reason = 'All settlement accounts are PS_TRANSFERS_COMMITTED' + end note + else settlementData.state == 'PS_TRANSFERS_COMMITTED'\n&& settlementAccounts.psTransfersCommittedCount > 0\n&& settlementAccounts.settledCount > 0 + note right of SETTLE_DAO #lightgray + settlementData.state = 'SETTLING' + settlementData.reason = 'Some settlement accounts are SETTLED' + end note + else (settlementData.state == 'PS_TRANSFERS_COMMITTED' || settlementData.state == 'SETTLING')\n&& settlementAccounts.psTransfersCommittedCount == 0 + note right of SETTLE_DAO #lightgray + settlementData.state = 'SETTLED' + settlementData.reason = 'All settlement accounts are SETTLED' + end note + else + note right of SETTLE_DAO #lightgray + settlementStateChanged = false + end note + end + opt settlementStateChanged == true + note right of SETTLE_DAO #lightgray + settlementData.createdDate = currentTimestamp + settlementStateChange.push(settlementData) + end note + + SETTLE_DAO -> DB: Insert settlementStateChange + activate DB + hnote over DB #lightyellow + settlementStateChange + end hnote + SETTLE_DAO <-- DB: Return **settlementStateChangeId** + deactivate DB + + SETTLE_DAO -> DB: Update pointer to current state change id + activate DB + hnote over DB #lightyellow + UPDATE **settlement**.currentStateChangeId + end hnote + deactivate DB + end + end + end + SSAPI <-- SETTLE_DAO: Return transaction result + deactivate SETTLE_DAO + + note left of SSAPI #yellow + { + "id": {id}, + "state": settlementData.state, + "createdDate": settlementData.createdDate, + "settlementWindows": [ + { + "id": swd[m].id, + "state": swd[m].state, + "reason": swd[m].reason, + "createdDate": swd[m].createdDate, + "changedDate": swd[m].changedDate, + "content": [ + { + "id": swd[m].content[n].settlementWindowContentId, + "state": swd[m].content[n].settlementWindowStateId, + "ledgerAccountType": swd[m].content[n].ledgerAccountType, + "currencyId": swd[m].content[n].currencyId, + "createdDate": swd[m].content[n].createdDate, + "changedDate": swd[m].content[n].changedDate + } + ] + } + ], + "participants": [ + { + "id": , + "accounts": [ + { + "id": , + "state": ", + "reason": , + "externalReference": , + "createdDate": , + "netSettlementAmount": { + "amount": , + "currency": + } + }, + { + "id": , + "state": , + "reason": , + "createdDate": , + "netSettlementAmount": { + "amount": , + "currency": + }, + "errorInformation": { + "errorCode": , + "errorDescription": + } + } + ] + } + ] + } + end note + + SSAPI --> OPERATOR: Return response + deactivate SSAPI + deactivate OPERATOR +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.svg new file mode 100644 index 000000000..73611b591 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.svg @@ -0,0 +1,1754 @@ + + + + + + + + + + + 6.2.5. Acknowledgement of Settlement Transfer (updateSettlementById) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + + + + + + + + + + + + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Acknowledgement of Settlement Transfer + + + + + { + + + "participants": [ + + + { + + + "id": 1 + + + "accounts" : [ + + + { "id": 1, "state": "PENDING_SETTLEMENT", "reason": <string> }, + + + { "id": 2, "state": "PS_TRANSFERS_RECORDED", "reason": <string>, "externalReference": <string> }, + + + { "id": 3, "state": "PS_TRANSFERS_RESERVED", "reason": <string> }, + + + { "id": 4, "state": "PS_TRANSFERS_COMMITTED", "reason": <string>, "externalReference": <string> }, + + + { "id": 5, "state": "SETTLED", "reason": <string> } + + + ] + + + }, + + + { + + + "id": 2 + + + "accounts" : [ + + + { "id": 6, "state": "SETTLED", "reason": <string> } + + + ] + + + } + + + ] + + + } + + + + + 1 + + + PUT - /settlement/{id} + + + + + 2 + + + updateSettlementById routine + + + Error code: + + + 2001 + + + + + DB TRANSACTION + + + + + 3 + + + Retrieve settlement information + + + + SELECT s.settlementId, ssc.settlementStateId, + + + ssc.reason, ssc.createdDate, sm.autoPositionReset + + + FROM + + + settlement + + + s + + + JOIN + + + settlementStateChange + + + ssc + + + ON ssc.settlementStateChangeId = s.currentStateChangeId + + + JOIN + + + settlementModel + + + sm + + + ON sm.settlementModelId = s.settlementModelId + + + WHERE s.settlementId = {id} + + + FOR UPDATE + + + + + 4 + + + Return + + + settlementData + + + + + 5 + + + Retrive settlement accounts information + + + + SELECT pc.participantId, spc.participantCurrencyId, + + + spcsc.settlementStateId, spcsc.reason, + + + spcsc.createdDate, spc.netAmount, pc.currencyId, + + + spc.settlementParticipantCurrencyId AS + + + key + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = + + + spc.currentStateChangeId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementId = {id} + + + FOR UPDATE + + + + + 6 + + + Return + + + settlementAccountsList + + + + + All objects below are for the purpose of the syncronous request. + + + If at some point, Node process memory limit is reached, we may decide to: + + + A. Limit the amount of transfers per window and windows per settlement or + + + B. Move to asyncronous processing where we don't need these objects + + + + + Available raw datasets from DB: + + + settlementData + + + contains information about settlement and its current state/reason + + + settlementAccountsList + + + holds information about all accounts and their current state/reason + + + Local variables and objects: + + + settlementAccounts + + + : { // (derived from + + + settlementAccountsList + + + ) + + + pendingSettlementCount: <integer>, // count of accounts in PENDING_SETTLEMENT state + + + psTransfersRecordedCount: <integer>, // count of accounts in PS_TRANSFERS_RECORDED state + + + psTransfersReservedCount: <integer>, // count of accounts in PS_TRANSFERS_RESERVED state + + + psTransfersCommittedCount: <integer>, // count of accounts in PS_TRANSFERS_COMMITTED state + + + settledCount: <integer>, // count of accounts in SETTLED state + + + abortedCount: <integer> // count of accounts in ABORTED state + + + unknownCount: <integer>, + + + settledIdList: <array>, + + + changedIdList: <array> + + + } + + + settlementAccountsInit + + + copy of previous object to be preserved for comparission at the end + + + allAccounts + + + : { // same as previous but accessed by account id (derived from + + + settlementAccountsList + + + ) + + + participantCurrencyId_key: { // number used to access the object in map-like style + + + id: participantCurrencyId, + + + state: settlementStateId, + + + reason: reason, + + + createdDate: createdDate, + + + netSettlementAmount: { + + + amount: netAmount, + + + currency: currencyId + + + }, + + + participantId: participantId, // could be used to reconstruct allParticipants + + + key: + + + key + + + // will be used to insert new state for settlementParticipantCurrency + + + } + + + } + + + let + + + transactionTimestamp + + + = now() + + + + + 7 + + + Declare and initialize variables + + + + + let settlementAccounts = { + + + pendingSettlementCount: 0, + + + psTransfersRecordedCount: 0, + + + psTransfersReservedCount: 0, + + + psTransfersCommittedCount: 0, + + + settledCount: 0, + + + abortedCount: 0, + + + unknownCount: 0 + + + } + + + let allAccounts = {} // declare map + + + let pid // participantId + + + let aid // accountId (participantCurrencyId) + + + let state + + + + + loop + + + [settlementAccountsList as account] + + + + + 8 + + + Populate + + + allAccounts + + + + + pid = account.participantId + + + aid = account.participantCurrencyId + + + state = account.settlementStateId + + + allAccounts[aid] = { + + + id: aid, + + + state, + + + reason: account.reason, + + + createDate: account.createdDate, + + + netSettlementAmount: { + + + amount: account.netAmount, + + + currency: account.currencyId + + + }, + + + participantId: pid, + + + key: account.key + + + } + + + + + 9 + + + Populate + + + settlementAccounts + + + + + alt + + + [state == 'PENDING_SETTLEMENT'] + + + + + settlementAccounts.pendingSettlementCount++ + + + + [state == 'PS_TRANSFERS_RECORDED'] + + + + + settlementAccounts.psTransfersRecordedCount++ + + + + [state == 'PS_TRANSFERS_RESERVED'] + + + + + settlementAccounts.psTransfersReservedCount++ + + + + [state == 'PS_TRANSFERS_COMMITTED'] + + + + + settlementAccounts.psTransfersCommittedCount++ + + + + [state == 'SETTLED'] + + + + + settlementAccounts.settledCount++ + + + + [state == 'ABORTED'] + + + + + settlementAccounts.abortedCount++ + + + + [default] + + + + + settlementAccounts.unknownCount++ + + + + + 10 + + + Make a copy of settlementAccounts into + + + settlementAccountsInit + + + + + settlementAccountsInit = Object.assign({}, settlementAccounts) + + + + + Available objects after the setup: + + + settlementAccounts + + + is used for tracing settlement state and state transition allowance + + + allAccounts + + + is helper object, same as previous, providing direct access to account by id + + + Now we are ready to process the + + + payload + + + : + + + participants + + + = [] // part of the response object that lists the affected participants and respective accounts + + + settlementParticipantCurrencyStateChange + + + = [] // array to collect inserts to the table + + + settlementParticipantCurrencySettledList + + + = [] // array to collect settled accounts + + + processedAccounts + + + = [] // array to log processed accounts and restrict subsequent processing + + + + + loop + + + [let participant IN payload.participants] + + + + + 11 + + + Loop payload for each + + + participantPayload + + + + + let participantPayload = payload.participants[participant] + + + participants.push({id: participantPayload.id, accounts: []}) + + + let pi = participants.length - 1 + + + participant = participants[pi] + + + + + loop + + + [let account IN participantPayload.accounts] + + + + + 12 + + + Loop payload for each + + + accountPayload + + + + + let accountPayload = participantPayload.accounts[account] + + + + + alt + + + [allAccounts[accountPayload.id] == undefined] + + + + + 13 + + + If the account doesn't match the settlement + + + + + participant.accounts.push({ + + + id: accountPayload.id, + + + errorInformation: { + + + errorCode: 3000, + + + errorDescription: 'Account not found' + + + } + + + }) + + + + [participantPayload.id != allAccounts[accountPayload.id].participantId] + + + + + 14 + + + If the account doesn't match the participant + + + + + participant.accounts.push({ + + + id: accountPayload.id, + + + errorInformation: { + + + errorCode: 3000, + + + errorDescription: 'Participant and account mismatch' + + + } + + + }) + + + + [processedAccounts.indexOf(accountPayload.id) > -1] + + + + + 15 + + + If the account has been previosly processed (duplicated in the payload) + + + + + participant.accounts.push({ + + + id: accountPayload.id, + + + state: allAccounts[accountPayload.id].state, + + + reason: allAccounts[accountPayload.id].reason, + + + createdDate: allAccounts[accountPayload.id].createdDate, + + + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + + + errorInformation: { + + + errorCode: 3000, + + + errorDescription: 'Account already processed once' + + + } + + + }) + + + + [allAccounts[account.id].state == accountPayload.state // allowed] + + + + + 16 + + + Same-state reason amendment is always allowed + + + + + processedAccounts.push(accountPayload.id) + + + participant.accounts.push({ + + + id: accountPayload.id, + + + state: accountPayload.state, + + + reason: accountPayload.reason, + + + externalReference: accountPayload.externalReference, + + + createdDate: transactionTimestamp, + + + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + + + }) + + + settlementParticipantCurrencyStateChange.push({ + + + settlementParticipantCurrencyId: allAccounts[accountPayload.id].key, + + + settlementStateId: accountPayload.state, + + + reason: accountPayload.reason, + + + externalReference: accountPayload.externalReference + + + }) + + + allAccounts[accountPayload.id].reason = accountPayload.reason + + + allAccounts[accountPayload.id].createdDate = currentTimestamp + + + + [settlementData.state == 'PENDING_SETTLEMENT' && accountPayload.state == 'PS_TRANSFERS_RECORDED'] + + + + [settlementData.state == 'PS_TRANSFERS_RECORDED' && accountPayload.state == 'PS_TRANSFERS_RESERVED'] + + + + [settlementData.state == 'PS_TRANSFERS_RESERVED' && accountPayload.state == 'PS_TRANSFERS_COMMITTED'] + + + + [settlementData.state == 'PS_TRANSFERS_COMMITTED' || settlementData.state == 'SETTLING' && accountPayload.state == 'SETTLED'] + + + + + Note + + + : Since we previously checked same-state, here we don't need to match + + + allAccounts[account.id].state == settlementData.state. + + + + + 17 + + + Settlement acknowledgement + + + + + processedAccounts.push(accountPayload.id) + + + participant.accounts.push({ + + + id: accountPayload.id, + + + state: accountPayload.state, + + + reason: accountPayload.reason, + + + externalReference: accountPayload.externalReference, + + + createdDate: transactionTimestamp, + + + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + + + }) + + + settlementParticipantCurrencyStateChange.push({ + + + settlementParticipantCurrencyId: allAccounts[accountPayload.id].key, + + + settlementStateId: accountPayload.state, + + + reason: accountPayload.reason, + + + externalReference: accountPayload.externalReference, + + + settlementTransferId: Uuid() -- only for PS_TRANSFERS_RECORDED + + + }) + + + if (accountPayload.state == 'PS_TRANSFERS_RECORDED') { + + + settlementAccounts.pendingSettlementCount-- + + + settlementAccounts.psTransfersRecordedCount++ + + + } else if (accountPayload.state == 'PS_TRANSFERS_RESERVED') { + + + settlementAccounts.psTransfersRecordedCount-- + + + settlementAccounts.psTransfersReservedCount++ + + + } else if (accountPayload.state == 'PS_TRANSFERS_COMMITTED') { + + + settlementAccounts.psTransfersReservedCount-- + + + settlementAccounts.psTransfersCommittedCount++ + + + } else if (accountPayload.state == 'SETTLED') { + + + settlementParticipantCurrencySettledIdList.push(allAccounts[accountPayload.id].key) + + + settlementAccounts.psTransfersCommittedCount-- + + + settlementAccounts.settledCount++ + + + settlementAccounts.settledIdList.push(accountPayload.id) + + + } + + + settlementAccounts.changedIdList.push(accountPayload.id) + + + allAccounts[accountPayload.id].state = accountPayload.state + + + allAccounts[accountPayload.id].reason = accountPayload.reason + + + allAccounts[accountPayload.id].externalReference = accountPayload.externalReference + + + allAccounts[accountPayload.id].createdDate = currentTimestamp + + + + + + 18 + + + All other state transitions are not permitted + + + + + participant.accounts.push({ + + + id: accountPayload.id, + + + state: allAccounts[accountPayload.id].state, + + + reason: allAccounts[accountPayload.id].reason, + + + createdDate: allAccounts[accountPayload.id].createdDate, + + + netSettlementAmount: allAccounts[accountPayload.id].netSettlementAmount + + + errorInformation: { + + + errorCode: <integer>, + + + errorDescription: 'State change not allowed' + + + } + + + }) + + + + + Bulk insert settlementParticipantCurrencyStateChange + + + + + 19 + + + Insert settlementParticipantCurrencyStateChange + + + + settlementParticipantCurrencyStateChange + + + + + 20 + + + Return + + + settlementParticipantCurrencyStateChangeIdList + + + + + 21 + + + Merge settlementParticipantCurrencyStateChangeIdList + + + to + + + settlementParticipantCurrencyIdList + + + in order to + + + issue the following update in one knex command + + + + + 22 + + + Update pointers to current state change ids + + + + UPDATE + + + settlementParticipantCurrency + + + SET currentStateChangeId = + + + {settlementParticipantCurrencyStateChangeIdList}, + + + settlementTransferId = + + + settlementParticipantCurrencyStateChange.settlementTransferId + + + -- only for PENDING_SETTLEMENT to PS_TRANSFERS_RECORDED + + + WHERE settlementParticipantCurrencyId = + + + {settlementParticipantCurrencyStateChange + + + .settlementParticipantCurrencyIdList} + + + + + opt + + + [autoPositionReset == true] + + + + + alt + + + [settlementData.state == 'PENDING_SETTLEMENT'] + + + + + ref + + + Settlement Transfer Prepare + + + Inputs + + + : settlementId, transactionTimestamp, enums, trx + + + + [settlementData.state == 'PS_TRANSFERS_RECORDED'] + + + + + ref + + + Settlement Transfer Reserve + + + Inputs + + + : settlementId, transactionTimestamp, enums, trx + + + + [settlementData.state == 'PS_TRANSFERS_RESERVED'] + + + + + ref + + + Settlement Transfer Commit + + + Inputs + + + : settlementId, transactionTimestamp, enums, trx + + + + + Update aggregations, contents & windows + + + + + opt + + + [settlementParticipantCurrencySettledIdList.length > 0] + + + + + 23 + + + Change settlementWindowState where applicable + + + + settlementContentAggregation + + + transferParticipantStateChange + + + transferParticipant + + + settlementWindowContentStateChange + + + settlementWindowContent + + + settlementWindowStateChange + + + settlementWindow + + + + + 24 + + + Retrieve all affected content (incl. when settled) + + + + settlementContentAggregation + + + settlementWindowContent + + + settlementWindowContentStateChange + + + ledgerAccountType + + + settlementWindow + + + settlementWindowStateChange + + + + + 25 + + + Return + + + affectedWindowsReport + + + + + 26 + + + Use previous result to produce settlementWindowsData ( + + + swd + + + ) array + + + + + Prepare and insert settlementStateChange + + + + + let settlementStateChanged = true + + + + + alt + + + [settlementData.state == 'PENDING_SETTLEMENT' + + + && settlementAccounts.pendingSettlementCount == 0] + + + + + settlementData.state = 'PS_TRANSFERS_RECORDED' + + + settlementData.reason = 'All settlement accounts are PS_TRANSFERS_RECORDED' + + + + [settlementData.state == 'PS_TRANSFERS_RECORDED' + + + && settlementAccounts.psTransfersRecordedCount == 0] + + + + + settlementData.state = 'PS_TRANSFERS_RESERVED' + + + settlementData.reason = 'All settlement accounts are PS_TRANSFERS_RESERVED' + + + + [settlementData.state == 'PS_TRANSFERS_RESERVED' + + + && settlementAccounts.psTransfersReservedCount == 0] + + + + + settlementData.state = 'PS_TRANSFERS_COMMITTED' + + + settlementData.reason = 'All settlement accounts are PS_TRANSFERS_COMMITTED' + + + + [settlementData.state == 'PS_TRANSFERS_COMMITTED' + + + && settlementAccounts.psTransfersCommittedCount > 0 + + + && settlementAccounts.settledCount > 0] + + + + + settlementData.state = 'SETTLING' + + + settlementData.reason = 'Some settlement accounts are SETTLED' + + + + [(settlementData.state == 'PS_TRANSFERS_COMMITTED' || settlementData.state == 'SETTLING') + + + && settlementAccounts.psTransfersCommittedCount == 0] + + + + + settlementData.state = 'SETTLED' + + + settlementData.reason = 'All settlement accounts are SETTLED' + + + + + + settlementStateChanged = false + + + + + opt + + + [settlementStateChanged == true] + + + + + settlementData.createdDate = currentTimestamp + + + settlementStateChange.push(settlementData) + + + + + 27 + + + Insert settlementStateChange + + + + settlementStateChange + + + + + 28 + + + Return + + + settlementStateChangeId + + + + + 29 + + + Update pointer to current state change id + + + + UPDATE + + + settlement + + + .currentStateChangeId + + + + + 30 + + + Return transaction result + + + + + { + + + "id": {id}, + + + "state": settlementData.state, + + + "createdDate": settlementData.createdDate, + + + "settlementWindows": [ + + + { + + + "id": swd[m].id, + + + "state": swd[m].state, + + + "reason": swd[m].reason, + + + "createdDate": swd[m].createdDate, + + + "changedDate": swd[m].changedDate, + + + "content": [ + + + { + + + "id": swd[m].content[n].settlementWindowContentId, + + + "state": swd[m].content[n].settlementWindowStateId, + + + "ledgerAccountType": swd[m].content[n].ledgerAccountType, + + + "currencyId": swd[m].content[n].currencyId, + + + "createdDate": swd[m].content[n].createdDate, + + + "changedDate": swd[m].content[n].changedDate + + + } + + + ] + + + } + + + ], + + + "participants": [ + + + { + + + "id": <integer>, + + + "accounts": [ + + + { + + + "id": <integer>, + + + "state": "<string>, + + + "reason": <string>, + + + "externalReference": <string>, + + + "createdDate": <date>, + + + "netSettlementAmount": { + + + "amount": <decimal>, + + + "currency": <enum> + + + } + + + }, + + + { + + + "id": <integer>, + + + "state": <string>, + + + "reason": <string>, + + + "createdDate": <date>, + + + "netSettlementAmount": { + + + "amount": <decimal>, + + + "currency": <enum> + + + }, + + + "errorInformation": { + + + "errorCode": <integer>, + + + "errorDescription": <string> + + + } + + + } + + + ] + + + } + + + ] + + + } + + + + + 31 + + + Return response + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.plantuml new file mode 100644 index 000000000..357a22d2e --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.plantuml @@ -0,0 +1,282 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.2.6. Settlement Abort (abortSettlementById) +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Settlement Abort + activate OPERATOR + note right of OPERATOR #yellow + { + "state": "ABORTED", + "reason": {abortReasonString} + } + end note + + OPERATOR -> SSAPI: PUT - /settlement/{id} + activate SSAPI + SSAPI -> SETTLE_DAO: abortSettlementById facade method\nError code: 2001 + activate SETTLE_DAO + + SETTLE_DAO -> DB: Retrieve settlement information + activate DB + hnote over DB #lightyellow + SELECT s.settlementId, ssc.settlementStateId, + ssc.reason, ssc.createdDate + FROM **settlement** s + JOIN **settlementStateChange** ssc + ON ssc.settlementStateChangeId = s.currentStateChangeId + WHERE s.settlementId = {id} + end hnote + SETTLE_DAO <-- DB: Return **settlementData** + deactivate DB + + alt settlementData.settlementStateId == 'PS_TRANSFERS_COMMITTED'||\nsettlementData.settlementStateId == 'SETTLING'||\nsettlementData.settlementStateId == 'SETTLED' + break + note right of SETTLE_DAO #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "State change is not allowed" + } + } + end note + end + else settlementData.settlementStateId == 'ABORTED' + break + SETTLE_DAO -> DB: Append additional info at settlement level + activate DB + deactivate DB + hnote over DB #lightyellow + INSERT INTO **settlementStateChange** + (settlementId, settlementStateId, reason) + VALUES ({id}, 'ABORTED', {abortReasonString}) + end hnote + + note right of SETTLE_DAO #yellow + { + "id": {id}, + "state": 'ABORTED', + "reason": {abortReasonString} + } + end note + end + else settlementData.settlementStateId == 'PS_TRANSFERS_RESERVED' + SETTLE_DAO -> DB: Find account in PS_TRANSFERS_COMMITTED + activate DB + hnote over DB #lightyellow + SELECT spc.participantCurrencyId + FROM **settlementParticipantCurrency** spc + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + WHERE spc.settlementId = {id} + AND spcsc.settlementStateId = 'PS_TRANSFERS_COMMITTED' + LIMIT 1 + end hnote + SETTLE_DAO <-- DB: Return **transferCommittedAccount** + deactivate DB + break transferCommittedAccount != undefined + note right of SETTLE_DAO #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "At least one settlement transfer is committed" + } + } + end note + end + end + + group DB TRANSACTION + SETTLE_DAO -> DB: Retrive settlement accounts information + activate DB + hnote over DB #lightyellow + SELECT pc.participantId, spc.participantCurrencyId, + spcsc.settlementStateId, spcsc.reason, + spcsc.createdDate, spc.netAmount, pc.currencyId, + spc.settlementParticipantCurrencyId AS key + FROM **settlementParticipantCurrency** spc + JOIN **settlementParticipantCurrencyStateChange** spcsc + ON spcsc.settlementParticipantCurrencyStateChangeId = + spc.currentStateChangeId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = spc.participantCurrencyId + WHERE spc.settlementId = {id} + FOR UPDATE + end hnote + SETTLE_DAO <-- DB: Return **settlementAccountsList** + deactivate DB + + SETTLE_DAO -> DB: Retrive settlement windows information + activate DB + hnote over DB #lightyellow + SELECT ssw.settlementWindowId, swsc.settlementWindowStateId, + swsc.reason, swsc.createdDate + FROM **settlementSettlementWindow** ssw + JOIN **settlementWindow** sw + ON sw.settlementWindow = ssw.settlementWindowId + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + WHERE ssw.settlementId = {id} + FOR UPDATE + end hnote + SETTLE_DAO <-- DB: Return **windowsList** + deactivate DB + + group Bulk insert settlementParticipantCurrencyStateChange + SETTLE_DAO -> DB: Insert settlementParticipantCurrencyStateChange + activate DB + hnote over DB #lightyellow + settlementParticipantCurrencyStateChange + end hnote + SETTLE_DAO <-- DB: Return **spcscIdList** + deactivate DB + + SETTLE_DAO -> SETTLE_DAO: Merge spcscIdList into settlementAccountsList + + SETTLE_DAO -> DB: Update all pointers to current state change ids + activate DB + hnote over DB #lightyellow + UPDATE **settlementParticipantCurrency**.currentStateChangeIds + end hnote + deactivate DB + end + + ref over SETTLE_DAO, DB: Settlement Transfer Abort\n\n**Inputs**: settlementId, transactionTimestamp, enums, trx\n + + group Bulk insert and reset contents & aggregations + SETTLE_DAO -> DB: Bulk insert aborted state + activate DB + hnote over DB #lightyellow + settlementWindowContentStateChange + end hnote + SETTLE_DAO <-- DB: Return **swcscIdList** + deactivate DB + + SETTLE_DAO -> SETTLE_DAO: Merge swcscIdList + + SETTLE_DAO -> DB: Update current state references and reset settlementId + activate DB + hnote over DB #lightyellow + **settlementWindowContent** + .currentStateChangeIds + .settlementId + **settlementContentAggregation** + .settlementId + end hnote + deactivate DB + end + + group Bulk insert settlementWindowStateChange + SETTLE_DAO -> DB: Insert settlementWindowStateChange + activate DB + hnote over DB #lightyellow + settlementWindowStateChange + end hnote + SETTLE_DAO <-- DB: Return **swscIdList** + deactivate DB + + SETTLE_DAO -> SETTLE_DAO: Merge swscIdList into windowList + + SETTLE_DAO -> DB: Update all pointers to current state change ids + activate DB + hnote over DB #lightyellow + UPDATE **settlementWindow**.currentStateChangeIds + end hnote + deactivate DB + end + + group Insert settlementStateChange + SETTLE_DAO -> DB: Insert settlementStateChange + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementStateChange** + (settlementId, settlementStateId, reason) + VALUES ({id}, 'ABORTED', {abortReasonString}) + end hnote + SETTLE_DAO <-- DB: Return **settlementStateChangeId** + deactivate DB + + SETTLE_DAO -> DB: Update pointer to current state change id + activate DB + hnote over DB #lightyellow + UPDATE **settlement**.currentStateChangeId + end hnote + deactivate DB + end + end + SSAPI <-- SETTLE_DAO: Return facade method result + deactivate SETTLE_DAO + + alt success + note left of SSAPI #yellow + { + "id": {id}, + "state": 'ABORTED', + "reason": {abortReasonString} + } + end note + + SSAPI --> OPERATOR: Respond HTTP - 200 (OK) + else + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + errorInformation: { + "errorCode": , + "errorDescription": "Client/Server error description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP 4xx or 5xx\n(Client/Server error) + deactivate SSAPI + end +end +deactivate OPERATOR +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.svg new file mode 100644 index 000000000..38256e7a0 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.svg @@ -0,0 +1,801 @@ + + + + + + + + + + + 6.2.6. Settlement Abort (abortSettlementById) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Settlement Abort + + + + + { + + + "state": "ABORTED", + + + "reason": {abortReasonString} + + + } + + + + + 1 + + + PUT - /settlement/{id} + + + + + 2 + + + abortSettlementById facade method + + + Error code: + + + 2001 + + + + + 3 + + + Retrieve settlement information + + + + SELECT s.settlementId, ssc.settlementStateId, + + + ssc.reason, ssc.createdDate + + + FROM + + + settlement + + + s + + + JOIN + + + settlementStateChange + + + ssc + + + ON ssc.settlementStateChangeId = s.currentStateChangeId + + + WHERE s.settlementId = {id} + + + + + 4 + + + Return + + + settlementData + + + + + alt + + + [settlementData.settlementStateId == 'PS_TRANSFERS_COMMITTED'|| + + + settlementData.settlementStateId == 'SETTLING'|| + + + settlementData.settlementStateId == 'SETTLED'] + + + + + break + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "State change is not allowed" + + + } + + + } + + + + [settlementData.settlementStateId == 'ABORTED'] + + + + + break + + + + + 5 + + + Append additional info at settlement level + + + + INSERT INTO + + + settlementStateChange + + + (settlementId, settlementStateId, reason) + + + VALUES ({id}, 'ABORTED', {abortReasonString}) + + + + + { + + + "id": {id}, + + + "state": 'ABORTED', + + + "reason": {abortReasonString} + + + } + + + + [settlementData.settlementStateId == 'PS_TRANSFERS_RESERVED'] + + + + + 6 + + + Find account in PS_TRANSFERS_COMMITTED + + + + SELECT spc.participantCurrencyId + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = spc.currentStateChangeId + + + WHERE spc.settlementId = {id} + + + AND spcsc.settlementStateId = 'PS_TRANSFERS_COMMITTED' + + + LIMIT 1 + + + + + 7 + + + Return + + + transferCommittedAccount + + + + + break + + + [transferCommittedAccount != undefined] + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "At least one settlement transfer is committed" + + + } + + + } + + + + + DB TRANSACTION + + + + + 8 + + + Retrive settlement accounts information + + + + SELECT pc.participantId, spc.participantCurrencyId, + + + spcsc.settlementStateId, spcsc.reason, + + + spcsc.createdDate, spc.netAmount, pc.currencyId, + + + spc.settlementParticipantCurrencyId AS + + + key + + + FROM + + + settlementParticipantCurrency + + + spc + + + JOIN + + + settlementParticipantCurrencyStateChange + + + spcsc + + + ON spcsc.settlementParticipantCurrencyStateChangeId = + + + spc.currentStateChangeId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = spc.participantCurrencyId + + + WHERE spc.settlementId = {id} + + + FOR UPDATE + + + + + 9 + + + Return + + + settlementAccountsList + + + + + 10 + + + Retrive settlement windows information + + + + SELECT ssw.settlementWindowId, swsc.settlementWindowStateId, + + + swsc.reason, swsc.createdDate + + + FROM + + + settlementSettlementWindow + + + ssw + + + JOIN + + + settlementWindow + + + sw + + + ON sw.settlementWindow = ssw.settlementWindowId + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + WHERE ssw.settlementId = {id} + + + FOR UPDATE + + + + + 11 + + + Return + + + windowsList + + + + + Bulk insert settlementParticipantCurrencyStateChange + + + + + 12 + + + Insert settlementParticipantCurrencyStateChange + + + + settlementParticipantCurrencyStateChange + + + + + 13 + + + Return + + + spcscIdList + + + + + 14 + + + Merge spcscIdList into settlementAccountsList + + + + + 15 + + + Update all pointers to current state change ids + + + + UPDATE + + + settlementParticipantCurrency + + + .currentStateChangeIds + + + + + ref + + + Settlement Transfer Abort + + + Inputs + + + : settlementId, transactionTimestamp, enums, trx + + + + + Bulk insert and reset contents & aggregations + + + + + 16 + + + Bulk insert aborted state + + + + settlementWindowContentStateChange + + + + + 17 + + + Return + + + swcscIdList + + + + + 18 + + + Merge swcscIdList + + + + + 19 + + + Update current state references and reset settlementId + + + + settlementWindowContent + + + .currentStateChangeIds + + + .settlementId + + + settlementContentAggregation + + + .settlementId + + + + + Bulk insert settlementWindowStateChange + + + + + 20 + + + Insert settlementWindowStateChange + + + + settlementWindowStateChange + + + + + 21 + + + Return + + + swscIdList + + + + + 22 + + + Merge swscIdList into windowList + + + + + 23 + + + Update all pointers to current state change ids + + + + UPDATE + + + settlementWindow + + + .currentStateChangeIds + + + + + Insert settlementStateChange + + + + + 24 + + + Insert settlementStateChange + + + + INSERT INTO + + + settlementStateChange + + + (settlementId, settlementStateId, reason) + + + VALUES ({id}, 'ABORTED', {abortReasonString}) + + + + + 25 + + + Return + + + settlementStateChangeId + + + + + 26 + + + Update pointer to current state change id + + + + UPDATE + + + settlement + + + .currentStateChangeId + + + + + 27 + + + Return facade method result + + + + + alt + + + [success] + + + + + { + + + "id": {id}, + + + "state": 'ABORTED', + + + "reason": {abortReasonString} + + + } + + + + + 28 + + + Respond HTTP - 200 (OK) + + + + + + Log ERROR event + + + + + { + + + errorInformation: { + + + "errorCode": <integer>, + + + "errorDescription": "Client/Server error description" + + + } + + + } + + + + + 29 + + + Respond HTTP 4xx or 5xx + + + (Client/Server error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.plantuml new file mode 100644 index 000000000..4bf530146 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.plantuml @@ -0,0 +1,123 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.1.1. Request Settlement Window By Id (getSettlementWindowById) + +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Request Settlement Window + activate OPERATOR + OPERATOR -> SSAPI: GET - /settlementWindows/{id} + activate SSAPI + SSAPI -> SETTLE_DAO: Request settlementWindow by id\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Select from DB + activate DB + hnote over DB #lightyellow + SELECT sw.settlementWindowId, swsc.settlementWindowStateId, + swsc.reason, sw.createdDate, swsc.createdDate changedDate + FROM **settlementWindow** AS sw + JOIN **settlementWindowStateChange** AS swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + WHERE sw.settlementWindowId = {id} + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **data** + deactivate SETTLE_DAO + + alt settlementWindow found + SSAPI -> SETTLE_DAO: Request settlementWindowContent(s)\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Select from DB + activate DB + hnote over DB #lightyellow + settlementWindowContent + settlementWindowContentStateChange + ledgerAccountType + end hnote + deactivate DB + SSAPI <-- SETTLE_DAO: Return **contentList** + deactivate SETTLE_DAO + note left of SSAPI #yellow + { + "id": data.settlementWindowId, + "state": data.settlementWindowStateId, + "reason": data.reason, + "createdDate": data.createdDate, + "changedDate": data.changedDate, + "content": [ + { + "id": contentList.settlementWindowContentId, + "state": contentList.settlementWindowStateId, + "ledgerAccountType": contentList.ledgerAccountType, + "currencyId": contentList.currencyId, + "createdDate": contentList.createdDate, + "changedDate": contentList.changedDate, + "settlementId": contentList.settlementId + } + ] + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 200 (OK) + else + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + "errorInformation": { + "errorCode": , + "errorDescription": + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + deactivate SSAPI + deactivate OPERATOR + end +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.svg new file mode 100644 index 000000000..7ce3f9839 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + 6.1.1. Request Settlement Window By Id (getSettlementWindowById) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Request Settlement Window + + + + + 1 + + + GET - /settlementWindows/{id} + + + + + 2 + + + Request settlementWindow by id + + + Error code: + + + 2001 + + + + + 3 + + + Select from DB + + + + SELECT sw.settlementWindowId, swsc.settlementWindowStateId, + + + swsc.reason, sw.createdDate, swsc.createdDate changedDate + + + FROM + + + settlementWindow + + + AS sw + + + JOIN + + + settlementWindowStateChange + + + AS swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + WHERE sw.settlementWindowId = {id} + + + + + 4 + + + Return + + + data + + + + + alt + + + [settlementWindow found] + + + + + 5 + + + Request settlementWindowContent(s) + + + Error code: + + + 2001 + + + + + 6 + + + Select from DB + + + + settlementWindowContent + + + settlementWindowContentStateChange + + + ledgerAccountType + + + + + 7 + + + Return + + + contentList + + + + + { + + + "id": data.settlementWindowId, + + + "state": data.settlementWindowStateId, + + + "reason": data.reason, + + + "createdDate": data.createdDate, + + + "changedDate": data.changedDate, + + + "content": [ + + + { + + + "id": contentList.settlementWindowContentId, + + + "state": contentList.settlementWindowStateId, + + + "ledgerAccountType": contentList.ledgerAccountType, + + + "currencyId": contentList.currencyId, + + + "createdDate": contentList.createdDate, + + + "changedDate": contentList.changedDate, + + + "settlementId": contentList.settlementId + + + } + + + ] + + + } + + + + + 8 + + + Respond HTTP - 200 (OK) + + + + + + Log ERROR event + + + + + { + + + "errorInformation": { + + + "errorCode": <integer>, + + + "errorDescription": <string> + + + } + + + } + + + + + 9 + + + Respond HTTP - 4xx (Client error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.plantuml new file mode 100644 index 000000000..79c75a058 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.plantuml @@ -0,0 +1,374 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.1.2. Close Settlement Window (closeSettlementWindow) + +autonumber + +' declare actors +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +collections "topic-\nsettlement-window" as TOPIC_SET_WIN +control "Settlement Window\nHandler" as SET_WIN_HANDLER +collections "topic-event" as TOPIC_EVENT +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant TOPIC_SET_WIN + participant SET_WIN_HANDLER + participant TOPIC_EVENT + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow +group Close Settlement Window + activate OPERATOR + activate SET_WIN_HANDLER + note right of OPERATOR #yellow + { + "state": "CLOSED", + "reason": + } + end note + + OPERATOR -> SSAPI: POST - /settlementWindows/{id} + activate SSAPI + SSAPI -> SSAPI: Validate payload, existing window,\nstate, assigned transfers, etc. + break + note right of SSAPI #yellow + { + "errorInformation": { + "errorCode": , + "errorDescription": "FSPIOP Error Description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 400 (Bad Request) + end + SSAPI -> SETTLE_DAO: Get requested settlementWindow and state\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Get settlementWindow state + activate DB + hnote over DB #lightyellow + SELECT sw.settlementWindowId, swsc.settlementWindowStateId, + swsc.reason, sw.createdDate, swsc.createdDate changedDate + FROM **settlementWindow** AS sw + JOIN **settlementWindowStateChange** AS swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + WHERE sw.settlementWindowId = {id} + end hnote + deactivate DB + SETTLE_DAO --> SSAPI: Return result + deactivate SETTLE_DAO + + alt settlementWindow found && settlementWindowStateId == 'OPEN' + group Process settlement window + SSAPI -> SETTLE_DAO: Terminate current window and open a new one\nError code: 2001 + activate SETTLE_DAO + group DB TRANSACTION: Terminate window usage and initate next + note right of SETTLE_DAO #lightgray + let **transactionTimestamp** = now() + end note + + SETTLE_DAO -> DB: Terminate requested window + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementWindowStateChange** + (settlementWindowId, settlementWindowStateId, reason, createdDate) + VALUES ({id}, 'PROCESSING', {payload.reason}, {transactionTimestamp}) + end hnote + SETTLE_DAO <-- DB: Return **settlementWindowStateChangeId** + deactivate DB + + SETTLE_DAO -> DB: Update pointer to current state change id + activate DB + hnote over DB #lightyellow + UPDATE **settlementWindow** + SET currentStateChangeId = {settlementWindowStateChangeId} + WHERE settlementWindowId = {id} + end hnote + deactivate DB + + SETTLE_DAO -> DB: Create new settlementWindow + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementWindow** (reason, createdDate) + VALUES ({payload.reason}, {transactionTimestamp}) + end note + SETTLE_DAO <-- DB: Return **settlementWindowId** + deactivate DB + + SETTLE_DAO -> DB: Insert intial state for the created window + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementWindowStateChange** + (settlementWindowId, settlementWindowStateId, reason, createdDate) + VALUES ({settlementWindowId}, 'OPEN', {payload.reason}, {transactionTimestamp}) + end note + SETTLE_DAO <-- DB: Return **newSettlementWindowStateChangeId** + deactivate DB + + SETTLE_DAO -> DB: Update pointer to current state change id + activate DB + hnote over DB #lightyellow + UPDATE **settlementWindow** + SET currentStateChangeId = {newSettlementWindowStateChangeId} + WHERE settlementWindowId = {settlementWindowId} + end hnote + deactivate DB + end + SSAPI <-- SETTLE_DAO: Return success + deactivate SETTLE_DAO + end + + note right of SSAPI #yellow + Message: + { + id: + from: switch, + to: switch, + type: application/json + content: { + payload: { + settlementWindowId: {id} + } + }, + metadata: { + event: { + id: , + responseTo: null, + type: setwin, + action: close, + createdAt: , + state: { + status: "success", + code: 0 + } + } + } + } + end note + SSAPI -> TOPIC_SET_WIN: Produce Settlement Window\nevent message\nError codes: 2003 + activate TOPIC_SET_WIN + deactivate TOPIC_SET_WIN + + note left of SSAPI #yellow + { + "id": settlementWindowId, + "state": 'OPEN', + "reason": payload.reason, + "createdDate": transactionTimestamp, + "changedDate": transactionTimestamp + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 201 (Created) + deactivate SSAPI + deactivate OPERATOR + + group Close settlement window (Deferred Handler) + TOPIC_SET_WIN <- SET_WIN_HANDLER: Consume Settlement Window\nevent message + activate TOPIC_SET_WIN + deactivate TOPIC_SET_WIN + + group Persist Event Information + ||| + SET_WIN_HANDLER -> TOPIC_EVENT: Publish event information + ref over SET_WIN_HANDLER, TOPIC_EVENT: Event Handler Consume\n + ||| + end + note right of SET_WIN_HANDLER #lightgray + let **id** = message.content.payload.settlementWindowId + let **windowContentReady** = false + let **iter** = 0 + end note + + loop iter < Config.WIN_AGGREGATION_RETRY_COUNT && !windowContentReady + note right of SET_WIN_HANDLER #lightgray + iter++ + end note + + SET_WIN_HANDLER -> SETTLE_DAO: Check if all transferParticipant records\nfor the requested window have been set\n(currentStateChangeId is NOT NULL).\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Use EXISTS query to find NULL currentStateChangeId records + activate DB + hnote over DB #lightyellow + transferFulfilment + transferParticipant + end hnote + deactivate DB + SET_WIN_HANDLER <-- SETTLE_DAO: Return result (success / failure) + deactivate SETTLE_DAO + + opt transferParticipant records have been processed by central-ledger SettlementModelHandler + SET_WIN_HANDLER -> SETTLE_DAO: Generate window content and aggregations\nError code: 2001 + activate SETTLE_DAO + group DB TRANSACTION: Generate window content and aggregations + note right of SETTLE_DAO #lightgray + let **transactionTimestamp** = now() + end note + + SETTLE_DAO -> DB: Change all applicable entries to CLOSED state + activate DB + hnote over DB #lightyellow + transferParticipantStateChange + transferParticipant + + end hnote + deactivate DB + + SETTLE_DAO -> DB: Determine window content and insert + activate DB + SETTLE_DAO -> DB: Get all Settlement Models + SETTLE_DAO -> SETTLE_DAO: create Settlement Models <-> currencyId map + SETTLE_DAO -> SETTLE_DAO: create list of currencies with Settlement Models + SETTLE_DAO -> DB: Get Settlement Window Content list + hnote over DB #lightyellow + SELECT DISTINCT {id} settlementWindowId, pc.ledgerAccountTypeId, + pc.currencyId, m.settlementModelId + FROM **transferFulfilment** tf + JOIN **transferParticipant** tp + ON tp.transferId = tf.transferId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = tp.participantCurrencyId + JOIN **settlementModel** m + ON m.ledgerAccountTypeId = pc.ledgerAccountTypeId + WHERE tf.settlementWindowId = {id} + AND m.settlementGranularityId = 'NET' + end hnote + SETTLE_DAO -> SETTLE_DAO: filter swcList to add currency to each record based on model + SETTLE_DAO -> DB: Insert filtered list + deactivate DB + + SETTLE_DAO -> DB: Aggregate window data and insert + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementContentAggregation** (settlementWindowContentId, participantCurrencyId, + transferParticipantRoleTypeId, ledgerEntryTypeId, currentStateId, createdDate, amount) + SELECT swc.settlementWindowContentId, pc.participantCurrencyId, tp.transferParticipantRoleTypeId, + tp.ledgerEntryTypeId, 'CLOSED', transactionTimestamp, SUM(tp.amount) + FROM **transferFulfilment** tf + JOIN **transferParticipant** tp + ON tf.transferId = tp.transferId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = tp.participantCurrencyId + JOIN **settlementWindowContent** swc + ON swc.settlementWindowId = tf.settlementWindowId + AND swc.ledgerAccountTypeId = pc.ledgerAccountTypeId + AND swc.currencyId = pc.currencyId + JOIN **settlementModel** m + ON m.settlementModelId = swc.settlementModelId + WHERE ttf.settlementWindowId = {id} + GROUP BY swc.settlementWindowContentId, pc.participantCurrencyId, + tp.transferParticipantRoleTypeId, tp.ledgerEntryTypeId + end hnote + deactivate DB + + SETTLE_DAO -> DB: Insert initial window content state change + activate DB + hnote over DB #lightyellow + INSERT INTO **settlementWindowContentStateChange** + (settlementWindowContentId, settlementWindowStateId) + SELECT swc.settlementWindowContentId, 'CLOSED' + FROM **settlementWindowContent** swc + WHERE swc.settlementWindowId = {id} + end hnote + deactivate DB + + SETTLE_DAO -> DB: Update pointers to current state change ids + activate DB + hnote over DB #lightyellow + settlementWindowContent + end hnote + deactivate DB + end + SETTLE_DAO --> SET_WIN_HANDLER: Return result (success / failure) + deactivate SETTLE_DAO + end + + alt success + note right of SET_WIN_HANDLER #lightgray + windowContentReady = true + end note + SET_WIN_HANDLER -> SETTLE_DAO: Close requested window\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Change window state to 'CLOSED' + activate DB + hnote over DB #lightyellow + settlementWindowStateChange + settlementWindow.currentStateChangeId + end hnote + deactivate DB + deactivate SETTLE_DAO + else failure && iter < Config.WIN_AGGREGATION_RETRY_COUNT + note right of SET_WIN_HANDLER #lightgray + **sleep** Config.WIN_AGGREGATION_RETRY_INTERVAL seconds + end note + else failure + SET_WIN_HANDLER -> SETTLE_DAO: Fail requested window\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Change window state to 'FAILED' + activate DB + hnote over DB #lightyellow + settlementWindowStateChange + settlementWindow.currentStateChangeId + end hnote + deactivate DB + deactivate SETTLE_DAO + + SET_WIN_HANDLER ->> SET_WIN_HANDLER: Log ERROR event + end + end + end + else + SSAPI ->> SSAPI: Log ERROR event + activate SSAPI + note left of SSAPI #yellow + { + "errorInformation": { + "errorCode": , + "errorDescription": "Client error description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + deactivate SSAPI + activate OPERATOR + end + deactivate OPERATOR + deactivate SET_WIN_HANDLER +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.svg new file mode 100644 index 000000000..19abe69d4 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.svg @@ -0,0 +1,1135 @@ + + + + + + + + + + + 6.1.2. Close Settlement Window (closeSettlementWindow) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + + + topic- + + + settlement-window + + + + + topic- + + + settlement-window + + + Settlement Window + + + Handler + + + + + Settlement Window + + + Handler + + + + + + + topic-event + + + + + topic-event + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Close Settlement Window + + + + + { + + + "state": "CLOSED", + + + "reason": <string> + + + } + + + + + 1 + + + POST - /settlementWindows/{id} + + + + + 2 + + + Validate payload, existing window, + + + state, assigned transfers, etc. + + + + + break + + + + + { + + + "errorInformation": { + + + "errorCode": <integer>, + + + "errorDescription": "FSPIOP Error Description" + + + } + + + } + + + + + 3 + + + Respond HTTP - 400 (Bad Request) + + + + + 4 + + + Get requested settlementWindow and state + + + Error code: + + + 2001 + + + + + 5 + + + Get settlementWindow state + + + + SELECT sw.settlementWindowId, swsc.settlementWindowStateId, + + + swsc.reason, sw.createdDate, swsc.createdDate changedDate + + + FROM + + + settlementWindow + + + AS sw + + + JOIN + + + settlementWindowStateChange + + + AS swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + WHERE sw.settlementWindowId = {id} + + + + + 6 + + + Return result + + + + + alt + + + [settlementWindow found && settlementWindowStateId == 'OPEN'] + + + + + Process settlement window + + + + + 7 + + + Terminate current window and open a new one + + + Error code: + + + 2001 + + + + + DB TRANSACTION: Terminate window usage and initate next + + + + + let + + + transactionTimestamp + + + = now() + + + + + 8 + + + Terminate requested window + + + + INSERT INTO + + + settlementWindowStateChange + + + (settlementWindowId, settlementWindowStateId, reason, createdDate) + + + VALUES ({id}, 'PROCESSING', {payload.reason}, {transactionTimestamp}) + + + + + 9 + + + Return + + + settlementWindowStateChangeId + + + + + 10 + + + Update pointer to current state change id + + + + UPDATE + + + settlementWindow + + + SET currentStateChangeId = {settlementWindowStateChangeId} + + + WHERE settlementWindowId = {id} + + + + + 11 + + + Create new settlementWindow + + + + INSERT INTO + + + settlementWindow + + + (reason, createdDate) + + + VALUES ({payload.reason}, {transactionTimestamp}) + + + + + 12 + + + Return + + + settlementWindowId + + + + + 13 + + + Insert intial state for the created window + + + + INSERT INTO + + + settlementWindowStateChange + + + (settlementWindowId, settlementWindowStateId, reason, createdDate) + + + VALUES ({settlementWindowId}, 'OPEN', {payload.reason}, {transactionTimestamp}) + + + + + 14 + + + Return + + + newSettlementWindowStateChangeId + + + + + 15 + + + Update pointer to current state change id + + + + UPDATE + + + settlementWindow + + + SET currentStateChangeId = {newSettlementWindowStateChangeId} + + + WHERE settlementWindowId = {settlementWindowId} + + + + + 16 + + + Return success + + + + + Message: + + + { + + + id: <uuid> + + + from: switch, + + + to: switch, + + + type: application/json + + + content: { + + + payload: { + + + settlementWindowId: {id} + + + } + + + }, + + + metadata: { + + + event: { + + + id: <uuid>, + + + responseTo: null, + + + type: setwin, + + + action: close, + + + createdAt: <timestamp>, + + + state: { + + + status: "success", + + + code: 0 + + + } + + + } + + + } + + + } + + + + + 17 + + + Produce Settlement Window + + + event message + + + Error codes: + + + 2003 + + + + + { + + + "id": settlementWindowId, + + + "state": 'OPEN', + + + "reason": payload.reason, + + + "createdDate": transactionTimestamp, + + + "changedDate": transactionTimestamp + + + } + + + + + 18 + + + Respond HTTP - 201 (Created) + + + + + Close settlement window (Deferred Handler) + + + + + 19 + + + Consume Settlement Window + + + event message + + + + + Persist Event Information + + + + + 20 + + + Publish event information + + + + + ref + + + Event Handler Consume + + + + + let + + + id + + + = message.content.payload.settlementWindowId + + + let + + + windowContentReady + + + = false + + + let + + + iter + + + = 0 + + + + + loop + + + [iter < Config.WIN_AGGREGATION_RETRY_COUNT && !windowContentReady] + + + + + iter++ + + + + + 21 + + + Check if all transferParticipant records + + + for the requested window have been set + + + (currentStateChangeId is NOT NULL). + + + Error code: + + + 2001 + + + + + 22 + + + Use EXISTS query to find NULL currentStateChangeId records + + + + transferFulfilment + + + transferParticipant + + + + + 23 + + + Return result (success / failure) + + + + + opt + + + [transferParticipant records have been processed by central-ledger SettlementModelHandler] + + + + + 24 + + + Generate window content and aggregations + + + Error code: + + + 2001 + + + + + DB TRANSACTION: Generate window content and aggregations + + + + + let + + + transactionTimestamp + + + = now() + + + + + 25 + + + Change all applicable entries to CLOSED state + + + + transferParticipantStateChange + + + transferParticipant + + + + + 26 + + + Determine window content and insert + + + + + 27 + + + Get all Settlement Models + + + + + 28 + + + create Settlement Models <-> currencyId map + + + + + 29 + + + create list of currencies with Settlement Models + + + + + 30 + + + Get Settlement Window Content list + + + + SELECT DISTINCT {id} settlementWindowId, pc.ledgerAccountTypeId, + + + pc.currencyId, m.settlementModelId + + + FROM + + + transferFulfilment + + + tf + + + JOIN + + + transferParticipant + + + tp + + + ON tp.transferId = tf.transferId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = tp.participantCurrencyId + + + JOIN + + + settlementModel + + + m + + + ON m.ledgerAccountTypeId = pc.ledgerAccountTypeId + + + WHERE tf.settlementWindowId = {id} + + + AND m.settlementGranularityId = 'NET' + + + + + 31 + + + filter swcList to add currency to each record based on model + + + + + 32 + + + Insert filtered list + + + + + 33 + + + Aggregate window data and insert + + + + INSERT INTO + + + settlementContentAggregation + + + (settlementWindowContentId, participantCurrencyId, + + + transferParticipantRoleTypeId, ledgerEntryTypeId, currentStateId, createdDate, amount) + + + SELECT swc.settlementWindowContentId, pc.participantCurrencyId, tp.transferParticipantRoleTypeId, + + + tp.ledgerEntryTypeId, 'CLOSED', transactionTimestamp, SUM(tp.amount) + + + FROM + + + transferFulfilment + + + tf + + + JOIN + + + transferParticipant + + + tp + + + ON tf.transferId = tp.transferId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = tp.participantCurrencyId + + + JOIN + + + settlementWindowContent + + + swc + + + ON swc.settlementWindowId = tf.settlementWindowId + + + AND swc.ledgerAccountTypeId = pc.ledgerAccountTypeId + + + AND swc.currencyId = pc.currencyId + + + JOIN + + + settlementModel + + + m + + + ON m.settlementModelId = swc.settlementModelId + + + WHERE ttf.settlementWindowId = {id} + + + GROUP BY swc.settlementWindowContentId, pc.participantCurrencyId, + + + tp.transferParticipantRoleTypeId, tp.ledgerEntryTypeId + + + + + 34 + + + Insert initial window content state change + + + + INSERT INTO + + + settlementWindowContentStateChange + + + (settlementWindowContentId, settlementWindowStateId) + + + SELECT swc.settlementWindowContentId, 'CLOSED' + + + FROM + + + settlementWindowContent + + + swc + + + WHERE swc.settlementWindowId = {id} + + + + + 35 + + + Update pointers to current state change ids + + + + settlementWindowContent + + + + + 36 + + + Return result (success / failure) + + + + + alt + + + [success] + + + + + windowContentReady = true + + + + + 37 + + + Close requested window + + + Error code: + + + 2001 + + + + + 38 + + + Change window state to 'CLOSED' + + + + settlementWindowStateChange + + + settlementWindow.currentStateChangeId + + + + [failure && iter < Config.WIN_AGGREGATION_RETRY_COUNT] + + + + + sleep + + + Config.WIN_AGGREGATION_RETRY_INTERVAL seconds + + + + [failure] + + + + + 39 + + + Fail requested window + + + Error code: + + + 2001 + + + + + 40 + + + Change window state to 'FAILED' + + + + settlementWindowStateChange + + + settlementWindow.currentStateChangeId + + + + 41 + + + Log ERROR event + + + + + 42 + + + Log ERROR event + + + + + { + + + "errorInformation": { + + + "errorCode": <integer>, + + + "errorDescription": "Client error description" + + + } + + + } + + + + + 43 + + + Respond HTTP - 4xx (Client error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.plantuml b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.plantuml new file mode 100644 index 000000000..c6b7a81ae --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.plantuml @@ -0,0 +1,121 @@ +/'***** + License + -------------- + Copyright © 2017 Bill & Melinda Gates Foundation + The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + Contributors + -------------- + This is the official list of the Mojaloop project contributors for this file. + Names of the original copyright holders (individuals or organizations) + should be listed with a '*' in the first column. People who have + contributed from an organization can be listed under the organization + that actually holds the copyright for their contributions (see the + Gates Foundation organization for an example). Those individuals should have + their names indented and be marked with a '-'. Email address can be added + optionally within square brackets . + * Gates Foundation + - Name Surname + + * ModusBox + - Georgi Georgiev + -------------- + ******'/ + +@startuml +' declate title +title 6.1.3. Get Settlement Windows By Parameters (getSettlementWindowsByParams) + +autonumber + +' declare actors + +actor "Hub Employee" as OPERATOR +boundary "Settlement Service API" as SSAPI +entity "Settlement DAO" as SETTLE_DAO +database "Central Store" as DB + +box "Central HUB" #lightpink + participant OPERATOR +end box + +box "Settlement Service" #lightgreen + participant SSAPI + participant SETTLE_DAO +end box + +box "Central Services" #lightyellow + participant DB +end box + +' start flow + +group Get Settlement Windows By Parameters + activate OPERATOR + note right of OPERATOR #yellow + **Params:** + ?participantId={participantId} + &state={state} + &fromDateTime={fromDateTime} + &toDateTime={toDateTime} + end note + OPERATOR -> SSAPI: GET - /settlementWindows/{params} + activate SSAPI + SSAPI -> SETTLE_DAO: Request settlementWindow\nError code: 2001 + activate SETTLE_DAO + SETTLE_DAO -> DB: Request settlementWindows + activate DB + hnote over DB #lightyellow + SELECT DISTINCT sw.settlementId, swsc.settlementWindowStateId, + swsc.reason, sw.createdDate, swsc.createdDate changedDate + FROM **settlementWindow** sw + JOIN **settlementWindowStateChange** swsc + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + JOIN **transferFulfilment** tf + ON tf.settlementWindowId = sw.settlementWindowId + JOIN **transferParticipant** tp + ON tp.transferId = tf.transferId + JOIN **participantCurrency** pc + ON pc.participantCurrencyId = tp.participantCurrencyId + [WHERE pc.participantId = {participantId}] + [AND swsc.settlementWindowStateId = {state}] + [AND sw.createdDate >= {fromDateTime}] + [AND sw.createdDate <= {toDateTime}] + + end hnote + SETTLE_DAO <-- DB: Return data + deactivate DB + SSAPI <-- SETTLE_DAO: Return **settlementWindows** + deactivate SETTLE_DAO + alt One or more records found + note left of SSAPI #yellow + [ + { + "id": settlementWindow.settlementId, + "state": settlementWindow.settlementWindowStateId, + "reason": settlementWindow.reason, + "createdDate": settlementWindow.createdDate, + "changedDate": settlementWindow.changedDate + } + ] + end note + OPERATOR <-- SSAPI: Respond HTTP - 200 (OK) + else + note right of SSAPI #lightgray + Log ERROR event + end note + note left of SSAPI #yellow + { + "errorInformation": { + "errorCode": , + "errorDescription": "Client error description" + } + } + end note + OPERATOR <-- SSAPI: Respond HTTP - 4xx (Client error) + deactivate SSAPI + deactivate OPERATOR + end +end +@enduml diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.svg b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.svg new file mode 100644 index 000000000..090e598ac --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + 6.1.3. Get Settlement Windows By Parameters (getSettlementWindowsByParams) + + + + Central HUB + + + + Settlement Service + + + + Central Services + + + + + + + + Hub Employee + + + + + Hub Employee + + + + + Settlement Service API + + + + + Settlement Service API + + + + + Settlement DAO + + + + + Settlement DAO + + + + + Central Store + + + + + Central Store + + + + + + + + Get Settlement Windows By Parameters + + + + + Params: + + + ?participantId={participantId} + + + &state={state} + + + &fromDateTime={fromDateTime} + + + &toDateTime={toDateTime} + + + + + 1 + + + GET - /settlementWindows/{params} + + + + + 2 + + + Request settlementWindow + + + Error code: + + + 2001 + + + + + 3 + + + Request settlementWindows + + + + SELECT DISTINCT sw.settlementId, swsc.settlementWindowStateId, + + + swsc.reason, sw.createdDate, swsc.createdDate changedDate + + + FROM + + + settlementWindow + + + sw + + + JOIN + + + settlementWindowStateChange + + + swsc + + + ON swsc.settlementWindowStateChangeId = sw.currentStateChangeId + + + JOIN + + + transferFulfilment + + + tf + + + ON tf.settlementWindowId = sw.settlementWindowId + + + JOIN + + + transferParticipant + + + tp + + + ON tp.transferId = tf.transferId + + + JOIN + + + participantCurrency + + + pc + + + ON pc.participantCurrencyId = tp.participantCurrencyId + + + [WHERE pc.participantId = {participantId}] + + + [AND swsc.settlementWindowStateId = {state}] + + + [AND sw.createdDate >= {fromDateTime}] + + + [AND sw.createdDate <= {toDateTime}] + + + + + 4 + + + Return data + + + + + 5 + + + Return + + + settlementWindows + + + + + alt + + + [One or more records found] + + + + + [ + + + { + + + "id": settlementWindow.settlementId, + + + "state": settlementWindow.settlementWindowStateId, + + + "reason": settlementWindow.reason, + + + "createdDate": settlementWindow.createdDate, + + + "changedDate": settlementWindow.changedDate + + + } + + + ] + + + + + 6 + + + Respond HTTP - 200 (OK) + + + + + + Log ERROR event + + + + + { + + + "errorInformation": { + + + "errorCode": <integer>, + + + "errorDescription": "Client error description" + + + } + + + } + + + + + 7 + + + Respond HTTP - 4xx (Client error) + + diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema-dbeaver.erd b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema-dbeaver.erd new file mode 100644 index 000000000..57065a8da --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema-dbeaver.erd @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + COLOR LEGEND: +Green - subject specific entity +Gray - transfer specific entity +Red - settlement specific entity +Blue - lookup entity + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema.png b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/assets/entities/central-settlements-db-schema.png new file mode 100644 index 0000000000000000000000000000000000000000..4930831f14146fbcfcd5c9c3561998bb44757d0d GIT binary patch literal 736476 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 b*muc^sQNab@{V6m16COB|XgmG~=` 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�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 z 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�`lDoAEWfN?U5611#439a&%YrH&4J6@Y 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 z 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 -yGAjg}l$$a1C2>aFs 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�#%xMU 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­3ybT-AO`J`5nqyzD+^s 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 z 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 X=RI=Bk9DxoznP@CtXQ_l^S}NV>2|T# literal 0 HcmV?d00001 diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-id.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-id.md new file mode 100644 index 000000000..6e086a50c --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-id.md @@ -0,0 +1,8 @@ +# Request Settlement + +Design for Get Settlement by Id process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.4.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-spa.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-spa.md new file mode 100644 index 000000000..bebda59db --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-by-spa.md @@ -0,0 +1,8 @@ +# Request Settlement By SPA + +Design for Get Settlement by Settlement/Participant/Account process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.3.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-window-by-id.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-window-by-id.md new file mode 100644 index 000000000..75ad34793 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-window-by-id.md @@ -0,0 +1,8 @@ +# Request Settlement Window + +Design for Request Settlement Window by Id process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.1.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-windows-by-params.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-windows-by-params.md new file mode 100644 index 000000000..4c2dcfe26 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlement-windows-by-params.md @@ -0,0 +1,8 @@ +# Settlement Windows By Params + +Design for Get Settlement Windows by Parameters process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.3.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlements-by-params.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlements-by-params.md new file mode 100644 index 000000000..0458a88ab --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/get-settlements-by-params.md @@ -0,0 +1,8 @@ +# Request Settlements By Params + +Design for Query Settlements by Parameters process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.2.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/gross-settlement-handler-consumer.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/gross-settlement-handler-consumer.md new file mode 100644 index 000000000..51e54594b --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/gross-settlement-handler-consumer.md @@ -0,0 +1,7 @@ +# Gross Settlement Handler + +Sequence design diagram for the gross settlement handler. + +## Sequence Diagram + +![example](assets/diagrams/sequence/seq-gross-settlement-handler.svg) diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-close-settlement-window.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-close-settlement-window.md new file mode 100644 index 000000000..20f9d1617 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-close-settlement-window.md @@ -0,0 +1,8 @@ +# Close Settlement Window + +Design for Close Settlement Window process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-setwindow-6.1.2.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-create-settlement.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-create-settlement.md new file mode 100644 index 000000000..07ab60084 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/post-create-settlement.md @@ -0,0 +1,8 @@ +# Create Settlement + +Design for Trigger Settlement Event process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.1.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-abort.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-abort.md new file mode 100644 index 000000000..b43b0646c --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-abort.md @@ -0,0 +1,8 @@ +# Settlement Abort + +Design for Settlement Abort process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.6.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-transfer-ack.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-transfer-ack.md new file mode 100644 index 000000000..3c29eb012 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/put-settlement-transfer-ack.md @@ -0,0 +1,8 @@ +# Settlement Transfer Acknowledgment + +Design for Acknowledgement of Settlement Transfer process. + +## Sequence Diagram + +{% uml src="mojaloop-technical-overview/central-settlements/settlement-process/assets/diagrams/sequence/seq-settlement-6.2.5.plantuml" %} +{% enduml %} diff --git a/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/rules-handler-consumer.md b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/rules-handler-consumer.md new file mode 100644 index 000000000..70270ae50 --- /dev/null +++ b/website/versioned_docs/v1.0.1/technical/central-settlements/settlement-process/rules-handler-consumer.md @@ -0,0 +1,169 @@ +Rules Handler. Interchange fees example. File format. +----------------------------------------------------- + +## Rules Handler +The Rules handler provides the capability to execute custom rule-based actions as a result of transfer processing events. +Here we are giving example with Interchange fee calculation. +## Sequence Diagram +![example](assets/diagrams/sequence/seq-rules-handler.svg) + +### Interchange fee case +In order to support the various options for accumulating interchange or other fees, we need to generate and settle liabilities incurred as a consequence of making transfers between particular types of customer. The general form of an example rule, that we are using to illustrate how it works is as follows: +- If the transaction is a wallet-to-wallet P2P transaction, then the receiver + DFSP pays the sender DFSP 0.6% of the amount of the transaction. +- No interchange fees are levied for on-us transactions. + +The business decisions around this requirement are: +1. The definition of whether or not a payee account is a wallet is + returned by the payee DFSP as part of customer discovery. In the process, the `extension` of the transaction should should be extended with characterization of the account. +2. Interchange fees are captured by the switch when there is a matching trigger condition. +3. Interchange fees have the ledger entry type INTERCHANGE_FEE and are + recorded in accounts whose type is INTERCHANGE_FEE. +4. Interchange fees are settled multilaterally, net and deferred. + _Make sure Settlement type and ledger account type for the INTERCHANGE FEE records are availabe_ + +This functionality is implemented as a general +process for defining and executing rules, and for taking actions based on the +outcome of evaluation of a rule. + +### Evaluating a rule +The process of evaluating a rule is based on the following assumptions: + +1. There is a standard form of rule evaluation with the following + structure: + 1. A transaction object is passed as the parameter to the rule + evaluation function. + 2. The rule evaluation itself uses a combination of simple and/or complex nested if statements + 3. If the rule evaluates to TRUE, then an action should be executeds + +An example of a rule function to evaluate an interchange fee rule could be: +```js +function evaluateInterchangeFee (transaction) { + if( + (transaction.payee.fspId.toLowerCase() != transaction.payer.fspId.toLowerCase()) + && (transaction.extensionList[“payerAccountType”].toLowerCase() == + "Wallet".toLowerCase() + && transaction.extensionList[“payeeAccountType”].toLowerCase() == + "Wallet".toLowerCase()) + && (transaction.transactionType.scenario.toLowerCase() == + "TRANSFER".toLowerCase() + && transaction.transactionType.initiator.toLowerCase() == "PAYER".toLowerCase() + && transaction.transactionType.initiatorType.toLowerCase() == + "CONSUMER".toLowerCase()) + ) + // Do some good stuff + }; +}; +``` + +### Taking action after evaluating a rule +If a rule evaluates to TRUE, then appropriate action is taken. In the case of the immediate example of interchange fees, the action taken should be to add two entries to the participants’ interchange fee accounts, on recording the debit from the payee of the interchange fee amount and the other recording the credit to the payer of the interchange fee amount. + +There is defined class with methods that represent the actions to be taken. The rule evaluation instatiates the class and calls the appropriate functions. + +In the case of the interchange fees, we have defined an action called +addLedgerEntry, with the following parameters: + +1. The transfer ID for which the ledger entry is being created +2. The ledger entry type to be used +3. The currency in which the amount is denominated +4. The amount of the fee +5. The FSP ID of the credit party +6. The FSP ID of the debit party + +This might appear in the rule evaluation function as: + +```js +myAction.addLedgerEntry(transaction.transactionId, + "INTERCHANGE_FEE“, + "INTERCHANGE_FEE“, + transaction.currency, + transaction.amount\*0.006, + transaction.payer.fspId, + transaction.payee.fspId); +``` +### Providing rules +The files should be placed in a scripts directory, configured by the value of the environmental variable `SETTINGS__SCRIPTS_FOLDER` +Each rule file should be valid JS with the specified headers content. The required headers should be in the exact order and format as they are in the example below the table. + +| Header | Description | Required | +| :- | :- | :-: | +| Name | Rule name | no | +| Type | Message event type. Corresponds to Kafka topic | yes | +| Action | Message event action. ex. Commit, Prepare, Log, etc | yes | +| Status | Status of the operation: success or failure | yes | +| Start | Time to start abiding the rule | yes | +| End | Until when the rule is valid | yes | +| Description | Rule description | no | + +Based on the headers the rule is evaluated to be triggered or not. + +In the below example rule script, a message on the `notification` topic with action `commit` and status `success` will trigger the code. + +```js +/* eslint-disable no-undef */ +// ******************************************************** +// Name: Interchange fee calculation +// Type: notification +// Action: commit +// Status: success +// Start: 2020-06-01T00:00:00.000Z +// End: 2100-12-31T23:59:59.999Z +// Description: This script calculates the interchange fees between DFSPs where the account type is "Wallet" +// ******************************************************** + +// ## Globals: +// payload: The contents of the message from the Kafka topic. +// transfer: The transfer object. + +// # Functions: +// ## Data retrieval functions: +// getTransferFromCentralLedger(transferId): Retrieves a mojaloop transfer from the central-ledger API. + +// ## Helper functions: +// getExtensionValue(list, key): Gets a value from an extension list +// log(message): allows the script to log to standard out for debugging purposes + +// Math functions: +// multiply(number1, number2, decimalPlaces): Uses ml-number to handle multiplication of money values + +// Ledger functions: +// addLedgerEntry: Adds a debit and credit ledger entry to the specified account to the specified DFSPs + +log(JSON.stringify(transfer)) +const payerFspId = transfer.payer.partyIdInfo.fspId +const payeeFspId = transfer.payee.partyIdInfo.fspId + +if ((payeeFspId !== payerFspId) && + (transfer.payee.partyIdInfo.extensionList && // WORKAROUND for issue #2149 + transfer.payer.partyIdInfo.extensionList && // WORKAROUND for issue #2149 + transfer.payee.partyIdInfo.extensionList.extension && // WORKAROUND for issue #2149 + transfer.payer.partyIdInfo.extensionList.extension) && // WORKAROUND for issue #2149 + (getExtensionValue(transfer.payee.partyIdInfo.extensionList.extension, 'accountType') === 'Wallet' && + getExtensionValue(transfer.payer.partyIdInfo.extensionList.extension, 'accountType') === 'Wallet') && + (transfer.transactionType.scenario === 'TRANSFER' && + transfer.transactionType.initiator === 'PAYER' && + transfer.transactionType.initiatorType === 'CONSUMER')) { + log(`Adding an interchange fee for Wallet to Wallet from ${payerFspId} to ${payeeFspId}`) + addLedgerEntry(payload.id, 'INTERCHANGE_FEE', // Ledger account type Id + 'INTERCHANGE_FEE', // Ledger entry type Id + multiply(transfer.amount.amount, 0.006, 2), + transfer.amount.currency, + payerFspId, + payeeFspId) +} +``` + +### Rules script API + +#### Globals + +* `payload` - The contents of the message from the Kafka topic that has the rules script triggered +* `transfer` - The transfer object +#### Functions + +* `getTransferFromCentralLedger(transferId: uuid)` - Retrieves a mojaloop transfer from the central-ledger API. +* `getExtensionValue(list: array, key: string)` - Gets a value from an extension list +* `log(message: string)`: allows the script to log to configured logger with level *INFO* for debugging purposes +* `multiply(number1: number, number2: number, decimalPlaces: number)`: Uses ml-number to handle multiplication of money values +* `addLedgerEntry(transferId: uuid, ledgerAccountTypeId: string, ledgerEntryTypeId: string, amount: number, currency: string, payerFspId: string, payeeFspId: string)`: Adds a debit and credit ledger entries with given legdger account type, amount and currency to the accounts of the specified DFSPs