Under which scenario IR-ISO process is used by Business?
Suppose there is a requirement(Demand) of 100 quantities of a product (say ‘sku123’)which needs to be shipped from an Inventory(say ‘inv123’), but in inv123 we don’t have required on-hand quantity. In this case we first need to replenish the inventory. So to replenish inv123 the Planner looks for available stock in other inventory, if any other inventory(say inv789) has enough stock then the process followed to get stock from inv789 to inv123 is called IR-ISO process flow. There are many ways provided in Oracle to replenish the inventory, some of them are as mentioned below.
- Internal Requisition (IR-ISO)
- Purchase Requisition (P2P)
- Inter Organization Transfer
- Miscellaneous transfer
- Inter-company Transfer
- Account-Alias Transfer
Here we are focused only on IR-ISO Cycle. This process basically deals with transfer of material from one inventory(inv789) to other inventory (inv123) depending on the current on-hand stock and demand at each inventory location.
IR-ISO Process flow steps (in short)
Create an “Internal Requisition” in the destination organization where we wish to receive the material. In our case destination organization is ‘inv123’ where we need material. Prerequisites before creating Internal Requisition are:
- Item Setup – Create or choose an Item with ‘Internally Orderable’ enabled attribute in Item master setup (under Order Management tab).
- Shipping Network– Setup Shipping Network between source and destination Inventory Organization. This setup is to establish the relationships and accounting information that exists between a Source Inventory Organization and a Destination Inventory Organization.Navigation: Inventory responsibility/Setup/Organizations/Shipping Network
Run the “Create Internal Orders” concurrent program. This program needs to be submitted from destination organization purchasing responsibility. Further Details about this step is provided in next paragraph below.
Run “Order Import” concurrent program from Order Management responsibility. The Operating Unit should be based on the source inventory org. Relationships between Operating unit and Inventory Org can be found from org_organization_definitions table. Once order(Internal Sales Order) is imported then process the order(pick, ship).
Receiving can be done from Purchasing or Inventory responsibility and organization will be destination inventory org. Once receiving is done then check the on-hand quantity in destination inventory org.
IR-ISO Process flow steps (in details)
1. Create an Internal Requisition
Nav: Purchasing responsibility>Requisitions>Requisitions
Select “Type” = ‘Internal Requisition‘ and in IR lines input the required Item, Quantity and Need by date as per your requirement. Then Select Destination details like destination type, Inv Org and location. After that select Source details like Source type(Inventory) and Organization.
Save the requisition(Requisition Number will then appear in form) then Approve it by clicking on Approve button.
- SEGMENT1: Requisition number.
- PREPARER_ID: (PER_ALL_PEOPLE_F.PERSON_ID) who prepared the requisition.
- AUTHORIZATION_STATUS: Authorization status type
- TYPE_LOOKUP_CODE: Requisition type.
- ORG_ID: Operating unit org id
Column status of PO_REQUISITION_HEADERS_ALL after Requisition Creation
- AUTHORIZATION_STATUS = INCOMPLETE
- TYPE_LOOKUP_CODE = INTERNAL
- TRANSFERRED_TO_OE_FLAG = N
- PREPARER_ID = Populated from (PER_ALL_PEOPLE_F.PERSON_ID)
- CREATED_BY = Populated from (fnd_user.USER_ID)
- CLOSED_CODE = Null
- APPROVED_DATE = Null
Column status of PO_REQUISITION_HEADERS_ALL after Requisition Approval
- AUTHORIZATION_STATUS = APPROVED
- TRANSFERRED_TO_OE_FLAG = N (After running ‘create internal order’ flag will be ‘Y’)
- CLOSED_CODE = null
- APPROVED_DATE = 15-OCT-18 15:13:26
Note: Record is created in MTL_SUPPLY with SUPPLY_TYPE_CODE = ‘REQ’
- LINE_TYPE_ID: refers to PO_LINE_TYPES.LINE_TYPE_ID (see column LINE_TYPE)
- DELIVER_TO_LOCATION_ID: refers to HR_LOCATIONS.LOCATION_ID from this table LOCATION_CODE column data is being displayed in Requisition form as Location field.
- TO_PERSON_ID: refers to PER_ALL_PEOPLE_F.PERSON_ID
- NEED_BY_DATE: This will become the Request Date(RD) of Sales Order
- REQUISITION_HEADER_ID: Link between PO_REQUISITION_HEADERS_ALL and PO_REQUISITION_LINES_ALL.
- REQUISITION_LINE_ID: Link between PO_REQUISITION_LINES_ALL And PO_REQ_DISTRIBUTIONS_ALL
2. Run “Create Internal Order” Program
To create the internal sales order from the approved requisition run the CREATE INTERNAL ORDER program. Once the program is completed the data is inserted into open interface table. Sales order will be created with ORDER TYPE and CUSTOMER using the predefined setup.
- Order Type defined in the Purchasing Options window.
- Customer relationship with IR is discussed separately. click on this link: IR and Customer linking
- ORDER_SOURCE_ID = oe_order_sources.NAME (10 means Internal )
- ORDER_TYPE_ID = oe_transaction_types_tl.TRANSACTION_TYPE_ID
- SOLD_TO_ORG_ID = HZ_CUST_ACCOUNTS_ALL.CUST_ACCOUNT_ID
- SHIP_TO_ORG_ID = HZ_LOCATIONS.location_id
SELECT * FROM oe_lines_iface_all where ORIG_SYS_DOCUMENT_REF = < PO_REQUISITION_HEADERS_ALL.REQUISITION_HEADER_ID > and ORG_ID = < OU org_ id of Source Inv ORG_ID > and ORIG_SYS_LINE_REF = <PO_REQUISITION_LINES_ALL.REQUISITION_LINE_ID>
3. Run “Import Oder” Program
Nav: Order Management> Orders, Returns> Import Orders.
This program will fetch the data from interface table and populate into the base table by creating Internal Sales Order.
To make sure that Internal Sales order has been created, check below details.
- TRANSFERRED_TO_OE_FLAG = ‘Y’ (in po_requisition_headers_all)
- Select order_number From oe_order_headers_all Where orig_sys_document_ref = ;
oe_order_headers_all joining: Column linking with other tables
- oe_order_headers_all.org_id= hr_operating_units.organization_id
- oe_order_headers_all.order_type_id =oe_transaction_types_tl.transaction_type_id
- oe_order_headers_all.price_list_id= qp_list_headers_tl.list_header_id
- oe_order_headers_all.price_list_id = qp_list_lines.list_header_id
- oe_order_headers_all.sold_to_org_id = hz_cust_accounts.cust_account_id
- hz_cust_accounts.party_id = hz_parties.party_id (Note: if Customer is having any relationship site then this joining will filter out those sites as they are from another party. so use this join with caution!)
- oe_order_headers_all.ship_to_org_id = hz_cust_site_uses_all.site_use_id (Ship TO location)
- oe_order_headers_all.invoice_to_org_id = hz_cust_site_uses_all.site_use_id (Bill TO location)
- oe_order_headers_all.salesrep_id = ra_salesreps_all.salesrep_id
- oe_order_headers_all.order_source_id = oe_order_sources.order_source_id
oe_order_lines_all joining: Column linking with other tables
- OE_ORDER_LINES_ALL.sold_to_org_id = HZ_CUST_ACCOUNTS.cust_account_id
- OE_ORDER_LINES_ALL.ship_to_org_id = HZ_CUST_SITE_USES_ALL.site_use_id
- OE_ORDER_LINES_ALL.invoice_to_org_id = HZ_CUST_SITE_USES_ALL.site_use_id
4. Progress the Order – Pick, Ship the Order
Progressing the order means that you need to Pick and Ship the ISO(Internal Sales Order). This process I have explained in ORDER TO CASH (O2C cycle)
To ensure Order has been shipped, check below details.
wsh_delivery_details.RELEASED_STATUS: ‘C’ (Ship Confirmed)
5. Receive the shipment
Nav: Purchasing responsibility > Receiving> Enter Receipts.
Query with the Requisition Number or the Shipment Number (Delivery Number on the Shipping Transactions form) and do the Receiving Transactions.
rcv_transactions.shipment_header_id = rcv_shipment_headers.shipment_header_id
rcv_transactions.req_distribution_id = po_req_distributions_all.distribution_id
rcv_transactions.requisition_line_id = po_requisition_lines_all.requisition_line_id
On performing receive transaction, a record gets created in MTL_SUPPLY with SUPPLY_TYPE_CODE = ‘RECEIVING’ and further the records get deleted from MTL_SUPPLY on delivery into Inventory.
Once receiving is done, check for On Hand quantity to ensure it increases by the quantity you have received.