Showing posts with label DOCLINKS. Show all posts
Showing posts with label DOCLINKS. Show all posts

Wednesday, April 2, 2014

My points of attention when upgrading from 7.1.1.7 to 7.5.0.5

Goal:
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)
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:

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 :)

http://www-01.ibm.com/support/docview.wss?uid=swg21657644


GNZ


Thursday, January 16, 2014

Use UNC path as location for Attached Documents in Maximo 7.5

Goal: 
Use a network location (UNC Path) as Attached Documents location in Maximo 7.5.0.5 on Windows Server 2012. 

Problem:
When configuring a attached documents configuration Maximo needs a drive letter. This drive letter can be linked to a UNC path where the documents should be stored.

However, the mapping is not available when the user is logged off from the server after a reboot for example.


Solution:
Create a Windows Service that will create a drive mapping. This way the drive is available when the server starts.


I did this on a Windows Server 2012 environment with Maximo 7.5.0.5


Step 1. Create a Windows Service that will map the UNC path to a drive letter.

I use the 'Non Sucking Service Manager' tool to create a service. Great name :) 

The service will execute a batch file which in return will first delete the network mapping and the create it again.

You can download the tool here: http://www.nssm.cc

Next i create a bat file in which the mapping is deleted and then created again.

net use e: /DELETE /YES


net use e: \\FILESERVER01\Maximo\Test /user:domainname.com\USERACCOUNT PASSWORD

Fill in the appropriate values so it matches your environment. When I navigate to the FILESERVER01\Maximo\Test make sure there is a folder DOCLINKS7, you will see it in Step 2.


I save the bat file as autoexnt.bat, you could name it anyway you like.

Next, open a dosbox as an Administrator and navigate to the location of the nssm tool.

Then type:  nssm install Mapping
Note that 'Mapping'  is the name of the Service you can name it anyway you like. A dialog will open.



Now choose the created batch file in the Path option. You can also change the name of the service again here.



Now go to the Exit actions tab in the nssm tool and at the Restart dropdownbox, choose 'No action (srvany compatible)' This will prevent the service from keep trying to delete and make the mapping it it fails.



Click on the 'Install service' button to create the Service.



Open the Services.msc and check the Service. Make sure it is set to the 'Automatic' Startup Type



Next we open the IBM HTTP Server 7.0 Service ans set the Startup type to 'Automatic (Delayed Start)'

This is needed to make sure the Mapping service has created the mapping before the webserver that serves the Maximo documents is starting up. 



Now we have a mapping ready for us whenever the server is running and after a reboot the mapping will be created even if no user logs on to the server.


Step 2. Webserver configuration.

Now we need to configure Maximo to use the Mapping, this is standard Doclnks configuration, but i will post it here anyway, just to show you it works :)

I run a Notepad ++ as Administrator and navigate to D:\ibm\HTTPServer\conf. I open the httpd.conf file (make sure you create a backup first)



On line 221 modify the DocumentRoot like so:

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
#DocumentRoot "D:/IBM/HTTPServer/htdocs"
DocumentRoot "E:\DOCLINKS7"


on line 249 modify the Directory like so:
#
# This should be changed to whatever you set DocumentRoot to.
#
#<Directory "D:/IBM/HTTPServer/htdocs">
<Directory "E:\DOCLINKS7">

Here is an overview of the file:



Save the httpd.conf and close the Notepad ++

 
Step 3. Configure Maximo.

Like in step 2 this is also standard Maximo Doclinks configuration.

I modify the following properties in the System Properties:

mxe.doclink.doctypes.defpath  ->  E:\DOCLINKS7
mxe.doclink.doctypes.topLevelPaths  ->  E:\DOCLINKS7



and the following property:

mxe.doclink.path01  ->  E<PATH>\DOCLINKS7 = http://MaximoServerName/

where the MaximoServerName if the name of your Maximo server.



You can also set the mxe.doclink.path01 in the maximo.properties file, this can be nice when rolling back databases.
That would look like this:



And finally you set the Folders in each application that uses Attached Documents in Maximo.






Step 4. Completing.

Now rebuild and redeploy Maximo.

When finished, reboot the server completely to test everything.

When logged on on the server you will see the drive as a 'Disconnected Network Drive' 
This is normal, and when you click on it, it should show the content of the folder.




So there you have it, a UNC path as a Doclinks location.

GNZ.