A Division of Technology Associates International Corporation
Maximo Blog

MIF – Object Structures

January 12, 2010 in Maximo, Maximo 7, Maximo: MIF by Michael Chrisman 4 Comments

In Maximo 7, the Object Structures has changed a little from the Maximo 6’s version. An MIF Object Structure is made up of one or more Maximo Business Objects (MBOs). The basic functionality is the same as is in 6, but the screens have changed a bit. Before we look at the screen, we need to talk about names. In Maximo 6, this was call and Integration Object. In Maximo 7, these are called Integration Object Structures (from the menu structure to access the screen) or you will also see in the help them being referred to as MOS or MIF Object Structure (MOS).

Let’s have a look at the main screen.

IOS-mainscreen

This screen is accessed from the Go To->Integration menu option.

FIELD DESCRIPTION
Object Structure This is a unique name for the object. This is a required field.
Description (untitled) This is a field where you can give a description of the Object Structure.
Consumed By This indicates what service will “consume” this Integration structure. Options are INTEGRATION, REPORTING and MIGRATIONMGR
Outbound Definition Class Java class for filtering and processing for outbound records. This can be used to filter records that Maximo generates. This is used only by Publishing Channels or for filtering query responses.
Inbound Processing Class Java class for processing inbound data. This class can be used to customize the processing of the MBO data (create/update/delete). It contains no logic for query responses.
Query Only This check box indicates if the MOS is for querying data only. If checks, it will not allow records to be create or modified using the object structure.
Self Reference This check box indicates if the MOS is self referencing.
Support Flat structure This check box indicates if the MOS will support a flat structure. Although this only makes sense if you have more than one MBO in the MOS it is still required to check this if 1) you want to use flat files or Integration tables and/or 2) you want to assign Aliases to fields in the MOS.

The bottom section of the screen is where you add the MBOs to you Object Structure.

IOS-sourceObjects

This is pretty much unchanged from the Maximo 6 screen.

FIELD DESCRIPTION
Object This is the name of the MBO.
Parent Object This is the name of the MBO that is the parent object.
Object Location Path This is auto filled in by Maximo.
Reporting Description This is used when the Consumed By is ‘REPORTING’
Relationship This is the name of the relationship used for join child to the parent object.
Object Order This determines the order of the object in the structure.

Next we will look at the options under the Select Action menu.

IOS-SelectActionMenu

The first option is the Exclude/Include Fields option. This screen allows you to mark fields to be either included or excluded from the Object structure.

IOS-ExcludeIncludeFields

On this screen you can place checks by the persistent fields you want to exclude, and checks by the non-persistent fields you want to include. By default, all persistent fields are included. This means any new persistent fields added to one of them MBOs the MOS includes will automatically be added to the MOS.

Next option is the Generate XML option. This screen displays what the XML structure of the Object Structure will be. When you select this option you will see:

IOS-generateXMLConfirm 

Once you click OK, you will see:

IOS-ViewXML

This is the XML structure of the object, not the whole integration message. This XML will be part of the integration message.

The last option is the Add/Modify Alias option. If, when you select this option you see this message:

IOS-AddModifyAlias-Error

Then you have to check the “Support Flat Structure” check box. This is the Add/Modify Alias Screen:

IOS-AddModifyAlias

This screen allows you to create ‘alias’ column names. This is useful if the message coming in has different column names than what Maximo is expecting.

 

There are two very noticeable omissions from the Maximo 6 screens.

  1. Merge Object. Merge Objects are no longer supported in Maximo 7
  2. User Fields. Although this option has been removed, the functionality has not. If you need to add a ‘user field’ to an integration object, then you have to create a non-persistent field on the base MBO, then mark it for inclusion in the Integration Object. You can then access the field in you User exit or Processing Rule. Although this is a little more more (you have to do a Database Configuration) it does give you more functionality as where User Fields were VARCHAR(50), this option allows you to define the field the way the data really is (any supported Maximo data type).

There is one more option that directly affects integration object structures but is not part of this screen. This is Restricted fields. A restricted field, as far as integration is concerned, means that any ‘auto’ functionality will not be applied to inbound messages. This includes the ID fields. You can access this option by Go To->System Configuration->Platform Configuration->Database Configuration. Then select your MBO and edit it.

IOS-DBConfig-RestrictAttributes

From the Select Action menu, select Restrict Attributes.

IOS-DBConfig-RestrictAttributeScreen

Now you can check/uncheck any attribute you want to restrict.

 

Comments

Jip
Posted on April 28, 2010

I’m wondering about the “Self Reference” option (there’s not much documentation about that).
I tried to create an Object Structure with MBO LABORCRAFTRATE, self referencing with relationship “laborcode=:laborcode and orgid=:orgid”. The idea was to get an outbound XML when I add/remove a craft to/from a labor, with the XML then listing all associated crafts of that labor. But this causes a “major exception” error when I try to make that labor/craft transaction.

Are you aware of any limitations regarding self reference ?

Michael Chrisman
Posted on April 29, 2010

Jip,

The self referencing refers to linking to the same MBO but to different Records. (Like to a parent asset.) Your code is referencing the same record. Not sure I understand why you want to do this as you already have all the values from the current record. If you are looking for what the value of the record was before the change, then you will need to turn on table auditing and link to the audit table. The MIF runs after the save so the change has already been made.

MikeC

Timothy Beel
Posted on May 12, 2010

I am wondering how to change the Location hierarchy via the MIF?  I understand that when a Location is created through the MIF, when a PARENT (and SYSTEMID) is specified on the Locations object structure, then it is automatically assigned to that Parent.  However, if the Location already exists, but the parent needs to change, then it needs to be removed from one Parent/System and placed on another.  Just wondering how this could occur.

Ajeet Grewal
Posted on August 12, 2010

Great article. Here is some more information about restricted attributes.

http://byteflare.com/maximo/restricted-attribute-on-an-mbo/

Post a Comment

Remember my personal information.
Notify me of follow-up comments?

We don't know if you're a human. Confirm below: