# BC Transferts
Le BC Transferts est responsable de l'orchestration des demandes de transfert. Il fonctionne en concert avec plusieurs autres BCs, notamment Settlements, Scheduling, Participant Lifecycle Management, Accounts & Balances, ainsi que le FSPIOP.
# Termes
Les termes suivants sont utilisés dans ce BC, également appelé domaine.
| Terme | Description |
|---|---|
| Comptes | Désigne les comptes utilisés dans toutes les activités de transfert. Ils servent à enregistrer les positions créditrices et débitrices, soit de maniÚre temporaire dans le cas des comptes alloués spécifiquement pour les transferts, soit de façon permanente dans le cas des mises à jour finales sur les comptes des participants. |
| Participant/Acteur | Désigne généralement les parties DFSP Payer/Payee utilisant Mojaloop. |
| IGS | MĂ©thode de rĂšglement des transferts - RĂšglement Brut ImmĂ©diat (Immediate Gross Settlement). Ce processus est typiquement utilisĂ© dans les environnements Ă haut volume comme le commerce de dĂ©tail, et sâapplique aux comptes individuels ou partagĂ©s. Dans le cas de comptes partagĂ©s, le systĂšme met Ă jour les soldes des Participants en modifiant la valeur proportionnelle des fonds dĂ©tenus par chaque Participant sur le total disponible du compte. |
| DNS | MĂ©thode de rĂšglement des transferts - RĂšglement Net DiffĂ©rĂ© (Deferred Net Settlement). Ce processus est frĂ©quemment utilisĂ© dans les environnements oĂč un groupe de Participants rĂ©alise un transfert nĂ©cessitant un rĂšglement global entre eux. Par exemple, lorsque des matiĂšres premiĂšres sont vendues par le Participant A au Participant B pour ĂȘtre transformĂ©es en produits finis, puis revendues par le Participant B au Participant A. Le switch calcule alors la valeur proportionnelle due Ă chaque Participant de la transaction, et effectue le rĂšglement Ă la clĂŽture de la fenĂȘtre de rĂšglement. |
# Vue Fonctionnelle - Transferts - Bulk

Diagramme de flux UC : Vue Fonctionnelle - Transferts - Bulk
# Cas dâUtilisation
# Effectuer un Transfert (mode universel)
# Description
Le flux de ce cas d'utilisation (UC) permet au BC dâeffectuer un transfert en utilisant une mĂ©thode qui exclut lâintervention de lâActor.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert (Mode Universel)
# Effectuer un Transfert avec Confirmation du Payee
# Description
Le flux de ce cas dâutilisation permet au BC dâeffectuer un transfert via une mĂ©thode incluant lâintervention de lâActor.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert avec Confirmation du Payee
# RequĂȘte (GET) Transfert
# Description
Le flux de ce cas dâutilisation permet au BC de fournir un mĂ©canisme permettant Ă un Participant dâinterroger lâĂ©tat dâun transfert.
# Diagramme de flux

Diagramme de flux UC : RequĂȘte (GET) Transfert
# Effectuer un Transfert â Duplicate POST (Réémission)
# Description
Le flux de ce cas dâutilisation permet au BC de traiter une demande de transfert dupliquĂ©e.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert â Duplicate POST (Réémission)
# Effectuer un Transfert â Duplicate POST (Ignorer)
# Description
Le flux de ce cas dâutilisation permet au BC dâignorer une demande de transfert dupliquĂ©e.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert â Duplicate POST (Ignorer)
# Variantes des cas dâutilisation (hors scĂ©nario nominal)
# Effectuer un Transfert - PayeeFSP Rejette le Transfert
# Description
Le flux de ce cas dâutilisation permet au BC de terminer une demande de transfert rejetĂ©e par le Payee.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - PayeeFSP Rejette le Transfert
# Effectuer un Transfert - Timeout (Prepare)
# Description
Ce flux permet au BC de terminer une demande de prĂ©paration de transfert lorsque le seuil de dĂ©lai dâattente est dĂ©passĂ©.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Timeout (Prepare)
# Effectuer un Transfert - Timeout (Pre-Committed)
# Description
Ce flux permet au BC de terminer une demande de transfert pré-engagée (pre-committed) dépassant le délai.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Timeout (Pre-Committed)
# Effectuer un Transfert - Timeout (Post-Committed)
# Description
Ce flux permet au BC de terminer une demande de transfert post-engagée (post-committed) dont le délai est dépassé.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Timeout (Post-Committed)
# Effectuer un Transfert - Duplicate POST (Aucune Correspondance)
# Description
Ce flux permet au BC de terminer une demande de transfert dupliquĂ©e ne correspondant Ă aucune transaction existante, lorsquâun timeout survient.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Duplicate POST (Aucune Correspondance)
# Effectuer un Transfert - Liquidité Insuffisante du Payer FSP
# Description
Ce flux permet au BC de dĂ©cliner une demande de transfert Ă©chouĂ©e car le Payer ne dispose pas dâassez de liquiditĂ©s pour couvrir la transaction.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Liquidité Insuffisante du Payer FSP
# Effectuer un Transfert - Ăchec de Validation lors de la PrĂ©paration (Payer Participant invalide)
# Description
Ce flux permet au BC de mettre fin Ă une demande de prĂ©paration de transfert qui Ă©choue lors de la validation, du fait dâun Payer Participant invalide ou inexistant.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Ăchec de Validation lors de la PrĂ©paration (Payer Participant invalide)
# Effectuer un Transfert - Ăchec de Validation lors de la PrĂ©paration (Payee Participant invalide)
# Description
Ce flux permet au BC de terminer une demande de préparation qui échoue car le Payee Participant n'est pas valide ou inexistant.
# Diagramme de flux

Diagramme de flux UC : Effectuer un Transfert - Ăchec de Validation lors de la PrĂ©paration (Payee Participant invalide)
# RequĂȘte (GET) Transfert - Ăchec de Validation (Payer Participant invalide)
# Description
Ce flux permet au BC de terminer une requĂȘte dâĂ©tat de transfert lorsque la validation Ă©choue en raison dâun Payer Participant invalide ou inexistant.
# RequĂȘte (GET) Transfert - Ăchec de Validation (Payee Participant invalide)
# Description
Ce flux permet au BC de terminer une requĂȘte dâĂ©tat de transfert lorsque la validation Ă©choue Ă cause dâun Payee Participant invalide ou inexistant.
# RequĂȘte (GET) Transfert - Ăchec de Validation (Identifiant de Transfert Introuvable)
# Description
Ce flux permet au BC de terminer une requĂȘte dâĂ©tat de transfert lorsque la validation Ă©choue en raison dâun identifiant de transfert introuvable.
# ModĂšle Canonique
Mojaloop utilise deux modÚles canoniques pour gérer les transferts de fonds : un pour les transferts simples (hors bulk) et un pour les transferts groupés (bulk).
# ModĂšle Canonique Standard
- Transfert
- transferId
- transferType
- quoteld (optionnel)
- settlementModelId
- Participants
- Payer
- participantId
- Comptes
- Debit
- accountId
- accountType
- devise (currency)
- Credit
- accountId
- accountType
- devise (currency)
- Debit
- Payee
- participantId
- Comptes
- Debit
- accountId
- accountType
- devise (currency)
- Credit
- accountId
- accountType
- devise (currency)
- Debit
- Payer
- Montant (montant à transférer)
- value (nombre)
- devise (code de devise ISO)
- expiration (dateTime ISO)
- ilpPacket
- Extensions
# ModĂšle Canonique Bulk
- Transferts
- bulkId
- bulkQuoteId
- Transferts[]
- Transfert* (voir ci-dessus)
# Commentaires Finaux
- Le Payer FSP ne doit pas ĂȘtre autorisĂ© Ă forcer unilatĂ©ralement le timeout dâun transfert (peu importe son dĂ©lai dâexpiration), mais doit respecter les dĂ©cisions de timeout du Switch.
- La validation des conditions cryptographiques et accomplissements (fulfillments) serait gĂ©rĂ©e par le BC Transferts car il sâagit dâune composante fondamentale du « processus de transfert » (câest-Ă -dire : cette fonction nâest pas spĂ©cifique au langage FSPIOP).
- Le BC Transferts appliquera le mĂȘme modĂšle de validation que le Quoting & Party BC pour valider les Participants, pour dĂ©terminer la capacitĂ© dâun compte Ă effectuer une transaction, ou si un Participant est activĂ© en mode exclusif.
- Le BC Transferts est lâunique « source de vĂ©rité » pour tous les transferts, il est donc responsable de la persistance de lâĂ©tat des transferts.
- DĂ©sactiver des Participants dĂ©jĂ dans un Ă©tat « prĂ©paré » ne doit pas empĂȘcher le traitement des transferts en cours. NĂ©anmoins, toute nouvelle instruction de transfert reçue par le BC Transferts via des Ă©vĂ©nements TransferPrepareAccountAllocated doit ĂȘtre refusĂ©e.
[^1]: Interfaces communes : Liste des interfaces communes Mojaloop
