ETL Alerts
Overview
ETL Alerts enables the migration of historical or externally generated alerts into the Fenergo platform via CSV upload. This allows institutions transitioning from legacy Transaction Monitoring systems to seed pre-existing alert data into Fenergo, ensuring a complete and uninterrupted record of alert history from day one.
Each alert is linked to an existing entity (Individual, Company, or Other) in Fenergo using either an Alternate ID or a FenX ID.
ETL Alerts Capabilities
When using the ETL tool to migrate alerts, users can:
- Create new alert records linked to existing entities
- Update existing alerts using the source system Alternate ID or Fenergo ID
- Migrate assessment outcomes, rule metadata, and comments
- Supply multiple comments per alert using a pipe-separated format
ETL Alerts supports create and update operations. The operation performed is determined automatically based on whether the supplied alert alternateId or fenxId already exists in the platform.
Supported Use Cases
"I want to migrate historic alerts from a legacy TM system and link them to existing entities in Fenergo."
"I want to create new alerts for an existing entity identified by mainEntityAlternateId or mainEntityFenxId."
"I want to update the assessment outcome or comments on existing alerts using alternateId or fenxId."
Behaviour & Limits
- If an
alternateIdalready exists in the platform, the alert is updated. - If an
alternateIdis new, the alert is created. - The
assessmentOutcomefield is required and cannot be blank. - Duplicate
alternateIdvalues within the same file will fail validation. - Setting a field to
nullwill clear the existing value on an update. An empty cell leaves the existing value unchanged. - Multiple comments can be supplied using a pipe separator (
|). - The
type,source, andscorefields are hardcoded by the system and do not need to be included in the CSV.
Prerequisites
Before running an ETL Alerts load, ensure the following:
- The target entities (Individual, Company, or Other) have already been loaded into Fenergo through standard platform workflows or migrated into Fenergo via ETL in the same ETL Project as the new alerts.
- Each entity is identifiable by either a
mainEntityAlternateId(Alternate ID) or amainEntityFenxId(FenX UUID).
Create vs. Update Behaviour
The ETL engine determines whether to create or update an alert based on the alternateId or fenxId field:
- If the
alternateIddoes not exist in the platform → a new alert is created. - If the
alternateIdalready exists in the platform → the existing alert is updated with the values from the file.
A single CSV file can contain a mix of creates and updates. Rows with known alternateId values will update existing records; rows with new values will create new ones.
Setting a field value to null in the CSV will clear that field on an existing alert. Leaving a column empty will leave the existing value untouched. Comments are an exception — they cannot be removed once created. Setting the comments field to null or leaving it empty will not delete existing comments. When comments are supplied during an update, they are added as new entries and existing comments are retained.
Creating an ETL Project with Alerts
Create New Project
To initiate an Alert migration:
- Select + on the ETL Dashboard.
- Enter a Project Name and Description.
- Select Alert as the datatype.
ETL Workflow Steps
The Alert ETL flow follows the standard ETL pattern:
- Select Data Source
- Filter Data
- Map System Fields
- Map Lookups
- Preview
- Validation
- Load
Select Data Source
Upload a CSV file containing one row per alert. 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 which can be the alerts ID from an external source. This is the key the system uses to determine whether to create or update each alert.
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 alert. Used to determine create vs. update. Must be unique within the file. |
fenxId | No | The FenX UUID of an existing alert. Used to target a specific record when updating by FenX ID. |
mainEntityAlternateId | Conditional | The Alternate ID of the entity this alert belongs to. Required if mainEntityFenxId is not provided. |
mainEntityFenxId | Conditional | The FenX UUID of the entity this alert belongs to. Required if mainEntityAlternateId is not provided. |
ruleName | No | The name of the business rule that generated the alert. |
ruleId | No | The identifier of the business rule. |
ruleVersion | No | The version of the business rule at the time the alert was created. |
creationDate | No | The date the alert was originally created. If left blank, defaults to the date of migration. |
assessmentOutcome | Yes | The outcome of the alert assessment (e.g. True Positive, False Positive). Must not be blank. |
assessmentCategory | No | The category of the assessment outcome. |
assessmentDetails | No | Free-text description of the assessment rationale. |
comments | No | One or more comments associated with the alert. Separate multiple comments with a pipe character (|). For example: Comment one | Comment two | Comment three. |
The type, source, and score fields are hardcoded by the system at load time and do not need to be included in the CSV file.
Map Lookups
The Map Lookups step maps values in your source data to the corresponding lookup values configured in Fenergo.
assessmentOutcome
assessmentOutcome is linked to the AlertAssessmentCategory lookup, which determines how an alert is classified. The value supplied in the CSV must map to one of the configured lookup options, for example:
True PositiveFalse Positive
Preview
The Preview step displays how each alert will be created or updated based on the current mapping configuration.
You can either:
- Select an alert 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 data formatting before running Validation and Load.
Check that assessmentOutcome is populated on every row before proceeding to Validation.
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 alert 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 alerts 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. |
assessmentOutcome cannot be blank | The assessmentOutcome column is required and must not be empty. |
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. During the load process, the system determines whether each record is an UPDATE or a CREATE based on the alternateId. 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
- Alert records are created or updated.
- Comments are applied to each alert, with pipe-separated values loaded as individual comment entries.
- Each alert is linked to the relevant entity.
- 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 Alert migration. This gives row-level visibility into which alerts loaded successfully and which failed.
Alert Report Columns
| Column | Description |
|---|---|
| fenxId | The Fenergo identifier assigned to the alert. |
| 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. |