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:

  1. Identity Verification (IDV)
  2. Document Verification (DV)

Package features include:

  1. Verification services
    1. You can use this package to verify applicants using IDV and DV services
  2. Max attempt control
    1. Limit the number of calls an application can make to Socure platform.
  3. Analytics Milestones and Segmentation
    1. This package includes Pre-built Milestones to assist you to evaluate the quality of the service.
    2. 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.
  4. Server and Client value objects
    1. This will help to use the results in an external service, for example, a enrollment application.
  5. Detailed data and system errors
    1. This can be particularly useful as the service will block unnecessary calls if anything is missing or wrong.
    2. 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.
  6. TAF + Maven support
  7. Exchange regression suite - automating over 50 scenarios
    1. This helps us improve turn around time in case of defects fixes.
    2. 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 Controller1.4.3 or above
Narrator Componentlatest 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:

  1. Review the documentation below for each of the imported services and make any adjustments necessary to service parameters.
  2. Review the documentation below for any Service Connections and add your credentials as required.
  3. Review the Help Doc tab for each of the imported services and make any required adjustments to service parameters.
  4. 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.
  5. 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

  • In your maven project, add the following dependencies in 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 and applicant2_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

    1. Set the maxAttemptNumber to a positive number in the service parameter. The default value is 3.
    2. If you don't want to apply any restriction, set it to -1. However, it is recommended to limit the number of calls.
    3. 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.
    4. 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.
    5. 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.

    NameDescriptionFormatNotes
    Socure.DV.Result.referenceIdThe reference IDStringA unique number that identifies a transaction.
    Socure.DV.Result.uploadUuidThe reference ID received from document upload API.String
    Socure.DV.Result.documentTypeThe document typeString
    Socure.DV.Result.documentCountryCountry of the identification.String
    Socure.DV.Result.documentStateState of the Driver License.StringFor passports and non-US driver licenses, returned value is null.
    Socure.DV.Result.decisionNameThe decision model used (moderate,lenient).StringThis is configured when the account is set up.
    Socure.DV.Result.decisionValueThe decision value (accept, reject, review, resubmit).String
    Socure.DV.Result.documentDataThe information read from the document is returned.ObjectDate: firstName, surName, fullName, address, documentNumber, dob, expirationDate, isssueDate.
    Socure.DV.Result.dvReasonCodesThe reasonCodes array contains all reason codes that influence the decision.Array
    Socure.DV.Result.executionStatusThe status of the service execution with possible values: [ SUCCESS | DATA_ERROR | SYSTEM_ERROR ]String
    Socure.DV.Result.errorCodeError code String When a DATA_ERROR or SYSTEM_ERROR is experienced, this value provides the error code.
    Socure.DV.Result.errorMessageError messageStringWhen a DATA_ERROR or SYSTEM_ERROR is experienced, this value may provide more detail on the nature of the error.
    Socure.DV.Result.rawResponseRaw responseStringOptional 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 organisation ConfigServiceName. 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 property ConfigServiceName to disable the configuration service in your organisation.

    Maestro Assets

    Socure Document Verification Library: exchange-socure-taf Category: Socure

    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

    Socure - Document Verification v1.0.0
    Provides Socure Document Verification service.

    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
    • FirstName
    • SurName
    • FullName
    • Address
    • DocumentNumber
    • Dob
    • ExpirationDate
    • IssueDate
    data.executionStatus The status of the service execution [ SUCCESS | DATA_ERROR | SYSTEM_ERROR ].

    Successful execution will be denoted by a SUCCESS value. DATA_ERROR will indicate that there was an issue identified with the input data that may be resolved and potentially retried by the user. SYSTEM_ERROR indicates that there was an unrecoverable system fault and the form should fall-back gracefully to an alternative path.

    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.
    Socure - IDV v1.0.0
    Provides Socure IDV service.

    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 Email address string (e.g. jdoe@example.com). 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 SUCCESS value. DATA_ERROR will indicate that there was an issue identified with the input data that may be resolved and potentially retried by the user. SYSTEM_ERROR indicates that there was an unrecoverable system fault and the form should fall-back gracefully to an alternative path.

    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.

    Socure
    Property Name Description Required
    Type HTTP Endpoint Yes
    Endpoint Socure web service end point.
    • Test: https://sandbox.socure.com/api/3.0/EmailAuthScore
    • Prod: https://service.socure.com/api/3.0/EmailAuthScore
    Yes
    Password Socure API Key account token, Created/obtained from the Socure Admin console. (ex. "SocureApiKey 6en1c302-d522-40e1-bea7-h15b601e7d62") Yes