Points of attention when upgrading from Maximo 7.1.1.7 to Maximo 7.5.0.5.
Problem:
Not really a problem, but after an upgrade from 7.1.1.7 to 7.5.0.5 I encountered some (relatively easy to fix) issues. It would have been nice if these issues where solved when upgrading.
Solution:
Just a little list of found issues when upgrading from 7.1.1.7 to 7.5.0.5.
Issue:
Communication templates with default name are overwritten
Solution:
Copy-pasted the description from an backup Maximo to the new Maximo.
Issue:
Refferential Jobplan doclinks not showing on workorder. Note that I use 'Jobplan revisions' in 7.5.0.5.
Solution:
In 7.5.0.5 with Jobplan Revision, an extra relationship is created on workorder (pluscdoclink) the default relationship (doclink) is also modified with the revision statement in the jobplan section of the where. (Bold and red in the example below)
((ownertable='WORKORDER' and ownerid=:workorderid)
or (ownertable='WOACTIVITY' and ownerid=:workorderid and :istask=1))
or (ownertable='ASSET' and ownerid in (select assetuid from asset where assetnum=:assetnum and siteid=:siteid))
or (ownertable='LOCATIONS' and ownerid in (select locationsid from locations where location=:location and siteid=:siteid))
or (ownertable='JOBPLAN' and ownerid in (select jobplanid from jobplan where jpnum=:jpnum and (siteid is null or siteid=:siteid) and pluscrevnum =:pluscjprevnum) )
or (ownertable='PM' and ownerid in (select pmuid from pm where pmnum=:pmnum and siteid=:siteid))
or (ownertable='SAFETYPLAN' and ownerid in (select safetyplanuid from safetyplan,wosafetyplan where safetyplan.safetyplanid=wosafetyplan.safetyplanid and wosafetyplan.wonum=:wonum and wosafetyplan.siteid=:siteid))
or (ownertable in ('SR','INCIDENT','PROBLEM') and ownerid in (select ticketuid from ticket,relatedrecord where ticketid=recordkey and ticket.class = relatedrecord.class and relatedrecclass=:woclass and relatedreckey=:wonum and relatedrecsiteid=:siteid))
or (ownertable in ('WOCHANGE','WORELEASE','WOACTIVITY') and ownerid in (select workorderid from workorder,relatedrecord where wonum=recordkey and workorder.woclass = relatedrecord.class and relatedrecclass=:woclass and relatedreckey=:wonum and relatedrecsiteid=:siteid))
or (ownertable='COMMLOG' and ownerid in (select commloguid from commlog where ownerid=:workorderid and ownertable in (select value from synonymdomain where domainid='WOCLASS')))
or (ownertable='SLA' and ownerid in (select slaid from sla,slarecords,workorder where sla.slanum=slarecords.slanum and slarecords.ownerid=workorder.workorderid and sla.objectname='WORKORDER' and slarecords.ownertable='WORKORDER' and workorder.wonum=:wonum))
The field pluscjprevnum is a new field on the workorder table. This contains all null values.
The pluscrevnum however is filled with 0. So the comparison isn't working here.
So we just need to fill the revisionnumber on the WORKORDER table.
select count(wonum)
((ownertable='WORKORDER' and ownerid=:workorderid)
or (ownertable='WOACTIVITY' and ownerid=:workorderid and :istask=1))
or (ownertable='ASSET' and ownerid in (select assetuid from asset where assetnum=:assetnum and siteid=:siteid))
or (ownertable='LOCATIONS' and ownerid in (select locationsid from locations where location=:location and siteid=:siteid))
or (ownertable='JOBPLAN' and ownerid in (select jobplanid from jobplan where jpnum=:jpnum and (siteid is null or siteid=:siteid) and pluscrevnum =:pluscjprevnum) )
or (ownertable='PM' and ownerid in (select pmuid from pm where pmnum=:pmnum and siteid=:siteid))
or (ownertable='SAFETYPLAN' and ownerid in (select safetyplanuid from safetyplan,wosafetyplan where safetyplan.safetyplanid=wosafetyplan.safetyplanid and wosafetyplan.wonum=:wonum and wosafetyplan.siteid=:siteid))
or (ownertable in ('SR','INCIDENT','PROBLEM') and ownerid in (select ticketuid from ticket,relatedrecord where ticketid=recordkey and ticket.class = relatedrecord.class and relatedrecclass=:woclass and relatedreckey=:wonum and relatedrecsiteid=:siteid))
or (ownertable in ('WOCHANGE','WORELEASE','WOACTIVITY') and ownerid in (select workorderid from workorder,relatedrecord where wonum=recordkey and workorder.woclass = relatedrecord.class and relatedrecclass=:woclass and relatedreckey=:wonum and relatedrecsiteid=:siteid))
or (ownertable='COMMLOG' and ownerid in (select commloguid from commlog where ownerid=:workorderid and ownertable in (select value from synonymdomain where domainid='WOCLASS')))
or (ownertable='SLA' and ownerid in (select slaid from sla,slarecords,workorder where sla.slanum=slarecords.slanum and slarecords.ownerid=workorder.workorderid and sla.objectname='WORKORDER' and slarecords.ownertable='WORKORDER' and workorder.wonum=:wonum))
The field pluscjprevnum is a new field on the workorder table. This contains all null values.
The pluscrevnum however is filled with 0. So the comparison isn't working here.
So we just need to fill the revisionnumber on the WORKORDER table.
select count(wonum)
from workorder
where pluscjprevnum is null
and jpnum is not null
and istask = 0
and historyflag = 0;
update workorder
set pluscjprevnum = 0
where pluscjprevnum is null
and jpnum is not null
and istask = 0
and historyflag = 0;
select w.wonum, w.jpnum, w.pluscjprevnum, j.pluscrevnum
from workorder w
inner join jobplan j
on j.jpnum = w.jpnum
where w.jpnum is not null;
select w.wonum, w.jpnum, w.pluscjprevnum, j.pluscrevnum
from workorder w
inner join jobplan j
on j.jpnum = w.jpnum
where w.jpnum is not null
and w.pluscjprevnum = '0';
Issue:
When selecting a Jobplan that has at least one revision on a PM in the 'Job Plan Sequence' tab the following error pops up:
Error we received: BMXAA4082E - The WHERE clause is either empty or returning more than one row for the crossover domain specified for {0} object. Use the Domains application to correct the WHERE clause.
Also when selecting a Jobplan with at least one revision on a Workorder not all the correct information of the jobplan was not copied to the workorder.
Solution:
We use two crossover domains to get jobplan information on pm and on workorders. These crossover domains had the following where clause:
jpnum=:jpnum
These needed to modified to take in account the active jobplan:
jpnum=:jpnum and status in (select value from synonymdomain where domainid='JOBPLANSTATUS' and maxvalue ='ACTIVE')
Issue:
Error message BMXAA4042 was reset to default.
Solution:
Copy pasted the Error message from a backup Maximo 7.1.1.7 installation.
You can find these message in Database Configurion -> Select Action -> Messages
Issue:
Maximo is showing up all messed up. Icons are placed below each other and it is impossible to work with.
Solution:
We used the same DNS name for Maximo, so the screen needed a hard refresh in order to replace the cached pictures and stylesheets.
First go back to the startcenter then press CTRL + F5 on the keyboard.
Issue:
Problem with the startcenters. Applications that are related are now also shown on the startcenter, even if the user does not have access to them. This was not the case in Maximo 7.1
Solution:
We need to build different startcenters for the some groups. In 7.1 we just used the same startcenter with a lot of applications on them. Application to which users where not authorized where not shown.
Issue:
There was a problem with the saved queries. The schema name was registered in some queries
Solution:
Fixed with query below.
Please check with you own environment, and test it first as always!
--checks
select * from query
where lower(clause) like '%maxprod%';
select clause, replace(clause, 'maxprod', 'maxprod75')
from query
where lower(clause) like '%maxprod%';
--the actual update
update query set clause = replace(clause, 'maxprod', 'maxprod75')
where lower(clause) like '%maxprod%';
--checks
select clause
from query
where lower(clause) like '%maxprod%';
select *
from query
where lower(clause) like '%maxprod75%';
Issue:
Now the queries works but the user still the following error on some queries if they want to edit them:
http://www-01.ibm.com/support/docview.wss?uid=swg21657644
GNZ
where pluscjprevnum is null
and jpnum is not null
and istask = 0
and historyflag = 0;
update workorder
set pluscjprevnum = 0
where pluscjprevnum is null
and jpnum is not null
and istask = 0
and historyflag = 0;
select w.wonum, w.jpnum, w.pluscjprevnum, j.pluscrevnum
from workorder w
inner join jobplan j
on j.jpnum = w.jpnum
where w.jpnum is not null;
select w.wonum, w.jpnum, w.pluscjprevnum, j.pluscrevnum
from workorder w
inner join jobplan j
on j.jpnum = w.jpnum
where w.jpnum is not null
and w.pluscjprevnum = '0';
Issue:
When selecting a Jobplan that has at least one revision on a PM in the 'Job Plan Sequence' tab the following error pops up:
Error we received: BMXAA4082E - The WHERE clause is either empty or returning more than one row for the crossover domain specified for {0} object. Use the Domains application to correct the WHERE clause.
Also when selecting a Jobplan with at least one revision on a Workorder not all the correct information of the jobplan was not copied to the workorder.
Solution:
We use two crossover domains to get jobplan information on pm and on workorders. These crossover domains had the following where clause:
jpnum=:jpnum
These needed to modified to take in account the active jobplan:
jpnum=:jpnum and status in (select value from synonymdomain where domainid='JOBPLANSTATUS' and maxvalue ='ACTIVE')
Issue:
Error message BMXAA4042 was reset to default.
Solution:
Copy pasted the Error message from a backup Maximo 7.1.1.7 installation.
You can find these message in Database Configurion -> Select Action -> Messages
Issue:
Maximo is showing up all messed up. Icons are placed below each other and it is impossible to work with.
Solution:
We used the same DNS name for Maximo, so the screen needed a hard refresh in order to replace the cached pictures and stylesheets.
First go back to the startcenter then press CTRL + F5 on the keyboard.
Issue:
Problem with the startcenters. Applications that are related are now also shown on the startcenter, even if the user does not have access to them. This was not the case in Maximo 7.1
Solution:
We need to build different startcenters for the some groups. In 7.1 we just used the same startcenter with a lot of applications on them. Application to which users where not authorized where not shown.
Issue:
There was a problem with the saved queries. The schema name was registered in some queries
Solution:
Fixed with query below.
Please check with you own environment, and test it first as always!
--checks
select * from query
where lower(clause) like '%maxprod%';
select clause, replace(clause, 'maxprod', 'maxprod75')
from query
where lower(clause) like '%maxprod%';
--the actual update
update query set clause = replace(clause, 'maxprod', 'maxprod75')
where lower(clause) like '%maxprod%';
--checks
select clause
from query
where lower(clause) like '%maxprod%';
select *
from query
where lower(clause) like '%maxprod75%';
Issue:
Now the queries works but the user still the following error on some queries if they want to edit them:
Solution:
IBM introduced an SQL Injection system property (mxe.db.sqlinjection) in later 7.1 versions and 7.5 versions. Guess it wasn't there yet in 7.1.1.7 :)
GNZ