Hi Team,I am fairly new to Maximo and not that familiar with it. We use it in our enterprise and what the team does right now is to login to the maximo console and then manually create packages and then manually promote them from one environment to another. I am trying to figure out how to automate these manual steps using something like CICD in jenkins. I came across few posts on the internet that talk about the powerful JSON APIs/REST APIs in maximo which could be used to invoke the script that you create in maximo.
My question is since i have no familiarity with the tool, on how to generate a script that does as mentioned above. If i can have a script that does that, i should be able to create a script in jenkins that can potentially trigger execution of the automation script from outside of the system (since i will be executing that in CICD tool jenkins) with an HTTP request. That way the script will make a API call to the maximo migration manager and do its job of creating packages and then promoting them from an environment to another.
Any suggestions here will be greatly appreciated!
Exposing Migration Manager through the REST API is something IBM has looked at doing but hasn't implemented yet. Developing a custom solution around this would be pretty involved to do and could be short lived if IBM built it into the REST API natively. There's so much functionality in migration manager, such as utilizing collections to retrieve related records to build a package, performing a comparison job to generate a package, utilizing change tracking in the source system to generate a package, etc. Even if you ignored the creation and focused purely on deployment you would have to typically put the system into admin mode (which may or may not have issues itself that you have to monitor for) and handle any errors that occur which sometimes requires you to actually edit the package itself and telling it to continue.If you wanted to do something in the near term I would identify your common scenarios and look at building/implementing a migration manager alternative for those. As an example, if you primarily want it to migrate schema changes or screen changes there is the concept of DBC & MXS files that works really well to handle those. These are easy to have just the delta as well which is more difficult in migration manager. For example, just the attribute you added to WORKORDER or just the one screen change you made to WOTRACK instead of the entire WOTRACK XML. Especially if your source environment could be outdated from your target, this helps avoid your change deleting someone else's change.You'd have to take the system down (instead of just putting it in admin mode) but this is how IBM migrates their changes on releases. And if you defined your customizations as a product and then evolve it over time, the updatedb process will intelligently track where it left off and run only the new scripts. And running it is easy as you either call runscriptfile if running it manually or just call the standard updatedb process if you defined it as a product. Some information on DBC files can be found here: https://developer.ibm.com/static/site-id/155/maximodev/dbcguide/ & documentation around mxdiff (which allows you to generate screen differences easily) can be found here: https://developer.ibm.com/static/site-id/155/maximodev/toolsguide/TOOLS.htmlIf you didn't want to utilize DBC files or need to migrate other things such as automation scripts you could come up with object structures that you could call via the REST API. The one thing that I wouldn't recommend doing outside of migration manager is migrating a workflow. Migration manager works really well for that and there are so many components that can make up a workflow that you want to ensure it gets migrated properly.
The Maximo deployments use the Migration Manager application internally from within the Maximo environment. This is a structured way of packaging the changes that need to be deployed to other environments.
Creating a package in the Migration Manager involves a set of logical steps. There are various Maximo object structures that are defined and used to create the packages, based on the type of changes being deployed.Under source environment :- Collect->Define->Create->DistributeUnder Target environment :- Preview->DeployOnce the package is created in the source environment, it can be downloaded to save in the local file structure. Then the package can be uploaded to a target environment (UAT / PROD) and can be deployed there.So based on your suggestions, even if we were to just focus on deployment part for now, the idea would be to have the packages created manually in migration manager and moved to source control like GitHub (that's what we use here), and then figure out a way to just upload those packages to the environment as needed via a CICD pipeline. But then how do you do it from outside the tool if migration manager doesn't have REST API? Or what could be the alternatives here to meet this automation.
Also, i will check with the team and see what are the common scenarios where the manual steps are tedious for them for which the are looking for some sort of automation to perform the same set of steps without any manual interaction.
Thanks Biplab for the response. Really appreciate it!As i said i have hardly any familiarity with the MAXIMO tool and just trying to help the MAXIMO team with any sort of automation that can be done out of the box to help with package creation and deployments of those packages to the target environments in migration manager.From a custom java solution that you mentioned, is there any docs or links you could provide that might be helpful. I see the below that talks about the psdi.dm Java packagehttps://developer.ibm.com/static/site-id/155/maximodev/7609/maximocore/businessobjects/psdi/dm/DMPackageDef.html
What would be those specific methods that can be called for upload and deployment within migration manager? Also how would it be possible for an external tool like jenkins to interact with MAXIMO to upload the packages and deploy them to target environments without migration manager REST API? Or is it like just directly making a call to MAXIMO for authentication which is possible via the native REST API in MAXIMO and then call these java methods for upload and deployments within migration manager
Thanks Biplab. Appreciate all the assistance so far on this.I just had a few questions before i discuss your suggested approach with the MAXIMO team.Are you saying to copy the necessary jars for MAXIMO (most importantly businessobjects.jar) from its application server to some source control repository, then create an application that uses those jars to create Valid maximo Connection session and in doing so end up creating some standalone jar that can be run through jenkins with a simple
java -jar my-jar-filealong with some arguments may be to provide the package name for upload, target environment to deploy, etc.
If you could provide some more explanation to your suggested approach may be the sequence of steps, that would be very helpful.