Maximo Open Forum

 View Only

 Why is SKIP_TRANSACTION Happening using MICService.exportData()?

Jump to  Best Answer
  • Administration
  • Customizations
  • Integrations
  • Maximo Application Suite
Jared Schrag's profile image
Jared Schrag posted 02-04-2026 10:29

We are on MAS 9.1.5 and we have an Escalation that will execute an Automation Script to use the MicService exportData function to publish outbound records on targeted Publish Channels. I am seeing cases where the outbound publish transaction is skipped (even though there are no Publish Channel Rules or processing configured to SKIP_TRANSACTION. This seems arbitrarily happening, some records work and others skip, but is also repeatable, so I'm quite confused. Would anyone have an idea what I should look at next to troubleshoot?

Here is a screenshot of the Publish Channel configuration (note no processing classes are configured and there are no Processing Rules configured for any of the objects in the Object Structure):

Here is an excerpt of the Automation Script:

from psdi.server import MXServer

now = mxs.getDate()
ifaceName = mbo.getString("IFACENAME")
extSysName = mbo.getString("EXTSYSNAME")
targMboName = mbo.getString("OWNERTABLE")
targMboID = mbo.getLong("OWNERID")
pubAfterDate = mbo.getDate("PUBLISHAFTERDATE")
exportWhere = "%s = %d" % (
    mxs.getMaximoDD().getMboSetInfo(targMboName).getUniqueIDName(),
    targMboID,
)

loggerKey = "maximo.script.%s" % (scriptName)

logger = Log(loggerKey)

logger.debug(
    "Processing %s: OWNERTABLE=[%s], OWNERID=[%d], EXTSYSNAME=[%s], IFACENAME=[%s], PUBLISHAFTERDATE=[%s], now=[%s]..."
    % (
        mboname,
        targMboName,
        targMboID,
        extSysName,
        ifaceName,
        pubAfterDate,
        now,
    )
)

# Publish targeted MBO to outbound
logger.debug(
    "Exporting data for Publish Channel: ifaceName=[%s], extSysName=[%s], exportWhere=[%s]..."
    % (ifaceName, extSysName, exportWhere)
)

if now.equals(pubAfterDate) or now.after(pubAfterDate):
    logger.debug(
        "Current date is on or after PUBLISHAFTERDATE, proceeding with data export..."
    )
    mxs.lookup("MIC").exportData(ifaceName, extSysName, exportWhere, sui, 10)
else:
    logger.debug("Current date is before PUBLISHAFTERDATE, skipping data export...")

# end of script code

We have the logger set to DEBUG level and here is an excerpt from our DEBUG log (note the "iface#SKIP_TRANSACTION" toward the end):

04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting pubAfterDate
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting now
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] CTX37128:        Processing K_TRIGGER_IFACEOUT: OWNERTABLE=[WORKORDER], OWNERID=[4240854], EXTSYSNAME=[KAESExtSysAWS], IFACENAME=[KAESWOXML], PUBLISHAFTERDATE=[2026-02-04 08:08:38.597], now=[Wed Feb 04 08:10:53 CST 2026]...
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting logger
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting ifaceName
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting extSysName
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting exportWhere
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] CTX37128:        Exporting data for Publish Channel: ifaceName=[KAESWOXML], extSysName=[KAESExtSysAWS], exportWhere=[WORKORDERID = 4240854]...
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting now
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting pubAfterDate
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting now
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting pubAfterDate
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting logger
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] CTX37128:        Current date is on or after PUBLISHAFTERDATE, proceeding with data export...
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting mxs
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting ifaceName
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting extSysName
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting exportWhere
04 Feb 2026 08:10:53:822 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] getting sui
04 Feb 2026 08:10:53:838 [INFO] [MAXIMOCRON] [CID-CRON-52446] Correlated data: BEGIN InstanceName:ESCPRJ ISCHARGEABLE TaskName:ESCALATION Activity:ACTION ElapsedTime:104 ms  END
04 Feb 2026 08:10:53:898 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] will serialize 0 to 1
04 Feb 2026 08:10:53:898 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] rsCount1====0
04 Feb 2026 08:10:54:194 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] rsCount2====0
04 Feb 2026 08:10:54:194 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] Leaving create
04 Feb 2026 08:10:54:194 [INFO] [MAXIMOCRON] [CID-CRON-52445] iface#SKIP_TRANSACTION
04 Feb 2026 08:10:54:202 [DEBUG] [MAXIMOCRON] [CID-CRON-52445] execution completed for cached compiled script K_TRIGGER_IFACEOUT for launch point ONACT
Steven Shull's profile image
Steven Shull  Best Answer

You want to look at your object structure classes and automation scripts in addition to the publish channel. You are allowed to skip the transaction at the object structure level and that's actually the most efficient place to skip it because it's before it has been serialized.

Jared Schrag's profile image
Jared Schrag

@Steven Shull That is exactly what my issue was. On the Object Structure, there is an automation script for outbound processing that implements the skipMbo function with logic that was at play in my case. I should have looked there first before posting!

Thanks!

mark robbins's profile image
mark robbins

Glad that you got it fixed.

Another thing to consider was setting the autoscript logger to INFO - That should have written a log message when the object structure level automation script fired...

that would also have helped you investigate the problem