APAR status
Closed as program error.
Error description
The issue is with the check between MAXATTRIBUTE and MAXATTRIBUTECFG not happening on case-sensitive databases when running integrity checker. The SQL that was being executed to get the MAXATTRIBUTE records for the MAXATTRIBUTE object included "... objectname='maxattribute' ..." instead of "... objectname='MAXATTRIBUTE' ...". As a result, no MAXATTRIBUTE records were being retrieved for the comparison. For example, the below statements were not getting executed in Oracle: BMXAA0424I ? Verifying configuration tables. select attributename from maxattribute where objectname = 'maxattribute' and persistent = 1 order by attributeno ; select b.alias as basevalue, c.alias as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.alias is null and c.alias is not null or b.alias is not null and c.alias is null or b.alias <> c.alias) and b.objectname = c.objectname and b.attributename = c.attributename ; select b.autokeyname as basevalue, c.autokeyname as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.autokeyname is null and c.autokeyname is not null or b.autokeyname is not null and c.autokeyname is null or b.autokeyname <> c.autokeyname) and b.objectname = c.objectname and b.attributename = c.attributename ; select b.attributeno as basevalue, c.attributeno as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.attributeno is null and c.attributeno is not null or b.attributeno is not null and c.attributeno is null or b.attributeno <> c.attributeno) and b.objectname = c.objectname and b.attributename = c.attributename ; select b.canautonum as basevalue, c.canautonum as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.canautonum is null and c.canautonum is not null or b.canautonum is not null and c.canautonum is null or b.canautonum <> c.canautonum) and b.objectname = c.objectname and b.attributename = c.attributename ; select b.classname as basevalue, c.classname as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.classname is null and c.classname is not null or b.classname is not null and c.classname is null or b.classname <> c.classname) and b.objectname = c.objectname and b.attributename = c.attributename ; select b.columnname as basevalue, c.columnname as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.columnname is null and c.columnname is not null or b.columnname is not null and c.columnname is null or b.columnname <> c.columnname) and b.objectname = c.objectname and b.attributename = c.attributename ; select b.defaultvalue as basevalue, c.defaultvalue as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.defaultvalue is null and c.defaultvalue is not null or b.defaultvalue is not null and c.defaultvalue is null or b.defaultvalue <> c.defaultvalue) and b.objectname = c.objectname and b.attributename = c.attributename ; Steps to Reproduce: 1. Apply Maximo 7.6.1.2 fix pack on a case-sensitive database environment (for e.g. Oracle) 2. Apply Maximo 7.6.1.2 fix pack on a non-case-sensitive database environment 3. Run Integrity Checker on both environments. 4. Compare Integrity Checker logs of both environments. Expected Result: Statements with any case (lower or upper) 'maxattribute' should get executed on a case-sensitive database environment. Actual Result: Statements like below having lower case 'maxattribute' are not seen executed on a case-sensitive database environment: select attributename from maxattribute where objectname = 'maxattribute' and persistent = 1 order by attributeno ; select b.alias as basevalue, c.alias as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.alias is null and c.alias is not null or b.alias is not null and c.alias is null or b.alias <> c.alias) and b.objectname = c.objectname and b.attributename = c.attributename ; Reported in Version: Maximo 7.6.1.2
Local fix
If these statements are run manually in an Oracle environment, then these gets check and validated successfully, and even shows up errors if exists any, for example: select b.defaultvalue as basevalue, c.defaultvalue as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.defaultvalue is null and c.defaultvalue is not null or b.defaultvalue is not null and c.defaultvalue is null or b.defaultvalue <> c.defaultvalue) and b.objectname = c.objectname and b.attributename = c.attributename BMXAA0443E -- Error - BMXAA0537E -- maxattribute definition differs from maxattributecfg for IOTRESTENDPOINTS.READINGDATETAGNAME. maxattribute.DEFAULTVALUE has "NA" while maxattributecfg.DEFAULTVALUE has "null". Use the Database Configuration application to correct the configuration metadata.
Problem summary
**************************************************************** * USERS AFFECTED: * * Maximo Integrity Checker users * **************************************************************** * PROBLEM DESCRIPTION: * * Check between MAXATTRIBUTE and MAXATTRIBUTECFG not happening * * on case-sensitive databases when running integrity checker. * **************************************************************** Check between MAXATTRIBUTE and MAXATTRIBUTECFG not happening on case-sensitive databases when running integrity checker. The SQL that was being executed to get the MAXATTRIBUTE records for the MAXATTRIBUTE object included "...objectname='maxattribute' ..." instead of "... objectname='MAXATTRIBUTE' ...". As a result, no MAXATTRIBUTE records were being retrieved for the comparison. For example, the below statements were not getting executed in Oracle: BMXAA0424I ? Verifying configuration tables. select attributename from maxattribute where objectname = 'maxattribute' and persistent = 1 order by attributeno ; select b.alias as basevalue, c.alias as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.alias is null and c.alias is not null or b.alias is not null and c.alias is null or b.alias <> c.alias) and b.objectname = c.objectname and b.attributename = c.attributename; select b.autokeyname as basevalue, c.autokeyname as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.autokeyname is null and c.autokeyname is not null or b.autokeyname is not null and c.autokeyname is null or b.autokeyname <> c.autokeyname) and b.objectname = c.objectname and b.attributename = c.attributename; select b.attributeno as basevalue, c.attributeno as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.attributeno is null and c.attributeno is not null or b.attributeno is not null and c.attributeno is null or b.attributeno <> c.attributeno) and b.objectname = c.objectname and b.attributename = c.attributename; select b.canautonum as basevalue, c.canautonum as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.canautonum is null and c.canautonum is not null or b.canautonum is not null and c.canautonum is null or b.canautonum <> c.canautonum) and b.objectname = c.objectname and b.attributename = c.attributename; select b.classname as basevalue, c.classname as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.classname is null and c.classname is not null or b.classname is not null and c.classname is null or b.classname <>c.classname) and b.objectname = c.objectname and b.attributename = c.attributename; select b.columnname as basevalue, c.columnname as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.columnname is null and c.columnname is not null or b.columnname is not null and c.columnname is null or b.columnname <> c.columnname) and b.objectname = c.objectname and b.attributename = c.attributename; select b.defaultvalue as basevalue, c.defaultvalue as cfgvalue, b.objectname as objectname, b.attributename as attributename from maxattribute b, maxattributecfg c where (b.defaultvalue is null and c.defaultvalue is not null or b.defaultvalue is not null and c.defaultvalue is null or b.defaultvalue <> c.defaultvalue) and b.objectname = c.objectname and b.attributename = c.attributename; Steps to Reproduce: 1. Apply Maximo 7.6.1.2 fix pack on a case-sensitive database environment (for e.g. Oracle) 2. Apply Maximo 7.6.1.2 fix pack on a non-case-sensitive database environment 3. Run Integrity Checker on both environments. 4. Compare Integrity Checker logs of both environments. Expected Result: Statements with any case (lower or upper) 'maxattribute' should get executed on a case-sensitive database environment.
Problem conclusion
The fix for this APAR is contained in the following maintenance package: Release 7.6.1.3 of Base Services
Temporary fix
Comments
APAR Information
APAR number
IJ37645
Reported component name
MAXIMO ASST MGM
Reported component ID
5724R46AM
Reported release
761
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2022-02-04
Closed date
2022-04-06
Last modified date
2022-04-06
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
MAXIMO ASST MGM
Fixed component ID
5724R46AM
Applicable component levels
[{"Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSLKT6","label":"Maximo Asset Management"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"761"}]
Document Information
Modified date:
07 April 2022