Release v6.15

Release Namev6.15
Release Date30 Nov 2021
Release StatusCOMPLETE

This Release updates the below modules:

  1. Service Core
  2. Portal
  3. SmartUI

 Main updates are as follows:

  1. Adding a new “Digital ID” issue flag and flagging profile as “Needs Attention” where customer has used a Digital ID
  2. Better handling of multiple business names in Business reports and portal
  3. Bug fix to better handle errors from Equifax and Experian credit header checks
  4. Add additional logging to IDV service to better manage hash’s related to document uploads
  5. Support of National ID (Social Security Number) in Frankie API
  6. Release of a new Smart UI branch (v4)

Digital ID flagged as needs attention

Customers who complete their onboarding with a Digital ID will now have an issue flag (Digital ID) and will be flagged as “Needs Attention”. From here, portal users can then follow up with the customer for additional information or request customer to restart the Biometrics process.

2470

Note: Profile will need to be Manually Passed once outstanding checks have been resolved. Portal users may need an update user permissions (Override Entity Profile Status) for this.

1542 1122

Smart UI v4

We have upgraded our SmartUI to a Major Version. This version is available for you to test and migrate to today. Benefits of moving to new version of the SmartUI are below:

ItemCustomer Benefit
Faster load times70% reduction in SmartUI load time enabling faster onboarding and reduced chance of potential drop outs
HTML consent textAbility to apply HTML as consent script
More configurationsAbility to config (turn on or off):

1. Digital Drivers License

2. Enable “Gender” capture

3. Enable “Marital Status” capture
SmartUI in additional countriesOnboard customers in

1. Singapore

2. Indonesia

3. Thailand
Upload Support DocumentsOur customers are at times required to provide supplementary documents to support a verification check e.g. Proof of Address or House Registration/Rental Agreement. These support documents cannot be verified against a public database and require manual verification. To solve for this use case we have developed a document page within the within the smartUI.

Please reach out to your account manager before turning this on.
More phrasesPhrases allow you to bring your own copy across the smartUI. In latest version you will get complete coverage across each and every page

How to test new Smart UI in your own enviroment:

  1. You will need to use this config:
IWidgetConfiguration {
  idScanVerification: boolean | {
    releaseVersion: string,
    welcomeScreen: boolean | {
      title: string,
      content: string[],
      ctaText: boolean | string,
    },
    useMobileDevice: boolean,
    useLiveness: boolean,
    injectedCss: string;
    enableLiveDocumentCapture: boolean,
    language:  {[key: string] : IWidgetConfiguration['phrases']} | null,
  };
  // if your organisation has a special Frankie Backend URL, provide it here. If that's not your case, skip this configuration.
  frankieBackendUrl: string;
  // documentTypes can has the type of enumIdType[] or {type: enumIdType, ...config}[] to specify the config of the document
  documentTypes: TDocumentTypes;
  welcomeScreen: boolean | {
    // html string to be displayed in the welcome screen. It accepts style tags, but script tags will be stripped out.
    // the default welcome screen is available in the screenshot at the end of section "Demo" above
    htmlContent: string | boolean;
    ctaText: boolean | string;
  };
  // the number of times the applicant will be allowed to review their details and try new documents before failing their application
  maxAttemptCount: number;
  // An object containing the keys you want to customise and add in custom text to specific screens. The keys can be found in <<URL>>.
  // They can be passed as a nested object or as a string using the dot notation for nested values.
  phrases:  {[key: string] : unknown} | null,
  successScreen: {
    // url to redirect after applicant clicks button in the successful page
    // by default the widget only displays a successful message
    // you can always include the applicant-reference as a query parameter to continue any remaining onboarding steps that might come after the identity verification
    // as any traditional html link, ctaUrl can also include a call to a global javascript function, "javascript:ffSuccess('string-with-applicant-reference')"
    ctaUrl: string | null;
    ctaText: string;
  };
  pendingScreen: boolean |{
    // configuration for pending screen, when KYC passes but there are other issues to be resolved
    // such as PEP failure, Adverse Media and others
    // similarly to welcome screen, the content of this page is configurable as a html string
    // also similarly to successScreen and failureScreen, it's possible to configure cta actions, this time as an array,
    // allowing multiple actions, such as "Contact Us", which redirects to your contact form, and possibly another "Proceed",
    // which could take the user to another step in the onboarding flow

    // htmlContent is an html string to be displayed. Accepts style tags, but script tags will be stripped out.
    // any non string value, including undefined (absent value), will result in using our default message, as specified in the screenshot in the section "Demo"
    htmlContent: string | null,
    // cta actions is an array of objects describing cta anchor tags styled as buttons and shown below htmlContent
    // each element of the array is a cta object, where cta.url is the value that goes in a.href and cta.text is the label of the button
    // as a reminder, values in a.href can include javascript, which can be used to call a global function, exactly as described in successScreen
    ctaActions: { url: string, text: string }[];
  };
  failureScreen: boolean | {
    // url to redirect after applicant clicks button when onboarding has failed
    // by default the widget only displays a failure message
    // you can always include the applicant-reference as a query parameter to provide any further steps
    // as any traditional html link, ctaUrl can also include a call to a global javascript function, "javascript:ffFailure('string-with-applicant-reference')"
    ctaUrl: string | null;
    ctaText: string;
  };
  // If the progress bar should be rendered
  progressBar: boolean;
  // A "profile" is a collection or recipe of rules and checks that you wish to perform on all of your customers.
  // As part of the onboarding process with Frankie, we'll work with you to define these.
  // However, the service also makes it easy to automate this and you can just use "auto" to have our rules engine work this out for you.
  // Unless told otherwise by Frankie, use "auto".
  checkProfile: string;
  // Google api key for the address auto complete. For the demo we provide our own api automatically.
  // Otherwise if this field is missing the widget will skip the address autocomplete screen.
  // More information right after this code block
  googleAPIKey: string | false;
  // List of up to 5 char2 country codes to include in the country dropdown and in the address autocomplete
  acceptedCountries: string[];
  // Tuple of two numeric values minimumAge and maximumAge
  ageRange: [number, number];
  dateOfBirth: TConfigDOB;
  // your organisation name
  organisationName: string;
  // The text which you would like to display to your users when asking for their consent to run the checks.
  // if not provided it will display the default consent message provided by Frankie.
  consentText: string | null;
  // Request address for KYC checks
  requestAddress: boolean;
  // Request identification documents
  requestID: boolean;
  // Push ID checks to after KYC checks and only if they fail
  lazyIDCheck: boolean;
  // disables capturing third-party analytics
  disableThirdPartyAnalytics: boolean;
  // you can set CSS that will be available in Shadow DOM.
  injectedCss: string;
  // OR you can set a style tag id from which CSS will be extracted and passed in the option above
  injectedCssTagID: string | null;
  // save applicant, but don't trigger checks
  saveOnly: boolean;
  documentUploads: null | boolean | DocumentUploadConfig;
}

type TDocumentTypes = (TSupportedDocuments | UserDocConfig | DocConfigBody)[];
type TSupportedDocuments = 'PASSPORT' | 'DRIVERS_LICENCE' | 'NATIONAL_HEALTH_ID' | 'NATIONAL_ID'
type UserDocConfig = { type: TSupportedDocuments } | TPassportConfig | TDriversLicenceConfig | TCustomDocumentConfig
type TPassportConfig = { type: "PASSPORT", idExpiry?: boolean }
type TDriversLicenceConfig = { type: "DRIVERS_LICENCE", digitalLicence?: boolean } // Note that digitalLicence is opt-OUT so it defaults to true
type TCustomDocumentConfig = {
  type: string;
  label: string;
  subtitle?: string;
  customEventPayload: { [key: string]: unknown };
}
type TConfigDOB = {
  type: TDOBTypeSupport
}

type TDOBTypeSupport = 'gregorian' | 'buddhist'

type DocumentUploadConfig = {
  uploads: DocumentUpload[]
}

type DocumentUpload = { title: string; description?: string; types: TDocumentUploadType[] }
type TDocumentUploadType = DocumentType | TDocumentUploadTypeObject
enum DocumentType {
    DRIVERS_LICENCE = "DRIVERS_LICENCE",
    PASSPORT = "PASSPORT",
    VISA = "VISA",
    IMMIGRATION = "IMMIGRATION",
    NATIONAL_ID = "NATIONAL_ID",
    NATIONAL_HEALTH_ID = "NATIONAL_HEALTH_ID",
    CONCESSION = "CONCESSION",
    HEALTH_CONCESSION = "HEALTH_CONCESSION",
    PENSION = "PENSION",
    MILITARY_ID = "MILITARY_ID",
    BIRTH_CERT = "BIRTH_CERT",
    CITIZENSHIP = "CITIZENSHIP",
    MARRIAGE_CERT = "MARRIAGE_CERT",
    DEATH_CERT = "DEATH_CERT",
    NAME_CHANGE = "NAME_CHANGE",
    UTILITY_BILL = "UTILITY_BILL",
    BANK_STATEMENT = "BANK_STATEMENT",
    BANK_ACCOUNT = "BANK_ACCOUNT",
    INTENT_PROOF = "INTENT_PROOF",
    SELF_IMAGE = "SELF_IMAGE",
    EMAIL_ADDRESS = "EMAIL_ADDRESS",
    MSISDN = "MSISDN",
    DEVICE = "DEVICE",
    VEHICLE_REGISTRATION = "VEHICLE_REGISTRATION",
    PROOF_OF_ADDRESS = "PROOF_OF_ADDRESS",
    EXTERNAL_ADMIN = "EXTERNAL_ADMIN",
    CHARGES = "CHARGES",
    PRE_ASIC = "PRE_ASIC",
    ANNUAL_RETURN = "ANNUAL_RETURN",
    REPORT = "REPORT",
    TRUST_DEED = "TRUST_DEED",
    PARTNERSHIP_AGREEMENT = "PARTNERSHIP_AGREEMENT",
    ADMIN_CHANGE = "ADMIN_CHANGE",
    COMPANY_REPORT = "COMPANY_REPORT",
    CHECK_RESULTS = "CHECK_RESULTS",
    OTHER = "OTHER",
    RENTAL_AGREEMENT = "RENTAL_AGREEMENT",
    TAX_STATEMENT = "TAX_STATEMENT",
    HOUSE_REGISTRATION = "HOUSE_REGISTRATION",
    YELLOW_HOUSE_REGISTRATION = "YELLOW_HOUSE_REGISTRATION",
    WORK_PERMIT = "WORK_PERMIT",
    EMPLOYMENT_CERTIFICATE = "EMPLOYMENT_CERTIFICATE",
    NOTARY_PUBLIC_ID = "NOTARY_PUBLIC_ID"
}
type TDocumentUploadTypeObject = { type: string; label: string }
  1. Once ready simply point your production SmartUI to:
<script src=“…/v4/ff-onboarding-widget.js”>