Maximo Open Forum

 View Only

 Maximo System Properties: file vs. instance explaination

Jump to  Best Answer
  • Administration
Jared Schrag's profile image
Jared Schrag posted 08-16-2024 17:26

Imagine an installation where we have three Maximo application servers (A, B, C). We have 4 JVMs configured on A (JVMs are A1, A2, A3, A4), 4 JVMS configured on B(JVMs are B1, B2, B3, B4), and 2 JVMs configured on C (JVMs are C1, C2). The A and B JVMs are user-facing and the C1 JVM handles all of the inbound MIF integrations, but we intend not to run any ESCALATION instances on the C1 JVM. On the C2 JVM, there is exactly one ESCALATION I'd like to execute (call it E1) - in fact, I'm trying to get that specific ESCALATION (E1) to execute only on the C2 JVM and not run on any other JVM.

For the A JVMs and the B JVMs, this seems simple enough. In the maximo.properties file deployed in the MAXIMO.EAR on each of thes application servers, I can define the system property:

mxe.crontask.donotrun=ESCALATION.ESC1

However, it is not so simple for the C application server. On the C JVMs, we don't want any ESCALATION instances to execute, except for on the C2 JVM, where we only want the ESCALATION.ESCE1 instance to run. I've tried to remove "ESCALATION" from the donotrun list in the maximo.properties file in the MAXIMO.EAR file deployed on C, and then I added Instance level System Properties for the C1 and C2 JVMs:

  • For C1, the Instance level mxe.crontask.donotrun property value is "ESCALATION" (so that it doesn't run any ESCALATION instances)
  • For C2, the Instance level mxe.crontask.dorun property value is "ESCALATION.ESCE1"

I'm not quite sure how to prevent all other ESCALATION instances from executing on the C2 JVM, but if they did, it wouldn't be a deal-breaker.

With this configuration, even though we have an instance level mxe.crontask.donotrun property that includes "ESCALATION" we are finding that all of the escalation instances still execute on C1.

The articles I find from IBM and other sources are not very helpful in explaining all of these possible configurations for the mxe.crontask.donotrun System Property. Can anybody give me a better explaination on how to achive our goal as I've described above?

Jared Schrag's profile image
Jared Schrag  Best Answer

Perhaps the IBM documentation contains this information and I just missed it; however, it appears that if a System Property is specified in the deployed maximo.properties file, then the System Property cannot be overridden at runtime by an Instance level property value. If there is a Server (JVM) on which I'd like to specify an override, instance property value, then the deployed maximo.properties file should not have the property set at all, and then Instance level System Property values should be defined for the servers (JVMs) on that host (where the property is not in the deployed maximo.properties file).

Steven Shull's profile image
Steven Shull

I typically prefer utilizing cron task dorun over donotrun unless we're setting it to ALL for donotrun. I assume there are some cron tasks you want to run on C1 which is why you set the donotrun to ESCALATION. But normally what you should be doing is telling Maximo what it SHOULD run on C1. Unless it's the majority of the cron tasks with a few exceptions.

Regardless, what you're saying you have configured sounds like it should work. One common issue with instance level properties is not restarting the system and not logging into the individual JVM to reload the property. When you reload a system property, it works for global values but doesn't pick up the instance level values except for the JVM that you're logged into. Normally when I add these instance level properties, I restart the system to ensure the cron tasks stop running on that JVM and the JVM has the proper value for the property. If you're able to restart the system I would do that. Otherwise, I would login to the specific JVM and try to reload the donotrun system property. 

Jared Schrag's profile image
Jared Schrag

@Steven Shull,

Thank you for your answer. All of the JVMs have been restarted since I made the System Property changes. Since then, I have logged into each individual JVM, navigated to the System Properties application, and performed a Live Refresh on the mxe.crontask.donotrun and mxe.crontask.dorun System Properties. To my grand surprise, I find that no Escalation executes on the C2 JVM and all Escalations run on the C1 JVM, even though there is an instance level mxe.crontask.donotrun system property for C1 with  "ESCALATION" as the value.

I am quite thouroughly perplexed. It seems like the base code does not combine file-based System Property values (found in the maximo.properties file) in any way with the instance level System Property values.