Version 3.x - Breaking Changes

Senzing Hardware and Software Requirements Changes

Supported Operating Systems have been updated to newer versions.

Operating systems no longer supported:

  • CentOS (discontinued by RedHat)

  • RHEL 7

  • Ubuntu versions prior to 20.04

  • macOS versions prior to 11

New list of supported Operating Systems:

  • Amazon Linux 2 LTS

  • Debian 10 or newer

  • RedHat 8 (note: docker does not work properly)

  • Ubuntu 20.04 or newer

  • Windows 10 64bit (Limited Availability for OEM partners and Java/C developers)

  • macOS 11 or newer (Limited Availability for OEM partners and Java/C developers)

Supported Database connectors have been updated to newer versions.

  • Aurora PostgreSQL

  • AWS RDS

  • IBM DB2 11.1 or newer

  • Microsoft SQL Server 2019 or newer

  • MySQL 8.0.13+ or newer

  • Oracle 19c or newer

  • PostgreSQL 12 or newer

  • SQLite3

CPU requirements

Senzing 3.0 requires processors with SSE2 and AVX support. If you attempt to run on processors without it, you will get an illegal instruction/opcode error.

Senzing API Changes

Renaming of many API functions.

Many of the API functions were renamed, to make the names more standard. This includes the removal of many V2 or V3 suffixes from the function names.

These are the function renames, in the C/C++ language. The function renames are very similar for Java and Python.

  • G2_init_V2 is renamed G2_init

  • G2_initWithConfigID_V2 is renamed G2_initWithConfigID

  • G2_reinit_V2 is renamed G2_reinit

  • G2_exportJSONEntityReport_V3 is renamed G2_exportJSONEntityReport

  • G2_exportCSVEntityReport_V3 is renamed G2_exportCSVEntityReport

  • G2_fetchNext_V3 is renamed G2_fetchNext

  • G2_closeExport_V3 is renamed G2_closeExport

  • G2_findPathExcludingByEntityID is renamed G2_findPathExcludingByEntityID_V2

  • G2_findPathExcludingByRecordID is renamed G2_findPathExcludingByRecordID_V2

  • G2_findPathIncludingSourceByEntityID is renamed G2_findPathIncludingSourceByEntityID_V2

  • G2_findPathIncludingSourceByRecordID is renamed G2_findPathIncludingSourceByRecordID_V2

  • G2Hasher_init_V2 is renamed G2Hasher_init

  • G2Hasher_initWithConfig_V2 is renamed G2Hasher_initWithConfig

  • G2ConfigMgr_init_V2 is renamed G2ConfigMgr_init

  • G2Config_init_V2 is renamed G2Config_init

  • G2Config_create is renamed G2Config_create (same name, but different function signature)

  • G2Config_load is renamed G2Config_load (same name, but different function signature)

  • G2Config_close is renamed G2Config_close (same name, but different function signature)

  • G2Config_listDataSources_V2 is renamed G2Config_listDataSources

  • G2Config_addDataSource_V2 is renamed G2Config_addDataSource

  • G2Config_deleteDataSource_V2 is renamed G2Config_deleteDataSource

  • G2Product_init_V2 is renamed G2Product_init

Remediation:

The remedy for these changes is to change the function names you are using, making appropriate corrections for different function signatures.

Deprecated function signatures removed.

Several API functions have been removed from the API. In most cases, another function exists with the same functionality as the previous function, but with an improved signature.

These are the functions that have been removed. The names given here are for C/C++, but they also represent similar function names in Java and Python.

  • G2_exportJSONEntityReport (with an older function signature)

  • G2_exportCSVEntityReport_V2 (with an older function signature)

  • G2_fetchNext (with an older function signature)

  • G2_closeExport (with an older function signature)

  • G2Config_listDataSources (with an older function signature, and improved output)

  • G2Config_addDataSource (with an older function signature)

  • G2Config_deleteDataSource (with an older function signature)

Many functions from the G2Config API were also removed.

Remediation:

The remedy for these changes is usually to choose a new, updated version of the function, and use that instead. (For cases where no such function exists, and something critical will be lost, please contact Senzing support.)

Java API functions renamed

Some of the API functions were renamed only in the Java API, to make the names more standard. This includes the removal of many V2 or V3 suffixes from the function names.

These are the function renames, specific to the Java language.

  • searchByAttributesV2 is renamed searchByAttributes

  • getEntityByEntityIDV2 is renamed getEntityByEntityID

  • getEntityByRecordIDV2 is renamed getEntityByRecordID

  • findPathByEntityIDV2 is renamed findPathByEntityID

  • findPathByRecordIDV2 is renamed findPathByRecordID

  • findNetworkByEntityIDV2 is renamed findNetworkByEntityID

  • findNetworkByRecordIDV2 is renamed findNetworkByRecordID

  • whyEntityByRecordIDV2 is renamed whyEntityByRecordID

  • whyEntityByEntityIDV2 is renamed whyEntityByEntityID

  • whyRecordsV2 is renamed whyRecords

  • whyEntitiesV2 is renamed whyEntities

  • getRecordV2 is renamed getRecord

Remediation:

The remedy for these changes is to change the function names you are using, making appropriate corrections for different function signatures.

G2Config API functions removed.

Several API functions have been removed from the G2Config API. These functions are no longer available for external use.

Remediation:

These functions are not intended for external use. They should be removed from your application. (If there is something critical that will be lost, please contact Senzing support.)

API flags changed from 32-bit to 64-bit values.

The integer values that represent the engine flags were changed from 32-bit to 64-bit values.

For example, the flags and bitmasks were previously defined as int types in C/C++. They are now defined as long long types in C/C++.

Old definition:

#define G2_EXPORT_INCLUDE_RESOLVED static_cast<int>( 1 << 0 )

New definition:

#define G2_EXPORT_INCLUDE_RESOLVED static_cast<long long>( 1LL << 0 )

Likewise, the API function calls were modified to take these longer values wherever flag values were used.

Old definition:

_DLEXPORT int G2_getEntityByEntityID_V2(const long long entityID, const int flags, char responseBuf, size_t *bufSize, void *(*resizeFunc)(void *ptr, size_t newSize));

New definition:

_DLEXPORT int G2_getEntityByEntityID_V2(const long long entityID, const long long flags, char responseBuf, size_t *bufSize, void *(*resizeFunc)(void *ptr, size_t newSize));

Remediation:

The remedy for these changes is different, depending on the programming language being used. For C/C++, the int type variables should be changed to long long type variables. For Java, the int type variables should be changed to long type variables. For Python, no changes are needed.

Document output fields were removed

The MATCH_SCORE, REF_SCORE, and LENS_CODE fields were removed from JSON output documents and CSV output documents. This applies to every kind of output document, including entity information, exports, and so forth.

Remediation:

These fields should no longer be recognized or read. They should be simply removed, as there is no replacement. (If there is something critical that will be lost, please contact Senzing support.)

G2 Audit API was removed

The G2 Audit API has been removed entirely, with all of its functions.

Remediation:

The withInfo/listener framework should be used to gather information in real-time, incrementally.

We have an example risk scoring project that uses our listener framework.

Python API consolidated under the common package

The Python API classes were grouped together in a common senzing package. This improves the interface structure and separates those primary classes from the programs and tools that use them. However, the existing import statements in these programs and tools must be updated to reference the new API structure.

Remediation:

Any python programs or modules that use the Senzing API will need to have the import statements modified to pull from the new structure. The class usage may also change a bit.

Python API engine flags moved to G2EngineFlags class

The different engine control flags have been moved from the G2Engine class, into their own class called G2EngineFlags. This is to improve their usage as an enumeration of values.

Remediation:

Any python programs or modules that reference those flags will need to be updated to include the reference to the G2EngineFlags class.

UTYPE_CODE was changed to be USAGE_TYPE

The UTYPE_CODE fields were altered to be USAGE_TYPE fields in the JSON output documents and CSV output documents. This was done to standardize the names of this particular kind of value. This applies to every kind of output document including entity information, exports, and so forth.

This affects a few different specific tag names, all following the same naming conventions.

  • UTYPE_CODE is changed to USAGE_TYPE

  • FEAT_UTYPE_CODE is changed to FEAT_USAGE_TYPE

  • LINKED_FEAT_UTYPE_CODE is changed to LINKED_FEAT_USAGE_TYPE

Remediation:

Any system that reads the old tag names or column names should be updated to read the new tag names in their place. The contents of the fields will be the same.

why functions no longer return feature scoring information by default

The why functions were altered, to no longer include feature scores, candidate keys, or disclosure keys by default. This was done to prevent the inclusion of excess information in result documents. This data is not included by default, but may be included by adding the G2_INCLUDE_FEATURE_SCORES flag.

Remediation:

Any system that reads these data keys must add the new flag in its function calls, for the system to generate the desired data.

Workload statistics document altered and trimmed

The workload statistics document had some fields either renamed or removed.

  • records is renamed addedRecords

  • delete records is renamed deletedRecords

  • grouperKeyMatch is removed

  • busyWait is removed

  • longBusyWait is removed

  • unresolveTriggers==>prune is removed

Remediation:

Any system that reads the old tag names should be updated to call the renamed tags by the new names (their contents have been unaltered), and to no longer call the removed tags.

Interesting Entity output JSON documents altered

The INTERESTING_ENTITIES section of output documents has been modified in format. This is to better consolidate the data together.

  1. The content of the existing INTERESTING_ENTITIES tag has been moved into a subtag of this field, called ENTITIES. (INTERESTING_ENTITIES==>ENTITIES).

  2. The content of the existing NOTICES tag has been moved into the INTERESTING_ENTITIES tag as a new subtag. (INTERESTING_ENTITIES==>NOTICES).

Remediation:

Any system that reads the old tag names should be updated to read the tags by the new names and locations (their contents have been unaltered).

XML/UMF messages are no longer supported

The engine no longer supports messages in UMF or XML format. All messages are now in JSON format.

Remediation:

Any system that uses the old UMF/XML messaging format should be updated to use JSON format messages. (This included redo/retry/repair messages in the various message queues.)

Redo/Retry/Repair messages have a changed format.

Redo messages generated by the engine have changed format. They have been converted from a UMF message to be a JSON message. They are also based primarily on RECORD_ID, rather than ENTITY_KEY.

Remediation:

All existing redo/repair/retry messages should be processed before upgrading to the new version. This will prevent any compatibility problems that may arise from using the old message format.

Configuration changes for new installs

This is a list of features that have been removed from the configuration of new installs:

  • CALL_SIGN

  • FLAG_CODE

  • GROSS_TONNAGE

  • GROUPER_KEY

  • IMO_NUM

  • MMSI_NUM

  • NET_TONNAGE

  • REG_PORT

  • SSN_LAST4

  • VEH_COLOR

  • VEH_MAKE

  • VEH_MODEL

  • VEH_YEAR

  • VESSEL_BEAM

  • VESSEL_LENGTH

  • VESSEL_TYPE

Additional items of note

This is a list of some changes to the engine behavior, that do not affect the API, but should be remembered in terms of engine behavior:

  • Scoring of Partial SSN is enabled.

  • System Parameter [ER] FEATURE_COUNT_RERESOLVE_THRESHOLD is now disabled by setting it to -1, instead of 0.

  • System Parameter [ER] FEATURE_COUNT_CANDIDATE_THRESHOLD is now disabled by setting it to -1, instead of 0.

  • System Parameter [ER] FEATURE_SCORE_PAIR_COUNT_THRESHOLD is now disabled by setting it to -1, instead of 0.

  • System Parameter [ER] FEATURE_SCORE_PAIR_COUNT_REDUCE_THRESHOLD is now disabled by setting it to -1, instead of 0.

  • The ER logging that used to be available through LOG_ER* tables has been changed to internal debug logging messages, available in the verbose output.

  • ENTITY_KEY is no longer a mappable attribute.