major-ai-skills
Version:
Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.
135 lines (106 loc) • 8.56 kB
Markdown
name: ibm-maximo
description: "Automate IBM Maximo asset workflows with MBO Jython scripts, OSLC REST interfaces, and MIF integrations."
category: enterprise
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["ibm-maximo", "maximo-application-suite", "eam", "mbo-scripting", "jython", "mif-integration", "claude"]
tools: ["claude", "cursor", "gemini", "codex"]
# IBM Maximo Enterprise Asset Management AI Skill Guide (Claude)
## Overview & Engine Architecture
IBM Maximo Asset Management (and Maximo Application Suite / MAS) is the world's leading enterprise asset management (EAM) platform, powering physical asset tracking, work order lifecycles, preventive maintenance (PM), supply chain inventory, and service contracts across global infrastructure. Maximo runs on a multi-tier Java enterprise runtime (WebSphere / Open Liberty / Red Hat OpenShift), utilizing the **Maximo Business Object (MBO) Component Framework**, the **Maximo Integration Framework (MIF)**, and embedded **Jython / JavaScript Automation Scripting**. Claude operates as an Enterprise Maximo Solution Architect and SRE, specializing in **MBO / MboSet Jython script development**, **OSLC / REST API integration**, **MIF JMS queue troubleshooting**, and **zero-downtime database configuration (`configdb`)**.
### IBM Maximo Multi-Tier Architecture & MBO Hierarchy
```
┌─────────────────────────────────────────────────────────────┐
│ IBM Maximo EAM Architecture │
│ │
│ Presentation & Integration Layer │
│ ├── Maximo Web UI & Mobile Work Execution (Maximo Mobile) │
│ ├── Maximo Integration Framework (MIF - REST/OSLC/JMS) │
│ └── Object Structures (MXWO, MXASSET, MXPERSON) │
│ │
│ Business Logic & MBO Layer │
│ ├── Maximo Business Objects (`Mbo`, `MboSet`, `MboValue`) │
│ ├── Jython / JavaScript Automation Scripting Engine │
│ └── Escalation & Cron Task Manager (Thread Pool Scheduler) │
│ │
│ Data & Schema Layer │
│ ├── Enterprise RDBMS (Oracle Database, IBM Db2, MS SQL) │
│ └── Live Database Configuration (`configdb.bat` / `updatedb`)│
└─────────────────────────────────────────────────────────────┘
```
## Operational Capabilities & Agent Directives
1. **Jython Automation Script Development**: Author robust, transactional Jython scripts implementing Attribute (`Validate`, `Init`), Object (`Save`, `Action`), and Integration Launch Points using the `mbo` and `mboSet` APIs.
2. **REST / OSLC API Integration**: Construct authenticated HTTP REST / NextGen OSLC API payloads (`/maxrest/oslc/os/mxwo`, `/maximo/oslc/os/mxasset`) with lean JSON projection queries (`oslc.select`, `oslc.where`).
3. **MIF & Queue Bottleneck Remediation**: Diagnose stalled JMS sequential/continuous queues (`sqin`, `sqout`, `cqin`), error queue reprocessing (`mifevents`), and WebSphere message engine locks.
4. **Database Configuration & Schema Deployment**: Script `configdb.bat` and `updatedb.bat` routines safely, analyzing table spaces, foreign key constraint violations, and index fragmentation.
## Production Jython Automation: Work Order Status & Safety Plan Validator
Save this script as an **Object Launch Point** on the `WORKORDER` object before Save:
```python
# ------------------------------------------------------------------------------
# Maximo Automation Script (Jython): Work Order Safety Plan & GL Account Enforcer
# Launch Point: Object Launch Point (WORKORDER) -> Event: Save -> Before Save
# ------------------------------------------------------------------------------
from psdi.server import MXServer
from psdi.mbo import MboConstants
# Only validate when moving to Approved (APPR) status
current_status = mbo.getString("STATUS")
is_status_changed = mbo.isModified("STATUS")
if is_status_changed and current_status == "APPR":
asset_num = mbo.getString("ASSETNUM")
site_id = mbo.getString("SITEID")
if asset_num:
# 1. Fetch Related Asset MBO
asset_set = mbo.getMboSet("ASSET")
asset_mbo = asset_set.getMbo(0)
if asset_mbo:
is_critical = asset_mbo.getBoolean("ISCRITICAL")
has_safety_plan = not mbo.isNull("SAFETYPLANID")
# Enforce Safety Plan on Critical Assets
if is_critical and not has_safety_plan:
# Throw User-Friendly Maximo Error
params = [asset_num, mbo.getString("WONUM")]
# Group: workorder, Key: safetyplan_required
service.error("workorder", "safetyplan_required", params)
# 2. Auto-Populate Default GL Account if Empty
if mbo.isNull("GLACCOUNT"):
location_set = mbo.getMboSet("LOCATION")
location_mbo = location_set.getMbo(0)
if location_mbo and not location_mbo.isNull("GLACCOUNT"):
default_gl = location_mbo.getString("GLACCOUNT")
mbo.setValue("GLACCOUNT", default_gl, MboConstants.NOACCESSCHECK)
service.log("Auto-populated GL Account from Location: " + default_gl)
```
---
## Technical Troubleshooting Matrix
| Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **Escalation Cron Task Fails to Fire After Restart** | Cron task thread pool locked in JVM or instance marked inactive in `CRONTASKINSTANCE` table. | 1. Navigate to *System Configuration $\rightarrow$ Cron Task Setup $\rightarrow$ ESCALATION*.<br>2. Verify `Active` checkbox is checked and schedule is valid (e.g., `10m`).<br>3. In Action Menu, select **Reload Request**.<br>4. Check `crontask.log` for thread timeout deadlocks. |
| **Jython Script Error: `MboException: Cannot find attribute XYZ`** | Custom field was added in Database Configuration without applying structural database changes. | 1. Verify attribute name is uppercase in Jython: `mbo.getString("CUSTOM_ATTR")`.<br>2. Run *Database Configuration $\rightarrow$ Apply Configuration Changes* (`configdb.bat`). |
| **MIF Messages Stuck in Inbound Sequential Queue (`SQIN`)** | A single malformed XML/JSON payload failed validation, blocking all subsequent sequential queue records. | 1. Navigate to *Integration $\rightarrow$ Message Reprocessing*.<br>2. Search for the error record with status `HOLD` or `ERROR`.<br>3. Inspect the error trace, correct the payload data, and click **Process**. |
| **`configdb.bat` Fails with Table Lock Error** | Active user sessions or background cron task threads held open transactions against target tables. | 1. Put Maximo into **Admin Mode** (*System Configuration $\rightarrow$ Admin Mode ON*).<br>2. Terminate all client connections.<br>3. Execute `configdb.bat` from `C:\IBM\SMP\maximo\tools\maximo\`. |
## Command Line Syntax & Server Administration
```bash
# 1. Apply Schema Changes Offline (Maximo Tools Directory)
cd C:\IBM\SMP\maximo\tools\maximo
configdb.bat
# 2. Rebuild and Deploy Maximo Enterprise Application Archive (EAR)
buildmaximoear.bat
# 3. Query Active Work Orders via OSLC REST API (cURL)
curl -X GET "https://maximo.enterprise.io/maximo/oslc/os/mxwo?oslc.select=wonum,description,status,assetnum&oslc.where=status=\"APPR\"" \
-H "apikey: your-maximo-api-key" \
-H "Content-Type: application/json"
```
### Essential File Locations
- **Master Properties**: `C:\IBM\SMP\maximo\applications\maximo\properties\maximo.properties`
- **Logging Config**: `C:\IBM\SMP\maximo\tools\maximo\log4j2.xml`
- **WebSphere Profile**: `C:\IBM\WebSphere\AppServer\profiles\ctgAppSrv01\`
## Agent Operational Directive
> **MANDATORY**: Before running structural database updates via `configdb.bat`, always place Maximo into Admin Mode (`AdminMode ON`). In Jython scripts, use `MboConstants.NOACCESSCHECK` only when setting system-derived fields to prevent privilege escalation.