External Synchronizations (Journal)
Access prerequisites
- Permission (module):
viewWithdrawJournal - License/Feature: None
- Menu container: GENERAL → group Transaction journals → External Synchronizations (
/manage-withdraw)
What it is / when to use
Lists the on-chain withdrawal synchronizations (blockchain_withdraw_journal) — financial transactions that involve external fund transfers to a wallet outside the platform and need to be confirmed/synchronized on the blockchain. The operator monitors the transfer status and, when a withdrawal entry becomes stuck, marks it for reprocessing, prompting the watcher to retry sending/synchronizing the transaction on-chain.
Despite the label "External Synchronizations", the domain is the withdraw journal: the external counterpart of the Internal Synchronizations journal.
Prerequisites
- Permission:
viewWithdrawJournal(dual permission — CPM enum + dynamic module in the DB). The reprocessing action is sensitive and may require re-authentication (step-up password+MFA) depending on tenant policy. - License/Feature: none.
- Dependencies on other screens: None. Entries are generated by the withdrawal flow (FMS-Withdrawal/ExternalBlockchainProvider).
Step by step
- Go to Transaction journals → External Synchronizations.
- The list loads paginated from the server (order
DESC). - Search by customer ID.
- Click the receipt icon to view the details.
- For a stuck entry, click the sync icon to mark it for reprocessing (a snackbar confirms success/error).
Filters and columns
| Filter / Column | What it shows / does | Data source |
|---|---|---|
| Customer search | Filters entries by customerId. | customerId parameter. |
Date (date) | When the withdrawal synchronization was recorded. | when. |
Source customer (customerIdFrom) | Customer who requested the withdrawal. | customer_id_from. |
Transaction ID (transactionId) | Financial transaction linked to the withdrawal. | financeTransactionId. |
Amount (amount) | Principal amount + monetary unit. | principalAmount (BigNumber) + unitOfMoney. |
| Details (action) | Opens the detail modal. | openDetails(element). |
| Reprocess (action) | Marks the entry for a new on-chain send/synchronization attempt. | updateWithdrawJournal(id). |
Actions and modals
- Details (receipt): opens
DetailsViewWithdrawComponent, read-only, with the full withdrawal fields (origin, external destination wallet, financial transaction, fee, status). - Reprocess (sync): calls
updateWithdrawJournal(entryId)→ API-Gateway/financial-internal/updateWithdrawJournal→ FMS (fin-lib). The entry is re-enabled and the watcher will process it again on the next scan. This is a scheduling of reprocessing, not an immediate send.
Business rules / considerations
Withdrawal is a real fund transfer
- Unlike reprocessing of Internal Synchronizations, here there is an outgoing transfer of value to an external wallet. Reprocessing a withdrawal entry should only be done after confirming that the transfer was not completed (check the hash/status in the detail and, if possible, on the network explorer). Reprocessing an already-sent withdrawal is the scenario to avoid.
- Protection against duplication is idempotency by
externalId: the financial pipeline does not send the same transaction twice. If reprocessing finds the withdrawal already completed, the returnE00021("already processed") is success, not an error.
Attention
- Before reprocessing, validate the synchronization status in the detail. Stuck withdrawals typically await on-chain confirmation, nonce/gas, or provider unavailability — in these cases reprocessing helps; in the case of a wallet validation error, it does not.
- Financial values:
principalAmount/taxAmountare BigNumber — no rounding.