May 20, 2015

Differentiate Maximo production, test, development environments

A common need is to differentiate Maximo production, test, development environments.
The easiest technique I know is to customize the login and header messages.
Open Database Administration application and select the Messages action. Search for 'welcome' and change the messages in the 'login' group as you wish.

The welcome message is displayed on the login page, the welcomeusername message is displayed in the upper left corner of the start center main page, the welcomemaximomessage ... I don't know :-)

If you want to automate the procedure you can use the following database updates.

update MAXMESSAGES set VALUE='Welcome to Maximo (TEST)'      where MSGKEY='welcome';
update MAXMESSAGES set VALUE='Welcome to Maximo (TEST), {0}' where MSGKEY='welcomeusername';
update L_MAXMESSAGES set VALUE='Welcome to Maximo (TEST)'      where ownerid=(select maxmessagesid from MAXMESSAGES where MSGKEY='welcome');
update L_MAXMESSAGES set VALUE='Welcome to Maximo (TEST), {0}' where ownerid=(select maxmessagesid from MAXMESSAGES where MSGKEY='welcomeusername');

If you wish to change tho logo and other elements of the login page you can look here.

February 17, 2015

Extract attachments (DOCLINKS)

This post explains how to extract a set of attachments from the server.
First of all you have to find the root folder where the attachments are stored. This can be found in mxe.doclink.doctypes.defpath system property (System Configuration - Platform Configuration - System Properties).

Unfortunately, from the file names you cannot understand to which records each file is linked to. In order to do this you have to run an SQL query. In this example I'm showing how to extract all the file names of work orders attachments.

SELECT wo.wonum, di.document, di.description, di.urlname
FROM docinfo di
JOIN doclinks dl ON dl.docinfoid=di.docinfoid
JOIN workorder wo ON wo.workorderid=dl.ownerid
WHERE dl.ownertable='WORKORDER';

This ERD shows you the relationships between the DOCLINKS tables.

January 27, 2015

Evolutionary Design explained

As I have already discussed in a previous post I always tend to adopt an Agile Development approach in my projects.
My own motto is: Start Small, Grow Fast. I always use this as a very simple guiding principle when working on customer projects.

Some months ago I came across this nice picture that perfectly explains the Evolutionary Design principle.

We have to admit that the evolutionary approach can introduce some form of waste because sometimes we cannot reuse the components built in the previous iterations (you can't use bicycle wheels on a car).
However, it definitely allows to minimize a large upfront design investment and allows to deeply understand the real customer needs and expectations during the project.
A better understanding of customer needs is most valuable return of the iterative approach.

There is nothing worse than developing "the wrong thing" and an iterative approach can be a great tool to solve this issue.
Using an iterative approach also helps to create a sort of "project rhythm" that has some other good side effects. Setting up monthly sprint demos, for example, will create a structure for managing customer feedback and change requests.

Last year I have presented a session name "Agile Project Management practices from the field" at the IBM Technical Academy where I have presented some Agile concepts and real life experiences. An extract of the presentation is available on SlideShare.
There is good (and free) book around named Scrum and XP from the Trenches if you want to learn more about Agile practices.

January 7, 2015

Maximo 7.6 installation

Maximo 7.6 has a lot of interesting features. One of these is the new installation technology.
Richard Lesses has published a useful set of articles with a step-by-step guide of how to install Maximo 7.6.

Installing Maximo 7.6: A first look, part 1
Installing Maximo 7.6: A first look, part 2
Installing Maximo 7.6: A first look, part 3
Installing Maximo 7.6: A first look, part 4