July 9, 2013

Best practices for Maximo projects

Today I have received the following questions from one of our customers.
  • Are there any best practices or recommendations on how to develop and maintain different versions of a Maximo based solution?
  • How can we do source control?
  • Are there any compare tool/utility to find differences in various version of application (available in different environments)?
Expanding a little, in this article I will present my own recipes to cook successful Maximo projects.

Development Methodology

I am a strong fan of Agile philosophy and less enthusiastic adopter of Agile software development methodologies like Scrum, XP or Crystal.
I really believe that the right way to seek success and perfection in software development project is to strive to align your processes, organization and culture to the four value statements of the Agile manifesto whatever methodology you are using.

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

There is no silver bullet here. Every project is different. Every customer is different. You have to experiment and improve keeping in mind those principles.
My own motto is: Start Small, Grow Fast. I always use this as a very simple guiding principle.

Workspace structure

I suggest to keep all the files and documents in a single place. There is no need to create boundaries between development, test or project management people. Everybody is on the same ship and a great collaboration is fundamental for an efficient and productive team. If possible, give access to the customer to entire set of files and documents. Foster mutual trust and establish a partnership.
This is a common set of directories in a project folder.
  • Mbo: Home of an Eclipse project for Mbo Java code (aka businessobjects).
  • Web: Home of an Eclipse project for UI Java code (aka maximouiweb).
  • Applications: Applications definitions exported in XML files. Any time a change is made, the app definition must be exported and stored here.
  • Scripts: TPAE 7.5 scripts.
  • Database: Custom database triggers and SQL scripts.
  • Docs: Requirements, plans and procedures as well as architectural and design documents. All the team members should use this folder to collaborate for a lean workgroup.
I know that some of these files are stored in a safe place in the Maximo database. However, I think it is better to keep together all the custom code in a common repository where you can also search for previous versions of a specific file.

Collaboration, Backup, Versioning

The workspace described above must be shared across all the team members including specialists, architects, developers, project managers and stakeholders.
Avoid using email to exchange documents. This could quickly become a nightmare. Break old habits. Share a list of tasks on Google Docs and ask everyone to keep it updated. Create a design document and edit it in real time during a review session. Many times we don't need strict rules and processes.

Regarding the technology for storage and versioning of the workspace it really depends on the size of the team. As a general rule:
  • 1-3 members: A shared folder with a weekly backup is enough. Cloud services like Google Drive, SkyDrive, DropBox, etc. are great and free. Google platform enable a powerful collaboration platform with chat, email, real time document collaboration and sharing.
  • 4-6 members : Here you will need some versioning system like CVS, SVN or Git. You may decide to setup your own server or to go cloud.
  • 7 or more: You need some requirement/bug management system. Those systems are typically called ALM (Application Lifecycle Management). IBM Rational Team Concert is a great and powerful tool but can be a little complex to administer. There are tons of ALM services on the cloud


First of all, share a common set of productivity tools. Look at Maximo specialist Swiss Army Knife for my selection of tools.
If you have to develop Java customization you have to set some coding standards.
In real world scenarios you will always face some challenges to keep in sync development, test and production environments. Unfortunately, there is no tool to compare two different Maximo environments. That's why I have develop my own method.
An effective technique is to periodically clone the production environment to the test and development environments with a procedure like this.
On the other side it is important to use Migration Manager to move packages to be released from dev to test to production.


  1. Bruno the post is very interesting !!!
    but without an image it's impossible promote it on Pinterest, Linkedin, Facebook Page, etc. etc. !

    If someone tries to promote your post the only image that can use is that of your profile :-)

    1. Here is a nice picture for you :-)


    2. Tag: PM203A57. Let me share all of you about #5 Tips for Project Management Success,, I hope you enjoy it

      1. Plan your day using time management techniques

      As a project manager, time management skills are essential because you are dealing with a wide range of tasks that demand a quick turnaround time. Planning your day will go a long way in keeping you organized and increasing your productivity. Assist your task planning by using project management software which helps you track the work of you and your team.

      If you are not very tech savvy, a simple to-do list can also be a great organizational tool. Prioritize your most important tasks by putting them at the top of the list and less important ones at the bottom. Having a visual plan of your daily tasks helps to keep you on track and aware of time.

      Related post: Free ebook 104 secrets to become a great project manager

      2. Include stakeholders in important project conversations

      While you will have plenty of responsibilities regarding the project, don’t neglect your clients.

      Good communication is essential is keeping both parties informed of project progression, curtailing scope creep, and apprised of changing requirements. Some clients may have different expectations when it comes to communication, so make sure to establish the frequency and type of communication (like emails, phone calls, and face-to-face conversations) at the beginning of your project.

      Establishing communication expectations early helps alleviate stakeholder uncertainty about communication frequency and delivery.

      3. Regularly communicate with your team

      Daily team communication helps keep misunderstandings and unclear requirements under control. Keeping your team informed in every step of the project is essential to project management success.

      For example, a study published by Procedia Technology found that good communication skills were the cornerstone of project management. The study examined over 300 “construction project managers, architects, construction managers, engineers and quantity surveyors” and their successes and failures on various construction projects.

      4. Anticipate project setbacks

      Even the best-laid plans often go awry.

      Remember that even with a high amount of planning and attention to detail, your project may still encounter some challenges. Pay attention to complaints from stakeholders or colleagues, and other warning signs, like a missed deadline or cost overrun, that there may be a problem.

      Preventing a crisis will keep your project running smoothly, save you a lot of time, and keep you, your team, and your stakeholders confident in progressing with the project.

      Unfortunately not every complication can be avoided. Crisis management skills are essential for dealing with the unexpected. Project managers need to be flexible and pragmatic. Improvise and make sharp decisions when needed.

      Related post: 92 free project management templates

      5. Stay focused on the details

      A common problem project managers encounter is having the project aims not aligned with the organization’s objectives. A great project manager will strategize a plan for the project to lead back to the overall success of the business.

      Know your project’s scope by heart and avoid wandering outside of the project’s requirements. It’s too easy to get lost in minor details and forget what your focus is, so a well-planned project scope is essential for success.

      And final, you should use KPI to measure effectiveness of the project, here are full list: 76 project management KPIs

  2. About workspace structure, we prefer single projects for artifacts with different nature (java, db-scripts, etc.) or targets (UI war or businesobjects.jar). In a specific project we also put the migration-manager packages.

    1. Yes, in the same folder you will have some subfolders.
      Some of them are Eclipse projects like 'Mbo' or 'Web' some others are just directories with documents.

  3. Bruno, what a great post!
    I suggest to setup a versioning system even in case of a one-member team, at least for the code. Capabilities like searching, switching between different revisions, reverting changes, or just having the history of changes beside their aims, are a time-saver for developers.

    1. Giuseppe,
      I agree with your point. Geeks like you can :-) take advantage of versioning systems even if playing in a one-man-band.
      Keep in mind that Eclipse is also automatically keeping track of file changes and allows to go back to previous versions of the source files. All you have to do is right-click and select Replace with > Local History...

  4. Hi Bruno,
    I was looking for some best practices to maintain and manage Maximo application related customization and Configurations. For example if a customer is having single instance of Maximo and multiple departments are using the same environment for their business needs. Lets say tomorrow a new business unit in being brought into Maximo and they have their own set of requirements. How do we manage this. Are there any best practices which tells to clone or add additional fields based on some standard criteria.

  5. How we can use some vcs for MM packages which contains some XML linked with manifest? Any ideas?