Verification Checks and Simple Decider
Verification Checks
TrustX provides various verification checks to determine the quality and legitimacy of a document and face capture such as Black & White Copy Detection, Color Copy Detection, Photo Substitution Detection, face checks, and face quality.
Each check is represented as an activity defined within the Process Definition and will contain a result for each completed Process Instance. Check results are populated inside the process server and can be found under the _checks session data tables.
For each completed Process Instance, check results for face and documents can be viewed from the Process Instance Details page.

Document checks in the Process Instance Details page
Verification checks will not provide an aggregated overall outcome of the Process Instance. To retrieve an overall outcome and manually adjust this outcome, the 'Simple Decider' activity is used.
Simple Decider
The Simple Decider activity will iterate over all checks within the Process Definition and calculate an overall outcome.
The Simple Decider activity has two input parameters:
- Decision on Any Failure - The decision that will be made if any check within the Process Instance fails. Accepted values are PASS, FAIL, or REVIEW. The result will be provided as the
_decision
output parameter. - Derive Decision From - This activity will set the decision of the overall outcome to the value provided as input. No iterative check will be performed. Accepted values are PASS, FAIL, or REVIEW. The result will be provided as the
_decision
output parameter.
Finalizer
The final state of the Process Instance occurs within the Finalizer service. This service will first check if any timeout has occurred. If a timeout has occurred, the status will be set to COMPLETED_TERMINATED
.
If a timeout has not occurred, the Process Instance is searched to determine whether a failure has occurred within the verification checks by following the steps detailed below:
- Check if there is a present
_decision
variable. If this variable is found, its value is used. - If no
_decision
variable is found, check to determine whether the end-user has exceeded the maximum number of failed capture attempts for a document or face capture. - Collect the overall outcome from
_checks.overallOutcome
.
Setting Decision in Cloud Functions
The overall outcome of a Process Instance can be determined using a Cloud Function and the Simple Decider activity.
In the example below, the overall outcome is set to pass.
Example Cloud Function:
import json
from cfresults import Outcome, Result, OverallResult, OverallResultEncoder
# set the overall result to approve
overallResult = OverallResult(Outcome.APPROVE, {})
# generate the cfresults from the overall results, convert to dictionary object for settings results.
cfResults = json.loads(OverallResultEncoder().encode(overallResult))
# set the cfResults to be returned by the Cloud Function
results["cfResults"] = cfResults
The Simple Decider activity is required to iterate over all checks and calculate an overall outcome.

For more examples, including how to configure the Process Definition, see the Simple Decider and Cloud Functions guide.
The Review Status
The review status can be used when an ID&V process requires a Manual Review. This allows users to perform a review of end user flows that require additional documents/ information to complete the ID&V flow successfully. For more information regarding Manual Reviews, see the Manual Review Guide.
Extensible Checks
Extensible checks enable users to expand the available verification checks using a Cloud Function. For example, users may want to include address verification data as part of the check results.
Any additional check added can be viewed within the Process Instance details page where a full map of all checks performed by the UserDataServer can be found.
For implementation instructions, see the Extensible Checks guide.