Dates are the backbone of the maintenance cycle in IBM Maximo: they drive Work Order (WO) generation, planning, compliance, and KPI tracking.
Between Preventive Maintenance (PM), Work Orders, Job Plans, and status changes, their logic is often misunderstood.
This article details the key date fields involved in the PM โ WO lifecycle, their visibility in the user interface (UI), and the main differences between Maximo 7.6 and MAS 9 (Maximo Manage).
๐ MAS 9 :
- The PMWoGen engine is now a containerized microservice (PM Engine).
- The new React-based UI provides dynamic preview of due dates.
- Automation Scripts are managed directly in Manage UI, with Python 3 + Event Actions support and no EAR deployment required.
1. Types of Maintenance and Date Logic
| Type | Trigger | Date Management | Example | 
| Preventive (PM) | Time / Meter / Condition | Automatic via PMWoGen | Monthly inspection | 
| Corrective | Breakdown / User request | Manual date entry | Motor replacement | 
| Condition-based | Threshold or sensor event | Based on meter readings or scripts | Temperature > 80 ยฐC | 
๐ MAS 9:
- Integrated with IoT Predict (event-stream-based).
- Can be linked to Watsonx AI Rules for intelligent triggering.
2. PM Module Date Attributes
| Attribute | Role in the Maintenance Cycle | Visible in UI | Label (FR / EN) | 
| STARTDATE | First planned start date | Yes | Date de dรฉbut / Start Date | 
| NEXTDUEDATE (NEXTDATE) | Next planned due date | Yes | Prochaine รฉchรฉance / Next Due Date | 
| LASTSTARTDATE | Date of the last generated WO | Yes (History tab) | Derniรจre gรฉnรฉration / Last Start Date | 
| LASTCOMPDATE | Completion date of the last executed WO | Yes | Derniรจre exรฉcution terminรฉe / Last Completion Date | 
| FREQUENCY | Interval between two generations | Yes | Frรฉquence / Frequency | 
| LEADTIME | Number of days before due date to generate WO | Yes | Dรฉlai d'anticipation / Lead Time | 
| USETARGETDATE | Defines fixed (Yes) or floating (No) scheduling | Yes (checkbox) | Utiliser la date cible / Use Target Date | 
| LASTFORECASTDATE | Last forecasted generation date | Yes (Forecast tab) | Derniรจre prรฉvision / Last Forecast Date | 
| PMNEXTDUEDATE (MAS 9) | Dynamically recalculated due date | Yes (Timeline) | Prochaine รฉchรฉance prรฉvue / Estimated Next Due Date | 
๐ก MAS 9:
- PMNEXTDUEDATE is updated automatically after WO closure.
- The calculation is performed by the PM Engine Service (REST) instead of the traditional Cron Task.
3. Work Order Module Date Attributes
| Attribute | Role in the Cycle | Visible in UI | Label (FR / EN) | 
| REPORTDATE | WO creation date | Yes | Date de crรฉation / Report Date | 
| SCHEDSTART | Planned start date | Yes | Dรฉbut planifiรฉ / Scheduled Start | 
| SCHEDFINISH | Planned finish date | Yes | Fin planifiรฉe / Scheduled Finish | 
| ACTSTART | Actual start of execution | Yes | Dรฉbut rรฉel / Actual Start | 
| ACTFINISH | Actual finish of execution | Yes | Fin rรฉelle / Actual Finish | 
| STATUSDATE | Last status change date | Yes | Date du statut / Status Date | 
| PMDUEDATE | PM due date copied at WO generation | Yes | รchรฉance PM / PM Due Date | 
| TARGSTARTDATE (TARGSTART) | SLA target start | Yes | Dรฉbut cible / Target Start Date | 
| TARGCOMPDATE (TARGCOMP) | SLA target completion | Yes | Fin cible / Target Completion Date | 
| FAILDATE | Reported failure date | Yes(Failure Reporting module) | Date de panne / Failure Date | 
| CHANGEDATE | Last update to the WO record | No (technical) | Date de modification / Change Date | 
๐งญ Key takeaway:
- ACTSTART, ACTFINISH, and STATUSDATE close the PM โ WO feedback loop.
- PMDUEDATE records the original PM due date when the WO was created.
4. Date Calculation Logic in PM
โฑ๏ธ Time-based Scheduling
| Mode | USETARGETDATE | Logic | Result | 
| Fixed | Yes | NEXTDUEDATE = STARTDATE + n ร FREQUENCY | Schedule fixed to target date (non-shifting) | 
| Floating | No | NEXTDUEDATE = LASTCOMPDATE + FREQUENCY | Schedule shifts based on last completion | 
๐งฎ Formula:
Generation Date = NEXTDUEDATE - LEADTIME
๐ MAS 9:
- Option "Recalculate Next Due Automatically" available in UI.
- Calculations handled by PM Engine microservice (REST).
โ๏ธ Meter-based Scheduling
- Generation is triggered when the meter threshold is reached.
- The MEASUREDATE becomes the base for the WO REPORTDATE.
๐ MAS 9:
- Managed by Meter Events Service (Kafka / MQTT).
- Native IoT and predictive analytics support.
๐ Condition-based Scheduling
- Triggered by Condition Monitoring or Automation Scripts.
- ACTSTART is initialized with the event date.
๐ MAS 9:
- Configurable in Monitor Events UI.
- Can trigger Automation Policies or Event Actions.
5. Status Lifecycle and PM โ WO Feedback
5.1 Standard Statuses
| Status | Description | Key Date | Impact on PM | 
| WAPPR | Waiting for Approval | REPORTDATE / STATUSDATE | None | 
| APPR | Approved | STATUSDATE | None | 
| INPRG | In Progress | ACTSTART / STATUSDATE | Marks real start | 
| COMP | Completed (not closed) | ACTFINISH / STATUSDATE | Prepares PM update | 
| CLOSE | Closed | ACTFINISH / STATUSDATE | Updates LASTCOMPDATE | 
| CAN | Canceled | STATUSDATE | No impact | 
๐ MAS 9:
- Workflow transitions managed via Workflow Designer Web.
- Date fields automatically updated by Work Execution API.
5.2 PM โ WO Feedback Loop
- PM calculates NEXTDUEDATE
- PMWoGen Cron Task generates WO
- WO progresses: WAPPR โ APPR โ INPRG โ COMP โ CLOSE
- Closing the WO updates LASTCOMPDATE = ACTFINISH
- PM recalculates NEXTDUEDATE based on FREQUENCY and USETARGETDATE
๐ Simplified Flow:
[PM: NEXTDUEDATE]
   โ
[WO: WAPPR โ APPR โ INPRG โ COMP โ CLOSE]
   โ
[PM: LASTCOMPDATE = ACTFINISH]
   โ
[PM: NEXTDUEDATE recalculated โ New WO]
๐ Default MAS 9 Behavior:
PMWoGenCronTask remains the default execution mechanism.
Event listeners in MAS 9 are optional, enabling real-time updates without waiting for the Cron Task - only if custom event configuration is implemented.
6. Practical Use Cases
| Case | Description | MAS 9 Behavior | 
| Delayed Monthly PM | WO closed after the planned date | Immediate recalculation via PM Engine | 
| Condition-based PM | Triggered by IoT meter | Native MQTT / Watsonx Edge support | 
| Unclosed WO | LASTCOMPDATE not updated | Use Automation Policy "On WO Close" | 
7. Best Practices
- Always close Work Orders (CLOSE) to ensure PM updates.
- Verify coherence between FREQUENCY and LEADTIME.
- Automate updates via script:
- if mbo.getString("STATUS") == "CLOSE":
   pmSet = MXServer.getMXServer().getMboSet("PM", mbo.getUserInfo())
    # update LASTCOMPDATE
- Use accurate Job Plans for reliable scheduling (SCHEDSTART / SCHEDFINISH).
๐ MAS 9:
- Both Jython and Python 3 scripts are supported.
- Automation Policies allow low-code event-based automation.
8. Useful Queries
SELECT p.pmnum, w.wonum, w.status, w.statusdate, w.actstart, w.actfinish,
       p.nextduedate, p.lastcompdate
FROM workorder w
JOIN pm p ON w.pmnum = p.pmnum
WHERE w.origrecordclass = 'PM';
๐ MAS 9 REST Equivalent:
/oslc/os/mxpm?oslc.select=pmnum,nextduedate,lastcompdate&lean=1
Conclusion
Consistency between PM and Work Order date fields ensures reliable scheduling and effective preventive maintenance.
In Maximo 7.6, logic relies on Cron Tasks and local scripts.
In MAS 9, the same functional logic is enhanced through an event-driven microservice architecture, enabling faster and more reliable updates.
โ
 MAS 9 modernizes without changing the core:
same functional model, improved reliability, and near real-time updates.
PMWoGenCronTask remains the process backbone, while event listeners provide optional real-time responsiveness for advanced environments.
------------------------------
Mahdi Salah
Senior Consultant IBM Maximo & MAS 9
SINORFI
TUNISIE
------------------------------