Skip to content
GBG Documents & Biometrics Documentation

Customer Journey / Digital Journey / Onboarding Customers

IEOS-driven onboarding journeys

As part of GBG IDscan enterprise onboarding suite, the mobile journey capture service (MJCS) supports end-to-end customer onboarding journeys. The onboarding journey includes the following steps:

  • Front Document Scan
  • Back Document Scan
  • Proof of address A4 [4]Scan
  • Selfie Scan
  • Active Liveness
  • Passive Liveness
  • Triple Scan/Rescan

The set of journey actions will depend on your backend server configurations. You’ll need a Journey ID to access any journey.

Required actions

he following actions are confirmed and supported by the backend:

  1. Front (Initial scan)
    1. INITIAL // Send initial front of the document to get next action.
    2. FRONTSIDE:SECONDSCAN
    3. FRONTSIDE:THIRDSCAN
  2. BACK Side scan actions
    1. BACKSIDE
    2. BACKSIDE:SECONDSCAN
    3. BACKSIDE:THIRDSCAN
  3. CAPTURESELFIE scan actions
    1. SELFIE
    2. SELFIE:SECONDSCAN
    3. SELFIE:THIRDSCAN
  4. LIVENESS scan action
    1. LIVENESS(Face match upload)
    2. LIVENESS(Liveness result upload)
  5. NFC scan action
    1. NFC
  6. ADDRESSDOCUMENT scan actions
    1. ADDRESSDOCUMENT
    2. ADDRESSDOCUMENT:SECONDSCAN
    3. ADDRESSDOCUMENT:THIRDSCAN
  7. PASSIVE LIVENESS scan actions
    1. PASSIVE_LIVENESS
    2. PASSIVE_LIVENESS:SECONDSCAN
    3. PASSIVE_LIVENESS:THIRDSCAN
  8. Journey Finished action
    1. NONE

Contact your GBG Technical Account Manager for information about your specific journey and actions available to you (supportcase@idscan.com).

Create or implement an instance of CustomerJourneyEventListener

The journey is defined by the IEOS Customer Journey configuration. It’s as easy as implementing a listener and then calling another activity.

Java

private CustomerJourneyEventListener customerJourneyEventListener = new CustomerJourneyEventListener() {
/**
* Provides version information
*
*/
@Override
public void onServerInfo(@NotNull ResponseVersionInfo info) {
}
/**
* Called back if customer clicked back or exits Customer Journey.
*/
@Override
public void onJourneyCanceled(@NotNull CustomerJourneyError customerJourneyError) {
}
/**
* Callback for failure from which we dit not succeed to restore our self.
*/
@Override
public void onJourneyFailed(@NotNull CustomerJourneyError customerJourneyError) {
}
/**
* Callback if journey was successfully completed.
*/
@Override
public void onJourneyCompleted(@NotNull ResponseJourney responseJourney) {
}
};

Kotlin

private val customerJourneyEventListener = object : CustomerJourneyEventListener {
/**
* Callback if journey was successfully completed.
*/
override fun onJourneyCompleted(responseJourney: ResponseJourney) {
}
/**
* Callback for failure from which we dit not succeed to restore our self.
*/
override fun onJourneyFailed(customerJourneyError: CustomerJourneyError) {
}
/**
* Called back if customer clicked back or exits Customer Journey.
*/
override fun onJourneyCanceled(customerJourneyError: CustomerJourneyError) {
}
/**
* Provides version information
*
*/
override fun onServerInfo(info: ResponseVersionInfo) {
}
}

Register your implementation using

Please note: Kotlin registers before and unregisters after response as register would create a new instance and not override old.

To register the listener:

//Start the service in onStart and attach the listener
@Override
protected void onStart() {
super.onStart();
MjcsEventService.registerService(this, mjcsEventService -> {
service = mjcsEventService;
service.setCustomerJourneyEventListener(customerJourneyEventListener);
return null;
});
}
//Detach listener in onStop and stop the service
@Override
protected void onStop() {
service.setCustomerJourneyEventListener(null);
service.unregisterService(this);
super.onStop();
}

kotlin

//Start the service in onStart and attach the listener
override fun onStart() {
super.onStart()
registerService(this) {
service = it
service.customerJourneyEventListener = customerJourneyEventListener
}
}
//Detach listener in onStop and stop the service
override fun onStop() {
service.customerJourneyEventListener = null
service.unregisterService(this)
super.onStop()
}

Create an intent wit Customer journey configuration:

Kotlin

val config = CustomerJourneyConfig.Builder(
baseUrl = baseUrl, // Add server base URL if POC server provided by GBG IDscan its most likely https://company.idscan.cloud
credentials = Credentials(username, password), // Add Scanning Area credentials or use parameter name token and add it.
certificates = emptyList(), // Reffer to section: SSL pinning CustomerJourney
).build()
// Call to open Customer Journey
val customerJourney = Intent(this, CustomerJourneyActivity::class.java)
customerJourney.putExtra(CustomerJourneyActivity.EXTRA_CONFIG, config)
startActivity(customerJourney)

Please note: For security reasons ensure that credentials provided from a mobile device are scanning are and don’t have other permissions as this could compromise the security of your IEOS instance.

Don’t forget to add a check for camera permissions!

Possible onJourneyFailed(CustomerJourneyError) codes.

Code Description
EnterpriseService.EXCEPTION_ERROR Returns when Web service experienced an unrecoverable situation and returns a localized exception message.
500 Internal server error, more information on the server side.
408 Server time out
401 Unauthorized, possibly bad credentials.
400 Bad Request
… Other error HTTP status codes possible https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
CustomerJourneyError Errors from customer journey itself
NONE No error.
GENERAL General error check message
NO_SERVER_RESPONSE Journey Failed server didn’t respond.
UNKNOWN_REQUIRED_ACTION Journey Failed because of unknown action
CAMERA Journey Failed because of camera failure
WEB_INITIALIZING Creating a webservice instance failed
WEB_INITIALIZING_BAD_URL Creating Retrofit instance failed with IllegalArgumentException
EXECUTION
Execution error, most likely exceptions from which we are not recovering, will send exception localized message.

For more information check JavaDocs on possible call exceptions.