Skip to content

Asset freeze component

πŸ‘” Responsibilities

This component is responsible for retrieving the potential asset freeze hits that are computed in Turing, storing them in the backend and providing the necessary API to dismiss, confirm or delete them for compliance reasons.

Note

Asset freeze corresponds to "gel des avoirs", in French. It's a legal measure where financial assets (bank accounts, properties, investments, etc.) are temporarily blocked or immobilized by authorities, preventing the owner from accessing, transferring, or disposing of them. This measure is typically used in cases involving Counter-terrorism financing operations

The freeze doesn't change ownership but restricts control over the assets until the legal situation is resolved or the freezing order is lifted.

At Alan, we have a legal obligation to stay updated on the European asset freezing list and report to the authorities if ever we cover (for Health or PrΓ©voyance) someone or some company from this list.

πŸ“– Public

Commands

The component offers two public commands:

retrieve_potential_hits

Allows to retrieve potential hits from Turing.

If a hit already exists, only its last_seen_at timestamp is updated. If it doesn't, then it's created, in a pending state (meaning that an Ops needs to review it, either to confirm or dismiss it as a false positive).

If an already existing hit is no more present in the list that we retrieve, then:

  • if the hit was still pending, it's automatically dismissed as it's not a hit anymore
  • if the hit was either confirmed or dismissed already, then its status is left unchanged

This command does NOT provide a dry-run mechanism.

Example

flask asset_freeze retrieve_potential_hits

run_delete_expired_potential_hits

Allows to delete potential hits that have expired, ie. for members, company or accounts that have not been active in the last 5 years. This command is run yearly.

This command does provide a dry-run mechanism.

Example

flask asset_freeze run_delete_expired_potential_hits --execute

Info

To run the deletion, the component makes uses of inverse dependency injection β§‰ to query the relevant backend (FR or BE) on the liveness of each entity.

🧰 Internal

Models

The component only has one model: PotentialHit. It's the source of truth for hits that were retrieved from Turing, and either confirmed or dismissed by Ops after further analyis.

Endpoints

The component offers a simple set of endpoints to get potential hits (whatever their status), dismiss and confirm hits.

It also offers an endpoint to retrieve a PDF report, for a specific year, on the number of hits retrieved, dismissed and confirmed, and the related comments and metadata associated.

🚦 Current status

Status

🟒 This component is ready and used in production.

It's currently only embedded in the πŸ‡«πŸ‡· app since it provides a global dashboard for the asset freeze mechanism (meaning that it could be embedded in any app, it would provide the exact same functionality).

The frontend part of the initiative (an Ops dashboard) is in πŸ‡«πŸ‡· too, as a consequence (see frontend/apps/fr-marmot/components/AssetFreeze)

πŸ“š References