You are on page 1of 9

How to Use Item Open Interface (IOI) to Import Item Category Assignments [ID

115557.1]
Modified 15-JUN-2011
D

Type BULLETIN

Status PUBLISHE

In this Document
Purpose
Scope and Application
How to Use Item Open Interface (IOI) to Import Item Category Assignments
1. Setup
2. How-To
2.1 Create Mode
2.2 Update Mode
2.3. Functionality
2.4 To populate material costs from IOI
3. Not Supported Issues
* Updating Item Attributes to NULL
4. Importing Master and Child Records
5. Importing Categories
6. Revisions
7. Error Checking
8. Template Use
References

Applies to:
Oracle Inventory Management
Information in this document applies to any platform.

Purpose
Document the setup and usage of the Item Open Interface (IOI) process for the import of items.

Scope and Application


This document outlines various aspects of the item import to supplement existing documentation like
the Manufacturing APIs and Open Interfaces Guide.

How to Use Item Open Interface (IOI) to Import Item Category Assignments
This document will walk the user through the setup and execution of the
Item Open Interface (IOI) and provide examples for creating and updating
items, setting attributes to NULL, importing master and child records,
importing revisions and using templates.

1. Setup
Follow this checklist before attempting to load items via the Item Open
Interface:

a) If any IOI patches have been applied, verify that there are no invalid
packages. To find invalid objects, run the following:

b) Ensure that INCOIN has been relinked if any IOI patches were applied.
adrelink sample command lines to relink aiap:

c) Check that the standard indexes exist on the MTL_SYSTEM_ITEMS


(MTL_SYSTEM_ITEMS_B in Release 11.5) and MTL_SYSTEM_ITEMS_INTERFACE
tables.
select TABLE_NAME, INDEX_NAME
from ALL_INDEXES
where TABLE_NAME in
('MTL_SYSTEM_ITEMS', 'MTL_SYSTEM_ITEMS_INTERFACE', 'MTL_SYSTEM_ITEMS_B')
order by TABLE_NAME, INDEX_NAME;

Example results from Release 11.0.3 would include the following indexes:
MTL_SYSTEM_ITEMS_INTERFACE_N1
MTL_SYSTEM_ITEMS_INTERFACE_N2
MTL_SYSTEM_ITEMS_INTERFACE_U1
MTL_SYSTEM_ITEMS_N1
MTL_SYSTEM_ITEMS_N2
MTL_SYSTEM_ITEMS_N3
MTL_SYSTEM_ITEMS_N4
MTL_SYSTEM_ITEMS_N5
MTL_SYSTEM_ITEMS_N6
Example results from Release 11i (11.5.x) would include the following indexes:
MTL_SYSTEM_ITEMS_INTERFACE_N1
MTL_SYSTEM_ITEMS_INTERFACE_N2
MTL_SYSTEM_ITEMS_INTERFACE_N3
MTL_SYSTEM_ITEMS_INTERFACE_U1
MTL_SYSTEM_ITEMS_B_N1
MTL_SYSTEM_ITEMS_B_N2
MTL_SYSTEM_ITEMS_B_N3
MTL_SYSTEM_ITEMS_B_N4
MTL_SYSTEM_ITEMS_B_N5
MTL_SYSTEM_ITEMS_B_N6
MTL_SYSTEM_ITEMS_B_N7
MTL_SYSTEM_ITEMS_B_U1
Example results on R12.0.x include:
MTL_SYSTEM_ITEMS_INTERFACE_N1
MTL_SYSTEM_ITEMS_INTERFACE_N2
MTL_SYSTEM_ITEMS_INTERFACE_N3
MTL_SYSTEM_ITEMS_INTERFACE_N4
MTL_SYSTEM_ITEMS_INTERFACE_N5
MTL_SYSTEM_ITEMS_INTERFACE_N6
MTL_SYSTEM_ITEMS_INTERFACE_U2
MTL_SYSTEM_ITEMS_B_N1
MTL_SYSTEM_ITEMS_B_N10
MTL_SYSTEM_ITEMS_B_N11
MTL_SYSTEM_ITEMS_B_N12
MTL_SYSTEM_ITEMS_B_N13
MTL_SYSTEM_ITEMS_B_N14

MTL_SYSTEM_ITEMS_B_N2
MTL_SYSTEM_ITEMS_B_N3
MTL_SYSTEM_ITEMS_B_N4
MTL_SYSTEM_ITEMS_B_N5
MTL_SYSTEM_ITEMS_B_N6
MTL_SYSTEM_ITEMS_B_N7
MTL_SYSTEM_ITEMS_B_N8
MTL_SYSTEM_ITEMS_B_N9
MTL_SYSTEM_ITEMS_B_U1
MTL_SYSTEM_ITEMS_N8
d) Check if the internal and standard concurrent managers are up and running before loading items
(system admin resp/concurrent/manager/administer) Check the actual and target processes, the
numbers should be the same for each.
e) Define an item through the Define Item form. If this does not work, then it is unlikely that items will
load through the interface. ex. inventory responsibility/items/master items Enter item name, description
and attributes needed and save the item.
f) Truncate all Item Import tables before loading MTL_SYSTEM_ITEMS_INTERFACE. For example:
TRUNCATE
TRUNCATE
TRUNCATE
TRUNCATE

TABLE
TABLE
TABLE
TABLE

INV.MTL_SYSTEM_ITEMS_INTERFACE;
INV.MTL_INTERFACE_ERRORS;
INV.MTL_ITEM_REVISIONS_INTERFACE;
INV.MTL_ITEM_CATEGORIES_INTERFACE;

Note: If Purchasing is fully installed but Inventory is only a shared product, users should be able to run
the IOI. You should, however, be aware that the IOI code is not shipped with standalone Purchasing.
You will have to obtain the code by downloading the latest IOI megapatches.

2. How-To
2.1 Create Mode
To run the item open interface in create mode, populate the MTL_SYSTEM_ITEMS_INTERFACE with
the following minimum required columns when creating new items:
PROCESS_FLAG = 1
TRANSACTION_TYPE = 'CREATE'
SET_PROCESS_ID = 1
ORGANIZATION_ID = Master Org id
DESCRIPTION = 'Description of the item'
ITEM_NUMBER [and/or SEGMENT(n)]

2.2 Update Mode


Running the Item Open Interface In Update Mode To update existing item(s), set
TRANSACTION_TYPE = 'UPDATE'.
Note: Creating and updating items in a single run of the Item Open Interface is not supported
functionality. For best performance, use inventory_item_id when updating items.

2.3. Functionality

Every attribute updateable from the Item form is updateable through the interface, and all required
validations are performed to enforce:

Item Attribute Interdependencies

Master - Child Attribute Dependencies

Status Controlled Attributes

Templates can be applied to existing Items. For best results, use template_id and template_name. The
Item status can be changed for existing Items, and the proper attributes are Defaulted / Set
accordingly. The Status change is recorded in MTL_PENDING_ITEM_STATUS.

2.4 To populate material costs from IOI


Populate the LIST_PRICE_PER_UNIT column with a value while importing items and you will see
your material cost for your item in MTL_SYSTEM_ITEMS after running the Item Import process.
(CREATE transaction_type only)
Master level controlled attributes are correctly propagated to the Child records when the Master Item
record is updated. When launching items into the Master Item Org, the Child records are copied into
MTL_SYSTEM_ITEMS_INTERFACE for validation, and are identified with a transaction_type of
'AUTO_CHILD'. These records are deleted if the parameter 'Delete Processed Rows' has been
passed as 'Yes', and remain for diagnostic purposes if the parameter is passed as 'No'.
When the defining attribute for a Functional area is enabled, the proper default category set and
category is assigned to the Item. For example: If an Inventory item is selected, and the default
category set for Inventory items is "inv.items", with a default category of "misc.misc", this is the
category set and category that will be assigned during the IOI process.

3. Not Supported Issues

Item Costs cannot be UPDATED (using "UPDATE" transaction_type) through the interface.

New Item revisions cannot be added to existing Items.

Current functionality does not support updates to a PTO MODEL ITEM through the IOI update
feature. See note: Note 1076412.6.

* Updating Item Attributes to NULL


The method to update these columns to NULL is to use the following values:

for Numeric fields: insert -999999

for Character fields: insert '!'

for Date fields: the above list does not include any updateable date fields.

4. Importing Master and Child Records

Previously, IOI processed items in an order that did not recognize that Master Items were loaded
before child records in MTL_SYSTEM_ITEMS. Therefore, users were advised to Import Master
Records first in one run and then separately Import Child records. The IOI code now automatically
separates Master records from Children, and processes Master records first. However, as one IOI
process is not aware of other IOI processes running in parallel, do not split a given item's separate
Organization records into two different SET_PROCESS_IDs that are being run in parallel. Doing so
may cause the Child record to be processed before the Master record.
Master level controlled attributes are correctly propagated to the Child records when the Master Item
record is updated. When launching items into the Master Item Org, the Child records are copied into
MTL_SYSTEM_ITEMS_INTERFACE for validation, and are identified with a transaction_type of
'AUTO_CHILD'.

5. Importing Categories
Apply Patch 1644995 for R11.0. This functionality is not available in R11i until 11.5.5.
With this enhancement, the user will have the flexiblity to import multiple item category
assignment as part of the item import process. The user procedures are as follows:
1. Populate the item interface tables (MTL_SYSTEM_ITEMS_INTERFACE). This step is necessary if
you are creating items and categories in the same run. For importing item category assignments for
already existing items, you do not need to populate item interface table. For details regarding
populating the item interface table, please refer to Open Interface Manual.
2. Poplate the item categories interface table (MTL_ITEM_CATEGORIES_INTERFACE). This table
has the following columns :
INVENTORY_ITEM_ID
CATEGORY_SET_ID
CATEGORY_ID
LAST_UPDATE_DATE
LAST_UPDATED_BY
CREATION_DATE
CREATED_BY
LAST_UPDATE_LOGIN
REQUEST_ID
PROGRAM_APPLICATION_ID
PROGRAM_ID
PROGRAM_UPDATE_DATE
ORGANIZATION_ID
TRANSACTION_ID
PROCESS_FLAG
CATEGORY_SET_NAME
CATEGORY_NAME
ORGANIZATION_CODE
ITEM_NUMBER
TRANSACTION_TYPE
SET_PROCESS_ID

NUMBER
NUMBER
NUMBER
DATE
NUMBER
DATE
NUMBER
NUMBER
NUMBER
NUMBER
NUMBER
DATE
NUMBER
NUMBER
NUMBER
VARCHAR2(30)
VARCHAR2(81)
VARCHAR2(3)
VARCHAR2(81)
VARCHAR2(10)
NOT NULL NUMBER

The user needs to populate the following mandatory columns in item categories interface table:
A. Either inventory_item_id or item_number. When item and category are being imported together,then
user can only specify the item_number, since item id will be generated by
the import process.
B. Either organization_id or organization_code or both.
C. The transaction_type column should be 'CREATE'. We do not support 'UPDATE' or 'DELETE' for
item category assignment.

D. Either category_set_id or category_set_name or both.


E. Either category_id or category_name or both.
F. Process_flag column as 1.
G. Populate the set_process_id column. The item and category interface records should have the
same set_process_id, if you are importing item and category assignment together.
For better performance populate organization_id instead of organization_code, category_set_id
instead of category_set_name, category_id instead of category name. For already existing items,
populate inventory_item_id instead of item number.
3. After populating the item and category interface tables, launch the Item Import process from the
applications. In the item import parameters form, for the parameter 'set process id', specify the
'set process id' value given in the mtl_item_categories_interface table. The parameter 'Create or
Update' can have have any value. Through the import process, we can only create item category
assignment(s). Updation or Deletion of item category assignment is not supported.
4. Once the concurrent process completes, check the MTL_INTERFACE_ERRORS table for any
error(s) during the item and category import. Correct those error conditions in the interface tables and
run the item import again. If the process_flag is 7, that means the item category interface
records were successfully imported.

6. Revisions
Note: Using the ITEM_NUMBER column in the MTL_SYSTEM_ITEMS_INTERFACE table is required
if you are populating revision data into the MTL_ITEM_REVISIONS_INTERFACE table. The value of
the ITEM_NUMBER must equal the concatenated segments(n) of the item being imported, plus the
segment separator. If you are not importing revision history you can populate either ITEM_NUMBER
or the SEGMENT(n) column(s) or both.
For historical item revision data, do NOT populate the REVISION column in the
MTL_SYSTEM_ITEMS_INTERFACE table. This column is used only if the current revision of the item
is being imported. Populate these columns in the mtl_item_revisions_interface table:
PROCESS_FLAG = 1
TRANSACTION_TYPE = 'CREATE'
SET_PROCESS_ID = 1
ORGANIZATION_ID = Master Org ID.
REVISION
EFFECTIVITY_DATE
IMPLEMENTATION_DATE
ITEM_NUMBER = (Must match the item_number in MTL_SYSTEM_ITEMS_INTERFACE
table.)
Each row in the mtl_item_revisions_interface table must have the REVISION and
EFFECTIVITY_DATE in alphabetical (ASCII sort) and chronological order. The revision format must
match the starting revision in the Organization Parameters. For example, if the starting revision is '00A'
then the REVISION column in mtl_item_revisions_interface must match this format (00A,00B, etc.).
The starting revision is sometimes referred to as the default revision.
Under Inventory responsibility navigate to: Setup/Organizations/Parameters to verify the Starting
Revision in the "Revision, Lot, Serial" alternate region.
An Example of Revision History Import:
Org. Parameters Starting Revision = 00A
Organization_id = 204 (master org)
The current revision of the item being loaded is '00C' and there is historical data for revisions '00A' and
'00B'. Insert one record into the mtl_system_items_interface table for the new item:
insert into MTL_SYSTEM_ITEMS_INTERFACE
(process_flag,
transaction_type,

item_number,
description,
organization_id,
set_process_id)
VALUES (1,
'CREATE',
'Rev_hist_test', ----item_number
'IOI Revision Part', ----description
204,
1);
commit;

Insert 3 records into MTL_ITEM_REVISIONS_INTERFACE, one for each revision from


'00A' through '00C'. The REVISION and EFFECTIVITY_DATE columns must be in
alphabetical (ASCII sort) and chronological order:
insert into MTL_ITEM_REVISIONS_INTERFACE
(process_flag,
transaction_type,
set_process_id,
item_number,
organization_id,
revision,
effectivity_date,
implementation_date)
VALUES (1,
'CREATE',
1,
'Rev_hist_test',
204,
'00A', ---revision
sysdate-7, ---effectivity_date
sysdate-7
);
insert into MTL_ITEM_REVISIONS_INTERFACE
(process_flag,
transaction_type,
set_process_id,
item_number,
organization_id,
revision,
effectivity_date,
implementation_date)
VALUES (1,
'CREATE',
1,
'Rev_hist_test',
204,
'00B', ---revision
sysdate-6, ---effectivity_date
sysdate-6
);
insert into MTL_ITEM_REVISIONS_INTERFACE
(process_flag,
transaction_type,
set_process_id,
item_number,
organization_id,
revision,
effectivity_date,
implementation_date)
VALUES (1,
'CREATE',
1,
'Rev_hist_test',
204,
'00C', ---revision
sysdate-5, ---effectivity_date
sysdate-5

);
commit;

Run the IOI process. Navigate --> Inventory: Items: Import Items. There are 6 parameters to enter to
begin the process:
1. Specify one or all organizations.
2. Validate items, yes or no.
3. Process items, yes or no.
4. Delete processed rows, yes or no.
5. Process set (null for all)
6. Create or update items (1 for create, 2 for update)
Note: If you are importing Master and Child records, insert them into the
MTL_SYSTEM_ITEMS_INTERFACE and MTL_ITEM_REVISIONS_INTERFACE tables, and run them
at the same time by setting the 'All Organizations' parameter to 'Yes'. If you do not do this, then the
Child revision records will not be imported. What happens is, after the Master records are imported,
the IOI process sets the process_flag = 3 for the remaining records in the
mtl_item_revisions_interface table. There is a bug/patch for this issue: 1216978, available in the next
minipack.

7. Error Checking
When importing multiple revisions, if one record for an item fails validation, all revisions for that item
fail. Resolve failed rows by checking the mtl_interface_errors table.
select table_name, column_name, error_message, message_name
from MTL_INTERFACE_ERRORS;

Master/org## errors - These show in the column_name instead of the error_message. They indicate
master and child item attributes do not match.
The following PL/SQL packages define the columns in MTL_SYSTEM_ITEMS_INTERFACE for the
master/org# error. These packages are located in $INV_TOP/admin/sql.
INVPVM1B.pls: 'master/org1a'
INVPVM1B.pls: 'master/org2'
'master/org3'
INVPVM2B.pls: 'master/org4'
'master/org5'
'master/org6'
INVPVM3B.pls: 'master/org7a'
'master/org7b'
'master/org7c'
master/org1a: SUMMARY_FLAG thru ATTRIBUTE1
master/org2: ATTRIBUTE2 thru ITEM_CATALOG_GROUP_ID
master/org3: CATALOG_STATUS_FLAG thru AUTO_LOT_ALPHA_PREFIX
master/org4: START_AUTO_LOT_NUMBER thru ACCEPTABLE_RATE_DECREASE
master/org5: CUMULATIVE_TOTAL_LEAD_TIME thru CARRYING_COST
master/org6: POSTPROCESSING_LEAD_TIME thru ATO_FORECAST_CONTROL
master/org7a, 7b, & 7c: ENGINEERING_DATE thru VEHICLE_ITEM_FLAG
(overlaps with master/org6. Check PL/SQL package for exact attributes.)

8. Template Use
Item attributes populated in MTL_SYSTEM_ITEMS_INTERFACE take precedence (hold their value)
even if a template is also specified in MSII. However, a status controlled attribute, meaning one that
can derive its value from the 'item status' that is being assigned to the item, such as
purchasing_enabled_flag, may in turn override the value populated in MSII.

To use purchasing_enabled_flag as an example, if you specified purchasing_enabled_flag as 'N' in


MSII, and as 'Y' in the template, but if in the template you are applying there is an 'item status' such
that it makes purchasing_enabled_flag be 'Y', then that value, 'Y', prevails.
So, first check the value of 'Item status' attribute in the template applied. Then go to
/setup/items/status codes form, and query on this code, to see the value of purchasing_enabled_flag.
If it is 'Y', then that is the reason the value after import is 'Y'.

adrelink force=y ranlib=y "fnd aiap"

select OWNER, OBJECT_TYPE, OBJECT_NAME


from DBA_OBJECTS
where STATUS = 'INVALID';

References
NOTE:103869.1 - Item Attribute vs Template Attributes Using IOI
NOTE:106812.1 - Instructions for Running Item Open Import (IOI) Including Historical Revision Data
NOTE:109628.1 - FAQ for Item Import
NOTE:268968.1 - Understanding Item Import and Debugging Problems with Item Import
NOTE:458544.1 - Inventory Item Open Interface SR Template
NOTE:52746.1 - A Guideline to IOI Error Messages and Solutions

Related

Products

Oracle E-Business Suite > Logistics > Logistics > Oracle Inventory Management

Keywords

IOI; ITEM ATTRIBUTES; MTL_INTERFACE_ERRORS;


MTL_ITEM_REVISIONS_INTERFACE; MTL_SYSTEM_ITEMS; OPEN INTERFACES
Back to top