Question & Answer
The Maximo applications are an all-inclusive set of services by default. How can the mxe.crontask.donotrun System Property be used to isolate specific types of services such as UI, MEA, and cron tasks into specific servers or clusters.
A Cron Task is a scheduled task that runs as configured by the system administrator. Some of the services controlled by cron tasks include but are not limited to:
- Maximo Enterprise Adapter (MEA) or Integration Framework (MIF)
- Directory Server Synchronization with the Maximo Database (LDAPSYNC or VMMSYNC)
- Custom Cron Tasks
- Custom Escalations
- Email Processing
- Report Generation
By default all services that can be controlled by cron task processing are enabled and run in all Maximo JVM servers deployed as either stand alone or in a cluster. The DoNotRun property can be used to specify a specific cron or list of crons that should not run on a server.
JVM Naming should be configured to more easily control cron functionality. See the document Take Control of JVM Names for Instance, Cron and Log Names Using -Dmxe.nameTake Control of JVM Names for Instance, Cron and Log Names Using -Dmxe.name for more information on JVM naming.
When a cron task instance is due to run (determined in the CRONTASKINSTANCE table), all running and enabled Maximo servers will attempt to run the cron task. Only one server will ultimately be chosen to run the task. The cron task service will update the TASKSCHEDULER table with the last run information. From that time the last server that a cron task has run on (as determined by the TASKSCHEDULER table entry) will be chosen. If the server that last ran the cron task is not running, another running and enabled server will pick up the cron task using the same logical process as the first run of the cron task. The TASKSCHEDULER table is always updated with the last run information so the new server becomes the preferred server for the cron task.
Assuming the default configuration of all servers being enabled for all services, consider the cluster configuration below with four Maximo JVM servers. Also assume there are four (or more) cron tasks.
It is possible for each of the cron tasks to start on a different server but once it has run on that server, it will always run on that server unless the server stops running. In that case one of the other servers will begin running the cron task and that server will become the new preferred server for running that cron task.
If it is desirable to separate services such as MEA/MIF, VMMSYNC/LDAPSYNC, or other cron tasks, the mxe.crontask.donotrun System property can be used to determined servers where a cron task should not run. In the case above, assume that the JMS queue processes should run on some servers and the synchronization tasks should run on others.
Cron tasks are managed through the user interface in conjunction with Take Control of JVM Names for Instance, Cron and Log Names Using -Dmxe.name and Using System Instance Properties to Control Cron Tasks.
The maximo.properties file must be modified and two separate EAR files must be built. It is a best practice to create two clusters so that there is a failover server for all of the cron tasks.
1) Build a maximo.ear file with the following property in the maximo.properties file (NOTE: separate each cron with a comma and no spaces)
2) Build a maximo.ear file with the following property in the maximo.properties file
3) Deploy the first maximo.ear file to cluster 1 and the second maximo.ear file to cluster 2.
This configuration will start the LDAPSYNC cron tasks in the first cluster and no matter which server either of the crons starts on, if the server it runs on fails, the other server will pick it up and run it. The MEA crons will run in cluster 2 and the same features apply as those in cluster 1. Since cluster 2 is configured with the DoNotRun property for LDAPSYNC cron tasks, these crons will never run there even if there is a server or cluster failure in cluster 1. Since cluster 1 is configured with the DoNotRun property for the MEA cron tasks, these crons will never run there even if there is a server or cluster failure in cluster 2.
See also information on mxe.crontask.dorun.
17 June 2018