Core Integration
Note
If you are looking to build a new coreflow, or desire a deeper understanding of how they work, check out our tutorial on Writing Custom Coreflows.
Overview
A core is a financial institution’s database of record, and interacting with it involves a different set of APIs and data shapes than those used to interact with a Q2 database. Our FIs use dozens of different cores, and each type has its own distinct methods, its own documentation, sometimes even its own query language! Many cores are decades old and have a lot of quirks and antiquated architecture. Getting what you need from a core can seem daunting, and even dangerous considering that real money is moving through it every second.
Our solution to the challenges presented by supporting all of these different technologies is the concept of the “Q2Core”. Each Q2Core inherits common functionality, such as standardized logging, error handling, and configuration management. The capabilities and data of the target core are exposed through “coreflows”, which are specialized Python functions that wrap core requests, designed to invoke a specific operation such as getting a user’s demographic information and return consumable data.
The Caliper SDK Team has built a library, q2-cores
containing Q2Cores
for many common core technologies, each with a roster of built-in coreflows.
These provide a common interface by which SDK
extensions can communicate with cores, while managing all the
configurations, idiosyncrasies, and data patterns that differentiate one core
from another. Some great benefits from using our q2-cores
library are:
Coreflows designed, approved and tested by Q2 developers long accustomed to working with cores
Built-in response mocking. While you are building your code, the call methods will return accurate data shapes containing mock data, without the danger of interacting with a live production core. Once deployed into the Q2 Datacenter, your code will automatically target your actual, live core.
Clean interface that works with your extensions. No matter how complex the interaction with your core is, you can almost certainly accomplish it in just a few repeatable steps with minimal extension code.
100% unit test coverage
To install, run the command q2 upgrade
and choose q2-cores
. This will download, install, and notate your
choice in the requirements.txt file at the root of your repository.
Much like calls to HQ API, every core call will follow the same basic steps, regardless of the core operation. The basic structure is invoked in your extension like so:
mapper = await self.core.build_operation(param_one, param_two)
response = await mapper.execute()
And that’s it! build_operation
will be a method included in the q2-cores
library,
and you simply need to supply the parameters. The first line
builds all the query classes necessary to make the necessary core requests and queues them up
to run. This object is called a Mapper.
Calling execute on the Mapper (line 2) executes the core requests, then parses
them into a Python dictionary Model of a shape designated by the Q2Core. The Model will vary with the
specific call, but all Q2Cores that implement a build_operation
will return
the same basic shape.
Configuring Your Core
Configuring the extensions contained in your repository to talk to a specific core
is simple. In your
settings file (configuration/settings.py
by default), set the CORE
variable to the name of your core. Options are listed at the bottom of this page:
# configuration/settings.py
CORE = 'Symitar' # Now all calls will speak Symitar and expect Symitar responses
Sometimes, configuring a core in the settings.py file will prompt for additional
REQUIRED_CONFIGURATIONS
. This works the same way as in the online tutorial’s
configuration section. You can provide these extra configurations with
q2 generate_config CORENAME
(Running q2 run
will prompt you to do so if you forget).
Multitenant (Multi-Core) Extensions
The real power of the q2-cores
library is revealed when the
SAME extension code that communicates with a core can behave DIFFERENTLY depending
on which core type it’s communicating with. Imagine you are building an AddressUpdate
extension. If you know the core will always be Symitar, you are set with what we’ve learned so far.
But if you want this AddressUpdate extension to be usable with multiple core types?
In that case, invoke the DYNAMIC_CORE_SELECTION
attribute
on your request handler. Set to False
by default, if True
, the
choice of which core your extension is configured for is deferred until
installation time, at which point the core type will be stored in the Q2 Database.
This is useful under two scenarios:
Building a multi-tenant extension to be deployed for multiple FIs
Building a resilient extension that will not have to be updated during a core conversion or upgrade
Overriding The Functionality Of A Q2Core
All of the Q2Cores are composed in an object-oriented style, which means inheritance and overrides are the preferred way of altering logic. If you find the built-in functionality of a Q2Core doesn’t meet your needs, take a look at our tutorial on Writing Custom Coreflows.
Q2 Supported Cores
We provide support for a variety of cores within our system. Please note that the table below does not encompass all supported cores, but
rather those included in the current q2-cores
package. As you review the table, keep in mind that your core can may be categorized under
a middleware. For instance, Fiserv DNA can be associated to either the CoreAPI or OSI middleware. If you are uncertain about which middleware
to use, please submit a ticket on the developer portal, and we’ll assist you in determining the appropriate one for your core.
If your core isn’t listed in the table, there are two potential scenarios. Firstly, it’s possible that your core simply hasn’t
been added to the q2-cores
package yet, as Q2 supports a large number of cores. In this case, please reach out to us for further assistance.
Secondly, if we confirm that Q2 does not support your core after reaching out, or if you need immediate functionality while we integrate the
core into our package, you can utilze our base package to build the necessary functionality. This package is designed to follow the same structure
that all of our cores adhere to and incorporates many of the base functionalities utilized by our supported cores. In fact, all of our cores
inherit from this package.
Note
By default, all cores in this package will provide a build_demographic_info
function to fetch demographic information from a given core.
However, these can be expanded upon and the functionality can be inherited when creating custom coreflows as indicated in previous sections.
For core definitions, please visit our Q2 Fundamentals and Definitions guide.
Vendor |
Core Platform |
Middleware |
Q2 Core |
Aliases |
---|---|---|---|---|
Corelation Inc |
Keystone |
Keybridge |
Corelation, KeyBridge, Keystone |
|
EPL Inc |
EPL |
EPL |
EPL CoreGatewayService, EplCore |
|
FIS |
Horizon |
AllLink |
AllLink, Horizon core |
|
FIS, Metavante |
IBS |
Connectware |
Financial Connect, Metavante Connect |
|
FIS |
IBS |
Open API |
Open API, Code Connect |
|
FIS |
Miser |
Cohesion |
MiserNet, Cohesion 3.x, Fidelity Aurum Miser |
|
Fiserv |
Cleartouch |
Cleartouch (Connect) |
Connect, Cleartouch, FiservClearTouchConnect |
|
Fiserv |
Datasafe |
Connect I.T. |
UsersConnect, Datasafe |
|
Fiserv |
DNA |
CoreAPI |
||
Fiserv, Open Solutions |
DNA |
IRB, CMC |
IRB, OSI 3.x |
|
Fiserv |
Precision |
PCS |
Precision Vision, PCS Banking |
|
Fiserv |
Premier |
Communicator Advantage |
Communicator Advantage, Enterprise Service Framework, ESF |
|
Fiserv |
Premier |
Communicator Open |
CommunicatorOpen |
|
Fiserv |
Premier, ITI |
SOA |
PremierSOA, FiservSOAPremier, Fiserv ITI Connect3 SOA |
|
Fiserv |
Signature |
Communicator |
CBS, Signature, FiservCommunicator |
|
Fiserv |
Spectrum |
Pathways |
Summit, Spectrum, Fiserv Summit Pathways |
|
Fiserv |
XP2 |
Apex |
XP2, FocusXP |
|
Harland Financial Solutions Inc |
Phoenix |
XM |
Phoenix, PhoenixEFE |
|
Harland Financial Solutions Inc |
UltraData |
Transaction Exchange |
UltraData Fusion |
|
Jack Henry & Associates Inc (JHA) |
Core Director |
DataLink |
Core Director, DataLink |
|
Jack Henry & Associates Inc (JHA) |
Silverlake, CIF 20/20 |
JXChange |
Jack Henry Silverlake, CIF 20/20 |
|
Jack Henry & Associates Inc (JHA) |
Symitar Mainframe |
SymConnect |
SymConnect, Episys |
|
Jack Henry & Associates Inc (JHA) |
Symitar Mainframe |
SymXchange |
SymExchange |
|
Q2 |
CorePro |
CorePro |