Thursday, 14 January 2016

Import Data into Maximo using INTERFACE tables MIF – IBM Maximo



First of all, we need to have interface/intermediate tables to import something into Maximo from an external/3rd party database. Suppose we want to import some inventory data or for instance we try to figure out with a real example. Let’s assume we need to import data from a legacy application into Maximo. That legacy application is actually an inventory issuance system already implemented somewhere, we have to integrate it with New Maximo Inventory system.
MATRECTRANS tables is actually the main table to
To import data into Maximo, few steps are required to configure step by step.
1.            Object Structure (OS)
2.            End Point (EP)
3.            Enterprise services (Inbound or to import data) (ES)
4.            Publish Channel (Outbound or export data, we will not use in this case) (PC)
5.            and Combine above all into an External System (ExS)
6.            Generate Interface tables
7.            Configure Cron task for Scheduling (CT)
8.            Done. Now insert data into Interface tables and Maximo will read as per given schedule in CT.

Object Structures (OS)

Go to > Integration > Object Structures
Filter a record with this name MXINVISSUE and duplicate it
Name: AQINVISSUEOS
Description:  AQ Inventory Issue Object Structure
Support Flat file: yes
Click on Exclude/Include Fields from Actions Menu
Select desired fields only remaining can be excluded.
Below mentioned are some of the required fields to be entered in this scenario.
ACTUALDATE
GLDEBITACCT
ISSUETYPE
ITEMNUM
MATUSETRANSID
QUANTITY
OWNERSYSID
SITEID
SITEID

End Point (EP)

Go to > Integration > End Points
Filter a record with this name MXIFACETABLE and duplicate it
End Point: AQIFACETABLEEP
Description: AQ Interface Table End Point
Driver: COM.ibm.db2.jdbc.app.DB2Driver (DB2 in my case)
oracle.jdbc.driver.OracleDriver (if oracle)

IsRemote: 0 (if database is remote then 1)
Password: *********
URL = jdbc:db2:// maxserver:50005/maxdb76  (db2 in my case)
jdbc:oracle:thin:@maxserver:50005:maxdb76 (if oracle)
Username: maximo

Enterprise Service (ES)

Goto > Integration > Enterprise Services, Create new record
Enterprise Service: AQINVISSUEES
Description: AQ Inventory Issue ES
Operation: Sync
Object Structure: AQINVISSUEOS
Interface table: MXIFACE_INVISSUE (Custom name, will be the name of the table for interfacing)

External System (ExS)

Goto > Integration > External Systems, Create new record
External System: AQINVISSUEExS
End Point: AQIFACETABLEEP
Enabled?: Yes
Outbound Sequential Queue: jms/maximo/int/queues/sqout
Inbound Sequential Queue: jms/maximo/int/queues/sqin
Inbound Continuous Queue: jms/maximo/int/queues/cqin

And Now go to Enterprise Service Tab and attach newly created ES named AQINVISSUEES
Enabled: Yes
Use Continuous Queue: Yes

Create Interface Tables (IFT)

Now Click Create Interface tables from Action Menu, a popup will appear
And hit Create, it will take a minute or two
We will see 3 tables in our database, 2 default interfacing and 1 our custom table
MXIN_INTER_TRANS for inbound que
MXOUT_INTER_TRANS for outbound que
MXIFACE_INVISSUE this one is our table which is created for actually data from our desired OS

Cron Task (CT)

Go to > System Configuration > Platform Configuration > Cron Task Setup
filter JMSQSEQCONSUMER, it must be Active
now again filter this record IFACETABLECONSUMER, and create a New Cron task Instance within this CT

Instance Name  AQInventoryIFace
Schedule: 30 secodns
Active: Yes
End Point: AQIFACETABLEEP
QUEUETABLE: mxin_inter_trans (default)

Done 


Now insert data into newly created tables and watch after desired scheduled time in MATRECTRANS table.
Test Insert statement is written below for your ease:
1 MXIN_INTER_TRANS table, for inbound ques and
Field
Value
Additional Comment
ACTION
Add
Must be "Add". "AddChange" is not supported.
IFACENAME
AQINVISSUEES
i.e., the name of the Enterprise Service object.
IMPORTMESSAGE
NULL
Do not set.
EXTSYSNAME
AQINVISSUEExS
i.e., the name of the External System object.
TRANSLANGUAGE
NULL
Do not set.
TRANSID
<Any unique numeric ID>
Must be a unique numeric record ID.

2 for MXIFACE_INVISSUE
Field
Value
Additional Comment
ACTUALDATE
<Actual datetime value>
GLDEBITACCT
<Any valid GL account>
The GL account must exist in Maximo
ISSUETO
<Any person ID> or NULL
The Person ID must exist in Maximo
ISSUETYPE
ISSUE
Must be "ISSUE".
ITEMNUM
<Any item code>
The item code must exist in Maximo.
QUANTITY
<Actual issue quantity>
Any positive value.
SITEID
<Any site ID>
The Site ID must exist in Maximo.
SENDERSYSID
AQINVISSUEExS
i.e., the name of the External System object.
STORELOC
<Any storeroom name>
The storeroom name must exist in Maximo.
TRANSID
<Any unique numeric ID>
Must use the same record ID as defined in the MXIN_INTER_TRANS table.
TRANSSEQ
1


Note:

Check your inbound interface queue table (i.e., MXIN_INTER_TRANS) for the followings:
If your record is still there and there is no message under the IMPORTMESSAGE field, check your External System object and your Enterprise Service object to make sure they are enabled. Also, check the schedule for your IFACETABLECONSUMER cron task to see how often it is set to run.
If your record is still there and there is a message under the IMPORTMESSAGE field, read what the message is and then fix it accordingly.
If your record is no longer there, you will need to launch the Message Reprocessing application to find out what the error is and resolve it from there.

Reference: http://www.xcentricway.ca/tutorial02.htm

2 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete