Interpreting Workflow Results

After a workflow has been executed, various elements require examination to determine the final outcome.

Interpreting Workflow Results

Legend:

IconDescription
‼️Results that deem whether the entity has passed or failed or the workflow was unable to execute to completion.
Context on why the entity may have passed or failed.
ℹ️Information-only, no contribution to whether the entity has passed or failed

Use the legend above to better understand the following table.

Field nameDescriptionImportance
statusThe ultimate assessment of whether the individual passed all workflow requirements lies in the status, which provides a conclusive recommendation based on the checks run. It accounts for whether all verification checks were successful or if there were failures.
The status also captures manual intervention such as any action of overriding the result directly outside the context of a workflow.

UNCHECKED - Workflow has not yet been executed or the workflow result was not updated successfully as part of the workflow execution.
IN_PROGRESS - Workflow is currently running and awaiting completion.
PASS - Workflow completed successfully and the entity passed all checks required. Alternatively, the status was applied manually proceeding with workflow execution.
FAIL - Workflow completed successfully, however the entity did not pass all checks required. Alternatively, the status was applied manually proceeding with workflow execution.

Note: the statusOverrideAt field can be used to determine if the status was manually overridden.
‼️
statusOverrideAtThe UTC of when the status was manually overridden outside the workflow execution.ℹ️
statusOverrideRequestIdThe unique requestId of the request that manually overrode the status outside the workflow execution.ℹ️
statusOverrideByThe X-Frankie-Username header value in the request that manually overrode the status outside of the workflow execution.ℹ️
resultThe result is the original workflow outcome that was determined after the workflow. In the case of manual override, this will differ from the status.
UNCHECKED - Workflow has not yet been executed or the workflow result was not updated successfully as part of the workflow execution.

IN_PROGRESS - Workflow is currently running and awaiting completion.
PASS - Workflow completed successfully and the entity passed all checks required.
FAIL - Workflow completed successfully, however the entity did not pass all checks required.
workflowExecutionStateThe workflowExecutionState is an indicator of whether the workflow was able to execute to completeness. The workflowExecutionState should always be in a state of “COMPLETED” otherwise it is telling that the workflow execution did not finish executing and that the result should be taken with that context in mind.‼️
workflowStepResultsThe workflowStepResults is a detailed list of all the steps that were executed as part of the workflow and their individual outcomes.
riskAssessmentThe riskAssessment is a summary of all the risk factors that were encountered during the execution of the workflow and the accumulated risk level of the entity as a result of those factors.
issuesissues is a summary of all the issues that were encountered during the execution of the workflow that may have affected the outcome such as errors, insufficient data, or simply a failed verification.

Typically issues will only be present if any checks have failed.
workflowExecutionIdThe unique identifier of the workflow execution. Generated on triggering the workflow execution.ℹ️
serviceProfileIdThe unique identifier of the service profile in which the workflow was executed. Set based on the serviceName in the path of the workflow execution request API.ℹ️
workflowIdThe ID of the workflow that was executed. Set based on the workflowName in the path of the workflow execution request API.ℹ️
workflowNameThe name of the workflow that was executed. Set based on the workflowName in the path of the workflow execution request API.ℹ️
stepsThe steps that were executed as part of this workflow execution:
order - order in which the steps were executed
passed - steps that passed or were successful in execution
failed - steps that failed or were unsuccessful in execution
incomplete - steps that did not execute or did not execute to completion
notApplicable - steps that did not run because they were deemed unnecessary
ℹ️
entityTypeThe type of entity in which the workflow was executed. INDIVIDUAL or ORGANIZATION.ℹ️
errorsAny errors that were encountered as part of the workflow execution
requestIdThe requestId is the unique identifier of the request that triggered this workflow execution.ℹ️
entityIdThe entityId of the individual/organization in which the workflow was executed.ℹ️
startedAtstartedAt refers to when the workflow started executing.ℹ️
endedAtendedAt refers to when the workflow finished executing.ℹ️
createdAtcreatedAt refers to when the process result was created.ℹ️
updatedAtupdatedAt refers to when the process result was last updated.ℹ️
updatedByupdatedBy refers to who last updated the workflow execution. This will be the value of the X-Frankie-Username header of the request that executed the workflow or overrode the workflow result.ℹ️
schemaVersionRefers to the version of the schema returned. There will always be 2 in the FrankieOne v2.x API.ℹ️
notesAny additional notes that were captured during the process.ℹ️

Example 1: Pass

"workflowResult": {
    "createdAt": "2024-07-08T06:37:22.520433Z",
    "endedAt": "2024-07-08T06:37:27.697016Z",
    "entityType": "INDIVIDUAL",
    "issues": [...],
    "workflowExecutionId": "{workflowExecutionId}",
    "requestId": "{requestId}",
    "entityId": "{entityId}",
    "startedAt": "2024-01-15T02:18:11.365Z",
    "endedAt": "2024-01-15T02:18:11.365Z",
    "workflowId": "{workflowId}",
    "workflowName": "onboarding",
    "steps": "[KYC]",
    "result": "PASS",
    "status": "PASS",
    "workflowExecutionState": "COMPLETED",
    "schemaVersion": 2,
    "serviceProfileId": "{serviceProfileId}",
    "updatedAt": "2024-07-08T06:37:27.769601Z",
    "updatedBy": "system:frankieone",
    "riskAssessment": [...],
    "workflowStepResults": [...]
},
"requestId": "{requestId}"

Example 2: Fail

"workflowResult": {
    "createdAt": "2024-07-08T06:37:22.520433Z",
    "endedAt": "2024-07-08T06:37:27.697016Z",
    "entityType": "INDIVIDUAL",
    "issues": [...],
    "workflowExecutionId": "{workflowExecutionId}",
      "requestId": "{requestId}",
    "entityId": "{entityId}",
    "startedAt": "2024-01-15T02:18:11.365Z",
    "endedAt": "2024-01-15T02:18:11.365Z",
    "workflowId": "{workflowId}",
    "workflowName": "onboarding",
    "steps": "[KYC]",
    "result": "FAIL",
    "status": "FAIL",
    "workflowExecutionState": "COMPLETED",
    "schemaVersion": 2,
    "serviceProfileId": "{serviceProfileId}",
    "updatedAt": "2024-07-08T06:37:27.769601Z",
    "updatedBy": "system:frankieone",
    "riskAssessment": [...],
    "workflowStepResults": [...]
},
"requestId": "{requestId}"

Example 3: Workflow failed but status was overridden to be passed

"workflowResult": {
    "createdAt": "2024-07-08T06:37:22.520433Z",
    "endedAt": "2024-07-08T06:37:27.697016Z",
    "entityType": "INDIVIDUAL",
    "issues": [...],
    "workflowExecutionId": "{workflowExecutionId}",
    "requestId": "{requestId}",
    "entityId": "{entityId}",
    "startedAt": "2024-01-15T02:18:11.365Z",
    "endedAt": "2024-01-15T02:18:11.365Z",
    "workflowId": "{workflowId}",
    "workflowName": "onboarding",
    "steps": "[KYC]",
    "result": "FAIL",
    "status": "PASS",
    "workflowExecutionState": "COMPLETED",
    "schemaVersion": 2,
    "serviceProfileId": "{serviceProfileId}",
    "updatedAt": "2024-07-08T06:37:27.769601Z",
    "updatedBy": "system:frankieone",
    "riskAssessment": [...],
    "workflowStepResults": [...]
},
"requestId": "{requestId}"

Interpreting Workflow Step Results

Workflow outcomes will include various individual step outcomes. Each outcome will document findings from specific verification processes. Key steps include data verification, Know Your Customer (KYC) checks, Anti-Money Laundering (AML) screenings, Identity Verification (IDV), and risk evaluations.

To streamline reporting, outcomes are consolidated by category. This ensures that identical steps are aggregated and presented as a single outcome. For example, KYC procedures may be performed multiple times with different service providers. However, only one step outcome will be generated, summarizing all assessments conducted.

Each step follows a consistent format. Significant variations arise from the stepData and processResults elements. These elements are unique to each step type, providing tailored insights specific to each step's function.


Know Your Customer (KYC) Database Verification

The KYC workflow step takes into account all the processed data and indicates the outcome in the result field.

ResultDescription
UNCHECKED KYC was not attempted due to a failure in a previous step
MISSING_DATA KYC was not attempted as not enough data was available
MATCH KYC was attempted successfully, and the entity was verified against the required number of data sources
NO_MATCHKYC was attempted, however, the entity was not verified against any data sources
PARTIALKYC was attempted, however the entity was not verified against the required number of data sources if more than 1 was required
ERROR KYC was attempted, however, an error was encountered during the process. See errors for more information.

Sample workflow step results

{
    "workflowResult": {
        "workflowStepResults": [
            {
                "endedAt": "2024-05-14T04:04:12.66319Z",
                "objectId": "{objectId}",
                "objectType": "INDIVIDUAL",
                "processResults": [...],
                "requestId": "{requestId}",
                "result": "MATCH",
                "serviceProviders": [...],
                "startedAt": "2024-05-14T04:04:11.849152Z",
                "stepData": {...},
                "stepName": "kyc",
                "stepResultId": "{stepResultId}",
                "workflowExecutionId": "{workflowExecutionId}"
            },
        ]
    }
}

🚧

Service Provider Result

The KYC workflow step indicates the service provider overall outcome as the serviceProviders.result

{
    "workflowResult": {
        "workflowStepResults": [
            {
                "endedAt": "2024-05-14T04:04:12.66319Z",
                "objectId": "{objectId}",
                "objectType": "INDIVIDUAL",
                "processResults": [...],
                "requestId": "{requestId}",
                "result": "MATCH",
                "serviceProviders": [
                    {
                        "endedAt": "2024-05-14T04:04:12.663187286Z",
                        "provider": "dvs",
                          "result": "MATCH",
                        "startedAt": "2024-05-14T04:04:11.849152Z"
                    }
                ],
                "startedAt": "2024-05-14T04:04:11.849152Z",
                "stepData": {...},
                "stepName": "kyc",
                "stepResultId": "{stepResultId}",
                "workflowExecutionId": "{workflowExecutionId}"
            },
        ]
    }
}

KYC Step Summary

To gain insight into which personal information matched against specific sources, please refer to the matchedRules. Commonly, you’ll find a singular ruleMatches entry detailing the outcome of a particular rule established in the workflow. For example, a rule might stipulate that both a name and a date of birth or address be verified against two independent data sources. matchTypes will reveal the exact element verified, while matchSources will specify the data sources used for confirmation. Any data sources consulted but yielding no matches will be listed as nonMatchSources.

After a KYC step has been executed, various elements require examination to determine the final outcome.

Legend:

IconDescription
‼️Results that deem whether the entity has passed or failed or the workflow failed to execute to completion.
Context on why the entity may have passed or failed.
ℹ️Information-only, no contribution to whether the entity has passed or failed.

Matched and Unmatched Rules

The matchedRules and unmatchedRules that exist within the KYC workflow step summary are identical in structure and differ only in whether the ruleset was matched against successfully (matchedRules) or not (unmatchedRules).

Field nameDescriptionImportance
matchedRulesList of all the KYC rulesets that matched and the summary of those matches. See Matched and Unmatched Rules.
unmatchedRulesList of all the KYC rulesets that did not match and the summary of those matches. See Matched and Unmatched Rules.

Rulesets

The requirements rulesets are defined within the KYC workflow step configuration and are used to determine whether the number of data source matches have been met for each entity element (for example, name, date of birth, address and others) for the verification to be considered a match.

Field nameDescriptionImportance
ruleNameName of the ruleset
Default: default
ℹ️
ruleOrderOrder in which we attempted to match the results against the requirements defined in the ruleset.

Example: 1
ℹ️
ruleMatchesList of matches that made up this ruleset. See Rule Matches.

Ruleset Match Details

The specific matching details of each rule that was matched or not matched.

Field nameDescriptionImportance
matchTypesThe match types that this overall count and results refer to
matchCountNumber of matches found for this ruleset
matchCountRequiredNumber of matches required for this ruleset to be satisfied
hasAllRequiredSourcesMatchedDetermines whether a match has been found for all required data sources defined in the ruleset.

Note: Optional. This is only evaluated if 1 or more data sources have been set as mandatory within the KYC workflow step configuration.
requiredSourcesMatchedList of the required sources that the entity has been matched against.

Note: Optional. This is only evaluated if 1 or more data sources have been set as mandatory within the KYC workflow step configuration.
requiredSourcesNotMatchedList of the required sources that the entity has not been matched against.



Note: Optional. This is only evaluated if 1 or more data sources have been set as mandatory within the KYC workflow step configuration.
isVerifiedDetermines whether the matches required have been satisfied, indicating a successfully matched ruleset. Based on whether matchCount >= matchCountRequired

true/false
‼️

Ruleset Matched Types

The specific matching details of each element (for example, name, dateOfBirth, and others) that was matched or not matched.

Field nameDescriptionImportance
objectIdThe unique identifier of the object (for example: name, address, date of birth) that was verifiedℹ️
objectTypeThe type of the object that was verified (for example: name, address, date of birth)ℹ️
matchCountNumber of matches found for this object type
matchSourcesList of all the data sources that the entity was matched against.
Example: “au-elec-roll”
nonMatchSourcesList of all the data sources that the entity was not matched against.
Example: “au-elec-roll”
isCheckedDetermines whether an attempt was made to verify the entity’s personal information as identified by the objectId and objectType (for example: name, date of birth, address)
isVerifiedDetermines whether the entity’s personal information as identified by the objectId and objectType (for example: name, date of birth, address) was able to be verified by at least 1 data source.‼️

Example 1: Successful KYC Database Verification

Let’s break down the following match result:

FieldDescription
name, dob, addressWere checked as they are listed under matchTypes.
matchCountIndicates how many data sources were matched for each element:
- name matched against the Australian Electoral Roll (“au-elec-roll”) and Equifax Public Credit Data Header (“au-efax-cdh-pub”).
- address matched against the Australian Electoral Roll (“au-elec-roll”) only.
- dateOfBirth matched against the Equifax Public Credit Data Header (“au-efax-cdh-pub”).
matchCountEquals matchCountRequired, indicating enough matches were found for a positive result.
requiredSourcesMatchedIndicates that the Australian Electoral Roll (“au-elec-roll”) was a required source that was matched (name, address).
isVerifiedIndicates that the match requirements were satisfied based on the rule criteria.

"summary": {
  "matchedRules": [
	{
	  "ruleName": "SafeHarbour2x2",
	  "ruleOrder": 1,
	  "ruleMatches": [
		{
		  "matchTypes": {
			"name": {
			  "objectId": "{objectId}",
			  "matchCount": 2,
			  "matchSources": ["au-elec-roll", "au-efax-cdh-pub"],
			  "nonMatchSources": ["au-efax-cdh-consumer"],
			  "isChecked": true,
			  "isVerified": true
			},
 			"address": {
			  "objectId": "{objectId}",
			  "matchCount": 1,
			  "matchSources": ["au-elec-roll"],
			  "nonMatchSources": ["au-efax-cdh-pub", "au-efax-cdh-consumer"],
			  "isChecked": true,
			  "isVerified": true
			},
 			"dateOfBirth": {
			  "objectId": "{objectId}",
			  "matchCount": 1,
			  "matchSources": [""au-efax-cdh-pub""],
			  "nonMatchSources": ["au-elec-roll", "au-efax-cdh-consumer"],
			  "isChecked": true,
			  "isVerified": true
			}
		  },
		  "matchCount": 2,
		  "matchCountRequired": 2,
		  "hasAllRequiredSourcesMatched": true,
		  "requiredSourcesMatched": ["au-elec-roll"],
		  "isVerified": true
		}
	  ]
	}
  ],
...

Example 2: Unsuccessful KYC Database Verification

The unmatchedRules contains a ruleMatches entry. This entry details a rule in the workflow that was not met.

Let’s analyze the non-matched result:

FieldDescription
name, dob, addressWere checked as listed under matchTypes.
matchCountShows no matchSources, indicating no matches were found.
nonMatchSourcesLists sources checked without successful matches:
- name did not match the Australian Electoral Roll (“au-elec-roll”), Equifax Public Credit Data Header (“au-efax-cdh-pub”), or Equifax Consumer Credit Data Header (“au-efax-cdh-consumer”).
- address did not match the Australian Electoral Roll (“au-elec-roll”), Equifax Public Credit Data Header (“au-efax-cdh-pub”), or Equifax Consumer Credit Data Header (“au-efax-cdh-consumer”).
- dateOfBirth did not match the Australian Electoral Roll (“au-elec-roll”), Equifax Public Credit Data Header (“au-efax-cdh-pub”), or Equifax Consumer Credit Data Header (“au-efax-cdh-consumer”).
matchCountIs less than matchCountRequired, indicating insufficient matches for a positive result.
requiredSourcesMatchedShows that the Australian Electoral Roll (“au-elec-roll”) was a required source that did not match.
isVerifiedIndicates that the match requirements were not satisfied based on the rule criteria.

"summary": {
  "unmatchedRules": [
	{
	  "ruleName": "SafeHarbour2x2",
	  "ruleOrder": 1,
	  "ruleMatches": [
		{
		  "matchTypes": {
				"name": {
			  	"matchCount": 0,
			  	"nonMatchSources": ["au-elec-roll", "au-efax-cdh-pub", "au-efax-cdh-consumer"],
			  	"isChecked": true,
			  	"isVerified": false
			},
 			"address": {
			  "matchCount": 0,
			  "nonMatchSources": ["au-elec-roll", "au-efax-cdh-pub", "au-efax-cdh-consumer"],
			  "isChecked": true,
			  "isVerified": false
			},
 			"dateOfBirth": {
			  "matchCount": 0,
			  "nonMatchSources": ["au-elec-roll", "au-efax-cdh-pub" "au-efax-cdh-consumer"],
			  "isChecked": true,
			  "isVerified": false
			}
		  },
		  "matchCount": 0,
		  "matchCountRequired": 2,
		  "hasAllRequiredSourcesMatched": false,
		  "requiredSourcesNotMatched": ["au-elec-roll"],
		  "isVerified": false
		}
	  ]
	}
  ]

KYC Process Results

KYC match details are represented as processResults, found within the workflow step results. These results apply to steps requiring verification or checks, varying by the context of the check.

For checks against external data sources, processResults captures what matched against each source. Steps typically return an array of individual process results used to determine the step’s overall result.

After executing a KYC step, various elements must be examined to determine the final outcome.

Legend:

IconDescription
‼️Results that deem whether the entity has passed or failed or the workflow failed to execute to completion.
Context on why the entity may have passed or failed.
ℹ️Information-only, no contribution to whether the entity has passed or failed.

Field nameDescriptionImportance
processResultIdThe processResultId represents the unique identifier of the process resultℹ️
classThe class reflects the type of process result (for example KYC, AML)ℹ️
resultThe result is the overall outcome of the process (for example MATCH, NO_MATCH, PARTIAL)‼️
stateThe state reflects whether the process was completed successfully or whether an error of some kind was encountered during the process
stepNameThe stepName indicates the workflow step that triggered the process and thus generated the process resultℹ️
stepTypeThe stepType indicates whether there was a subtype for the step. Generally used in non-KYC step process results.ℹ️
groupIdThe groupId is generated to tie related process results together. In the context of KYC, a single groupId will be generated and added to each process result per data source that is checked.ℹ️
systemStatusThe systemStatus indicates that the result is valid and was used in determining the overall step result (typically only VALID results will be returned unless specifically requested).
manualStatusThe manualStatus indicates whether the result has been manually classified by an operator outside of FrankieOne (for example: via API or Portal). This is set most commonly in AML classifications where an operator has registered whether a potential match is a true positive or false positive.
providerResult• The providerResult.confidence refers to the confidence rating that was returned by the provider. Defaults to 0/100 if confidence is not explicit.
providerResult.name refers to the name of the provider
• Any unique identifier on the data provider side will be returned as providerResult.reference
The providerResult.source indicates the raw source that was checked against
The providerResult.sourceNormalized indicates the normalized source that was checked against.

Note: Same sources checked by different providers will have the same sourceNormalized value but different source values.
riskFactorsAny risk factors returned by the service provider will be present as riskFactors and potentially utilized in FrankieOne’s own risk engine, depending on your risk configuration.
objectIdThe objectId indicates the exact element that was checked.ℹ️
objectTypeThe objectType indicates the specific type of element that was checked.ℹ️
entityIdThe entityId of the individual that was checkedℹ️
createdAtcreatedAt refers to when the process result was created.ℹ️
updatedAtupdatedAt refers to when the process result was last updated.ℹ️
updatedByupdatedBy refers to who last updated the process result. Generally, this will be FrankieOne unless a manual override is triggered.ℹ️
schemaVersionRefers to the version of the schema returned. There will always be 2 in the FrankieOne v2.x API.ℹ️
requestIdThe unique identifier of the request that generated this process resultℹ️
notesAny additional notes that were captured during the process. May contain extra information about how the result was determined.
errorsAny errors that were encountered as part of the process.

Example: 1: KYC Data Source Match Details

Process Result Objects (PROs) encapsulate the outcomes of specific processes (check, comparison, verification etc.). They play a crucial role in evaluating the overall outcome of relevant workflow steps.

Let’s break down the following KYC process result:

FieldDescription
classIs “KYC,” indicating the process is about a KYC database verification check.
Address VerificationThe address of the entity has been successfully verified against the Australian Electoral Roll:
- Based on the objectType, the specific element checked was an “ADDRESS.”
- The providerResult array contains details of the service provider that the entity was checked against:
- The service provider is the Document Verification Service as indicated by the name field (“dvs”).
- The specific data source checked is the Australian Electoral Roll as indicated by the source (“au-elec-roll”) and sourceNormalized (“au-elec-roll”) fields.
ResultThe result is “MATCH,” indicating that the address was successfully matched.
Check StatusThe check was completed successfully (state is “COMPLETED”) and has not yet been invalidated (systemStatus is “VALID”).
Therefore, it is safe to determine that the process ran to completion and was used in determining the successful result.
Manual StatusThere has been no manual status applied to the process (due to the absence of a manualStatus field).

"processResults": [
{
	"class": "KYC",
	"createdAt": "2024-07-11T23:57:08.197185Z",
	"entityId": "{entityId}",
	"groupId": "{groupId}",
	"notes": {...},
	"objectId": "{objectId}",
	"objectType": "ADDRESS",
	"processResultId": "{processResultId}",
	"providerResult": {
		"confidence": "100",
		"name": "dvs",
		"reference": "{referenceId",
		"source": "au-elec-roll",
		"sourceNormalized": "au-elec-roll"
	},
	"supplementaryData": {
		"matchStrengths": {
			"fullAddress": 100,
			"streetNumber": 100,
			"streetName": 100
			"streetType": 100,
			"locality": 100,
			"district": 100,
			"subdivision": 100,
			"postalCode": 100,
			"country": 100,
		},
		"fuzziness": {
			"normalized": 0,
			"actual": 0
		},
		"wasNameMatchStrongEnough": true
	},
	"requestId": "{requestId}",
	"result": "MATCH",
	"schemaVersion": 2,
	"state": "COMPLETED",
	"stepName": "KYC",
	"systemStatus": "VALID",
	"updatedAt": "2024-07-11T23:57:08.197185Z"
}

Example: 2: KYC Data Source Non-Match Details

Similar to Process Results (PROs) for KYC database verification matches, the process results that result in no match will be generated during step execution and will provide insights into why the data source could NOT be matched.

Let’s break down the following KYC process result:

FieldDescription
class“KYC,” indicating the process is about a KYC database verification check.
Address VerificationThe address of the entity has been successfully verified against the Australian Electoral Roll:
- Based on the objectType, the specific element checked was an “ADDRESS.”
- The providerResult array contains details of the service provider that the entity was checked against:
- The service provider is the Document Verification Service as indicated by the name field (“dvs”).
- The specific data source checked is the Australian Electoral Roll as indicated by the source (“au-elec-roll”) and sourceNormalized (“au-elec-roll”) fields.
ResultThe result is “MATCH,” indicating that the address was successfully matched.
Check StatusThe check was completed successfully (state is “COMPLETED”) and has not yet been invalidated (systemStatus is “VALID”).
Therefore, it is safe to determine that the process ran to completion and was used in determining the successful result.
Manual StatusThere has been no manual status applied to the process (due to the absence of a manualStatus field).
"processResults": [
{
	"class": "KYC",
	"createdAt": "2024-07-11T23:57:08.197185Z",
	"entityId": "{entityId}",
	"groupId": "{groupId}",
	"notes": {...},
	"objectId": "{objectId}",
	"objectType": "NAME",
	"processResultId": "{processResultId}",
	"providerResult": {
		"confidence": "0",
		"name": "dvs",
		"reference": "{referenceId}",
		"source": "au-elec-roll",
		"sourceNormalized": "au-elec-roll"
	},
	"supplementaryData": {
		"matchStrengths": {
			"fullname": 0,
			"familyName": 0,
			"givenName": 0,
			"otherNames": 0,
			"firstInitialFamilyName": 0
		},
		"fuzziness": {
			"normalized": 0,
			"actual": 0
		}
	}
	"requestId": "{requestId}",
	"result": "NO_MATCH",
	"schemaVersion": 2,
	"state": "COMPLETED",
	"stepName": "KYC",
	"systemStatus": "VALID",
	"updatedAt": "2024-07-11T23:57:08.197185Z"
}


Anti-Money Laundering (AML) Screening

The result field reflects AML screening results, clearly indicating the step’s outcome. This field summarizes the step’s result, accounting for all the processed data.

ResultDescription
HIT The individual’s name has shown up in screening and needs to be evaluated.
CLEAR The individual’s name did not show up during screening
CLEARED The individual’s name showed up during the initial screening however it has since been resolved as a false positive or accepted.


   "workflowResult": {  
        "workflowStepResults": \[  
            {  
                "endedAt": "2024-05-14T04:04:12.66319Z",  
                "objectId": "97039d38-5d2c-411a-afad-236d61558d7b",  
                "objectType": "INDIVIDUAL",  
                "processResults": [...],  
                "requestId": "01HXTMBBBBBBZM2YAARMZB4GPR",  
               "result": "CLEAR",
                "serviceProviders": [  
                    {  
                        "endedAt": "2024-05-14T04:04:12.663187286Z",  
                        "provider": "complyadvantage",  
                        "result": "CLEAR",  
                        "startedAt": "2024-05-14T04:04:11.849152Z"  
                    }  
                ],  
                "startedAt": "2024-05-14T04:04:11.849152Z",  
                "stepData": {...},  
                "stepName": "AML",  
                "stepResultId": "01HXTMBBEERQ53021A2FGND7N7",  
                "workflowExecutionId": "01HXTMBAT8AEM3E8RZXD9QTGN4"  
            },  
        ]  
    }  
}

The processResults and summary has been omitted for brevity.

🚧

Service Provider Result

The AML workflow step indicates the service provider overall outcome as the serviceProviders.result

{
    "workflowResult": {
        "workflowStepResults": [
            {
                "endedAt": "2024-05-14T04:04:12.66319Z",
                "objectId": "97039d38-5d2c-411a-afad-236d61558d7b",
                "objectType": "INDIVIDUAL",
                "processResults": [...],
                "requestId": "01HXTMBBBBBBZM2YAARMZB4GPR",
                "result": "CLEAR",
                "serviceProviders": [
                    {
                        "endedAt": "2024-05-14T04:04:12.663187286Z",
                        "provider": "complyadvantage",
                        "result": "CLEAR",
                        "startedAt": "2024-05-14T04:04:11.849152Z"
                    }
                ],
                "startedAt": "2024-05-14T04:04:11.849152Z",
                "stepData": {...},
                "stepName": "AML",
                "stepResultId": "01HXTMBBEERQ53021A2FGND7N7",
                "workflowExecutionId": "01HXTMBAT8AEM3E8RZXD9QTGN4"
            },
        ]
    }
}


AML Step Summary

Refer to the summary to understand the potential matches found during AML screening. Here you will find the number of matches that have been found for the given entity and what classification of hit it is. After an AML step has been run, various elements require examination to determine the outcome.

Use the table below to better understand the following section.

IconDescription
‼️Results that deem whether the entity has passed or failed, or the workflow failed to execute to completion.
Context on why the entity may have passed or failed.
ℹ️Information-only, no contribution to whether the entity has passed or failed.

The AML workflow step summary details the types of matches that were found during AML screening and whether they have since been classified or are still in need of resolution.

Field nameDescriptionImportance
numUnresolvedAdverseMediaNumber of matched entities with Adverse Media that have not been classified as true positive, false positive or unknown.‼️
numUnresolvedPEPNumber of matched entities that are PEPs that have not been classified as true positive, false positive or unknown.‼️
numUnresolvedSanctionsNumber of matched entities that are Sanctioned that have not been classified as true positive, false positive or unknown.‼️
numUnresolvedWatchlistNumber of matched entities on Watchlists that have not been classified as true positive, false positive or unknown.‼️
providerSummariesSee the providerSummaries table.
stepNameThe name of the step executed to produce this result.ℹ️
totalFalsePositivesNumber of matched entities that have been classified as false positives.
totalHits Number of matched entities.
totalTruePositivesNumber of matched entities that have been classified as true positives.
totalUnknownsNumber of matched entities that have been classified as unknown.
totalUnresolvedNumber of matched entities that have not yet been classified.‼️

AML Step Summary - Provider Summaries

The providerSummaries that exist within the AML workflow step summary, provides additional context as to which matches were discovered by each provider. This will be identical to the summary numbers if only a single AML provider is configured within the workflow.

Field nameDescriptionImportance
nameName of the service provider that screened this entity.ℹ️
lastRetrievedAt The datetime of the last result that was retrieved from the service provider.ℹ️
adverseMediaCountriesCountries where matched entities with adverse media were reported.ℹ️
pepCountriesCountries where matched entities that are PEPs were reported.ℹ️
sanctionCountriesCountries where matched entities that are sanctioned were reported.ℹ️
watchlistCountriesCountries where matched entities on watchlists were reported.ℹ️
numUnresolvedAdverseMediaRelevant to this provider (based on the provider name), the number of matched entities with Adverse Media that have not been classified as true positive, false positive or unknown.ℹ️
numUnresolvedPEPRelevant to this provider (based on the provider name), the number of matched entities that are PEPs that have not been classified as true positive, false positive or unknown.ℹ️
numUnresolvedSanctionsRelevant to this provider (based on the provider name), the number of matched entities that are Sanctioned that have not been classified as true positive, false positive or unknown.ℹ️
numUnresolvedWatchlistRelevant to this provider (based on the provider name), the number of matched entities on Watchlists that have not been classified as true positive, false positive or unknown.ℹ️
totalFalsePositivesRelevant to this provider (based on the provider name), the number of matched entities that have been classified as false positives.ℹ️
totalHitsRelevant to this provider (based on the provider name), the number of matched entities.ℹ️
totalTruePositivesRelevant to this provider (based on the provider name), the number of matched entities that have been classified as true positives.ℹ️
totalUnknownsRelevant to this provider (based on the provider name), the number of matched entities that have been classified as unknown.ℹ️
totalUnresolvedRelevant to this provider (based on the provider name), the number of matched entities that have not yet been classified.ℹ️

Example 1: Successful AML screening with many matches

Let’s break down the following result:

FieldDescription
numUnresolvedIndicates how many matches were found of the specified type. There is currently 1 unresolved match with Adverse Media, 3 unresolved matches are potential PEPs, 1 unresolved match is on a sanction list, and 1 unresolved match is on a watchlist. These matches are not mutually exclusive.
providerSummariesBreakdown of the AML screening results for Refinitiv (as presented by the name).
- name Refinitiv is the service provider that provided the screening results.
- searchQuery The entity details that were used in the screening query.
- Countries Russian Federation is the only country where the matched listings were published.
- numUnresolved Indicates how many matches were found of the specified type with this service provider. As there are results only from a single provider (Refinitiv), the providerSummaries.numUnresolved will represent the same number of matches as the summary.numUnresolved.
- total Indicates the total number of matches found and their current classification (such as false positive, true positive, unknown, and unresolved) for this service provider. As there are results only from a single provider (Refinitiv), the providerSummaries.total will represent the same number of matches as the summary.total.
totalIndicates the total number of matches found and their current classification (i.e., false positive, true positive, unknown, unresolved). There are 10 matches total, with 7 already resolved as false positives and 3 still unresolved.

  {  
  "workflowStepResults": [  
  	{  
  ...  
  	"summary": {  
  		"numUnresolvedAdverseMedia": 1,  
  		"numUnresolvedPEP": 3,  
  		"numUnresolvedSanction": 1,  
  		"numUnresolvedWatchlist": 1,  
  		"providerSummaries": [  
                          {  
                              "adverseMediaCountries": [],  
                              "lastRetrievedAt": "2024-11-06T00:51:05.778476391Z",  
                              "name": "refinitiv_pep_media",  
                              "numFalsePositives": 7,  
                              "numHits": 10,  
                              "numTruePositives": 0,  
                              "numUnknown": 0,  
                              "numUnresolved": 3,  
                              "numUnresolvedAdverseMedia": 1,  
                              "numUnresolvedPEP": 3,  
                              "numUnresolvedSanction": 1,  
                              "numUnresolvedWatchlist": 1,  
                              "pepCountries": [],  
                              "sanctionCountries": [  
                                  "RUSSIAN FEDERATION",  
                              ],  
                              "searchQuery": {  
                                  "address": "RUS",  
                                  "dateOfBirth": "1972-10-09",  
                                  "gender": "MALE",  
                                  "name": "Iam Arisk"  
                              },  
                              "watchlistCountries": [  
                                  "RUSSIAN FEDERATION"  
                              ]  
                          }  
                      ]  
  ,  
  		"stepName": "AML",  
  		"totalFalsePositives": 7,  
  		"totalHits": 10,  
  		"totalTruePositives": 0,  
  		"totalUnknown": 0,  
  		"totalUnresolved": 0  
  	},  
  ...  
  ]  
  }

Example 2: Successful AML screening with 0 matches

Let’s break down the following result:

FieldDescription
totalThere were 0 matches found during the screening.
numUnresolvedThere are 0 unresolved matches for review.
providerSummaries
- name - Refinitiv is the service provider that provided the screening results.
- searchQuery - The entity details that were used in the screening query.
- Countries - No listings were matched against this search.
- numUnresolved - As there are results only from a single provider (Refinitiv), the providerSummaries.numUnresolved will represent the same number of matches as the summary.numUnresolved.
- total - As there are results only from a single provider (Refinitiv), the providerSummaries.total will represent the same number of matches as the summary.total.

  {  
  "workflowStepResults": [  
  	{  
  ...  
  	"summary": {  
  		"numUnresolvedAdverseMedia": 0,  
  		"numUnresolvedPEP": 0,  
  		"numUnresolvedSanction": 0,  
  		"numUnresolvedWatchlist": 0,  
  		"providerSummaries": [  
                          {  
                              "adverseMediaCountries": [],  
                              "lastRetrievedAt": "2024-11-06T00:51:05.778476391Z",  
                              "name": "refinitiv_pep_media",  
                              "numFalsePositives": 0,  
                              "numHits": 0,  
                              "numTruePositives": 0,  
                              "numUnknown": 0,  
                              "numUnresolved": 0,  
                              "numUnresolvedAdverseMedia": 0,  
                              "numUnresolvedPEP": 0,  
                              "numUnresolvedSanction": 0,  
                              "numUnresolvedWatchlist": 0,  
                              "pepCountries": [],  
                              "sanctionCountries": [],  
                              "searchQuery": {  
                                  "address": "RUS",  
                                  "dateOfBirth": "1992-10-10",  
                                  "gender": "MALE",  
                                  "name": "Iam Notarisk"  
                              },  
                              "watchlistCountries": []  
                          }  
                      ]  
  ,  
  		"stepName": "AML",  
  		"totalFalsePositives": 0,  
  		"totalHits": 0,  
  		"totalTruePositives": 0,  
  		"totalUnknown": 0,  
  		"totalUnresolved": 0  
  	},  
  ...  
  ]  
  }

AML Process Results

In the context of AML screening, a single processResult will represent a single matched entity within the service provider's database, generally with all the related PEP, sanctions and media listing details linked to it.

After an AML step has been executed, various elements require examination to determine whether the entity being screened has matched any of the listings searched by the AML provider.

IconDescription
‼️Results that deem whether the entity has passed or failed or the workflow failed to execute to completion.
Context on why the entity may have passed or failed.
ℹ️Information-only, no contribution to whether the entity has passed or failed.
Field nameDescriptionImportance
processResultIdThe processResultId represents the unique identifier of the process resultℹ️
classThe class reflects the type of process result (such as AML)ℹ️
resultThe result is the overall outcome of the process (such as CLEAR, HIT)"‼️
state"The state reflects whether the process was completed successfully or whether an error of some kind was encountered during the process
stepNameThe stepName indicates the workflow step that triggered the process and thus generated the process resultℹ️
stepTypeThe stepType indicates whether there was a subtype for the step.ℹ️
groupIdThe groupId is generated to tie related process results together. In the context of AML, this is expected to be nullℹ️
systemStatusThe systemStatus indicates that the result is valid and was used in determining the overall step result (typically only VALID results will be returned unless specifically requested).
manualStatusThe manualStatus indicates whether the result has been manually classified by an operator outside of Frankie (such as via API or Portal). This will store any hit classification where a potential match has been classified as a true positive or false positive.
providerResult- The providerResult.confidence refers to the confidence ratings returned by the provider and how we’ve normalized it. Defaults to 0/100 if confidence is not explicit.
- actual - the explicit value returned by the service provider
- normalized - the value we’ve normalized to between 0-100
- providerResult.name refers to the name of the provider
- Any unique identifier on the data provider side will be returned as providerResult.reference
- The providerResult.source indicates the raw source that was checked against (if applicable).
- The providerResult.sourceNormalized indicates the normalized source that was checked against (if applicable).
Note: The same sources checked by different providers will have the same sourceNormalized value but different source values.
objectIdThe objectId indicates the ID of the exact element that was checked. Only present it objectType is not an entity type such as “INDIVIDUAL”ℹ️
objectTypeThe objectType indicates the specific type of element that was checked.ℹ️
entityIdThe entityId of the individual/organization that was checkedℹ️
createdAtcreatedAt refers to when the process result was created.ℹ️
updatedAtupdatedAt refers to when the process result was last updated.ℹ️
updatedByupdatedBy refers to who last updated the process result. Generally, this will be FrankieOne unless a manual override is triggered.ℹ️
schemaVersionRefers to the version of the schema returned. There will always be 2 in the FrankieOne v2.x API.ℹ️
requestIdThe unique identifier of the request that generated this process resultℹ️
notesAny additional notes that were captured during the process. May contain extra information about how the result was determined.
errorsAny errors that were encountered as part of the process.
supplementaryDataSee Supplementary Data below.

Supplementary Workflow Steps

Start Step Results

The start step confirms the successful initiation of the workflow. Check for a “COMPLETE” result in the execution result. This ensures the workflow starts without issues. Typically, this step does not generate processResults.

{
    "requestId": "{requestId}",    
    "individual": {...},
    "workflowResult": {
        "workflowStepResults": [
            {
                "endedAt": "2024-07-22T05:46:07.722933Z",
                "objectId": "{objectId}",
                "objectType": "INDIVIDUAL",
                "requestId": "{requestId}",
                "result": "COMPLETE",
                "risk": {
                    "contributedScore": 150,
                    "factors": [
                        {
                            "factor": "entity_type",
                            "score": 0,
                            "value": "Individual"
                        },
                        {
                            "factor": "country",
                            "score": 50,
                            "value": "Lithuania"
                        },
                        {
                            "factor": "entity_age",
                            "score": 100,
                            "value": "Under 18"
                        }
                    ],
                    "level": "HIGH",
                    "overallScore": 150
                },
                "schemaVersion": 2,
                "startedAt": "2024-07-22T05:46:09.013204Z",
                "stepName": "START",
                "stepResultId": "{stepResultId}",
                "updatedBy": "01J3CFKFJE1HJACPRFZ7F47N5K",
                "workflowExecutionId": "{workflowExecutionId}"
            }
        ]
    }
}

Finish Step Results

The finish step shows whether the workflow is complete. A “COMPLETE” result means all results were collected and stored. This confirms the workflow’s completion but not the success of individual checks or errors. Typically, this step does not generate processResults.

{
    "requestId": "{requestId}",    
    "individual": {...},
    "workflowResult": {
        "workflowStepResults": [
            {
                "endedAt": "2024-07-22T05:46:26.547446Z",
                "objectId": "{objectId}",
                "objectType": "INDIVIDUAL",
                "requestId": "{requestId}",
                "result": "COMPLETE",
                "schemaVersion": 2,
                "startedAt": "2024-07-22T05:46:26.511309Z",
                "stepName": "FINISH",
                "stepResultId": "{stepResultId}",
                "updatedBy": "system:frankieone",
                "workflowExecutionId": "{workflowExecutionId}"
            }
        ]
    }
}

Decision Step Results

The decision step is a critical point that determines the workflow’s status: PASS, FAIL, or REVIEW. This status depends on the actions taken during the workflow. If all previous steps are completed successfully, the workflow is marked as "PASS." If there is an issue, such as a verification problem, it is marked as "FAIL." You can modify these statuses in the workflow builder.

{
"workflowStepResults": [
	{
                "endedAt": "2024-07-22T05:46:25.826735Z",
                "objectId": "{objectId}",
                "objectType": "INDIVIDUAL",
                "processResults": [],
                "requestId": "{requestId}",
                "result": "COMPLETE",
                "schemaVersion": 2,
                "startedAt": "2024-07-22T05:46:25.76572Z",
                "stepName": "DECISION",
                "stepResultId": "{stepResultId}",
                "summary": {
                    "stepName": "DECISION",
                    "workflowExecutionResult": "PASS"
                },
                "updatedBy": "system:frankieone",
                "workflowExecutionId": "{stepResultId}"
            }
    ]
}

Risk Step Results

The risk step is a mandatory checkpoint for assessment. It does not result in a pass or fail. After evaluation, it's marked "COMPLETED." This ensures risks are considered without affecting the workflow. The information gathered may help in later steps.

"workflowStepResults": [
            {
                "endedAt": "2024-07-22T05:46:24.998288Z",
                "objectId": "{objectId}",
                "objectType": "INDIVIDUAL",
                "requestId": "{requestId}",
                "result": "COMPLETE",
                "schemaVersion": 2,
                "startedAt": "2024-07-22T05:46:24.963811Z",
                "stepName": "RISK",
                "stepResultId": "{stepResultId}",
                "updatedBy": "system:frankieone",
                "workflowExecutionId": "{workflowExecutionId}"
            }
	]
    }