Maximo Open Forum

 View Only
  • 1.  Maximo Archiving Benefits

    Posted 09-19-2025 14:15

    We have proposed to our leadership that we need to Archive our old records, they have never been done before, so there are millions of them. Their first question is what do we gain from archiving?  I intuitively know that removing the old workorders and attachments will speed up the system, and reduce storage costs, but how do you quantify that? I need help with the justification, so I thought perhaps one or more of you have experience with doing this.


    #Administration
    #EverythingMaximo
    #MaximoApplicationSuite
    #WorkManagement

    ------------------------------
    David Pattengale
    Amentum
    ------------------------------


  • 2.  RE: Maximo Archiving Benefits

    Posted 09-22-2025 14:41

    This is always difficult without understanding the current and desired state from a performance perspective. For example, if it takes 1 second on average to return the list page in WOTRACK, is getting it down to 750 ms worth the cost of archiving? Probably not. If it's taking an average of 10 seconds and you can get it down to 2 seconds? That's a significant amount of time savings for your users over the course of a year. 

    And that doesn't mean you couldn't improve performance in other ways too by adjusting queries (avoiding things like location like '%ABC%' or upper(assettag)='ABC' which can't take advantage of indexes), creating/rebuilding indexes (indexes when fragmented might go unused by the database platform), updating statistics (knowing that a table has 10 million records for example may adjust how the database platform retrieves records), adding server resources, etc.

    Before going through archiving, it would be best to understand some problematic queries that are executed frequently in your system. Review them to see what (if anything) can be done to improve performance of those queries without archiving. Then in a lower environment (ideally one that mimics production from a resource perspective), test before & after removal of records in the related table (WORKORDER for example) after rebuilding indexes & updating statistics and see the performance difference. 

    It's best if you have a way to capture this outside of Maximo logs (such as some sort of database monitoring solution) but if you need to look at the logs, search for BMXAA6720W. It will show you queries that exceeded the time specified in the mxe.db.logSQLTimeLimit system property when your root logger is WARN/INFO (by default it is INFO). These tend to be the queries to focus on. 



    ------------------------------
    Steven Shull
    Naviam
    ------------------------------



  • 3.  RE: Maximo Archiving Benefits

    Posted 09-22-2025 19:04

    I agree with Steven. If indexes are properly maintained, system performance should not be affected by large volumes of data. However, data archiving introduces a new set of challenges. One clear benefit I see is the reduction in time required to perform a full backup. In some large systems, a database backup can take more than an hour, which extends the downtime window during deployments.



    ------------------------------
    Viet Tran
    Relia App Development & Consulting
    https://relia.app
    ------------------------------



  • 4.  RE: Maximo Archiving Benefits

    Posted 09-23-2025 04:10

    Hi,

    I've one thought that maybe someone answer is that if archiving has been done then what about the analytical aspects or AI which needs the data for predictions and finding patterns.

    Thanks,

    Shahid



    ------------------------------
    Shahid Saeed Khan
    Oman Airports Management Company
    ------------------------------



  • 5.  RE: Maximo Archiving Benefits

    Posted 09-23-2025 10:24

    "Their first question is what do we gain from archiving?  I intuitively know that removing the old workorders and attachments will speed up the system, and reduce storage costs, but how do you quantify that? I need help with the justification, so I thought perhaps one or more of you have experience with doing this."

    I have investigated performance problems where the database has struggled to cope with millions of old records so I do advocate archiving old records.

    Having said that there are factors to consider:

    • Archiving needs to be performed properly e.g. removing all the associated records - don't just delete records from WORKORDER, delete the associated records from WOSTATUS etc. Failing to delete the associated records will corrupt the data and could cause problems when upgrading the system in the future
    • Make sure that you use the correct rules to identify records to archive e.g. will you ever need to look at those old workorders within Maximo OR can they be archived to a read only database?
    • How will you use the archived data? Maximo's database structure is designed to help the Maximo code operate but that means that data is scattered over multiple tables - Consider consolidating those tables in the archive and using predefined reports to retrieve the data in a way that your users would want to see the data
    • Don't forget to index the archive tables - this is often forgotten and can cause serious performance issues
    • Will you need the data for other purposes e.g. AI related as Sahid says?

    There may be other improvements to speed up your system.

    • BMXAA6720W Slow SQL warnings - Steven mentioned these. These are enabled when you set the sql logger to WARN - I have blogged about these warnings here - http://www.linkedin.com/pulse/individual-bmxaa6720w-slow-sql-entries-maximo-logs-need-mark-robbins . These warnings won't capture SQL generated by BIRT reports- These are very useful but the logger can generate a lot of warnings - you may find it useful to get some help with this - see later
    • Avoiding WILDCARD search types - Steven mentioned the use of location LIKE '%ABC%' - this typically occus when an attribute's search type has been set to WILDCARD, there can be very significant benefits by switching those to EXACT and giving the users a little training - I have blogged about this here - http://www.linkedin.com/pulse/additional-information-maximos-wildcard-search-type-mark-robbins
    • Database health - DB2 and ORACLE have specific tools that can be used to monitor the database and tell you what is being executed - ORACLE Statspack/AWR reports are very useful - you may find it useful to get some help with this - see later
    • Ensure that you don't have database connections being leaked - set the dbconnection logger to INFO to get details of those - leaked connections will tie up database resources - I discuss the logger to provide details of these here - https://www.linkedin.com/pulse/monitoring-number-db-connections-maximo-uses-mark-robbins
    • Are people executing queries that will return too many rows? I have seen queries/reports being executed that return the whole of the WORKORDER table... This causes problems in two areas - the Database resources and the JVM's memory if too many records are being loaded. A JVM can become very sluggish / run out of memory / crash if too many records are loaded into its memory
    • Are there escalations that are running too frequently? These can cause serious problems for the database
    • Are people executing SQL on the backend database and causing problems?

    Getting additional help - the materials above are all free and should help you. If you do enable the loggers then consider reaching out to me for some paid consultancy. Cohesive have an automated log analyser that will read the various log entries and then produce summaries that will help you focus in on real problem areas.

    We have also delivered archiving solutions for our customers so we can help you understand the full implications / options.



    ------------------------------
    mark robbins
    Cohesive
    IBM Champion 2017-2024 Inclusive
    See my blog on Maximo support related topics here:
    https://www.linkedin.com/pulse/maximo-support-advice-from-non-ibm-engineer-article-mark-robbins/
    ------------------------------



  • 6.  RE: Maximo Archiving Benefits

    Posted 09-24-2025 09:12
    Edited by Sankar Ganesh V S 09-24-2025 09:23

    Hi David, 

    Data archiving will indeed improve performace; Especially in workorder, workflow transactions and Message Tracking. For example, if the inbound/outbound payload has attachments, then filtering record in Message tracking would be burdensome. 

    For Archiving, we can take full database backup, then delete old records. or Delete and insert the records to archive database using SQL job.

    In any case, 'how we filter' the records is crucial. Because workorders, workflow transactions etc. may have reference to other active records.

    Here are few suggestions to filter.

    Table Condition
    LOGINTRACKING attemptdate <'SpecificDate'
    WORKORDER historyflag=1 and reportdate<'SpecificDate'
    AUDITTABLES eaudittimestamp<'SpecificDate'

    Archiving WorkFlow transactions is tricky. We need to consider the order of deletion and related tables. Here's a script example (MS-SQL) to delete workflow tables such as WFCALLSTACK, WFASSIGNMENT etc.

    ---Clearing WorkFlow Transaction---
    declare @dateVar date;
    set @dateVar=(SELECT DATEADD(month, -60, GETDATE()));
    
    DELETE FROM [WFCALLSTACK]
    WHERE WFID IN (SELECT WT.WFID FROM WFTRANSACTION WT (nolock)
    JOIN [WFINSTANCE] WI (nolock) ON WT.WFID = WI.WFID 
    WHERE WI.ACTIVE = 0 AND WT.TRANSDATE <= @dateVar 
    AND WT.MEMO IS NULL
    );
    
    DELETE FROM [WFASSIGNMENT]
    WHERE WFID IN (SELECT WT.WFID FROM [WFTRANSACTION] WT
    JOIN [WFINSTANCE] WI ON WT.WFID = WI.WFID
    WHERE WI.ACTIVE = 0 AND WT.TRANSDATE <= @dateVar
    AND WT.MEMO IS NULL);
    
    
    DELETE FROM [WFINSTANCE] WHERE WFID IN (
    SELECT WFID FROM [WFTRANSACTION] (nolock) WHERE MEMO IS NULL
     AND TRANSDATE <= @dateVar)
    AND ACTIVE = 0;
    
    DELETE FROM [WFTRANSACTION] WHERE WFID NOT IN 
    (SELECT WFID FROM [WFINSTANCE] (nolock)
    WHERE ACTIVE = 1) AND TRANSDATE <= @dateVar
    AND MEMO IS NULL;

    Thanks!

    ------------------------------
    Sankar Ganesh V S
    DXC Technology
    ------------------------------



  • 7.  RE: Maximo Archiving Benefits

    Posted 09-24-2025 16:16

    There's always the option of table and/or index partitioning which is supported in SQL Server and Oracle. Not sure on DB2. The idea is to use fewer tables or indexes to get the accurate result you want. A partition strategy could be to split based on an indexed field like the workorderid. If you're scanning the last 3 years of work orders, why do you need to lookup the entire history? Steven could probably speak on the gotcha parts as we don't have an Oracle license for this, but it is something we've discussed as an alternative to archiving. The other idea is to have a mirrored database that you use for reporting so you distribute some of the load from production.



    ------------------------------
    sun kim
    ------------------------------



  • 8.  RE: Maximo Archiving Benefits

    Posted 09-24-2025 16:49

    Partitioning can be powerful but you need to consider the potential impact of using it.

    Previously ibm have not supported partitioning so changes to the database configuration revoked the partitioning. 

    It was a similar situation with function based indexes - I don't think that ibm have added support for these features yet. 



    ------------------------------
    mark robbins
    Cohesive
    IBM Champion 2017-2024 Inclusive
    See my blog on Maximo support related topics here:
    https://www.linkedin.com/pulse/maximo-support-advice-from-non-ibm-engineer-article-mark-robbins/
    ------------------------------