APAR status
Closed as program error.
Error description
PROBLEM DESCRIPTION: Inserting Custodians to Asset via Objecrt Structure based Web Service not working properly. Receiving error in response: BMXAA4134E - PERSONID did not validate STEPS TO REPRODUCE: 1. Go to Web Service Library application, click 'Create Web Service'->'Create Web Service from Object Structure' 2. Select OOTB Object Structure 'MXASSET' from the list then click 'Create'. 3. Click 'Deploy to Product Web Service Container' -> 'Deploy Web Service' and make sure the newly created WebService 'MXASSET' having field 'Is Deployed' is ticked. 4. Open REST API client, enter 'MAXAUTH' header info and POST below xml request to Web Service 'MXASSET' http:/[HostName]:7001/meaweb/os/MXASSET <?xml version="1.0" encoding="UTF-8"?> <max:SyncMXASSET xmlns:max="http://www.ibm.com/maximo"> <max:MXASSETSet> <max:ASSET action="AddChange"> <max:ASSETNUM>11223344</max:ASSETNUM> <max:SITEID>AAAA</max:SITEID> <max:ASSETUSERCUST action="Add"> <max:ADDPERSON>true</max:ADDPERSON> <max:ISCUSTODIAN>true</max:ISCUSTODIAN> <max:ISPRIMARY>true</max:ISPRIMARY> <max:ISUSER>true</max:ISUSER> <max:MULTIID>10</max:MULTIID> <max:ORGID>AAA</max:ORGID> <max:PERSONID>AAAA_01</max:PERSONID> </max:ASSETUSERCUST> </max:ASSET> </max:MXASSETSet> </max:SyncMXASSET> RESULTS: Before POST above request, Asset: 11223344 not having any Custodian records added. The first time POST above request, no error indicated in RESPONSE returned via REST API client. But when check the 'Associated Users and Custodians' window of Asset 11223344 via UI, no records being listed. Then POST the same request again, this time receiving below error message in RESPONSE: psdi.util.MXSystemException: BMXAA4134E - PERSONID did not validate. Gather the logs from the <HOME> directory and determine the problem by looking at the message that is appended to this message. null Also in SystemOut.log, same error with more detailed trace stack in the output in log file. If checking db side, record representing 'AAAA_01' was created in ASSETLOCUSERCUST table but NOT created in ASSETUSERCUST table as expected. If at this point, trying to add the same PERSON as associated custodian via UI, user would also receive some popup error like below: BMXAA4214E - An unknown error has occurred. Please contact your system administrator for assistance. Gather the logs from the <HOME> directory and determine where and why the error is thrown. EXPECTED RESULTS: Custodian info should be correctly added to Asset via either WebService API call or RestAPI call. PRODUCT VERSION: Tivoli's process automation engine 7.6.0.9-IFIX20180227-1319
Local fix
N/A
Problem summary
**************************************************************** * USERS AFFECTED: * * MIF users * **************************************************************** * PROBLEM DESCRIPTION: * * Receiving error "BMXAA4134E - PERSONID did not validate" * * inserting Custodians to Asset via Object Structure based Web * * Service. * **************************************************************** * RECOMMENDATION: * **************************************************************** When accidentally trying to add the same ASSETLOCUSERCUST a second time receiving errors "BMXAA4134E - PERSONID did not validate" BMXAA4214E - An unknown error has occurred. Please contact your system administrator for assistance. Gather the logs from the <HOME> directory and determine where and why the error is thrown. The BMXAA4214E error is encountered due to a NullPointerException. The problem only occurs when importing the same ASSETLOCUSERCUST record that has ADDPERSON=1 and an invalid MULTIID. The following explains how to avoid this problem by supplying correct ASSETLOCUSERCUST data for import: The incorrect inbound data that led to this problem was: <?xml version="1.0" encoding="UTF-8"?> <max:SyncMXASSET xmlns:max="http://www.ibm.com/maximo"> <max:MXASSETSet> <max:ASSET action="AddChange"> <max:ASSETNUM>11223344</max:ASSETNUM> <max:SITEID>AAAA</max:SITEID> <max:ASSETUSERCUST action="Add"> <max:ADDPERSON>true</max:ADDPERSON> <max:ISCUSTODIAN>true</max:ISCUSTODIAN> <max:ISPRIMARY>true</max:ISPRIMARY> <max:ISUSER>true</max:ISUSER> <max:MULTIID>10</max:MULTIID> <max:ORGID>AAA</max:ORGID> <max:PERSONID>AAAA_01</max:PERSONID> </max:ASSETUSERCUST> </max:ASSET> </max:MXASSETSet> </max:SyncMXASSET> Note that ADDPERSON is true. This means that the addition is being staged. After importing the above the ASSETLOCUSERCUST record is created with ASSETLOCUSERCUST.ADDPERSON=1. At this point, you will not see AAAA_01 in the 'Associated Users and Custodians' dialog. This is a planned addition that needs to be executed in the Move/Swap/Modify dialog of the Work Order Tracking application on the Users and Custodians tab. Without knowing this, you might try to import the same ASSETLOCUSERCUST again because you don't see it in the dialog. That is what happened in this case, resulting in the errors described. On the second execution, you get a null pointer exception manifested as the following: psdi.util.MXSystemException: BMXAA4134E - PERSONID did not validate. Gather the logs from the <HOME> directory and determine the problem by looking at the message that is appended to this message. This is because there is not a MULTIASSETLOCCI record with MULTIID=10. The error you should see here (because the first transaction did succeed and add an ASSETLOCUSERCUST record) is: BMXAA5843E - AAAA_01 is being added on WORKORDER 1234 and cannot be added. '1234' would be whatever work order number is associated with the MULTIASSETLOCCI record identified by MULTIID 10. If you intend to have the transaction conclude with an associated user/custodian that is immediately viewable in the 'Associated Users and Custodians' dialog, you should set ADDPERSON to false or remove it from the xml. This is only needed if you are creating a planned user/custodian association. If you do want to create the ASSETLOCUSERCUST as a planned user/custodian association, then you would use <max:ADDPERSON>true</max:ADDPERSON>. Additionally, if this is your intention, you would use ... <max:WILLBECUSTODIAN changed="false">true</max:WILLBECUSTODIAN> <max:WILLBEPRIMARY changed="true">false</max:WILLBEPRIMARY> <max:WILLBEUSER changed="true">false</max:WILLBEUSER> ... instead of ... <max:ISCUSTODIAN>true</max:ISCUSTODIAN> <max:ISPRIMARY>true</max:ISPRIMARY> <max:ISUSER>true</max:ISUSER>
Problem conclusion
The code fix avoids the Null Pointer Exception. The above explains how to correctly import ASSETLOCUSERCUST records to correctly import ASSETLOCUSERCUST records. The fix for this APAR is included in the following package: | Release 7.6.1.2 of Base Services.
Temporary fix
Comments
APAR Information
APAR number
IJ07114
Reported component name
MAXIMO SYSTEMS
Reported component ID
5724R46AV
Reported release
760
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2018-06-13
Closed date
2019-05-24
Last modified date
2019-05-24
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 SYSTEMS
Fixed component ID
5724R46AV
Applicable component levels
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCHPP5","label":"System Related"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"760","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
24 May 2019