Import data with Maximo Integration Framework (MIF)

This entry is part 1 of 15 in the series Import Data with MIF

Did You Know...

As Maximo Experts, we have developed several add-on products for Maximo that mobilize the work force, simplifies assignments, provides ad-hoc reporting capabilities and facilitates the seamless integration of Service Requests into Maximo.

Check out our products by clicking on the following links: EZMaxMobileEZPLanner and EZInsight.

Find Out More

102 thoughts on “Import data with Maximo Integration Framework (MIF)

    1. @Praveen
      Writing a webservice is out of the scope of this blog, but I would image you could do something that would insert records into an interface table that would then import data into Maximo.

  1. On your external system, do you set anf of the End Point properties for the MXIFACETABLE? I.e. DRIVER, ISREMOTE, PASSWORD, URL, USERNAME.

    I have everything setup exactly as you described and the rows are just sitting in my IFACEASSET and MXIN_INTER_TRANS tables.

    1. No, I just left mine with the default values. The only end point that has a value is ISREMOTE which is set to 0. The rows in the MXIFACETABLE should NOT be deleted once the transaction has been completed. If the MXIN_INTER_TRANS transaction is still queued up, then it means that the CRON TASK is not picking it up. The transaction should be deleted once the CRON TASK finds it. Check to see if the CRON TASK is active and running. Also check if your JMS queues and buses are setup correctly and working. If you are running Maximo, check out this post. Make sure all of the “MEA MDB” sections are uncommented.

  2. Any tips on data import for Jobplans? We can import the base jobplan record just fine but have been unable to import Jobtasks. We have tried working with seperate interface objects for Jobplan and Jobtask, each only containing info of one table, and also creating one object which has Jobplan as parent and Jobtask as a child. Either way we have not been able to add records via Integration Framework. This was no problem using the GDL with Maximo 5.2, loading Jobplans in one load followed by Jobtasks.

  3. Hello,
    Can I write custom class to fill IFACE table? I have on line query view in SQL Server data base and I must data of this view somehow insert into IFACE table …

    1. Why do you need a custom class? Just import that data into the table however you wish. You can enter data with DTS (Data Transformation Services) or SQL Server Integration Services

  4. Thank you for your answer. I have all Maximo connected to Microsoft SQL Server DB. I want with MIF get data from table view in MS SQL server DB (this view is not part of Maximo System) and insert data in IFACE table and from this table with MIF in COMPANIES Maximo table (object). I want to do this automatically without my intervention to insert or get data (somehow with crontask).
    What is the procedure of this steps in MIF? Thank you in advance.

  5. Hi and thans for the tutorial it was very helpful.
    However i get a bit worried working on the back end of the database so i am wondering whether there is not a way of doing so at the front end.


    1. @Bernard, you shouldn’t have to worry too much about working on the back end of the database as long as you aren’t inserting, deleting or updating any of the MAXIMO tables. If you are only modifying the interface tables, then you are OK. Those interface tables can be deleted and recreated from the front end. So don’t touch any of the MAXIMO defined tables and you should be good to go.

  6. For the part where we insert into MXIN_INTER_TRANS:
    every asset needs to have unique TransID? or multiple assets have same Trans ID that are inserted at the same time(same transaction)? also TRANSSEQ # is it same for the same run.

    If I am importing 1,000,000 assets(has asset, assetspec, location spec, etc) at one time(done by sql script). All Assets have Same TransID # & Same TransSeq #?
    Everytime the Cron tasks runs and see update in the IFACE table TransSeq # gets changed, or TRANSID & TRANSEQ# both change?

    Also besides the Assets table IFACETPASSET tabe, I used Assets Object Structure only, not MXASSET that has multiple objects, I also created IFACETP* table for Locations, Assetspec, locationspec, assetancestor, assetspechistory, assetstatus, assettrans objects and are all part of one External System (EXTIMPORT).

    So for each the other tables TRANSID# is same or different.

    I need more clearification on how to use TRANSID# and TRANSSEQ #.

    Physical example: Asset1, location1, asset1spec, location1spec.
    when brought in to MXIN_INTER_TRANS all have the same TRANSID# and TRANSSEQ#?
    and how about asset2, asset3, location2, location3. etc

    Please help on this subject.
    Thank you.

    1. TRANSID and TRANSSEQ have nothing to do with the actual asset ID you are inserting. Those ID’s are used by MIF only. The TRANSID is the transaction ID that you specify when inserting into the MXIN_INTER_TRANS table. Then the TRANSSEQ is the sequence it uses to import the assets. For example, if you have a 1,000 assets to import, you can set the TRANSID for each record to 1 and set the TRANSSEQ value from 1 – 1,000 and non of those TRANSSEQ numbers should be repeated. Now when you insert a record into MX_INTER_TRANS, you specify the TRANSID as 1 and that tell MIF that you want to import all records that have a TRANSID of 1. It will then insert each record in the order you specify with the TRANSSEQ. The sequence is important if you are importing hierarchical assets. For example, if Asset1 is the parent of Asset2, the TRANSSEQ for the Asset1 should be set to a number lower than the one for the Asset2. Otherwise, the import will fail if you do it the other way around.

      Now in this same example, you can set the TRANSID for only half of the records to 1 and the other half to 2. So the first 500 records will have a TRANSID of 1 and the other half with have a TRANSID of 2. Each set will have it’s own TRANSSEQ. So, now you can insert a record into the MXIN_INTER_TRANS table and specify a TRANSID of 2 and that will ONLY grab the records that have that ID and run the import. All the records with TRANSID of 1 will not be imported by MIF.

      Hope this helps!

  7. The information for TransID and TransSeq was very helpful, thank you.

    I gotten to the end step in the instructions above: after populating the mxin_inter_trans table, should pick up the entries and run the import. Says: Verify the successful import in the “Asset module”.

    What is the Asset module?
    Start center –> go to –> asset, and the new import assets should be their? if so I don’t see the assets their.

    Also when I set the cron task: JMSQSEQCONSUMER it should email every time it runs it, but as admin(maxadmin) I am not getting emails(I am not sure if the cron task is running), but in the JMSQSEQCONSUMER History it shows it’s running every 30 seconds. I looked at the System Properties: = mxintadm
    I want that to be maxadmin? After which I should get the emails? It lets me change the Global Value, so I changed the value to maxadmin, but Current Value is still mxintadm, I saved and did live refresh, but in it doesn’t give any option to pick Global properties, says no properties were selected.

    Is their any other location where I can activate email notification?

  8. Hello Chon,
    We are able to get the data input, but every time we run the sql query in the back to run it, we get message reprocessing error.
    BMXAA1331E – The user name supplied is not authorized to perform this operation.

    the user we use to do input into database is the default Maximo.
    In the Message Reprocessing we can see the queue JNDI name and error message, we select the record and in the status have to do status change to: hold transaction and it works. But i have like million records to input and on each one would have to do this, any suggestions.
    Thank you.

  9. The Object Structures, Enterprise Services, External Systems, & interface tables have been created with the user MXINTADM.

    After running the script to do data population get the following error when we check GoTo–> Integration –> Message Reprocessing:
    BMXAA1331E – The user name supplied is not authorized to perform this operation.

    At Message Reprocessing on the Right can click on Details and click Process and the input statement works.

    Also here the Status changes from Retry to Hold after a few seconds automatically.

    Can you please let us know what kind of security group you MXINTADM is in?

    For us the MXINTADM is part of the following:
    THE MXINTADM is checked for Independent of other groups.

    Thank you.

    1. If you are entering assets and you set the ‘EnterBy’ field as another user other than MXINTADM or MAXADMIN, make sure that user has permission to enter assets. Otherwise you will get that error saying the user doesn’t have permission. Those security groups should be fine for MXINTADM.

  10. Where do we set the ‘EnterBy’ field?
    Which table?
    Is it in the GoTo –> Database Configuration
    Object: MXGLTXN
    Attributes: ENTERBY
    Default Value: ? (Over here it’s blank right now)
    Do you want us to make this MXINTADM?
    We never set this before.

    1. You set the ‘EnterBy’ field in your data import process. Just like when you enter a new asset through the front end, there is an enter by field. You just basically populating that field.

  11. I’m following up with MMD about the same error. In order to narrow down the source of the problem, I only insert one row into ifacetplocations (interface table for LOCATIONS) like the following,

    insert into maximo.ifacetplocation

    insert into maximo.mxin_inter_trans


    Somehow, the system still complains about the same error message which is “BMXAA1331E – The user name supplied is not authorized to perform this operation.”. By switching the status from RETRY to HOLD and then pressing the “PROCESS” button, the import operation then went through by inserting one row to LOCATIONS and 48 rows to LOCATIONSPEC. One thing I noticed by checking the newly inserted 48 rows in LOCATIONSPEC table is the value of the CHANGEBY field are all set to “MXINTADM”. My hunch is by pressing the PROCESS button, it sent the value of “MXINTADM” to the CHANGEBY field for all 48 rows in table LOCATIONSPEC. Right now, I’m stuck and don’t know what to try next in order to make it works without prompting the same error message! Thanks.

  12. Hello Chon,
    The default site in the top right corner under Proflie was set to the proper site but it still didn’t work.
    The following is the error we get:

    Did you have to make any changes to the web shpere application server?

    The transaction error file is [DriveName]
    psdi.util.MXApplicationException: BMXAA1331E – The user name supplied is not authorized to perform this operation.
    at psdi.iface.mic.MicService.processExternalData(
    at psdi.iface.jms.QueueToMaximoProcessor.processMessage(
    at psdi.iface.jms.JMSQueueCronTask.getMessage(
    at psdi.iface.jms.JMSQueueCronTask.cronAction(
    at psdi.server.CronTaskManager.callCronMethod(
    at psdi.server.CronTaskManager.access$400(
    at psdi.server.CronTaskManager$

    Thank you.

  13. Chon apologize for the long delay for you offer to help, i have been dealing with other issues on other projects, soon as I get back to this project I will talk to you more to explore the option you mentioned.

    Thank you.

  14. Hello Chon,

    Found solution to the problem(“Stop and Restart Websphere app Server” with the problem of: “BMXAA1331E – The user name supplied is not authorized to perform this operation.”

    We were trying to look at system log(Systemout.log)files located in three different locations for the Application server on a Windows 2003 System using

    WebSphere ibmWebSphereAppServerprofilesctgAppSrv01logsMXServer



    To look at the log file from the most recent issue, we have to delete them by 1)stopping websphere app server, 2) delete the log files, 3)restart websphere, 4) reexecute the script for input to replicate error issue.

    Turns out by stopping and starting the Websphere application server to try to get a fresh log file solved the problem, probably the Site assignment of MXINTADM was not set Websphere application until the app server gets restarted?

    Thank you for you help.

    Right now it has seemed to fix that problem I am sure many more to come.

    By the way, do you know anything about the JMSQUE? does it take a long time if wrong data is inputted? cause when we try to do an input script and accidentally put wrong value for default site, the Message Reprocessing took about 40 min to 1 hour to send the error message even after the data was cleared from MXintranstables, the data was no where to be found and didn’t get any error message until 40min – 1 hour later. We found the error with the input script of wrong value for Site fixed it, and the corrected script execution only executed after the 40min – 1 hr delay after the Message Reprocessing error was cleared.
    Any Idea what is causing the lag?

    1. Good to hear that you got it working. Yeah, when you set the default site of the MXINTADM user, you do need to restart the app server for it take affect in regards to the integration framework. As for the lag, just because you stopped and restarted the app server, the messages in the queue might still be there, that is why the processing took so long. If I have a message that might be hung in the queue, I usually delete the appropriate directory for you maximo application under: C:Program

  15. I am trying to import data into SQL2005 table IFACEASSET via MS SSIS impirt excel and get the following error

    Error at Data Flow Task [Destination – ifaceasset [647]]: Column “as_description_ld” cannot convert between unicode and non-unicode string data types.

    Error at Data Flow Task [DTS.Pipeline]: “component “Destination – ifaceasset” (647)” failed validation and returned validation status “VS_ISBROKEN”.

    Error at Data Flow Task [DTS.Pipeline]: One or more component failed validation.

    Error at Data Flow Task: There were errors during task validation.

    It looks like it does not like the data type of CBLOB

    Do you have any ideas why this is happening

    Thanks in advance

    1. This is a SQL server issue and it’s due to the fact that the long description field is an ntext field and if you try to import it from excel you will get this error. If you google it then you should be able to find a way around it.

  16. Chon, I am starting to import Max4 data into my Max7 environment. I have couple of questions:

    1- In order to import data, why are you using Interface Tables instead of just importing from csv or xml files. Is there a special reason? Can’t we just get output of a table data into xls, manipulate it and then save it as csv and then import that directly into Maximo.

    2- I tried to see you other post regarding Asset and Specs for asset. What did you base your xls file on? I mean what was the reason of putting two tables into ONE xls? whay not two separate xls files?

    1. You don’t have to use iface tables, you could use csv or xml if you are more comfortable with that. XML is actually faster because the data in the iface tables is actually converted to xml before any kind of import, but I just prefer to use iface tables because it’s easier to manipulate data.

      The two tables are actually two different objects are held in one object structure. That is needed in order to import assets and specs. I had trouble importing specs after I imported the assets, so I decided to put them together to see if that worked and it did.

  17. Thank you so much. By the way just going over your posts it saved all of us huge amount of time. It is because your posts are really detailed.

    My new questions are:

    1- how do u import xls into interface table.
    2- I am starting with importing gls… then Locations followed by assets. Do you by any chance have a sample post/tutorial that shows the sample xls (the way you had for assets and specs) for locations as it does have alot of tables like lochierarchy which are not in object structure. So I am a little confused how those will be populated.

    Thanks again.

  18. About Object Structure above,
    it is said:
    Also verify that no conflicts exist because of duplicate by selecting ‘Add/Modify Alias’ from Select Action dropdown.
    there is no checkbox to select, the available “duplicate” check box is readonly. Could you kindly clarify this?

    1. Yes, the check box is read only. This is just to notify you that the aliasname property is a duplicate. All you need to do is change the aliasname to another value and click OK. Then the duplicate check box will clear.

      1. Thank you for the reply.
        I am trying to import from an xml file into Person records. There seems to be no problem with the xml format. The “Data Import” says that “Inbound transaction has been processed successfully to queue”.
        But the record doesn’t appear in the person records. However, the current status in Message Tracking is “Received”. It is never going into “Processed”.
        Also in the log it shows “Control upload file could not be found in order to process event loadData”. Could you please help?

  19. Can you please help me to load locations in maximo

    When i tried to upload location without system and parent,it was loaded,but how can i associate the location with system and paarents?…

    1. You have to have exactly one top-level location (no parent) in your system, all other locations must be descendants of this location either directly or indirectly. I strongly advise to first load locations in a dummy table, then to sort them by hierarchy, export like that and then try loading.

  20. Hi,
    I trying to import person records throguh xml import. The sequential queue works and I am able to see the new records in the database.
    But, the people/person application does not open up in maximo. When I select a personid from the list, the application hangs, without opening the person app.
    How do I resolve this?

  21. Hi,
    The sequential queue works for me.
    I am able to see the new records in the database. However, when I select the “continuous queue” option in the enterprise service. The messages remain in “RECEIVED” status. But those in sequential queue get processed successfully.
    One more thing, I did not uncomment the comments to Mea MDB in the ejb-jar.xml.

    The sequential queue is working without ejb-jar.xml updates (to Mea Mdb beans).
    Any suggestions as to how I can make the continuous queue work?


    1. Hi,
      The sequential queue works for me.
      I am able to see the new records in the database. However, when I select the “continuous queue” option in the enterprise service. The messages remain in “RECEIVED” status. But those in sequential queue get processed successfully.
      One more thing, I did not uncomment the comments to Mea MDB in the ejb-jar.xml.

      The sequential queue is working without ejb-jar.xml updates (to Mea Mdb beans).
      Any suggestions as to how I can make the continuous queue work?

      Also, in the ejb-jar.xml the <!– MEA MDB is commented out.
      Inspite of that, sequential import works.
      Does uncommenting the MEA MDB in the ejb-jar.xml (ibm-ejb-jar-bnd.xmi, weblogic-ejb-jar.xml) help? Are there any other changes I need to make to get continuous queue working?


  22. I have uncommented the MEA MDB comments in the ejb-jar.xml.

    Now I get the error:
    SRVE0255E: A WebGroup/Virtual Host to handle /maximo has not been defined.
    Are there any other settings I should change to get the continuous queue working?

  23. This line to insert into IFACEASSET should be


    Instead of


    These are type mismatches

  24. Hi,
    I have to made integration using interface table but their is somthing missing
    – i hav to make integration for company master table with MS ACCESS
    – I have created adatbase .mdb
    – i have added an ODBC DSN for MS ACCESS for the database i have created
    – the create the object structure that support flat file
    – the create the end point with the following configuration
    handler IFACTABLE
    Driver sun.jdbc.odbc.jdbcodbcdriver
    URL jdbc:odbc:
    – then create publish channel
    – then the external system and create the interface table from it
    – the activate the cron task and put to it the required parameters
    *** every thing is running well that when i add record in company master it transferred to the interface table thet i have created, but i want data that have been transferred to the interface table to be transferred to the MS ACCESS database that i have created that doesn’t happen till now ***
    if any one can support me i apprciate his effort
    thanks and best regards

  25. Hi,

    I followed the procedure for the loading asset. I was not able to insert records in Asset table. Can you please interpret this log?

    24 Feb 2010 21:03:10:615 [DEBUG] schemauseinclude==true
    24 Feb 2010 21:03:10:615 [DEBUG] schemauseinclude==true
    24 Feb 2010 21:03:10:616 [DEBUG] 1 openTagsList size 0
    24 Feb 2010 21:03:10:616 [DEBUG] 1 openTagsList size 0
    24 Feb 2010 21:03:10:616 [DEBUG] ASSET closing open tags for parent count===0
    24 Feb 2010 21:03:10:616 [DEBUG] ASSET closing open tags for parent count===0
    24 Feb 2010 21:03:10:616 [DEBUG] ASSETMETER level doesnt exist 1
    24 Feb 2010 21:03:10:616 [DEBUG] ASSETMETER level doesnt exist 1
    24 Feb 2010 21:03:10:616 [DEBUG] ASSETUSERCUST level doesnt exist 1
    24 Feb 2010 21:03:10:616 [DEBUG] ASSETUSERCUST level doesnt exist 1
    24 Feb 2010 21:03:10:617 [DEBUG] ASSETSPEC level doesnt exist 1
    24 Feb 2010 21:03:10:617 [DEBUG] ASSETSPEC level doesnt exist 1


  26. Is this means that I am missing values to the required columns of ASSETMETER,ASSETUSERCUST and ASSETSPEC?

    Is Maximo 7 produces too MXINTSQINFILE000000.DAT in the jmsstore, so I can delete this file to clear the queue again?

    Thanks very much

      1. Thanks for the reply.

        I tried to search the MXINTSQINFILE000000.DAT file in /opt/IBM/WebSphere/AppServer in Linux. Where I can find this file? Or it has a different filename. In Maximo6/BEA for example, I can see the DAT file in C:beajmsstore

  27. how can i import our lockout/tagout information in planning module and what is the exact procedure to get the information in these two subfield 1.Outbound Definition Class and 2.Inbound Processing Class in object strucure.
    help me out to collect that info.
    10q in adv

  28. I followed your instructions and loaded the assets I had in my queue, but the status remained ‘NOT READY’ and not ‘OPERATING’ as I indicated like you said in the MXASSET_IFACE. Any ideas?

      1. The Maximo 7 MIF does not allow for the status of Assets with the MXASSET object when the ASSETMETER object is included in the object. Thus if you need to associate a Meter to the Asset, you must create the asset with the Meter, then utilize a separate object and update the status. Another means of doing this would be to create an Escalation associated to the creation process that changes the status of the asset to the desired status.

    VALUES (1,’EXTIMPORT’,’MXASSETInterface’) query but get the following error in ImpotantMessage column in MX_INTER_TRANS table

    BMXAA5861E – Mandatory keys are missing – unable to create xml from flat structure.
    psdi.util.MXApplicationException: BMXAA5861E – Mandatory keys are missing – unable to create xml from flat structure.
    at psdi.iface.intertables.FlatToXMLConverter.prepareObjectXML(

    I am using TAMIT/CCMDB/TSRM 7.2 with mbs HF.

    do i need to exlude/include fields in the Object structure?

      1. I am trying to do your tutorial to get used to the MIF and importing asset data as I will soon need to import a large Asset register (which is a multisheet MS Excel spreadsheet)into the assets application of TAMIT.
        I am keen to know what fields are needed as a minimum to go into the interface table which will then be cron’d into the actual Asset app.

        Is it correct to think that I should use an existing SITEID and OrgID in place of your example?

        TAMIT 7.2 Asset app has budgeted cost and replacement cost as well as Purchase price with a * next to them – does this mean any import must have a value for these fields?

        if i had a csv file that I want to do a one of bulk data load into the Asset app what is the best way of going about this?

        your help is greatly appreciated

      2. I have it working now! I put in correct values sor site, org plus the additional cost values and then had to redo most of tutorial as well as reloading the jms cron.

        now on to the next stage!!

        Thanks Chon

        Brian S

  30. Hi Chon, great post (as always)
    Is there some functionality that allows the insert of the assetnum attribute (or any object ID) to be generated automatically?
    Can I put &AUTOKEY& in the assetnum field for example?
    Thanks in advance

  31. Hey Chon,
    great article on MIF.Im trying to import several records(about 15000)into a a service records table.My question was in the insert statement
    VALUES (1,’EXTIMPORT’,’MXASSETInterface’);
    the transid is 1.what if i wanted to use unique transid for each of my records how would the insert statement read?

  32. Is it possible to connect MIF to SQL server 2005? I want to query some table in a SQL server database and create new records in Maximo.. is it possible to do this? I have a Maximo environment and Oracle 10g..

  33. Chon, great article and thanks (totally new to maximo just got dropped in my lap as it were).  In any case I am using maximo 7.5 and I can’t seem to find this part

    To do that, click on Select Action -> Create Interface Tables.  Select the interface and click on Create.

    Any thought where it might be in 7.5?


  34. Hi Chon,

    I’m getting  BMXAA5861E – Mandatory keys are missing – unable to create xml from flat structure white trying to import Asset in Maximo 7.5. How can i find which fields are missing,

    Many thanks,


  35. I’m attempting to add to an object structure ‘workorder.wopriority’.   I followed the steps
    Select Action>Exclude/Include Fields
    Generate Schema/View XML

    when i review the XML generated the field wopriority is not listed. IS there a step im missing?

  36. Chon has a tutor to import maximum MeterReading in version 7.5

    currently believed process and generates the following error me





  37. CHON, I tried your tutorial., I am using Maximo 7.6, the record in the MXin_Inter_trans table vanishes but no record is getting inserted in MBO Table (Asset). no error , in Message tracking the status is received and no record in message processing application.

    please guide me.

Leave a Reply