Managing Duplicate Entities
What are Duplicate Checks?
Duplicate checks are essential for maintaining data integrity, reducing fraud risk, and ensuring compliance. They prevent the creation of multiple records for the same individual within your system.
FrankieOne integrates this capability directly into your KYC workflow via a dedicated DUPLICATE step. This step provides:
- Automated identification of possible duplicates using configurable, rules-based matching logic.
- Manual review and resolution capabilities for operators to confirm or dismiss flagged duplicates.
- Seamless integration with existing KYC processes to support both operational efficiency and regulatory compliance.
To implement duplicate checks, you must have the DUPLICATE step added to your KYC workflow. Speak with your FrankieOne representative to configure the duplicate step and its matching rules.
How Duplicate Checks Work
The process is designed to flag potential duplicates during onboarding and provide your team with the tools to resolve them.
1. Workflow Execution
When you execute a workflow for a new or updated entity, the DUPLICATE step runs. It compares the entity’s attributes (e.g., name, DOB, document number) against all other entities in your system based on your configured matching rules.
2. A 'HIT' is Returned
If a potential duplicate is found, the workflow step returns a result of HIT, and a DUPLICATE issue is created. This typically causes the overall workflow status to become REVIEW.
3. Detailed Results are Generated
For each potential duplicate found, a Process Result Object (PRO) is created. This PRO contains the granular details of the match, including which fields matched and the entityId of the potential duplicate.
Implementation and API Guide
Step 1: Interpreting the Duplicate Check Result
When the DUPLICATE step returns a HIT, you need to parse the processResults within that step to understand the match. Each PRO will have class: "DUPLICATE".
The most important information is in the supplementaryData object.
Example: supplementaryData for a Duplicate PRO
Example: supplementaryData for a Duplicate PRO
Key supplementaryData Fields:
duplicateEntityId: TheentityIdof the existing profile that was matched.matchedFields: An array detailing exactly which attributes matched between the two entities (e.g.,NAME,ADDRESS). It includes the specificobjectIdfor each attribute and thematchStrength.matchedRules: Shows which configured rule was triggered to create this match.
Step 2: Resolving Duplicates
After reviewing the evidence, an operator must classify the match. This is done by sending a PATCH request with the processResultId and a manualStatus.
Endpoint:
Understanding the Manual Statuses
The manualStatus you send should reflect the operator’s decision.
Example: Resolve a Duplicate as False Positive
After resolving all duplicate-related issues, you should re-run the workflow. The DUPLICATE step will re-evaluate based on your resolutions, and the overall workflow status can then update from REVIEW to PASS.
Key Concepts: State and Relationships
- Relationships: When a duplicate is confirmed (
TRUE_POSITIVE_ACCEPTorTRUE_POSITIVE_REJECT), a permanentrelationshipis created between the two entities. You can see this in the response ofGET /v2/individuals/{entityId}under therelationships.duplicatesarray. DUPLICATEState: An entity’s service profile is moved to theDUPLICATEstate when a relationship identifies it as such. An entity remains a duplicate as long as at least one relationship points to it. If all such relationships are removed (e.g., by being marked asFALSE_POSITIVEor if the source entity is deleted), itsDUPLICATEstate will be revoked.
Configuration (Reference)
The matching logic for the DUPLICATE step is highly configurable by the FrankieOne team.
Example duplicate.json Matching Rules
Example duplicate.json Matching Rules
Duplicate Check Logic
FrankieOne’s duplicate detection uses configurable rules to compare key attributes between entities. If any rule is matched, the entity is flagged as a potential duplicate.
Matching Rule Examples:
- External Reference: Exact match on
EXTERNAL_REFERENCE. - Document Identifiers: Exact match on all of
DOC_PRIMARY_IDENTIFIER,DOC_SECONDARY_IDENTIFIER,DOC_COUNTRY,DOC_SUBDIVISION, andDOC_TYPE. - Phone Number: Exact match on
PHONE_NUMBER. - Email Address: Exact match on
EMAIL_ADDRESS. - Full Name: Exact match on both
GIVEN_NAMEandFAMILY_NAME. - Full Name + Date of Birth: Exact match on
GIVEN_NAME,FAMILY_NAME, andDATE_OF_BIRTH. - Full Name + Normalised Address: Exact match on
ADDR_NORM_SHORT,GIVEN_NAME, andFAMILY_NAME.
All rules use exact matching. You can customise which rules are active and their risk levels by working with FrankieOne.
