Maximo Scheduled Reports Stops Sending Out After Upgrade From 7.5 to 7.6

Sheyam Selvaraj
8 min readJun 9, 2020

This note comes from my recent upgrade of maximo 7.5 to 7.6.X. Little tricky issue and it took couple of days to drill down where exactly the problem is. This documentation would help maximo folks to get an idea from the check points mentioned here.

If you are in same kind of situation please go step by step to see if they are solving your report schedule issue.

Please do the following checks to identify potential causes of this problem:

1. Check if the Admin Mode is On in Database Configuration.

If Admin Mode is switched On, the crontasks for REPORTSCHEDULE jobs will not be running.

2. Check the CRONTASKHISTORY, TASKSCHEDULER and REPORTUSAGELOG tables to see if crontasks for REPORTSCHED jobs are initialized/activated/running without any error.

According to the data from the tables above, REPORTSCHEDULE jobs are running well if:

- The TASKSCHEDULER table’s LASTRUN date was updated as expected.

- the CRONTASKHISTORY table’s ACTIVITY data (ACTION) was updated as expected.

- the REPORTUSAGELOG table’s SUCCESS field was updated as expected.

3. Check if an email is sent out correctly in the Maximo application (by using the “Create Communication” option in any application, etc.).

If you get error “BMXAA0259E — The e-mail cannot be sent. IOException while sending message;

nested exception is: java.io.UnsupportedEncodingException: 0 “ .
Then check the system property mxe.email.charset in the System Properties application.
If mxe.email.charset=0, it fails because 0 is not a valid encoding code.
Please change its value to mxe.email.charset=’UTF-8' in order to fix the problem.

In my scenario this worked as expected and create communication email was sending out. So emails are configured correctly.

Lets move little focused towards the email specific troubleshooting.

Enable the system property as below to check whether we are getting any clues from emails getting fired

Property Name: mail.debug
Description: Java debug property
Global Value: true

Current Value: true

Maximo Default: It should be set to false when not in use.

After enabling this as well didnt helped with required information.

Checked C:\IBM\SMP\maximo\applications\maximo\maximouiweb\webmodule\WEB-INF\birt folder if there are some files from previous BIRT version.

files from 7.5 birt
files from 7.6 birt

There are certain jars which are helpful in extracting the pdf,excel and emailing out . If BIRT 3.7.1 and BIRT 4.3.1 files are coexisting in that folder, you then need to remove the BIRT 3.7.1 files.

Scheduled reports will be emailed out successfully after removing the BIRT 3.7.1 files, rebuilding/redeploying maximo.ear and restarting the Server.

In our case we didnt have them mixed up and 7.6.X jars were intact.

So there was a suspicion that if there are any office365 rules that are blocking only the attachments. Reached out to the infra team and it seems that there is no rules such to block. We were a cloud shop then during migration, reached the cloud provider to see if there were any outgoing connection during that scheduled report and during the create communication from the SR application. Yes got some clues. When scheduled reports were triggered no outbound mails went out of the server. Now the problem is clear within the maximo.

Changed the crontask logging to info and REPORTSCHEDULE to info

Found the below logs

[28/05/20 18:31:33:386 BST] 00000133 SystemOut O 28 May 2020 18:31:33:386 [ERROR] [MXUIy77hp56xaf80698] [] Email send fail exception occurred. Valid Unsent addresses: abc@example.com

com.sun.mail.smtp.SMTPSendFailedException: 554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message. 0.35250:02011A81, 1.36674:01000000, 1.61250:00000000, 1.45378:02000000, 1.44866:00000000, 1.36674:7A000000, 1.61250:00000000, 1.45378:05000000, 1.44866:00140000, 1.36674:0A000000, 1.61250:00000000, 1.45378:16000000, 1.44866:B11F0000, 1.36674:0E000000, 1.61250:00000000, 1.45378:CA1F0000, 1.44866:38040000, 16.55847:E2100000,

Here goes the catch need to look at the pattern:

O DEBUG SMTP: AUTH LOGIN succeeded
O DEBUG SMTP: use8bit false
O MAIL FROM:<maximoadmin@example.com>
O 250 2.1.0 Sender OK
O DEBUG SMTP: sendPartial set
O RCPT TO:<occ@example.com>
O 250 2.1.5 Recipient OK
O RCPT TO:<abc@example.com>
O 250 2.1.5 Recipient OK
O DEBUG SMTP: Verified Addresses
O DEBUG SMTP: BCA.HNK@example.com
O DEBUG SMTP: general.enquiries@example.com
O DATA
O 354 Start mail input; end with <CRLF>.<CRLF>
O Date: Thu, 28 May 2020 18:31:34 +0100 (BST)
O From: “Sona.Ram@example.com
O To: abc@example.com,
O Message-ID: <1339133468.8351.1590687095141@y77hp56xaf80698.A775
O Subject: Triage SAF Jobs
O MIME-Version: 1.0
O Content-Type: multipart/mixed;
O boundary=” — — =_Part_8350_-868244640.1590687095139"
O
O — — — =_Part_8350_-868244640.1590687095139
O Content-Type: text/html;charset=UTF-8;charset=UTF-8
O Content-Transfer-Encoding: 7bit
O
O
O — — — =_Part_8350_-868244640.1590687095139
O Content-Type: application/octet-stream;
O name=Jobs_28May2020_0631PM.xls

What we understand clearly is office365 states an error that SendAsDeniedException which is due to the OOB maximo functionality. As we all know how maximo behaves when we schedule a report. Its scheduled to run as the user who scheduled and email is sent out with their mail. So here when we see smtp user has a different mail configured and sendfrom user in report schedule is trying to pretend as different user and it fails.

This can be overcome by asking the office365 admins to allow alias to send mails from maximo. However in a security standpoint we will fail. To over come that we can do the below and fix the issue.

Lets first configure the signer certs for the websphere to ensure that communications not fail over SSL communications.

In order for WebSphere to make a proper SSL connection to Office 365, we need to import the Office 365 SSL certificate into WebSphere’s trust store. This will make the connection trusted from WebSphere’s perspective and allow the connection to happen. WebSphere will throw an error if it attempts to make a connection to an untrusted source.

  1. Log into the WebSphere Console as an administrative user.

2. Navigate to the Security > SSL certificate and key management screen.

ssl certificate management screen

3. Click on the Key stores and certificates link.

Utilize only cell default trust store

4. Click on the CellDefaultTrustStore link.

Import cert from port

5. Click on the Signer certificates link.

Import cert from port

6. Click on the Retrieve from port button.

7. Fill out the following required fields:

1.Host: outlook.office365.com
2. Port: 993
3. Alias: outlook.office365.com

8. Click the Retrieve signer information button.

9. Click the OK button.
10. Click the Save to master configuration link.

11. Once the node synchronization happens, log out of the WebSphere Console.
12. For this change to take effect, the IBM-related Windows Services will need to be restarted (all Node Agents, the Cell Manager, and the HTTP Server).

Maximo System Properties

The next step is to configure System Properties within Maximo.

  1. Log into Maximo as an administrative user.

2. Navigate to the System Configuration > Platform Configuration > System Properties application.

3. Set the mail.smtp.host property to smtp.office365.com
4. Set the mail.smtp.starttls.enable property to true
5. Set the mail.smtp.ssl.enable property to false if it is not already false (default is false)
6. Set the mxe.smtp.user property to the email address you wish all Maximo email notifications to come from (e.g. maximoadmin@example.com).
7. Set the mxe.smtp.password property to the Office 365 password for the above user. Please note that it’s also a good idea to check the Masked? checkbox for this property in order to keep the password value hidden in the Maximo user interface.
8. Click the New Row button to create a new System Property. Fill out the following fields:
1. Property Name: mail.smtp.port
2. Description: Port number that the SMTP mail server listens on

3. Global Value: 587

9. Click the Save button.
10. Check the box next to each of the properties above that you had to edit. Then in the Common Actions menu, click the Live Refresh button.
11. Click the OK button.

Maximo Communication Templates

Each of the Communication Templates in the system must now have the Send From email address set to the same email address that was used to populate the mxe.smtp.user System Property.

Select unique(sendfrom) from commtemplate;

Update commteplate set sendfrom=’maximoadmin@example.com’

So now we are sure that all properties are correctly set in maximo. Lets move to the scheduled reports.

Maximo Scheduled Reports

You may want to schedule reports to run from Maximo to be emailed to users or groups. Like all other email, the Send From address has to be the value that you configured in the mxe.smtp.user System Property. Unfortunately when Maximo schedules a report to be emailed, it uses the email address from the user that created the report schedule as the Send From address. This will cause most scheduled reports to fail.

The least intrusive solution that we have come up with is to create a user that has the same email address that was used to populate the mxe.smtp.user System Property, and then create an automation script to change the user at runtime of the scheduled report. This will allow the system to send scheduled reports via email. So lets change the maxadmin email as the one which has been set in the smtp user.

  1. Ensure that you have a user account that has the same email address that was used to populate the mxe.smtp.user System Property.
    2. Navigate to the System Configuration > Platform Configuration > Automation Scripts application.
    3. From the More Actions menu, choose the Create > Script with Object Launch Point option.
    4. In the ensuing dialog, Create Script with Object Launch Point: Step 1 of 3, fill out the following fields:
  2. Launch Point: REPORTRUNQUEUE_LP
    2. Description: Report Run Queue Launch Point
    3. Object: REPORTRUNQUEUE
    4. Active: Yes
    5. Events: Save
    6. Save: Add and Before Save (see screenshot)
    7. Script: New

5. Click the Next button.
6. In the next step, Create Script with Object Launch Point: Step 2 of 3, fill out the following fields:

1.Script: REPORTRUNQUEUE_SCRIPT
2. Description: Report Run Queue Script
3. Script Language: python

7. Click the Next button.
8. In the next step, Create Script with Object Launch Point: Step 3 of 3, fill out the following fields:
1. Source Code:
from psdi.mbo import MboConstants
mbo.setValue(“USERID”, “MAXADMIN”, MboConstants.NOACCESSCHECK)

Be sure to substitute the User ID of your user for the MAXADMIN text in the example above. Click the Create button and you’re set!

Now Bingo !! we all are set to send out email from maximo without any errors.

Hope this documentation helps someone who is running out in similar issues.

--

--