Troubleshooting Details
INTRODUCTION
SETUP
PROCESS OVERVIEW
LOGGING & TRACING
DATA AND QUERIES
CODE FILES
PATCHES
References
Applies to:
Oracle Inventory Management - Version: 11.5.5 to 12.1.2 - Release: 11.5 to 12.1
Information in this document applies to any platform.
Purpose
This document is intended to assist in troubleshooting basic problems with receiving process for serial controlled items. This note details the receiving processes for serial controlled items performed via desktop application. For more advanced issues, or other Receiving specific assistance, the Oracle Inventory (508) support team can be consulted.
Last Review Date
February 25, 2010
Instructions for the Reader
A Troubleshooting Guide is provided to assist in debugging a specific issue. When possible, diagnostic tools are included in the document to assist in troubleshooting.
Troubleshooting Details
INTRODUCTION
A Serial Number is a unique number assigned to each discrete unit of an item that is stored in inventory. A serial number can also be defined as a set of characters that uniquely identifies a single unit and can be used for traceability and warranty purposes.
Oracle Inventory provides complete serial number support for inventory transactions. Serial number control can be enabled for specific items in inventory. For items under serial number control, a unique serial numbers is assigned to each individual unit and thereafter the same serial numbers is referenced each time a material transaction is performed.
SETUP
SERIAL NUMBER UNIQUENESS
A Serial Number must be unique so that it can be tracked. Uniqueness of Serial Numbers can be enforced at various levels. This is defined at the inventory organization level.
Within Inventory Items: Once a serial number is assigned to a particular item, it cannot be assigned to the same item regardless of the inventory organization.
Within Organizations: In addition to the restrictions Within Inventory Items control, the same serial number cannot exist twice within the same organization.
Across Organizations: In addition to the restrictions Within Organizations, once a serial number is assigned to an item, it cannot be assigned to any other item regardless of organization.
DEFINING SERIAL NUMBER CONTROL FOR ITEMS
Serial number control for an inventory item can be defined when the item is created. The serial number control attribute is controlled at Organization Level, which means that same item in different inventory organizations can have different serial number control defined.
An item can have following serial number controls:
At Receipt: Serial numbers are created and assigned when the item is received into inventory. Thereafter, for any material transaction, serial number for each unit must be provided.
At sales order issue: Serial numbers are created and assigned when the item is issued (shipped) against a sales order. Serial numbers are then required at ship confirm. If the item is received back on a Return Material Authorization (RMA), serial numbers are required. All other material transactions for this item bypass serial number information.
No control: Serial number control is not established for the item. All material transactions involving this item bypass serial number information.
Predefined: A predefined serial numbers is assigned to the item when it is received. Thereafter, for any material transaction, serial number for each unit must be provided.
Inventory > Items > Master Items > Inventory Tab
Change back and forth
between | Change back and forth
between | When |
Dynamic entry at inventory
receipt | Predefined serial numbers | Anytime |
Dynamic entry at sales order
issue | No serial number control | Anytime |
Dynamic entry at inventory
receipt | No serial number control | Item has no on-hand quantity |
Dynamic entry at sales order
issue | Predefined serial numbers | Item has no on-hand quantity |
Predefined serial numbers | No serial number control | Item has no on-hand quantity |
Dynamic entry at inventory
receipt | Dynamic entry at sales order
issue | Item has no on-hand quantity |
SERIAL NUMBER ASSIGNMENTS
Once a serial number is assigned to an item, the combination of the serial number and the item is an entity known as a serialized unit. From that point on, Oracle Inventory tracks all movements and maintains the following information for each serialized unit:
Receipt or Ship Date - The date on which a material transaction for the serialized unit was performed. This information is updated when serialzed unit is moved using material transactions.
Serial State - Oracle Inventory assigns one of the following states to the serialized unit: Defined but not used, Resides in inventory, Issued out of inventory, or Resides in intransit.
Location - The organization, subinventory, and locator in which the serialized unit currently resides. Material transactions update this information when the serialized unit is transferred.
Revision level - The revision of the item when the serial number was assigned to the unit.
Lot number - During material transactions, the lot number is specified first and then the serial number. Oracle Inventory tracks the lot from which a specific serialized unit originates.
See following documentation for complete details on all the setups:
Note 563698.1 Inventory Receiving Processes for Serial Controlled Items - A Whitepaper
Note 417875.1 Serial Number FAQ
TECHNICAL DETAILS
All serial numbers are stored in MTL_SERIAL_NUMBERS (MSN) table. This is the table Serial Number generation program populates, given the number of serial numbers to create and the starting number and prefix.
All material transactions involving serial numbers are stored in MTL_UNIT_TRANSACTIONS (MUT). Individual applications like shipping and receiving have additional tables to process transactions involving serial numbers.
See Appendix A of
note 563698.1 for a list of tables used for serial number processing in Oracle Inventory and Receiving.
Serial Number State or Status
Oracle Inventory assigns a current status to the serialized unit. This status determines where the unit is and for what transactions it is available. This value is stored in CURRENT_STATUS field of table MTL_SERIAL_NUMBERS. The values in CURRENT_STATUS field can be:
- 1 Defined, but not used
- 3 Resides in Stores
- 4 Issued out of Stores
- 5 Resides in Intransit
- 7 Resides in receiving
- 8 Resides in WIP
A serialized unit is available to be used for a particular transaction according to the following criteria:
Current Status | Available to be.... |
1 | ...received into or issued out of stores in any transaction requiring serialized units. |
3 | ...issued out of stores in any transaction requiring serialized units |
4 | ...received into stores in any transaction requiring serialized units |
5 | ...received into stores by an intransit receipt transaction. |
Explanation of MARK_Ids
MTL_SERIAL_NUMBER table has 3 mark_id fields: GROUP_MARK_ID, LINE_MARK_ID, LOT_LINE_MARK_ID. These fields are used to ensure that that serial numbers used by one user's session do not become available incorrectly to another user. Oracle Inventory uses serial number marking and un-marking routines to update these fields. When these fields are populated, the serial number is 'locked' and is not available for any transactions.
When a serial number is used in a transaction, the mark_id fields get populated as soon as the user identifies the serial number they want to use. These fields are made NULL or un-marked, once the transaction is complete, thus 'locking' the serial number during its processing.
There are known issues when some transactions fail to un-mark these fields due to unexpected termination of the transaction. If the transaction is stuck and can be found in Pending Transactions or Transaction Summary forms, then deleting the transactions from the form should un-mark the serial numbers too. But if the related transaction cannot be found in these forms, then the only way to un-mark these fields then is to apply a datafix.
Profile option - 'INV: Restrict Receipt of Serials'
This profile option can be set to Yes or No. Default value for the profile is 'No'. This profile determines if users can receive into stores the serial numbers that have been issued out of inventory and are in status 4 - Issued out of Stores. In case of receiving an RMA, it may be required to receive the serial number that was shipped on the original sales order. If this is required, then the profile value should be set to No.
When set to Yes, Oracle Inventory does NOT allow receipt of serial numbers that have a status of 4 - Issued out of Stores.
RMA Receipts for Serial Controlled Items
Receiving utilizes the 'Validate Serial Numbers on RMA Receipt' option defined at the inventory organization level to determine which serial numbers can be received on an RMA receipt.
See
note 421320.1 for complete explanation of the profile option.
In addition to above validation, system also checks the value of profile INV: Restrict Receipt of Serials and will allow receipt of a serial number in status 4 - Issued out of Stores only if the value of profile is No.
See
Note 578644.1 How To Diagnose Return Material Authorization (RMA) Receipt for RMA related issues.
PROCESS OVERVIEW
In-transit Shipment Creation For Serial Controlled Items
An inter-org transfer entered in inventory or a ship-confirm to an internal sales order in order management, initiates the process of inter-org shipment creation. These processes populate the interface tables MTL_TRANSACTIONS_INTERFACE (MTI) and MTL_SERIAL_NUMBERS_INTERFACE (MSNI). MTI is populated with transaction details and MSNI with the serial numbers that are being shipped. Inventory Transaction Manager picks up these records from the interface tables and creates an issue transaction in the source inventory organization.
Process Flow Diagram for in-transit shipment creation
NOTE: There are other tables used in the process that are not listed here like MMTT, MTLI etc. Following figure shows only those tables that are most relevant to the process being described.
If the serial numbers do not already exist in the organization, then they are first created and records inserted in MTL_SERIAL_NUMBERS (MSN) table. The transaction lines are recorded in MTL_MATERIAL_TRANSACTIONS (MMT) and related serial numbers transactions are recorded in MTL_UNIT_TRANSACTIONS (MUT). The status of the serial numbers is updated to 'Resides in In-transit' (Status = 5) in MSN.
Once the issue transaction is completed, Inventory Transaction Manager populates Receiving Open Interface table RCV_TRANSACTIONS_INTERFACE (RTI) with the shipment line details to create an internal shipment in the destination organization and invokes the Receiving Transaction Manager in online mode. If the transfer type between the two organizations is Direct, then RTI is populated to create a receipt directly. If the transfer type is In-transit, then RTI is populated to create an expected shipment that can then be received in the destination org. Receiving Transaction Manager picks up the records from RTI and reads the serial details from MSNI and creates the shipment in destination org depending on the transfer type.
For Intransit:
RTI.TRANSACTION_TYPE = 'SHIP'
RTI.AUTO_TRANSACT_CODE = 'SHIP'
Shipment header and lines are created in RCV_SHIPMENT_HEADERS (RSH) and RCV_SHIPMENT_LINES (RSL) respectively. For each serial number shipped, a record in inserted into RCV_SERIALS_SUPPLY (RSS) with supply_type = SHIPMENT. SHIPMENT_LINE_ID joins to RSL.SHIPMENT_LINE_ID to ensure that the serial number is related to a specific shipment line.
Data in RSS is used by Serial Entry form at the time of deliver into inventory to ensure that same serial numbers are delivered to stores as the ones shipped. If a serial number is not present in this table for a shipment, it will not show on the Serial Entry form when delivering the shipment. Once the serial number is delivered into inventory, a serial transaction is recorded in RCV_SERIAL_TRANSACTIONS (RST) and the serial number is removed from RSS.
The serial number transactions are recorded in RCV_SERIAL_TRANSACTIONS (RST). Initial transaction at the time of shipment creation is recorded as SHIPMENT transaction. When the serial number is delivered into inventory, the transaction type is TRANSACTION.
RST.SHIPMENT_LINE_ID joins to RSL.SHIPMENT_LINE_ID and RST.TRANSACTION_ID joins to RCV_TRANSACTIONS.TRANSACTION_ID.
For Direct:
RTI.TRANSACTION_TYPE = 'SHIP'
RTI.AUTO_TRANSACT_CODE = 'DELIVER'
The shipment is received and delivered at the same time that it is created in the destination organization. The header and lines are created in RSH and RSL respectively. At the same time, receive and deliver transactions are recorded in RCV_TRANSACTIONS (RT) and RCV_SERIAL_TRANSACTIONS (RST). No records are populated in RSS, since the serial numbers are delivered directly into the receiving inventory.
Dropship Receipts For Serial Controlled Items
Drop Shipments is a method of fulfilling sales orders by selling products without the order taker handling, stocking or delivering them. The seller buys the product and the supplier ships it directly to seller's customer.
In case of drop shipments where item is serial controlled, the serial control level of the item determines how the serial numbers are processed at the time of inbound (receipt) and outbound (issue) transactions of the drop shipment.
If the item serial number control is set to 'Dynamic Entry At Receipt' or 'Predefined', then when doing an issue transaction, the serial numbers are retrieved from prior receipt transactions for the same item, warehouse and locator combination. Since no inventory is maintained for items used for drop shipments, the serial numbers are shipped as soon as they are received.
If the item serial number control is set to 'Dynamic Entry At Sales Order Issue', no serial numbers are required at the time of receipt entry. At the time of issue transaction, one serial number per quantity is generated with appropriate prefix defined in the item setup.
The Order Management API that processes the drop shipments is OE_DS_PVT.DropShipReceive (OEXVDSRB.pls). This API creates reservation, updates drop-shipment workflow and shipped quantity. It is called from inventory transaction processor to handle receipts with inventory destination.
The
decrement_inventory procedure in
oe_ds_pvt inserts records in following tables for issue transactions. All the records inserted in the tables below for a particular transaction have the same transaction_interface_id.
- MTL_TRANSACTIONS_INTERFACE: For every receipt line (corresponds to records in RCV_TRANSACTIONS)
- MTL_SERIAL_NUMBERS_INTERFACE: For every serial number in receipt (serial controlled items.)
- MTL_TRANSACTION_LOTS_INTERFACE: For every lot in receipt (lot controlled items).
Process Flow Diagram of the Dropship process for serial controlled items.
NOTE: There are other tables used in the process that are not listed here like MLN, MTLI etc. Following figure shows only those tables that are most relevant to the process being described.
Receiving Open Interface Support For Serial Controlled Items
Prior to 11.5.10, Receiving Open Interface (ROI) provided limited functionality to import receipts and did not support lot and serial related receipts. Enhancements done in 11.5.10 to ROI significantly improved the functionality supported via ROI. One of the enhancements done was support for lot/serial related receipts.
In 11.5.10 and above, suppliers can include lot/serial information in an Advance Shipment Notice (ASN). For lot/serial controlled items, lot and serial information can be defined on all receiving transactions imported through ROI. These include receipts, transfers, inspections, deliveries, returns and corrections. The lot/serial information is optional throughout receiving and is mandatory only at delivery into inventory.
NOTE: If lot/serial information is provided for receive and/or accept transactions transactions, then subsequent deliver transaction MUST be entered via ROI too. Users cannot mix ROI and desktop receiving transactions for lot/serial controlled items.
And since transactions done via Mobile Applications use ROI, if a lot/serial controlled item is received via Mobile Apps, then subsequent receiving transactions MUST be done via Mobile apps only.
To import receiving transactions for lot/serial controlled items, in addition to RCV_HEADERS_INTERFACE (RHI) and RCV_TRANSACTIONS_INTERFACE (RTI), following tables must be populated:
MTL_TRANSACTIONS_LOTS_INTERFACE (MTLI) - For lot controlled items
MTL_SERIAL_NUMBERS_INTERFACE (MSNI) - For serial controlled items
MSNI.PRODUCT_TRANSACTION_ID links to RTI.INTERFACE_TRANSACTION_ID.
MSNI.PRODUCT_CODE should be 'RCV'.
See
note 301281.1 for sample scripts for inserts into ROI tables for lot/serial controlled items. Also see
note 309896.1 for a list of ROI sample scripts for various document types and transactions.
LOGGING & TRACING
To generate debug messages, please follow
Note 299497.1 to determine which profiles are appropriate for the transaction being saved.
If the issue is on the Enter Serial Form, then a forms level trace with binds must be generated. Refer to
Note 564817.1 for detailed steps to create forms level trace. However, if the error is while saving the transaction, then database level trace is required along with debug information depending on type of transaction being saved. Refer to
Note 564817.1 for information on various methods available to gather database trace.
DATA AND QUERIES
1. When attempting to use a serial number in a transaction, following error occurs:
APP-INV-05577: The serial numbers are not available for use in this transaction
This error occurs when the MARK_ID fields in MTL_SERIAL_NUMBERS table are populated and not cleared when the transaction using the serial number terminates. See
Note 309710.1 for more details on this issue.
2. When attempting to deliver an intransit shipment, following error occurs:
FRM-40212: Invalid value for field FM_SERIAL_NUMBER
Most common reason for this error is missing record in RCV_SERIALS_SUPPLY for the serial number. To check if a record is present in RSS for this serial number, execute the following query:
SELECT * FROM RCV_SERIALS_SUPPLY WHERE SERIAL_NUM = '&Serial_No' AND SHIPMENT_LINE_ID = &Ship_Line_id;
&Ship_Line_Id is RCV_SHIPMENT_LINES.SHIPMENT_LINE_ID and its value can be found on the Receipts form by placing cursor on a line and selecting (M) Help > Diagnostics > Examine
If a record is present in RSS, but the error still occurs, then check the current status of the serial number. The serial number must have status of 'Resides in In-transit'.
If the status is also correct, then verify that the Mark_Id fields are NULL (or -1).
CODE FILES
INVSDOIO.fmb - Inventory Organization Parameters form
INVIDITM.fmb - Inventory Master Item Form
RCVSTDRO.fmb - Receiving Options form
INVTTESR.fmb - Enter Serial Numbers form. This form is called from all transaction forms that require serial number entry.
INVSLENT.pll - Form Library for serial number entry form INVTTESR.fmb
INVITSNU.fmb - View Serial Numbers form. This form can be used to view the status of the serial number and its related transactions, if any.
Currently there is no visibility to lot/serial information from Receiving Transactions Summary form. Enhancement Request
Bug 6729677 is logged with development for the same.
PATCHES
Installing the latest patches can resolve many known code issues. As such, it is recommended to have the latest fixes installed and tested before spending effort analyzing an issue in depth.
For R12 and higher, standard patches will be released as part of Release Update Packs (RUP) only. Following note provides details about the latest RUP patch, and catalogs any fixes it includes.
Note 423541.1 - Oracle E-Business Suite R12 Release Update Pack (RUP) Schedule.
For Release 11.5.10 similar RUP patches are released for specific product. To find the latest roll up patch for Inventory / Receiving, follow steps below:
- Log into My Oracle Support
- Navigate to Patches & Updates
- Select Advanced Search
- Enter Product = Inventory Management (inv)
- Release = Applications 11i or Applications R12
- Patch Type = Patch
- Description = %Rollup%
- Click Go
For 11.5.9 and below, standard one-off patches are released. Search My Oracle Support for the error encountered to see if a patch is available.
Routinely check the Recommended Patch List (RPL) on My Oracle Support as follows:
- Log into My Oracle Support
- Navigate to Patches & Updates
- Select 11i under Recommended Patch Lists
- Select Release
- Select Product Family and Family Pack (Note: For 11.5.10 and up, look for receiving patches under Discrete Manufacturing. For 11.5.9 and below, look for receiving patches under Procurement Family)
References
NOTE:299497.1 - How to Generate Receiving Transaction Debug Statements in 11.5.10 and R12
NOTE:417875.1 - Serial Number FAQ
NOTE:430063.1 - How Are Serial Numbers Generated For Dropship Receipts And Inserted Into MTL_SERIAL_NUMBERS
NOTE:555151.1 - How To Diagnose Document Index (Procurement)
NOTE:564817.1 - How To Create Forms And Database Level Trace For Receiving Transactions