ETL Financial Crime Reports
Overview
ETL Financial Crime Reports (FCR) enables the migration of historical FCR records from a legacy compliance system into Fenergo via the ETL pipeline. Imported records are created in Closed status and carry a source value of Migrated, preserving the original submission dates and external identifiers from the source system.
Migrated FCRs appear in the FCR Dashboard alongside natively created records and are included in Advanced Reporting. They are identifiable by the following characteristics:
- Status: Closed (immutable on import)
- Source: Migrated
- Created By: System
- Assignee: Empty
- Created Date and Submitted Date are preserved from the source system
- The legacy FCR identifier (
alternateId) is stored as the external reference ID on the record
Migrated FCRs appear in the Closed tab on the FCR Dashboard.
This feature is intended for compliance administrators and implementation teams performing a one-time historic data migration. End-user FCR workflows are not affected by migrated records.
ETL FCR Capabilities
When using the ETL tool to migrate FCR records, users can:
- Create new FCR records linked to existing entities with Closed status
- Preserve original creation and submission dates from the source system
- Store the legacy system identifier as the external reference ID on the migrated record
- Match to an existing Fenergo FCR record using
fenxId
Supported Use Cases
"I want to migrate historic FCR records from a legacy compliance system and link them to existing entities in Fenergo."
"I want to import previously Closed SARs/STRs so they appear in the FCR Dashboard and Advanced Reporting alongside native records."
"I want to preserve the original submission dates and external identifiers from the source system."
Behaviour & Limits
- FCRs can only be loaded against entities that already exist in Fenergo.
- All migrated FCRs are created in Closed status — this is hardcoded and cannot be changed.
- Duplicate
alternateIdvalues within the same file will fail validation. - One of
mainEntityAlternateIdormainEntityFenxIdmust be provided per row. - The
status,source, andcreatedByfields are hardcoded by the system and do not need to be included in the CSV. - SAR Documents, Counterparties, Addresses, and Products are not in scope for this migration.
Prerequisites
Before running an ETL FCR load, ensure the following:
- The target entities have already been loaded into Fenergo through standard platform workflows or migrated into Fenergo via ETL in the same ETL Project.
- Each entity is identifiable by either a
mainEntityAlternateId(Alternate ID) or amainEntityFenxId(FenX UUID).
Creating an ETL Project with FCRs
Create New Project
To initiate an FCR migration:
- Select + on the ETL Dashboard.
- Enter a Project Name and Description.
- Select Financial Crime Report as the datatype.
ETL Workflow Steps
The FCR ETL flow follows these steps:
- Select Data Source
- Filter Data
- Map System Fields
- Preview
- Validation
- Load
Select Data Source
Upload a CSV file containing one row per FCR record. The file must include all required fields and use the correct column names as listed in the Map System Fields section below.
Ensure your CSV includes a unique alternateId for every row. This is stored as the external reference ID on the migrated FCR record and must be unique within the file.
Map System Fields
Once the data source has been uploaded, map columns from your CSV to the system fields. The table below describes all supported fields.
| Field | Required | Description |
|---|---|---|
alternateId | Yes | The source system identifier for the FCR. Stored as the external reference ID on the migrated record. Must be unique within the file. |
fenxId | No | The FenX UUID of an existing FCR in Fenergo. If provided, used to match and update that record. |
mainEntityAlternateId | Conditional | The Alternate ID of the entity this FCR is linked to. Required if mainEntityFenxId is not provided. |
mainEntityFenxId | Conditional | The FenX UUID of the entity this FCR is linked to. Required if mainEntityAlternateId is not provided. |
creationDate | No | The original FCR creation date from the source system. If left blank will default to date of migration. |
submittedDate | Yes | The date the FCR was submitted. |
The status, source, and createdBy fields are hardcoded by the system at load time and do not need to be included in the CSV file. All migrated FCRs are created with status = Closed, source = Migrated, and createdBy = External Source.
Create vs. Update Behaviour
The ETL engine determines whether to create or update an FCR based on the alternateId and fenxId fields:
- If
alternateIdis provided and matches an existing Fenergo FCR → the existing record is updated. - If
alternateIdis not provided or does not match → a new FCR is created. alternateIdis always required and is stored as the external reference ID on both created and updated records.
A single CSV file can contain a mix of creates and updates. Rows with a matching alternateId will update existing records; all other rows will create new ones.
Preview
The Preview step displays how each FCR will be created or updated based on the current mapping configuration.
You can either:
- Select an FCR record from the View Sample Entities table, or
- Enter a specific ID to preview how that record will be processed.
Use this step to confirm field mappings and date formatting before running Validation and Load.
Validation
Validation checks each record in the data source against the project configuration. Any rows that fail are identified and listed. Once complete, a validation report can be downloaded.
Common Validation Errors
| Error | Cause |
|---|---|
Record id: <alternateId> is duplicated | The same alternateId appears more than once in the CSV. Each FCR must have a unique identifier within the file. |
One or more rows were encountered with missing ALTERNATEID or FENXID | A row does not have a value in either mainEntityAlternateId or mainEntityFenxId. At least one entity reference is required per row. |
Main Entity does not exist | The entity referenced by mainEntityAlternateId or mainEntityFenxId could not be found in Fenergo. Ensure the entity exists before running the FCR load. |
Date value '<value>' for property 'creationDate' cannot be parsed using 'dd/MM/yyyy' date format | The creationDate value is not in the expected format. |
Date value '<value>' for property 'submittedDate' cannot be parsed using 'dd/MM/yyyy' date format | The submittedDate value is not in the expected format. |
All validation errors must be resolved before the Load phase can begin. Address any issues in the CSV and re-upload before proceeding.
Load
Once all validation issues are resolved, the Load option becomes available. A progress indicator tracks the status of the load.
Preparation Step
During preparation, any supplied mainEntityAlternateId values are resolved to their corresponding mainEntityFenxId. If the referenced entity cannot be found, the row will fail.
Load Step
- FCR records are created in Closed status, with
source = MigratedandcreatedBy = External Source. alternateIdis stored as the external reference ID on the migrated record.- Each FCR is linked to the relevant entity and appears in the Closed tab of the FCR Dashboard.
- Once the load is complete, a reconciliation report is available.
Refer to the ETL UI user guide for additional details on monitoring load progress and downloading the reconciliation report.
Reports
After a load completes, ETL produces a reconciliation report for the FCR migration. This gives row-level visibility into which FCRs loaded successfully and which failed.
FCR Report Columns
| Column | Description |
|---|---|
| fenxId | The Fenergo identifier assigned to the FCR record. |
| alternateId | The source system identifier supplied in the CSV (alternateId). |
| Status | The outcome for the row — for example Created or Updated for a successful load, or an error state for a failure. |
| Error Description | The error message if the row failed to load. Empty for successful rows. |
| Date Created | The timestamp of the load attempt. |
| Migration ID | The identifier of the migration run that produced the row. |