# 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

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

Effectuer un Transfert (Mode Universel)

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

Cas d’utilisation - Effectuer un Transfert avec Confirmation du Payee

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

Cas d’utilisation - RequĂȘte (GET) Transfert

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

Cas d’utilisation - Effectuer un Transfert – Duplicate POST (Réémission)

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

Cas d’utilisation - Effectuer un Transfert – Duplicate POST (Ignorer)

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

Cas d’utilisation - Effectuer un Transfert - PayeeFSP Rejette le Transfert

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

Cas d’utilisation - Effectuer un Transfert - Timeout (Prepare)

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

Cas d’utilisation - Effectuer un Transfert - Timeout (Pre-Committed)

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

Cas d’utilisation - Effectuer un Transfert - Timeout (Post-Committed)

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

Cas d’utilisation - Effectuer un Transfert - Duplicate POST (Aucune Correspondance)

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

Cas d’utilisation - Effectuer un Transfert - LiquiditĂ© Insuffisante du Payer FSP

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

Cas d’utilisation - Effectuer un Transfert - Échec de Validation lors de la PrĂ©paration (Payer Participant invalide)

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

Cas d’utilisation - Effectuer un Transfert - Échec de Validation lors de la PrĂ©paration (Payee Participant invalide)

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)
      • Payee
        • participantId
        • Comptes
          • Debit
            • accountId
            • accountType
            • devise (currency)
          • Credit
            • accountId
            • accountType
            • devise (currency)
    • 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