> For the complete documentation index, see [llms.txt](https://mojaloop.gitbook.io/mojaloop/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mojaloop.gitbook.io/mojaloop/docs/technical/reference-architecture/boundedcontexts/participantlifecyclemanagement/index.md).

# Participant Lifecycle Management BC

The Participant Lifecycle Bounded Context's primary concern regards anything to do with the management of a Participant within the Mojaloop Environment. When we are defining the Participant Lifecycle Management Bounded Context there are a few key concepts that should be clearly defined.

#### Maker-Checker Process

The Maker-Checker Process establishes the 6 eye verification and ensure that no write action takes place without being validated by some one with adiquite permissions. These permissions are defined by the Participant Lifecycle Management Bounded Context but are configurable and assignable as needed by the Scheme Rules. It is recommended that the users/roles that receive the maker permissions do not receive the checker permissions, and that the checker permissions are assigned to different users/roles. It will still be possible to assign both responsibilities to the same users/roles but this then voids the security that is provided by the maker-checker process that the system was built to support.

#### Participant States

The participant state management allows the admin operators to control permissions for a given participant based on their state. During the Platform Configuration phase, the Participant Lifecycle Management Bounded Context expects participant states to be defined and configured with either roles/permissions. The participant states can then be assigned to a given participant through the Participant Status Management process.

## Terms

Terms with specific and commonly accepted meaning within the Bounded Context in which they are used.

| Term            | Description                                                                                                                          |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **Participant** | Financial Service Provider that register on the Mojaloop ecosystem. Allowing said FSP to be able to transact with other Participants |
| **Maker**       | Representative that is responsible for creating data structures through the use of request.                                          |
| **Checker**     | Representative that is responsible for approving and accepting data that has been requested to be created.                           |

## Functional Overview

Please review the common interfaces page to see how these interaction take place.

![Use Case - Example REPLACE ME](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-c16848a1b162267f7cc7c1dcd9fb790a02bee2d6%2FML2RA_PLM-bcOverviewFlowDiagram_Apr22-a_1429.png?alt=media)

> BC Workflow Diagram: Functional Overview

## Use Cases

### Create Participant (Single Step Registration)

#### Description

The workflow provided by this UC enables the BC to employ a process through which to create a Participant on the Mojaloop ecosystem, this usually requires all the information that relates to the participant and the initial accounts needed.

#### Flow Diagram

![Use Case - Create Pariticipant Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-177241a9838570cb3d4fa79ecc2ff4ed7aef219b%2FML2RA_PLM-ucCreateParticipantInit_Apr22-a_P1-1429.png?alt=media) ![UC - Create Participant Approve](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-b4abeaf4f89cc8b706a565a31b21467d4d20d0f9%2FML2RA_PLM-ucCreateParticipantAppro_Apr22-a_P2-1429.png?alt=media)

> UC Workflow Diagram: Create Participant

### Manage Funds

#### Description

The workflow provided by this UC enables the BC to employ a process through which to either withdraw or deposit funds to the Participant's account(s).

#### Flow Diagram

![Use Case - Manage Funds - Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-fcde920b24370e4525a39536f415bb7aed0e1fc5%2FML2RA_PLM-ucManageFundsInit_Apr22-a_P1-1429.png?alt=media) ![Use Case - Manage Funds - Approve](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-4d429dc372f1dcbafef55c4043013d43220d9d41%2FML2RA_PLM-ucManageFundsAppro_Apr22-a_P2-1429.png?alt=media)

> UC Workflow Diagram: Manage Funds

### Update Endpoints

#### Description

The workflow provided by this UC enables the BC to employ a process through which to update the endpoint of a given participant. When the request has been approved the endpoint will be called on a keep alive path to ensure connectivity.

#### Flow Diagram

![Use Case - Update Endpoints - Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-b9e206363201b5a4b8221e7ba0c01a2be082ee96%2FML2RA_PLM-ucUpdateEndpointsInit_Apr22-a_P1-1429.png?alt=media) ![Use Case - Update Endpoints - Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-26d13ab31974b51cd4b920e79ea186cb2e5a18fd%2FML2RA_PLM-ucUpdateEndpointAppro_Apr22-a_P2-1429.png?alt=media)

> UC Workflow Diagram: Update Endpoints

### Update Participant Status

#### Description

The workflow provided by this UC enables the BC to employ a process through which to change the status of a given participant to enforce different roles/scheme rules on the participant.

#### Flow Diagram

![Use Case - Update Participant Status - Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-be01060f05fe495f7a774e8e5bbd874726bac259%2FML2RA_PLM-ucUpdateParticipantStatusInit_Apr22-a_P1-1429.png?alt=media) ![Use Case - Update Participant Status - Approve](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-54033e1617240a6386eb65b8d56dc07847818a87%2FML2RA_PLM-ucUpdateParticipantStatusAppro_Apr22-a_P2-1429.png?alt=media)

> UC Workflow Diagram: Update Participant Status

### Get Participant

#### Description

The workflow provided by this UC enables the BC to employ a process through which to get information with about a given participant.

#### Flow Diagram

![Use Case - Get Participant](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-eea3ac38532db49f0a6f32b3d2733c681d10cac2%2FML2RA_PLM-ucGetParticipant_Apr22-a_1429.png?alt=media)

> UC Workflow Diagram: Get Participant

### Add Participant Accounts

#### Description

The workflow provided by this UC enables the BC to employ a process through which to control different aspects of a Participant's accounts, from creating an account, enabling/disabling and updating the limits and threshold warnings of an account.

* Add Participant Account
* Update Participant Account Status (Enable/Disable)
* Update Liquidity Limits and Warning Thresholds

#### Flow Diagram

![Use Case - Add Participant Accounts - Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-ec745aaa82727d21767fa5835d96e529685c2e47%2FML2RA_PLM-ucAddParticipantAccountInit_Apr22-a_P1-1429.png?alt=media) ![Use Case - Add Participant Accounts - Approve](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-adbfe0d980cf111992e2c6a0b6398eb80b2eb502%2FML2RA_PLM-ucAddParticipantAccountAppro_Apr22-a_P2-1429.png?alt=media)

> UC Workflow Diagram: Add Participant Accounts

### Liquidity Cover Reserve

#### Description

The workflow provided by this UC enables the BC to employ a process through which to reserve liquidity cover for a Participant and notify the Accounts and Balances BC about the update.

#### Flow Diagram

![Use Case - Reserve Liquidity Cover - Initial](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-bd4f49e56e6f94c42c890454d043880ad5b8f515%2FML2RA_PLM-ucLiquidityCoverReserveInit_Apr22-a_P1-1429.png?alt=media) ![Use Case - Reserve Liquidity Cover - Approve](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-109050536e8c968f05b3d6529c791fbfec9f132f%2FML2RA_PLM-ucLiquidityCoverReserveAppro_Apr22-a_P2-1429.png?alt=media)

> UC Workflow Diagram: Liquidity Cover Reserve

### Liquidity Threshold Exceeded

#### Description

The workflow provided by this UC enables the BC to employ a process through which to notify the participant that a preset liquidity threshold has been reached and action might be required.

#### Flow Diagram

![Use Case - Liquidity Threshold Exceeded](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-a833e5ae669a526ae6912de587dced6903044a79%2FML2RA_PLM-ucLiquidityThresholdExceeded_Apr22-a_1429.png?alt=media)

> UC Workflow Diagram: Liquidity Threshold Exceeded

### Liquidity Limit Exceeded

#### Description

The workflow provided by this UC enables the BC to employ a process through which to notify the participant when they have reached the preset liquidity limit of an account.

#### Flow Diagram

![Use Case - Liquidity Limit Exceeded](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-d3b2129d3a82de0dea6fdd99a05fa38bf1e55a19%2FML2RA_PLM-ucLiquidityLimitedExceeded_Apr22-a_1429.png?alt=media)

> UC Workflow Diagram: Liquidity Limit Exceeded

### Liquidity Threshold & Limit Reset

#### Description

The workflow provided by this UC enables the BC to employ a process through which reset the liquidity limit or threshold notification checks when successful transfers have been executed and the participant account position is in a positive state.

#### Flow Diagram

![Use Case - Liquidity Threshold & Limit Reset](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-3bcd8009c74530e010d513b52bae83517d844cce%2FML2RA_PLM-ucLiquidityLimit%26ThresholdReset_Apr22-a_1429.png?alt=media)

> UC Workflow Diagram: Liquidity Threshold and Limit Reset

### Liquidity Cover Query

#### Description

The workflow provided by this UC enables the BC to employ a process through which to query the current liquidity of a participant account, along with additional read operations that are related to the participant's liquidity.

#### Flow Diagram

![Use Case - Liquidity Cover Query](https://960632945-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LXhOIEoqtInj89WmQ_Q%2Fuploads%2Fgit-blob-bc50ae969fd55a53d645ac986ebf8f7bca805292%2FML2RA_PLM-ucLiquidityCoverQuery_Apr22-a_1429.png?alt=media)

> UC Workflow Diagram: Liquidity Cover Queries

## Canonical Model

* Participant
  * id
  * participantAlias
  * endpointURL
  * state
  * Accounts\[]
    * accountID
    * ledgerAccountType
    * accountCurrency
    * isActive
    * warningThreshold
    * limit
      * type
      * value

## Concluding Comments

**Participant Accounts:** Participants can only have one account per allowed currency. **Update Position Use Case:** Has been changed to the Manage Funds use case **Maker/Checker Operations:** Retry count has no effect on the way we process/re-process requests.

## Notes
