Socure v1.0
Introduction
Socure provides Identity (IDV) and document verification (DV) services through various modules (fraud, kyc, email risk, address risk, phone risk, global watchlist, alert list, social, and document verification) using machine learning algorithms.
Socure provides the following capabilities and benefits:
- Identity Verification (IDV)
- Document Verification (DV)
Package features include:
- Verification services
- You can use this package to verify applicants using IDV and DV services
- Max attempt control
- Limit the number of calls an application can make to Socure platform.
- Analytics Milestones and Segmentation
- This package includes Pre-built Milestones to assist you to evaluate the quality of the service.
- This package includes pre-built Segments for Document Verification to give you clear view of the overall result and % of passport vs driver license used in the verification.
- Server and Client value objects
- This will help to use the results in an external service, for example, a enrollment application.
- Detailed data and system errors
- This can be particularly useful as the service will block unnecessary calls if anything is missing or wrong.
- It will also provide detailed messaging to help fix the problem, either for the applicant in case of missing information, or the form builder in case of misconfiguration.
- TAF + Maven support
- Exchange regression suite - automating over 50 scenarios
- This helps us improve turn around time in case of defects fixes.
- It also helps us makes release new enhancements faster.
This package is built on the Exchange Framework (TIF). It is used to develop integrations in Journey Manager in a more efficient, standardized and scalable manner to reduce the ongoing costs for upgrades and maintenance.
Licensing
Clients must ensure they are appropriately licensed in order to use this package. Organisations who wish to use this package are required to establish a commercial relationship with the 3rd party vendor directly.
Compatibility
This package has the following compatibility requirements:
Module | Compatibility | Notes |
---|---|---|
Journey Manager | 17.10.9 or above | |
Journey Maestro | 18.05.7 or above | |
Narration Controller | 1.4.3 or above | |
Narrator Component | latest with support of form actions | |
TIF version | 1.6.0 or above | |
Configuration Service | 1.1.0 or above |
Release Notes
Version 1.0 Feb 28, 2020
- Baseline release.
Installation
Exchange Installation
This package should be installed as a single archive via the Temenos Marketplace. Once installed you should walk through the following procedure to ensure you complete any required configuration:
- Review the documentation below for each of the imported services and make any adjustments necessary to service parameters.
- Review the documentation below for any Service Connections and add your credentials as required.
- Review the Help Doc tab for each of the imported services and make any required adjustments to service parameters.
- Review the Service Connection requirements under the same Help Doc tab for each of the imported services and make any required configurations to the Service Connection. Service Connections can be configured in Journey Manager under the Services >> Service Connections menu item.
- Installation of any included Maestro libraries requires you to login to your Maestro server and import them either into your organization (for global availability) or to your specific project.
Note: The default value of service parameters from this package, such as maxAttemptNumber will always override the value for existing service. After you reinstall or upgrade the package, make sure the service parameters value are suitable to your requirement.
Maven dependency
pom.xml
as below in order to import and
consume Socure result through Socure VO this package provides.
Note: Each service within this package must have Unified App Data
enabled
when building a form. Navigate to Forms > Form > Form Version and tick the Unified App Data
checkbox.
How to trigger fluent functions in Narrator
Below is the example on how to trigger the fluent functions and provide input parameters in Form
Narrative
{ "name": "Socure Narrative", "version": "1.0.0", "pages": [ { "name": "ConfigurationPage", "allowGoBack": false, "allowSubmit": false, "condition": true, "preActions": [], "postActions": [], "nextPages": [ "PrimaryApplicant", "MaxAttempt" ] }, { "name": "PrimaryApplicant", "allowGoBack": true, "allowSubmit": false, "condition": "${ !txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') || (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft').toInteger() > 0) )}", "preActions": [], "postActions": [ { "name": "Socure - IDV", "version": "1.0.0", "alwaysProcess": true, "params": { "Email": "${xmlPath.val('//Email')}", "FirstName": "${xmlPath.val('//FirstName')}", "SurName": "${xmlPath.val('//SurName')}", "Country": "${xmlPath.val('//Country')}", "PhysicalAddress": "${xmlPath.val('//PhysicalAddress')}", "City": "${xmlPath.val('//City')}", "State": "${xmlPath.val('//State')}", "Zip": "${xmlPath.val('//Zip')}", "MobileNumber": "${xmlPath.val('//MobileNumber')}", "IpAddress": "${xmlPath.val('//IpAddress')}", "NationalId": "${xmlPath.val('//NationalId')}", "Dob": "${xmlPath.val('//Dob')}", "ApplicantRole": "${xmlPath.val('//ApplicantRole')}", "debug":"${ !txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') || (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') > 0) )}", "debug1":"${ !txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') }", "debug2":"${ (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft').toInteger() > 0) )}", "debug2.1":"${ (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') > 0) )}", "debug3":"${ (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') )}", "debug4":"${ ( (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') > 0) )}" } } ], "nextPages": [ "PrimaryApplicantSocure" ] }, { "name": "PrimaryApplicantSocure", "allowGoBack": true, "allowSubmit": false, "condition": true, "preActions": [], "postActions": [], "nextPages": [ "DeclineIDV", "MaxAttempt", "ResubmitAddressPrimaryApplicant", "DocumentVerificationPrimaryApplicant", "JoinApplicant", "ManualReview", "Accept" ] }, { "name": "ResubmitAddressPrimaryApplicant", "allowGoBack": false, "allowSubmit": false, "condition": "${txn.propertyMap.get('Socure.IDV.Result.PrimaryApplicant.decisionValue')=='resubmit' }", "preActions": [], "postActions": [], "nextPages": [ "PrimaryApplicant" ] }, { "name": "DocumentVerificationPrimaryApplicant", "condition": "${txn.propertyMap.get('Socure.IDV.Result.PrimaryApplicant.decisionValue')=='refer' }", "allowGoBack": false, "allowSubmit": false, "preActions": [], "postActions": [], "formActions": [ { "name": "Socure - Document Verification", "version": "1.0.0", "params": { } } ], "nextPages": [ "DeclineDV", "JoinApplicant", "Accept" ] }, { "name": "JoinApplicant", "allowGoBack": true, "allowSubmit": false, "condition": "${xmlPath.val('//IndividualOrJoinApplication') == 'Joint' && ( !txn.propertyMap.get('Socure.IDV.JointApplicant.currentAttemptsLeft') || ( txn.propertyMap.get('Socure.IDV.JointApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.JointApplicant.currentAttemptsLeft').toInteger() > 0) ))}", "preActions": [], "postActions": [ { "name": "Socure - IDV", "version": "1.0.0", "alwaysProcess": true, "params": { "Email": "${xmlPath.val('//Email_2')}", "FirstName": "${xmlPath.val('//FirstName_1')}", "SurName": "${xmlPath.val('//SurName_1')}", "Country": "${xmlPath.val('//Country_1')}", "PhysicalAddress": "${xmlPath.val('//PhysicalAddress_1')}", "City": "${xmlPath.val('//City_1')}", "State": "${xmlPath.val('//State_1')}", "Zip": "${xmlPath.val('//Zip_1')}", "MobileNumber": "${xmlPath.val('//MobileNumber_1')}", "IpAddress": "${xmlPath.val('//IpAddress_1')}", "NationalId": "${xmlPath.val('//NationalId_1')}", "Dob": "${xmlPath.val('//Dob_1')}", "ApplicantRole": "${xmlPath.val('//ApplicantRole_2')}", "debug1": "${jsonSlurper.parseText( txn.propertyMap.get('decision') ) && jsonSlurper.parseText( txn.propertyMap.get('decision') )['destinations']['resubmitWithResidentialAddressPrimaryApplicant']['isActive']}", "debug2":"${(jsonSlurper.parseText( txn.propertyMap.get('decision') ) && jsonSlurper.parseText( txn.propertyMap.get('decision') )['destinations']['referToDocumentVerificationPrimaryApplicant']['isActive'] && jsonSlurper.parseText( txn.propertyMap.get('decision') )['destinations']['referToDocumentVerificationPrimaryApplicant']['reasons'].findIndexOf('documentVerificationByKYCTwoPrimaryApplicant') >= 0 )}", } } ], "nextPages": [ "JointApplicantSocure" ] }, { "name": "JointApplicantSocure", "allowGoBack": true, "allowSubmit": false, "condition": true, "preActions": [], "postActions": [], "nextPages": [ "DeclineIDV", "MaxAttempt", "ResubmitAddressJointApplicant", "DocumentVerificationJointApplicant", "ManualReview", "Accept" ] },{ "name": "ResubmitAddressJointApplicant", "allowGoBack": false, "allowSubmit": false, "condition": "${txn.propertyMap.get('Socure.IDV.Result.JointApplicant.decisionValue')=='resubmit' }", "preActions": [], "postActions": [], "nextPages": [ "JoinApplicant" ] }, { "name": "DocumentVerificationJointApplicant", "condition": "${txn.propertyMap.get('Socure.IDV.Result.JointApplicant.decisionValue')=='refer' }", "allowGoBack": false, "allowSubmit": false, "preActions": [], "postActions": [], "formActions": [ { "name": "Socure - Document Verification", "version": "1.0.0", "params": { } } ], "nextPages": [ "DeclineDV", "ManualReview", "Accept" ] }, { "name": "ManualReview", "allowGoBack": false, "allowSubmit": true, "condition": "${txn.propertyMap.get('Socure.IDV.Result.PrimaryApplicant.decisionValue')=='review' || txn.propertyMap.get('Socure.IDV.Result.JointApplicant.decisionValue')=='review' }", "preActions": [], "postActions": [], "nextPages": [] }, { "name": "MaxAttempt", "allowGoBack": false, "allowSubmit": true, "condition": "${ (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.PrimaryApplicant.currentAttemptsLeft').toInteger() <= 0)) || (txn.propertyMap.get('Socure.IDV.JointApplicant.currentAttemptsLeft') && (txn.propertyMap.get('Socure.IDV.JointApplicant.currentAttemptsLeft').toInteger() <= 0)) }", "preActions": [], "postActions": [], "nextPages": [] }, { "name": "DeclineIDV", "allowGoBack": false, "allowSubmit": true, "condition": "${txn.propertyMap.get('Socure.IDV.Result.PrimaryApplicant.decisionValue')=='reject' || txn.propertyMap.get('Socure.IDV.Result.JointApplicant.decisionValue')=='reject'}", "preActions": [], "postActions": [], "nextPages": [] }, { "name": "DeclineDV", "allowGoBack": false, "allowSubmit": true, "condition": "${( txn.propertyMap.get('Socure.DV.Result.PrimaryApplicant.decisionValue') !='accept' && txn.propertyMap.get('Socure.IDV.Result.PrimaryApplicant.decisionValue') == 'refer') || (txn.propertyMap.get('Socure.DV.Result.JointApplicant.decisionValue') !='accept' && txn.propertyMap.get('Socure.IDV.Result.JointApplicant.decisionValue') == 'refer' ) }", "preActions": [], "postActions": [], "nextPages": [] }, { "name": "Accept", "allowGoBack": false, "allowSubmit": true, "condition": true, "preActions": [], "postActions": [], "nextPages": [] } ] }
High Level Diagram
Below are the process flow diagrams for Socure IDV and Socure Document Verification which give an insight into the design of the Exchange components.IDV
DV
Configuration
Socure Configuration
- Make sure to whitelist Journey Manager IP address before calling Socure API servers. Whitelisting can be done through Socure Admin console.
Maestro
Use the following procedure to configure the Socure Document Verification component in your form:
- Make sure the
exchange-socure-taf
Maestro library has been added to your project. - From the Maestro palette, add the Socure Document Verification component onto your form.
-
If you need to perform document verification on multiple individuals in a single transaction you will need to add an instance
of the Socure Document Verification component for each individual and add applicant role identifier to the beginning of the component ID for each instance.
For example, if your form supports 2 applicants you would specify a component ID of
applicant1_socure_dV
andapplicant2_socure_dV
respectively. This will ensure that the sessions do not interfere with each other. - Once the form is published, make sure you enable the
Unified App Data
as follows:- Navigate to Forms>Form>Form Version and tick the Unified App Data checkbox.
Note: By default, the Maestro form will show an alert box when validation errors
happen. Since the component already has the built-in fields to display various data errors, you can add the
following Javascript on Form Load
in your form
to suppress the alert box.
Form.serverValidationErrorHandler = function() {};
Max Attempt
The Socure - IDV and Socure - Document Verification services within the package support the Max Attempts feature.This feature is intended to limit the number of calls to Socure ID+ API.
Configuration
- Set the maxAttemptNumber to a positive number in the service parameter. The default value is 3.
- If you don't want to apply any restriction, set it to -1. However, it is recommended to limit the number of calls.
- If you want to alert the applicant to the number of attempts that are left, the number of attempts remaining display in both the JSON result and Data Field:attemptsLeft in the Maestro component.
- If you want to alert the applicant to the number of attempts that are left, the number of attempts remaining display in both the JSON result and Data Field:attemptsLeft in the Maestro component.
- If you want to define specific behaviour in the form, capture the SYSTEM_ERROR. errorCode: EXCEEDED_NUMBER_OF_ATTEMPTS that is sent back when the max attempt is exceeded.
Journey Analytics
Milestone events
Milestone events are automatically generated to show milestones on the User Journey view in Journey Analytics, the Journey platform analytics tool.
Name | Trigger |
---|---|
Socure IDV Start | When receiving a Socure IDV request. |
Socure IDV Complete | When Socure IDV is completed and a decision is retrieve |
Socure DV Start | When receiving a Socure Document Verification request. |
Socure DV Complete | When Socure Document Verification is completed and a decision is retrieve |
Segment events
Segment events are automatically generated to show segments on the User Journey view in Journey Analytics, the Journey platform analytics tool.
Name | Trigger |
---|---|
Socure DV Document Type | View of the type of documents that were used. |
Socure DV Result | View of the total of accepted, reviewed and rejected applications |
Service Txn properties/ Server VO
The table bellow describes IDV server VO fields stored in the Form XML Data and also stored in transaction properties.
Name | Description | Format | Notes |
---|---|---|---|
Socure.IDV.Result.fraudReasonCodes | Fraud module reason codes | List<String> | |
Socure.IDV.Result.fraudScore | Fraud module score and fraud module information | List<Map> | |
Socure.IDV.Result.fraudMainScore | Fraud module score result | String | |
Socure.IDV.Result.kycReasonCodes | KYC module reason codes | List<String> | |
Socure.IDV.Result.kycFieldValidations | A validation map that will return a validation score for each PII passed in the request. A (0.01) value will indicate a false and (0.99) value will indicate true. | Map<String,Double> | |
Socure.IDV.Result.emailRiskReasonCodes | Email risk module reason codes | List<String> | |
Socure.IDV.Result.emailRiskScore | Email risk module score result | String | |
Socure.IDV.Result.phoneRiskReasonCodes | Phone risk module reason codes | List<String> | |
Socure.IDV.Result.phoneRiskScore | Phone risk module score result | String | |
Socure.IDV.Result.addressRiskReasonCodes | Address risk module reason codes | List<String> | |
Socure.IDV.Result.addressRiskScore | Address risk module score result | String | |
Socure.IDV.Result.nameEmailCorrelationReasonCodes | Name Email correlation reason codes | List<String> | |
Socure.IDV.Result.nameEmailCorrelationScore | Name Email correlation score result | String | |
Socure.IDV.Result.namePhoneCorrelationReasonCodes | Name Phone correlation reason codes | List<String> | |
Socure.IDV.Result.namePhoneCorrelationScore | Name Phone correlation score result | String | |
Socure.IDV.Result.nameAddressCorrelationReasonCodes | Name Address correlation reason codes | List<String> | |
Socure.IDV.Result.nameAddressCorrelationScore | Name Address correlation score result | String | |
Socure.IDV.Result.globalWatchlistReasonCodes | Global Watchlist module reason codes | List<String> | |
Socure.IDV.Result.globalWatchlistMatches | Contains key value pair of the source list name and an array of details about that match. | String | |
Socure.IDV.Result.alertListReasonCodes | Global Watchlist module reason codes | List<String> | |
Socure.IDV.Result.alertListScore | Alertlist module score result | String | |
Socure.IDV.Result.socialReasonCodes | Social module reason codes | List<String> | |
Socure.IDV.Result.socialProfilesFound | A list of URLs to social media profiles | List<String> | |
Socure.IDV.Result.decisionValue | Overall result of decision module. Possible values : [accept |reject |refer |resubmit |review ] |
String | |
Socure.IDV.Result.decision | A map returning the decision value and decision module information | Map<String,String> | |
Socure.IDV.Result.executionStatus | The status of the service execution with possible values: [ SUCCESS |
DATA_ERROR | SYSTEM_ERROR ]
|
String | |
Socure.IDV.Result.errorCode | When a DATA_ERROR or SYSTEM_ERROR is experienced, this value provides the
error code.
|
String | |
Socure.IDV.Result.errorMessage | When a DATA_ERROR or SYSTEM_ERROR is experienced, this value may provide more
detail on the nature of the error.
|
String | errorMessage might be returned as a single error string "Error in State input. For example WA,NM." or multiple error string "["Please use only ISO 3166-1 alpha-2 codes for country; Invalid date format yyyy-MM-dd, yyyy\/MM\/dd or yyyyMMdd or yyyy-MM-dd"]" separated by a semicolon ; |
Socure.IDV.Result.rawResponse | Raw response.Optional field controlled by the connection property flag
recordResponseInTxnXML to store
raw response in server VO
|
String |
The table bellow describes Document Verification server VO fields stored in the Form XML Data and also stored in transaction properties.
Name | Description | Format | Notes |
---|---|---|---|
Socure.DV.Result.referenceId | The reference ID | String | A unique number that identifies a transaction. |
Socure.DV.Result.uploadUuid | The reference ID received from document upload API. | String | |
Socure.DV.Result.documentType | The document type | String | |
Socure.DV.Result.documentCountry | Country of the identification. | String | |
Socure.DV.Result.documentState | State of the Driver License. | String | For passports and non-US driver licenses, returned value is null. |
Socure.DV.Result.decisionName | The decision model used (moderate,lenient). | String | This is configured when the account is set up. |
Socure.DV.Result.decisionValue | The decision value (accept , reject , review , resubmit ). | String | |
Socure.DV.Result.documentData | The information read from the document is returned. | Object | Date: firstName, surName, fullName, address, documentNumber, dob, expirationDate, isssueDate. |
Socure.DV.Result.dvReasonCodes | The reasonCodes array contains all reason codes that influence the decision. | Array | |
Socure.DV.Result.executionStatus | The status of the service execution with possible values: [ SUCCESS | DATA_ERROR | SYSTEM_ERROR ] | String | |
Socure.DV.Result.errorCode | Error code | String | When a DATA_ERROR or SYSTEM_ERROR is experienced, this value provides the error code. |
Socure.DV.Result.errorMessage | Error message | String | When a DATA_ERROR or SYSTEM_ERROR is experienced, this value may provide more detail on the nature of the error. |
Socure.DV.Result.rawResponse | Raw response | String | Optional field controlled by the connection property flag recordResponseInTxnXML to store raw response in server VO |
Configuration Service Support
This package supports the configuration service. Please make sure you follow the instruction below to setup your configuration service correctly.Create a service parameter keyMapping
as below in your configuration service (service-def.json) if you haven't done so
{ "name": "keyMapping", "type": "String", "filePath": "json/keyMapping.json", "bind": false, "required": false, "clearOnExport": false, "readOnly": false },
Note: You only need to create keyMapping service parameter once when you setup your first Exchange package. The rest of the Exchange packages will just keep adding content into the existing service parameter.
Create or append the following content into json/keyMapping.json
"socure": [ { "serviceKey": "idv", "serviceName": "Socure - IDV", "serviceParamKeyMap": { "recResInXml": "recordResponseInTxnXML", "recResInProp": "recordResponseInTxnProperties" } }, { "serviceKey": "dv", "serviceName": "Socure - Document Verification", "serviceParamKeyMap": { "recResInXml": "recordResponseInTxnXML", "recResInProp": "recordResponseInTxnProperties" } } ]
Copy the following service parameters definition in your configuration service (service-def.json) and set the proper values for your project.
{ "name": "socure-idv|1.0.0-conn.endpoint", "description": "", "value": "", "type": "String", "bind": false, "required": true, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-conn.password", "description": "", "value": "", "type": "Password", "bind": false, "required": true, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-maxAttemptNumber", "description": "", "value": "-1", "type": "Number", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-recResInProp", "description": "", "value": "false", "type": "Boolean", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-recResInXml", "description": "", "value": "true", "type": "Boolean", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-modules", "description": "", "value": "fraud,emailrisk,phonerisk,addressrisk,kyc,social,watchliststandard,alertlist,decision", "type": "String", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-watchlistFilters", "description": "", "value": "", "type": "String", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-forceRefresh", "description": "", "value": "false", "type": "Boolean", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-moduleValidationRules", "description": "", "value": "{\n \"modules\": {\n \"fraud\": {\n \"required\": [\n \"FirstName\",\n \"SurName\",\n \"Country\"\n ],\n \"optionalRequired\": [\n \"Email\",\n \"MobileNumber\",\n \"PhysicalAddress,City,State,Zip\"\n ],\n \"optimal\": [\n \"PhysicalAddress2\",\n \"IpAddress\",\n \"NationalId\",\n \"Dob\",\n \"Email\",\n \"MobileNumber\",\n \"PhysicalAddress,City,State,Zip\"\n ]\n },\n \"emailrisk\": {\n \"required\": [\n \"Email\"\n ],\n \"optionalRequired\": [],\n \"optimal\": [\n \"PhysicalAddress2\",\n \"FirstName\",\n \"SurName\",\n \"Email\",\n \"PhysicalAddress,City,State,Zip\",\n \"Country\"\n ]\n },\n \"phonerisk\": {\n \"required\": [\n \"MobileNumber\",\n \"Country\",\n \"FirstName\",\n \"SurName\"\n ],\n \"optionalRequired\": [],\n \"optimal\": [\n \"PhysicalAddress2\",\n \"PhysicalAddress,City,State,Zip\"\n\n ]\n },\n \"addressrisk\": {\n \"required\": [\n \"FirstName\",\n \"SurName\",\n \"Country\",\n \"PhysicalAddress,City,State,Zip\"\n ],\n \"optionalRequired\": [],\n \"optimal\": [\n \"PhysicalAddress2\",\n \"IpAddress\",\n \"MobileNumber\",\n \"Email\"\n ]\n },\n \"kyc\": {\n \"required\": [\n \"FirstName\",\n \"SurName\",\n \"Country\"\n ],\n \"optionalRequired\": [\n \"NationalId\",\n \"Dob\",\n \"PhysicalAddress,City,State,Zip\"\n ],\n \"optimal\": [\n \"PhysicalAddress2\",\n \"NationalId\",\n \"Dob\",\n \"PhysicalAddress,City,State,Zip\"\n ]\n },\n \"social\": {\n \"required\": [],\n \"optionalRequired\": [],\n \"optimal\": [\n \"PhysicalAddress2\",\n \"FirstName\",\n \"SurName\",\n \"Email\",\n \"MobileNumber\",\n \"PhysicalAddress,City,State,Zip\"\n ]\n },\n \"watchliststandard\": {\n \"required\": [\n \"FirstName\",\n \"SurName\"\n ],\n \"optionalRequired\": [],\n \"optimal\": [\n \"Dob\"\n ]\n },\n \"watchlistplus\": {\n \"required\": [\n \"FirstName\",\n \"SurName\"\n ],\n \"optionalRequired\": [],\n \"optimal\": [\n \"Dob\"\n ]\n },\n \"watchlistpremier\": {\n \"required\": [\n \"FirstName\",\n \"SurName\"\n ],\n \"optionalRequired\": [],\n \"optimal\": [\n \"Dob\"\n ]\n },\n \"alertlist\": {\n \"required\": [],\n \"optionalRequired\": [],\n \"optimal\": [\n \"FirstName\",\n \"SurName\",\n \"NationalId\",\n \"Email\",\n \"MobileNumber\",\n \"IpAddress\"\n ]\n }\n }\n}\n\n", "type": "String", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-decision", "description": "", "value": "", "type": "String", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-conn.endpoint", "description": "", "value": "", "type": "String", "bind": false, "required": true, "clearOnExport": false, "readOnly": false }, { "name": "socure-idv|1.0.0-conn.password", "description": "", "value": "", "type": "Password", "bind": false, "required": true, "clearOnExport": false, "readOnly": false }, { "name": "socure-dv|1.0.0-maxAttemptNumber", "description": "", "value": "-1", "type": "Number", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-dv|1.0.0-recResInProp", "description": "", "value": "false", "type": "Boolean", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-dv|1.0.0-recResInXml", "description": "", "value": "true", "type": "Boolean", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }, { "name": "socure-dv|1.0.0-sandboxUuid", "description": "", "value": "", "type": "String", "bind": false, "required": false, "clearOnExport": false, "readOnly": false }
Note: Once you setup your application to use configuration service, all the service connection and service parameters data directly comes from the your configuration service. So there is no need to setup the original service connection or service parameter of the Exchange fluent function.
Enable/Disable the configuration service
In order to enable the configuration service in your application, please define the following organisation property in your organisationConfigServiceName
.
This is to define which configuration service you would like to use in your organisation. For example, if you decide to
trigger MyCompanyServiceConfiguration as the configuration service, set the following organisation property.
ConfigServiceName=MyCompanyServiceConfiguration
Note: Configuration service is an organisation level option. Once enabled, all Exchange services within the organisation will start retrieving the service connection and service parameters info from configuration service you specified above.
You can simply delete the organisation propertyConfigServiceName
to disable the configuration service in your organisation.Maestro Assets
This component uses the Maestro field attachment to upload the user driver license or passport to Journey Manager. It then calls a fluent function using narrator form action for sending these documents to Socure for document verification.
Shared Styles
-
Button Graphical Library: exchange-socure-taf
-
License Icon Font Style Library: exchange-socure-taf
-
Socure Choose File Library: exchange-socure-taf
-
Socure Choose File Button Library: exchange-socure-taf
-
Socure Document Verification Style Library: exchange-socure-taf
-
socure-front-attachment Library: exchange-socure-taf
Services
Service Connection
Compatibility
Module | Compatibility |
---|---|
Manager | 17.10.9 |
Service Parameters
Name | Description | Required | Default |
---|---|---|---|
configServiceAppName | AppName for configuration service. All exchange services use vendor code for AppName. | Yes |
socure
|
recordResponseInTxnProperties | Record response as txn property. | No |
false
|
recordResponseInTxnXML | Record response in FisIdvVO and persisted in Txn XML. | No |
false
|
maxAttemptNumber | Max number allowed to initiate API calls in a single session for each applicant. -1 means no limit. | Yes |
-1
|
sandboxUuid | For test purposes the document verification module function will use this UUID trigger value to produce a response. For example 1111-1111 is returns decision accept. | No |
|
Inputs
Name | Description | Required |
---|---|---|
DocumentType | Specify the document type: license or passport. | Yes |
DocumentFrontAttachmentKey | The Maestro front image attachment key. This is mandatory field unless you provide the input parameter DocumentFrontBase64. | Yes |
DocumentBackAttachmentKey | The Maestro back image attachment key. | No |
DocumentFrontBase64 | The front image in Base64 format. It can be used instead of DocumentFrontAttachmentKey. | No |
DocumentBackBase64 | The back image in Base64 format. It can be used instead of DocumentBackAttachmentKey. | No |
ApplicantRole | End-user Applicant role. | No |
Outputs
Name | Description |
---|---|
data.decisionName | The decision model used. (moderate,lenient ..) This is configured when the account is set up. |
data.decisionValue | The decision value (accept, reject, review, resubmit). |
data.documentData |
|
data.executionStatus | The status of the service execution [ SUCCESS | DATA_ERROR | SYSTEM_ERROR ]. Successful execution will be denoted by a |
data.errorMessage | When a DATA_ERROR is experienced, this value may provide more detail on the nature of the error. |
data.errorCode | When a DATA_ERROR is experienced, this value provides the error code. |
Service Connection
Compatibility
Module | Compatibility |
---|---|
Manager | 17.10.9 |
Service Parameters
Name | Description | Required | Default |
---|---|---|---|
recordResponseInTxnProperties | Record response as txn property. | No |
false
|
recordResponseInTxnXML | Record response in FisIdvVO and persisted in Txn XML. | No |
false
|
maxAttemptNumber | Max number allowed to initiate API calls in a single session for each applicant. -1 means no limit. | Yes |
-1
|
configServiceAppName | AppName for configuration service. All exchange services use vendor code for AppName. | Yes |
socure
|
modules | A list of modules that will be used to verify applicant identity. Complete list : "fraud, emailrisk,phonerisk,addressrisk, kyc,social,watchliststandard,alertlist" | Yes |
fraud,emailrisk,phonerisk,addressrisk,kyc,social,watchliststandard,alertlist,decision
|
watchlistFilters | A json configuration object that can override the watchlist module default settings. Example { "matchingCriteria": { "nameDob": false, "nameFuzzinessTolerance": 0.5, "dobFuzzinessTolerance": true }, "categories": ["Sanctions", "PEP"], "limit": 12, "countries": ["US", "CA"] } |
No |
|
forceRefresh | This flag ensures the results contain the most recent information from Socure and its data sources. Note: this adds latency to response times. | No |
false
|
moduleValidationRules | Validation rules that define required, optional, and optimal input fields. By default all input fields are documented are none required. | Yes |
{
"modules": {
"fraud": {
"required": [
"FirstName",
"SurName",
"Country"
],
"optionalRequired": [
"Email",
"MobileNumber",
"PhysicalAddress,City,State,Zip"
],
"optimal": [
"PhysicalAddress2",
"IpAddress",
"NationalId",
"Dob",
"Email",
"MobileNumber",
"PhysicalAddress,City,State,Zip"
]
},
"emailrisk": {
"required": [
"Email"
],
"optionalRequired": [],
"optimal": [
"PhysicalAddress2",
"FirstName",
"SurName",
"Email",
"PhysicalAddress,City,State,Zip",
"Country"
]
},
"phonerisk": {
"required": [
"MobileNumber",
"Country",
"FirstName",
"SurName"
],
"optionalRequired": [],
"optimal": [
"PhysicalAddress2",
"PhysicalAddress,City,State,Zip"
]
},
"addressrisk": {
"required": [
"FirstName",
"SurName",
"Country",
"PhysicalAddress,City,State,Zip"
],
"optionalRequired": [],
"optimal": [
"PhysicalAddress2",
"IpAddress",
"MobileNumber",
"Email"
]
},
"kyc": {
"required": [
"FirstName",
"SurName",
"Country"
],
"optionalRequired": [
"NationalId",
"Dob",
"PhysicalAddress,City,State,Zip"
],
"optimal": [
"PhysicalAddress2",
"NationalId",
"Dob",
"PhysicalAddress,City,State,Zip"
]
},
"social": {
"required": [],
"optionalRequired": [],
"optimal": [
"PhysicalAddress2",
"FirstName",
"SurName",
"Email",
"MobileNumber",
"PhysicalAddress,City,State,Zip"
]
},
"watchliststandard": {
"required": [
"FirstName",
"SurName"
],
"optionalRequired": [],
"optimal": [
"Dob"
]
},
"watchlistplus": {
"required": [
"FirstName",
"SurName"
],
"optionalRequired": [],
"optimal": [
"Dob"
]
},
"watchlistpremier": {
"required": [
"FirstName",
"SurName"
],
"optionalRequired": [],
"optimal": [
"Dob"
]
},
"alertlist": {
"required": [],
"optionalRequired": [],
"optimal": [
"FirstName",
"SurName",
"NationalId",
"Email",
"MobileNumber",
"IpAddress"
]
}
}
}
|
decision | A json configuration object that controls which modules to include or exclude from the decision module. Required when decision module is used. | No |
{"all": true}
|
Inputs
Name | Description | Required |
---|---|---|
FirstName | First name or given name string (e.g. Jane, Mike)String (255) . |
No |
SurName | Surname or last name string (e.g. Smith, Jones)String (255) . |
No |
Country | Country of residence string in valid two-letter ISO 3166-1 alpha-2 format (e.g. US for United States,GB for United Kingdom) String (255) . |
No |
PhysicalAddress | Physical Address string in valid postal-address format (e.g. 123 N.Main St) String (255) . |
No |
City | City of residence string in valid postal-address format (e.g.Seattle, Truth or Consequences) String (255) . |
No |
State | State of residence string in valid postal-address format (e.g. WA,NM) String (2) . |
No |
Zip | Zip code in valid postal address format (e.g. 12345, 123456789 or 12345-6789) String (10) . |
No |
MobileNumber | Phone number in the E.164 standard (e.g. +12015551234 or +1-201-555-1234) String (15) . |
No |
Email address string (e.g. [email protected]) . Must conform to RFC 5322 standards and contain a valid top-level domainString . |
No | |
NationalId | National ID; only accepts a U.S. Social Security Number (SSN) or U.S. Tax Identification Number(ITIN). The full 9 or last 4 digits are accepted.Hyphens are optionalString (11) . |
No |
Dob | Date of Birth in yyyyMMdd format, with dashes, slashes, or no separators (e.g. 1972-01-25, 1972/01/25, or19720125) String (10) . |
No |
UserConsent | End-user consent to have Socure process his/her data Boolean . |
No |
ApplicantRole | End-user Applicant role String . |
No |
Outputs
Name | Description |
---|---|
data.executionStatus | The status of the service execution [ SUCCESS | DATA_ERROR | SYSTEM_ERROR ]. Successful execution will be denoted by a |
data.errorMessage | When a DATA_ERROR is experienced, this value may provide more detail on the nature of the error. |
data.errorCode | When a DATA_ERROR is experienced, this value provides the error code. |
Service Connections
The following service connections are used by this package.
Property Name | Description | Required |
---|---|---|
Type | HTTP Endpoint | Yes |
Endpoint |
Socure web service end point.
|
Yes |
Password |
Socure API Key account token, Created/obtained from the Socure Admin console. (ex. "SocureApiKey 6en1c302-d522-40e1-bea7-h15b601e7d62")
|
Yes |