Identity comparison
Compares identity details from two different sources
Ensures the identity information collected from different steps or documents refers to the same person, improving decision accuracy. This page covers both versions of the Identity comparison step:
BASIC_IDENTITY_COMPARISON:v1— stable; operands configured inoptions.BASIC_IDENTITY_COMPARISON:v2(preview) — operands wired viainputMapping.
Both versions are supported; v1 is not deprecated. Use v2 for new flows that need to disambiguate two BasicIdentity sources via named input slots.
Key features
- Dual source comparison: Compares identity data from two distinct
BasicIdentitydata blocks. - Configurable attributes: Allows selection of specific attributes to compare (
givenName,familyName,name,birthDate,birthPlace). - Dual comparison modes: Supports both
strictandtolerantcomparison modes. ComparisonResultsoutput: Produces aComparisonResultsdata block with a detailed verdict and traceability on all routes.
Configuration
BASIC_IDENTITY_COMPARISON:v1
| Option | Type | Required | Description |
|---|---|---|---|
leftOperand | string | Yes | The id of the step that produced the first BasicIdentity data block. |
rightOperand | string | Yes | The id of the step that produced the second BasicIdentity data block. Must differ from leftOperand. |
attributes | array | Yes | BasicIdentity attribute names to compare (e.g. familyName, givenName, birthDate). At least one required. |
mode | enum | Yes | Comparison mode: 'strict' or 'tolerant'. See Comparison mode details. |
BASIC_IDENTITY_COMPARISON:v2
BASIC_IDENTITY_COMPARISON:v2 is available as a preview. BASIC_IDENTITY_COMPARISON:v1 remains the stable version.
In v2, the operand steps are wired via inputMapping rather than options, allowing the workflow engine to resolve and validate the data flow at publish time.
| Option | Type | Required | Description |
|---|---|---|---|
attributes | array | Yes | BasicIdentity attribute names to compare (e.g. familyName, givenName, birthDate). At least one required. |
mode | enum | Yes | Comparison mode: 'strict' or 'tolerant'. See Comparison mode details. |
Both leftOperand and rightOperand input slots must be wired using inputMapping as step ID strings:
"inputMapping": {
"leftOperand": "doc-id-step",
"rightOperand": "eids-step"
}
The workflow engine validates at publish time that the referenced steps are reachable and each produces a BasicIdentity data block.
Comparison mode details
| Mode | Name comparison | Date comparison |
|---|---|---|
strict | All words from both names must have a "close enough" match. | Dates must be exactly equal. |
tolerant | At least one word from the first name must have a "close enough" match in the second name. | Year and month must match; day is ignored. |
Input data blocks
BASIC_IDENTITY_COMPARISON:v1
The flow validation system ensures the steps referenced by leftOperand and rightOperand are reachable and each produces a BasicIdentity data block.
| Data block | Required | Description |
|---|---|---|
BasicIdentity | Yes | First identity source (from the leftOperand step). |
BasicIdentity | Yes | Second identity source (from the rightOperand step). |
BASIC_IDENTITY_COMPARISON:v2
| Slot alias | Data block | Required | Description |
|---|---|---|---|
leftOperand | BasicIdentity | Yes | First identity source — wired via inputMapping. |
rightOperand | BasicIdentity | Yes | Second identity source — wired via inputMapping. |
Comparison logic
The step produces an internal ComparisonVerdict recorded in the ComparisonResults data block. The flow exposes two routes — match and failure — so both noMatch and inconclusive verdicts route to failure.
| Internal verdict | Route | Description |
|---|---|---|
match | match | All specified attributes were successfully compared according to the configured mode, and all values matched. |
noMatch | failure | At least one pair of compared attribute values did not match. Takes priority over inconclusive when both missing values and mismatches are present. |
inconclusive | failure | One or more required attribute values are missing, making comparison impossible. No mismatches were detected among the available attributes. |
Routes
| Route | Description |
|---|---|
match | All specified attributes were successfully compared according to the configured mode, and all values matched. |
failure | At least one pair of compared attribute values did not match, or one or more required attribute values were missing (see Comparison logic). |
Output data blocks
| Route | Data blocks produced | Notes |
|---|---|---|
| match | ComparisonResults | All specified attributes matched between the two BasicIdentity sources. |
| failure | ComparisonResults | One or more attributes did not match or were missing. |
Example payloads
ComparisonResults — match
{
"dataBlockId": "01941a3c-0000-7000-8000-000000000001",
"type": "ComparisonResults",
"verdict": "match",
"leftOperand": "doc-id-step",
"rightOperand": "eid-step",
"attributesCompared": ["givenName", "familyName", "birthDate"],
"mismatchedAttributes": [],
"missingAttributes": []
}
ComparisonResults — failure (no match)
{
"dataBlockId": "01941a3c-0000-7000-8000-000000000002",
"type": "ComparisonResults",
"verdict": "noMatch",
"leftOperand": "doc-id-step",
"rightOperand": "eid-step",
"attributesCompared": ["givenName", "familyName", "birthDate"],
"mismatchedAttributes": ["familyName"],
"missingAttributes": []
}
ComparisonResults — failure (inconclusive)
{
"dataBlockId": "01941a3c-0000-7000-8000-000000000003",
"type": "ComparisonResults",
"verdict": "inconclusive",
"leftOperand": "doc-id-step",
"rightOperand": "eid-step",
"attributesCompared": ["givenName", "familyName", "birthDate"],
"mismatchedAttributes": [],
"missingAttributes": ["birthDate"]
}