Base class framework for credit bureau service integrations in the Axion platform. Provides common infrastructure for connecting to external credit bureaus, managing API calls, implementing buffer strategies, and routing between multiple bureau providers.
ObjServiceBureau establishes a consistent pattern for all bureau integrations, extracting common functionality including:
def_remoteconnectionscompute, connect, run_workflow_direct)ObjApi.ObjApi
└── ObjServiceBureau (base framework)
├── ObjServiceHCExperian (SOAP implementation)
├── ObjServiceHCMyData (REST implementation)
└── ObjServiceBureauRouter (routing orchestrator)
The class maintains a registry (_bureau_registry) that maps bureau codes to implementation classes. Bureaus register themselves at module load time:
ObjServiceBureau.register_bureau("MYDATA", ObjServiceApi)
This enables dynamic instantiation through the router.
_load_remote_connection() - Loads bureau API credentials and configuration from def_remoteconnections tableget_remote_connection_pattern() - Override in subclasses to specify SQL LIKE pattern for connection lookupget_bureau_code() - Override to return bureau identifier (e.g., "EXPERIAN", "MYDATA")register_bureau(bureau_code, bureau_class) - Register bureau implementation with codeget_bureau_class(bureau_code) - Get implementation class by codeget_registered_bureaus() - List all registered bureau codesget_buffer_time() - Query buffer time configuration from data_dim_constants tablecheck_buffer(idnumber) - Check if valid buffered result exists for ID numberresolve_buffer(guid, idnumber, buffer_time) - Retrieve and copy buffered resultresolve(guid, id_number) - Execute bureau API call (must implement in subclasses)compute(param1, param2, param3) - Process bureau request with parametersconnect() - Execute workflow connection and computerun_workflow_direct(guid, param1, param2, param3) - Direct workflow entry pointdef_remoteconnections)Bureau configurations are stored in the def_remoteconnections table with fields:
$guid$ placeholder)Buffer time is configured in data_dim_constants table:
INSERT INTO data_dim_constants (Varname, varvalue)
VALUES ('BufferTime', '9'); -- Days to retain buffer
Default is 9 days if not configured.
Results are buffered in bloom_donormalenquiry table (or custom buffer table) with:
ObjServiceBureauget_bureau_code() - Return bureau identifierget_remote_connection_pattern() - Return SQL LIKE patternresolve(guid, id_number) - Implement API call logicObjServiceBureau.register_bureau("MYBUREAU", ObjServiceApi)
def_remoteconnections tabledef_bureau_strategy table (for routing)See ObjServiceHCMyData.py for REST API example and ObjServiceHCExperian.py for SOAP example.
The buffer mechanism prevents duplicate bureau API calls for the same identity number within the configured time window:
This reduces API costs and improves response time for repeated queries.
ObjServiceBureauRouter.py - Routing orchestrator using strategy tableObjServiceHCExperian.py - Experian SOAP implementationObjServiceHCMyData.py - MyData REST implementationObjConstants.py - Contains BLOOM_DONORMALENQUIRY constantAxion 8.x