Key Settings

Configuration Settings by JSON File

These settings must be set for all POS.

Table 3-1 Key Settings

Setting Type Default Description
configVersion string 1 Can be used for version control.
eftLinkPort number 10100 Is the WebSocket port that EFTLink Server uses to connect to the POS and exchange messages.
restApiEnabled boolean false When enabled this will allow EFTLink to accept the message structuring defined in the Oracle Retail EFTLink Rest-API Guide.

epsCores

object __________

epsCores.cores

object __________ A list of objects defining the core implementations available for the EFTLink Framework to route to. Each object maps to a numeric core identifier to the fully qualified class name of a specific core.
epsCores.cores.0 string

oracle.eftlink.opiretail.OPIRetailCore

epsCores.routing object __________
epsCores.ewalletCore string 0 A particular core can be designated to handle EWallet operations.
epsCores.giftCardCore string 0 A particular core can be designated to handle gift card operations.
epsCores.customFormCore string 0 A particular core can be designated to handle custom forms operations.
epsCores.referralCore string 0 A particular core can be designated to handle referral operations.

epsCores.payByLinkCore

string 0

A particular core can be designated to handle paybylink operations.

For example:

"epsCores": {

"cores": {

"0": "oracle.eftlink.opiretail.OPIRetailCore",

"1": "oracle.eftlink.paybylink.PayByLinkCore"

},

"routing": {

"ewalletCore": "0",

"giftCardCore": "0",

"customFormCore": "0",

"referralCore": "0",

"payByLinkCore": "1",

"selfReferralEnabled": false

}

epsCores.selfReferralEnabled boolean false Whether to allow a core to handle its own referral.
epsCores.invalidCorePromptTimeout number 10 Timeout in seconds, for displaying the TXT_INVALID_CORE message to the operator.
tls object __________
tls.expiryWarningLogDays number 90 Specify the number of days prior to TLS certificate expiry that clear warnings will be included in log files during communication sessions.
tls.expiryWarningMessageDays number 90 Specify the number of days that clear warnings presented to the operator at start of day prior to TLS certificate expiry.
tls.enableTLSRSACiphers boolean false Enables TLS_RSA_* ciphers by removing them from the JDK disabled algorithms list. This is used when RSA-based TLS ciphers must be permitted for compatibility with legacy integrations with PEDS.
tls.protocolsAllowList array TLSv1.3, TLSv1.2 Restricts the protocols which are permissible in the connection between POS and EFTLink Server.
tls.cipherAllowList array

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_CCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_AES_128_CCM

Restricts the ciphers which are permissible in the connection between POS and EFTLink Server. The allow list only includes ciphers which are approved under Oracle Approved Technologies: Security Protocols.
tls.cipherDenyList array SSL_.*,TLS_EMPTY_.*,.*_SHA,.*_3DES_.*,.*_DES_.*,.*_WITH_NULL_.*,.*_anon_.*,.*EXPORT.*,.*LOW.*,.*MD5.*,.*DES.*,.*RC2.*,.*RC4.*,.*PSK.*,TLS_DH_.*,TLS_DHE_.* Restricts the ciphers which are not permissible in the connection between POS and EFTLink Server. The deny list by default includes ciphers which are not approved under Oracle Approved Technologies: Security Protocols.
communications object __________
communications.connectionRecoveryWaitMillis number 30000
communications.connectionRecoveryPingClientIntervalSeconds number 2
communications.processingQueueWaitMillis number 120000
communications.backgroundQueueWaitMillis number 60000
security object __________
security.keyStore object __________
security.keyStore.hashingIterations number

10000

Specifies number of iterations. Valid range 10000 to 100000
security.keyStore.hashingByteSize number 384 Specifies hash byte size. Valid values 256, 384, 512
security.keyStore.hashingAlgorithm string PBKDF2WithHmacSHA512 Specifies hashingAlgorithm, currently only PBKDF2WithHmacSHA512 supported.

security.keyStore.keyAlgorithm

string

AES

Specifies keyAlgorithm, currently only AES supported.
security.keyStore.keySize number 256
security.trustStore object __________
security.trustStore.hashingIterations number 10000 Specifies Truststore number of iterations. Valid range 10000 to 100000
security.trustStore.hashingByteSize number 384 Specifies Truststore hash byte size. Valid values 256, 384, 512
security.trustStore.hashingAlgorithm string PBKDF2WithHmacSHA512 Specifies Truststore factory, currently only PBKDF2WithHmacSHA512 supported.
security.trustStore.keyAlgorithm string

AES

Specifies Truststore keyspec, currently only AES supported.
security.trustStore.keySize number 256
security.dataStore object __________
security.dataStore.hashingIterations number 10000 Specifies DataStore number of iterations. Valid range 10000 to 100000
security.dataStore.hashingByteSize number 384 Specifies DataStore hash byte size. Valid values 256, 384, 512
security.dataStore.hashingAlgorithm string PBKDF2WithHmacSHA512 Specifies DataStore factory, currently only PBKDF2WithHmacSHA512 supported.
security.dataStore.keyAlgorithm string

AES

Specifies DataStore keyspec, currently only AES supported.
security.dataStore.keySize number 256
lineDisplay object __________
lineDisplay.enabled boolean true If set to false, all Sale State Notifications will be ignored and not passed on to any active EPSCore.

lineDisplay.delegateLineDisplay

boolean false If set to true a delegated list will be used to control which core receives Sale State Notification requests.
lineDisplay.lineDisplayDelegateList array
pedPoolingMode object __________
pedPoolingMode.enabled boolean false
pedPoolingMode.showLastTerminalOnTop boolean false
pedPoolingMode.displayListOfPedForFailure boolean true

In PED pooling mode, this determines if Eftlink displays the list of terminals when the request failed or declined using the default terminal.

This is to give the associate an option to select another terminal for the next request.

pedPoolingMode.deviceRequestInPedPoolModeEnabled boolean true
pedPoolingMode.terminals array<object> __________

List of terminal definitions. Each entry maps a server number to a terminal identifier and description.

For example,

"terminals": [

{

"serverNumber": 1,

"terminal": "terminal1",

"description": "Terminal 1"

},

{

"serverNumber": 2,

"terminal": "terminal2",

"description": "Terminal 2"

},

{

"serverNumber": 3,

"terminal": "terminal3",

"description": "Terminal 3"

}

]

pedPoolingMode.terminals[].serverNumber number <number>
pedPoolingMode.terminals[].terminal string <identifier>
pedPoolingMode.terminals[].description string <description>
pedPoolingMode.pools array<object> __________

List of pool definitions. Each entry maps a pool number to a pool identifier, description, and an array of terminals.

For example,

"pools": [

{

"id": "pool1",

"description": "menswear-pool1",

"terminals": [

"terminal1"

]

},

{

"id": "pool2",

"description": "ladieswear-pool2",

"terminals": [

"terminal1",

"terminal2"

]

},

{

"id": "pool3",

"description": "mobile-pool3",

"terminals": [

"terminal1",

"terminal2",

"terminal3"

]

}

]

pedPoolingMode.pools[].id string <identifier>
pedPoolingMode.pools[].description string <description>
pedPoolingMode.pools[].terminals array<string> <terminal{n}>
pedPoolingMode.pools array<object> __________

List of posMapping definitions. Each entry maps a workstation to a pool identifier, which is defined within the pools object above. An optional terminal can be declared as a default.

For example,

"posMappings": [

{

"workstationId": "1",

"poolId": "pool1",

"customForms": true,

"posDescription": "POS {}"

},

{

"workstationId": "2",

"poolId": "pool2",

"defaultTerminal": "terminal2",

"posDescription": "POS {}"

},

{

"workstationId": "3",

"poolId": "pool3",

"defaultTerminal": "terminal3",

"posDescription": "POS {}"

},

{

"workstationId": "^10[0-5]$",

"poolId": "pool3",

"defaultTerminal": "terminal2",

"posDescription": "POS {}"

}

]

pedPoolingMode.posMappings[].workstationId string <workstation identifier>
pedPoolingMode.posMappings[].poolId string <pool identifier>
pedPoolingMode.posMappings[].customForms boolean true
pedPoolingMode.posMappings[].defaultTerminal string <default terminal>
pedPoolingMode.posMappings[].posDescription string <description>
pos object __________
pos.showPrintingDialog boolean false

Whether to precede each print request with a TXT_PRINTING

For example, "Printing. Please Wait" dialog.

pos.disableEventLog boolean false
windowsAccountSecurity object __________
windowsAccountSecurity.allowMapMachineNameToSystemAccount boolean false

Allow the application to correctly secure access to data folders when running under the Windows Local System Account.

It is strongly recommended that the application is not configured to run using the Windows Local System account, instead use the Windows Local Service account when use of a local Windows machine account is desired.

Note, that the Windows Network Service account should not be used.

proxy object __________
proxy.httpsProxyHost string Specifies the HTTPS proxy hostname or IP address that outbound HTTPS connections should use.
proxy.httpsProxyPort string Specifies the HTTPS proxy port that outbound HTTP connections should use.
proxy.httpProxyHost string Specifies the HTTP proxy hostname or IP address that outbound HTTP connections should use.
proxy.httpProxyPort string Specifies the HTTP proxy port that outbound HTTP connections should use.
proxy.nonProxyHosts string

Specifies a list of hostnames or IP addresses that should bypass the proxy and connect directly.

Entries are separated by | and may include WildCards (*).

For example:

"nonProxyHosts": "localhost|127.0.0.1|*.mycorp.com")"

globalisation object __________
globalisation.displayLanguage string EN

Language for display texts. For whichever country code is set, there must be a matching LangXX.properties file.

A hierarchy is implied for example EN_US is taken as an extension of EN.

globalisation.languageFolder string .

The location of the Lang<CC>_<Core>.properties files exist.

Support relative path. Not permitted to traverse outside of installation folder.

globalisation.decimalPlaces number 2 Number of decimal places to show.
eventLogDeviceRequestsEnabled boolean true
cardRangeFile string ./CardRange.xml

The name and location of the range xml file.

Support relative path. Not permitted to traverse outside of installation folder.

customWalletMapping object
additionalContentMaskList string Comma delimited list of XML or JSON fields to be masked in the log
originalPSPNamesToBypassPSPChecking string Comma delimited list of EPSCore names to skip for checking that takes place on follow on transaction (Voids and Referenced Refunds).
maskTextLinesOnDeviceRequest boolean true Determines whether the contents of textline elements within a raised device request are masked within the log file.

Configuration Settings by Properties File

These settings must be set for all POS.

Table 3-2 Key Settings

Setting Description Example
EPSCore0

Name of EPS subsystem.

Plugin cores must be specified by their full package name, and the package must also be added to the execution class path.

EPSCore0 is mandatory.

Note: EPSCore0 is set by installcore.bat / installcore.sh.

EPSCore0 = oracle.eftlink.opiretail.OPIRetailCore
DisplayLanguage

Language for display texts. For whichever country code is set, there must be a matching LangXX.properties file.

A hierarchy is implied for example EN_US is taken as an extension of EN.

DisplayLanguage = EN
LanguageFolder The location of the Lang<CC>_<Core>.properties files exist. Support relative path. Not permitted to traverse outside of installation folder. ./lang