Identity data comparison (v2)
This version of this step type is in preview / alpha. The functionality and subsequently the documentation can still change.
Compares identity details from two source steps that you choose in inputMapping
Ensures the identity information collected from different steps or documents refers to the same person, improving decision accuracy. Unlike v1, you declare the two source steps in the step's inputMapping, under the keys leftOperand and rightOperand. Your flow is checked when you publish it, so a wrong source step is reported before any session runs.
Key features
- Publish-time validation: When you publish the flow, it is rejected unless both source steps come before this step and each one produces a
BasicIdentitydata block. Configuration mistakes are caught before any session runs. - Two identity sources: Both inputs are
BasicIdentitydata blocks, so you name each source separately ininputMapping, usingleftOperandfor one andrightOperandfor the other. - Configurable attributes: Select which fields to compare —
givenName,familyName,name, orbirthDate. At least one attribute is required. - Dual comparison modes:
strictrequires close matches (Levenshtein distance ≤ 1 for words of 3+ characters);tolerantaccepts broader name variations and ignores the day component of dates. - Detailed
ComparisonResultsoutput: Produces aComparisonResultsdata block on both routes, including a per-attribute breakdown of compared, mismatched, and missing fields.
Configuration
| Option | Type | Required | Description |
|---|---|---|---|
attributes | string[] | Yes | BasicIdentity field names to compare. At least one required. Accepted values: givenName, familyName, name, birthDate. |
mode | string | Yes | Comparison mode: "strict" (exact match) or "tolerant" (minor variations accepted). See Comparison mode details. Accepted values: strict, tolerant. |
leftOperand and rightOperand do not go in options. Set them in the step's inputMapping, with the ID of the step that provides each identity as the value:
"inputMapping": {
"leftOperand": "doc-id-step",
"rightOperand": "eids-step"
}
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
| Input slot | 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 sets the verdict field of the ComparisonResults data block and takes the matching route.
verdict value | Route | Description |
|---|---|---|
match | match | All specified attributes were compared and all values matched. |
noMatch | failure | At least one compared attribute did not match. Takes priority over inconclusive when both mismatches and missing values are present. |
inconclusive | inconclusive | One or more required attribute values were missing, making comparison impossible. No mismatches were detected among the available attributes. |
Routes
| Route | Description |
|---|---|
match | All specified attributes were compared and all values matched. |
failure | At least one attribute did not match between the two sources. |
inconclusive | One or more required attribute values were missing — comparison could not be completed conclusively. |
Output data blocks
| Route | Data blocks produced |
|---|---|
match | ComparisonResults |
failure | ComparisonResults |
inconclusive | ComparisonResults |
Example payloads
In the output, leftOperand and rightOperand always contain the literal values "leftOperand" and "rightOperand". To find which steps provided each identity, check this step's inputMapping in your flow definition. See input mapping.
ComparisonResults — match
{
"verdict": "match",
"leftOperand": "leftOperand",
"rightOperand": "rightOperand",
"attributesCompared": [
"givenName",
"familyName",
"birthDate"
],
"mismatchedAttributes": [],
"missingAttributes": []
}
ComparisonResults — noMatch
{
"verdict": "noMatch",
"leftOperand": "leftOperand",
"rightOperand": "rightOperand",
"attributesCompared": [
"givenName",
"familyName",
"birthDate"
],
"mismatchedAttributes": [
"familyName"
],
"missingAttributes": []
}
ComparisonResults — inconclusive
{
"verdict": "inconclusive",
"leftOperand": "leftOperand",
"rightOperand": "rightOperand",
"attributesCompared": [
"givenName",
"familyName"
],
"mismatchedAttributes": [],
"missingAttributes": [
"birthDate"
]
}