Passport scanner integration


Introduction

FBO One can be used to produce passenger immigration forms, or visa request forms. You enter the passenger and crew information, and FBO One generates the form with the passenger information as well as the flight information. For quickly entering passenger and crew information, FBO One supports reading passports using a passport scanner.

Note: For systems with versions dated after 07-Feb-19 passport scanning via a mobile device APP is also available (see Mobile Device Passport Scans)

This article describes how to setup and use the passport scanner. 

Before you can use passport integration you need a FBO One supported device. Currently we support the next devices:

Access IS Keyboard. This is a keyboard that has a passport swipe reader integrated in it. See http://www.access-is.com/.

Grabba device that has a passport swipe reader integrated in it, See http://grabba.com/  


3M™ CR100 device  that has a passport swipe reader integrated in it, See http://multimedia.3m.com/mws/media/707932O 

How to setup the passport scanner for a FBO Location

To use a passport scanner at an FBO location, it must first be activated for that location. Go to Menu > Administration > Application > Passport scanners:


 
Click Add New:

  • FBO Location defines the location where the device must be active.
  • Passport Scanner, the device name. For now, we only support the ATB42x keyboard by www.access-is.com and the Grabba device with passport reader integration by http://grabba.com/. Please note that other passport scanners should also work even if you select the Access Keyboard. All that is needed, is that the scanner sends the passport information as plain text as keyboard output, and that it ends the string with a TAB key. In FBO One, the user will place the keyboard focus on a text input control before starting to scan, therefore, this approach will work with virtually any scanning device that can send keyboard output.
  • Default in or out bound type, when the passport dialog starts up it will pre check the check-boxes Inbound and or Outbound type. For example, if you mostly scan immigration forms only, you can make sure the new passenger/crew records are always assigned to the inbound leg by default.
  • Default crew type, when the passport dialog starts it will pre select this passenger/crew type.
  • ConfigString, is an optional field for extra settings that depend the passport scanner selected.
Note: the user performing this setup requires to have a role authorized on the FboLocation entity command with Admin privileges. 

Using a passport scanner in FBO One

Before you can use the passport scanner be sure the scanner is setup for FBO Location. When no passport scanner device is assigned to your fbo location, the 'scan passport' command is not available.
To scan a passport, look up the handling order, and go to the 'Crew/Pax' tab:

In the bottom left you can find a hyperlink named 'Scan passport with Access Keyboard'.
Note that in in the future, FBO One may also support other devices than the Access Keyboard
When clicking the link the following dialog window appears:

Before scanning, make sure the focus is on the Scan field. The Scan field should appear highlighted in blue. If it does not, click the text box with the mouse to set the focus. Now FBO One is ready to receive passport data from the keyboard. The passport data is received as a stream of regular key strokes, so for FBO One to process it correctly, it must be entered in the correct 'Scan field'.
It is possible to move the window over the screen by dragging the header bar. This could be helpful if you need to check the names in the crew/pax tab of the handling order, to prevent scanning a duplicate.
It is also possible to test this passport scanning functionality without a special keyboard. Just copy a sample passport text stream from the Appendix passport sample streams, and paste the text into the Scan field.

After scanning, or when you move the focus to the next input field using the mouse or the Tab key, FBO One will process the stream and populate the other input fields.

Before clicking 'OK' or Enter, validate the following fields:

  • Inbound or Outbound flight
  • Crew type
  • If applicable for your immigration forms, the Gender field

When clicking OK, a crew/passenger record will added to the inbound and/or outbound legs of the handling order.

Setting up new passport scanner devices (Programmers only)

Before you can use the passport functionality in FBO One the hardware must be defined.
The is a table called PassportScanner

This table stores the relation between the scan hardware and FBO One.

  • Name, will store the hardware name e.g. AccessKeyboard
  • ClassName , will store the class name of the hardware, this class should support IPassportScanner interface.
  • ConfigString, the configuration string needed to let the hardware work with FBOOne
  • Remark, general remarks e.g. instruction when the device is not working

Access Keyboard

To work with this device you need first to install the latest driver: http://downloads.access-is.com/index.htm
After installing the driver you need to configure the keyboard by installing window registry keys defined in the attached Passport scanner integration

 
Default ConfigString

ConfigSting stores an property 'passportregexp' this will store the regular expression to grab the elements from the text stream.

Passport Stream Expression
passportregexp=(^(?<documentType>[A-Z]{1,2})([<]{0,1})(?<issuingcountry>[A-Z]{1,3})([<]{2})?(?<lastname>[A-Z]+(<[A-Z]+)*)<(<(?<names>[A-Z]+))+<*([^A-Z^0-9]{1,2})(?<passportnr>[A-Z0-9]+)(<+)?[0-9](?<nationality>[A-Z]{1,3})([<]{2})?(?<dobYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<sex>F|M)(?<expirationYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<personalnumber>[A-Z0-9]*))|(^(?<documentType>[A-Z ]{1,3})([<]{0,1})(?<issuingcountry>[A-Z]{3})(?<passportnr>[A-Z0-9]{9}).+\n(?<dobYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<sex>F|M)(?<expirationYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<nationality>[A-Z]{3}).+\n(?<lastname>[A-Z]+(<[A-Z]+)*)<(<(?<names>[A-Z]+))+);

Grabba Device

To work with this device you need be sure there will be a tab send after a swipe.

Go to the setting page of the grabba app en check the next setting:

 
 Default ConfigString

ConfigSting stores an property 'passportregexp' this will store the regular expression to grab the elements from the text stream.

Passport Stream Expression


passportregexp=(^(?<documentType>[A-Z]{1,2})([<]{0,1})(?<issuingcountry>[A-Z]{1,3})([<]{2})?(?<lastname>[A-Z]+(<[A-Z]+)*)<(<(?<names>[A-Z]+))+<*([^A-Z^0-9]{1,2})(?<passportnr>[A-Z0-9]+)(<+)?[0-9](?<nationality>[A-Z]{1,3})([<]{2})?(?<dobYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<sex>F|M)(?<expirationYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<personalnumber>[A-Z0-9]*))|(^(?<documentType>[A-Z ]{1,3})([<]{0,1})(?<issuingcountry>[A-Z]{3})(?<passportnr>[A-Z0-9]{9}).+\n(?<dobYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<sex>F|M)(?<expirationYYMMDD>[0-9]{2}[0-1][0-9][0-3][0-9])[0-9](?<nationality>[A-Z]{3}).+\n(?<lastname>[A-Z]+(<[A-Z]+)*)<(<(?<names>[A-Z]+))+);

3M Device

To work with this device be sure the device streams the output like this:

3M Passport stream

START
 SWART
 AUKE
 04-08-71
 14-10-23
 PASSPORT
 NR4RHH4H24
 NLD
 NLD
 NLD
 M
END

3M Passport stream with labels

START
Surname: SQUIRES
Forenames: RICHARD
Date of Birth: 01-01-01
Expiry Date: 18-01-19
Issue Date: 01-01-17
Document: PASSPORT
Doc. Number: 3248820
Issuing State: LBN
Nationality: LBN
Address Street:
Address City:
Address State:
Address Postal Code:
Address Country: LBN
Height:
Weight:
Hair Color:
Eye Color:
END


3M ID Card

START
 TESIDCARD
 TESTLASTNAME
 28-06-90
 03-04-23
 IDENTITY CARD
 108131234
 SAU
 SAU
 SAU
 M
END



To test this open the notepad application, once open, swipe a passport to see the passport data.

Default ConfigString

ConfigSting stores an property 'passportregexp' this will store the regular expression to grab the elements from the text stream.

Passport Stream Expression

3M Regexp

passportregexp=(^START[ ]*\r?\n?(Surname:)?[ ](?<lastname>[A-Z]+([ ][A-Z]+)*)[ \r\n]+(Forenames:)?([ ](?<names>[A-Z]+))+[ \r\n]+(Date of Birth:)?[ ](?<dobDDMMYY>[0-3][0-9]-[0-1][0-9]-[0-9]{2})[ \r\n]+(Expiry Date:)?[ ](?<expirationDDMMYY>[0-3][0-9]-[0-1][0-9]-[0-9]{2}).+(Document:)?[ ](?<documentType>[A-Z])(ASSPORT|DENTITY CARD)[ \r\n]+(Doc. Number:)?[ ](?<passportnr>[A-Z0-9]+)[ \r\n]+(Issuing State:)?[ ](?<issuingcountry>[A-Z]{3})[ \r\n]+(Nationality:)?[ ](?<nationality>[A-Z]{3}).+(Address Country:)?(?<dobcountry>[A-Z]{3}).+(?<sex>[0,9])?[ \r\n]+END)


Appendix passport sample streams

Access Keyboard

P<NLDSWART<<AUKE<ANDRIES<<<<<<<<<<<<<<<<<<<<NR4RHH4H24NLD7108042M1404166108812297<<<<<44
P<NLDGRUIS<<MIRJAM<NIESINA<<<<<<<<<<<<<<<<<<NG96873998NLD7212284F0908092109085279<<<<<98
P<GBRACCESS<<KEYBOARDS<UK<OCRPRODUCTS<<<<<<<1007458803GBR6501082M0805102<<<<<<<<<<<<<<03


I<NLDIV1F883112256859541<<<<<3
0504276M2001274NLD<<<<<<<<<<<6
SWART<<STIJN<DAAN<<<<<<<<<<<<<

Grabba device

PNLDGRUIS<<MIRJAM<NIESINA<<<<<<<<<<<<<<<<<<*
NG96873998NLD7212284F0908092109085279<<<<<98

3M Device

START
 SWART
 AUKE
 04-08-71
 14-10-10
 PASSPORT
 NR4RHH4ABC
 NLD
 NLD
 NLD
 M
END


START
 TESIDCARD
 TESTLASTNAME
 28-06-90
 03-04-23
 IDENTITY CARD
 108134902
 SAU
 SAU
 SAU
 M
END



Developer notes

There are some small variations in passport streams.
Sometimes a passport swipe is failing because we don’t recognize the raw steam.

There is an option to analyze the passport streams. Before a passport stream is parsed the data will be stored in an audit record as remark.
Responsible function for storing raw data is: PPPBusLib.FbolocationPassportScannerRepository.ParsePasportData.

There is a PassportParserExplicitTester.TestPassportsCollectAuditSwipes in the ExplicitTests to analyze raw streams bases on the audit remarks.
This tester will search for this remarks and try to parse and trace the results.
Update 'ExplicitTests.user.config' to connect to the correct database and run the test TestPassportsCollectAuditSwipes.


Related Passport Scanner pages:

  • Page:
    Mobile passport scanner  For quickly entering passenger and crew information, FBO One supports reading passports using a mobile hand held device.
  • Page:
    Passport scanner integration —  For quickly entering passenger and crew information, FBO One supports reading passports using a passport scanner.

Related pages: