This is our requirement.

SCHEMA NAME : XXCUST
TOP NAME : XXCUST_TOP
Application : XXCUST Custom Application
Data Group : Standard
Request Group : XXCUST Request Group
Menu : XXCUST_CUSTOM_MENU
Responsibility : XXCUST Custom

Assumptions:
APPL_TOP: /d01/oracle/VIS/apps/apps_st/appl
Instance Name: VIS
Server OS: linux

There are 14 simple steps to achieve this.
1) Make the directory structure for your custom application files.
cd $APPL_TOP
mkdir XXCUST
mkdir XXCUST/12.0.0
mkdir XXCUST/12.0.0/admin
mkdir XXCUST/12.0.0/admin/sql
mkdir XXCUST/12.0.0/admin/odf
mkdir XXCUST/12.0.0/sql
mkdir XXCUST/12.0.0/bin
mkdir XXCUST/12.0.0/reports
mkdir XXCUST/12.0.0/reports/US
mkdir XXCUST/12.0.0/forms
mkdir XXCUST/12.0.0/forms/US
mkdir XXCUST/12.0.0/lib
mkdir XXCUST/12.0.0/out
mkdir XXCUST/12.0.0/log

2) Add the custom module into the environment
cd $APPL_TOP
echo “XXCUST_TOP=/d01/oracle/VIS/apps/apps_st/appl/XXCUST/12.0.0” >customVIS_linux.env
echo “export XXCUST_TOP ” >> customVIS_linux.env
Source the environment file (/d01/oracle/VIS/apps/apps_st/appl/APPSVIS_linux.env )
Make entry to the application context file
vi $INST_TOP/appl/admin/VIS_linux.xml
/d01/oracle/VIS/apps/apps_st/appl/XXCUST/12.0.0
cd $INST_TOP/admin/install
sh adgentopfile.sh

3) create tablespace XXCUST datafile ‘/d01/oracle/VIS/db/apps_st/data/XXCUST01.dbf’
size 500M

4) create user XXCUST identified by XXCUST
default tablespace XXCUST
temporary tablespace temp
quota unlimited on XXCUST;
grant connect, resource to XXCUST;

5) Register your Oracle Schema.
Login to Applications with System Administrator responsibility
Navigate to Application–>Register
Application = XXCUST Custom Application
Short Name = XXCUST
Basepath = XXCUST_TOP
Description = XXCUST Custom Application

6) Register Oracle User
Naviate to Security–>Oracle–>Register
Database User Name = XXCUST
Password = XXCUST
Privilege = Enabled
Install Group = 0
Description = XXCUST Custom Application User

7) Add Application to a Data Group
Navigate to Security–>Oracle–>DataGroup

8) Create custom request group
This will act as a placeholder for any custom reports we wish to make available for the Custom Responsibility (which is defined at a later stage)
Navigate to Security–>responsibility–>Request
Group = XXCUST Request Group
Application = XXCUST Custom
Code = XXCUST
Description = XXCUST Custom Requests
At this statge, We are not going to define any requests, but you can add request in the later point of time if its required.

9) Create custom menu
This will act as a placeholder for any menu items we wish to make available for the Custom Responsibility (which is defined at a later stage).
Navigate to Application–>Menu
Menu = XXCUST_CUSTOM_MENU
User Menu Name = XXCUST Custom Application Menu
Menu Type =
Description = XXCUST Custom Application Menu
Seq = 100
Prompt = View Requests
Submenu =
Function = View All Concurrent Requests
Description = View Requests
Seq = 110
Prompt = Run Requests
Submenu =
Function = Requests: Submit
Description = Submit Requests
10) Create new responsibility. Navigate to Security–>Responsibility–>Define

Responsibility Name = XXCUST Custom
Application = XXCUST Custom
Responsibility Key = XXCUSTRESP
Description = XXCUST Custom Responsibility
Available From = Oracle Applications
Data Group Name = Standard
Data Group Application = XXCUST Custom Application
Menu = XXCUST Custom Application Menu
Request Group Name = XXCUST Request Group
11) Add responsibility to user
Navigate to Security–>User–>Define
Add XXCUST Custom responsibility to users as required.

12) Other considerations
You are now ready to create your database Objects, custom Reports, Forms, Packages, etc
Create the source code files in the XXCUST_TOP directory appropriate for the type of object. For example forms would be located in $XXCUST_TOP/forms/US or
package source code in $XXCUST_TOP/admin/sql for example.
Database Objects, such as tables, indexes and sequences should be created in the XXCUST schema, and then you need to
   a) Grant all privilege from each custom data object to the APPS schema.
      For example : logged in as XXCUST user
      grant all privileges on XX_TABLE to apps;
   b) Create a synonym in APPS for each custom data object
      For example : logged in as APPS user
      create synonym XX_TABLE for XXCUST.XX_TABLE;

13) Login to sysadmin, Application Developer Responsibility
In the backend compile your form
su – applmgr
cd $AU_TOP/forms/US
cp TEMPLATE.fmb XXSAMPLE.fmb
frmcmp_batch Userid=apps/apps module=XXSAMPLE.fmb output_file=/d01/oracle/VIS/apps/apps_st/appl/XXCUST/12.0.0/forms/US/XXSAMPLE.fmx compile_all=special  batch=yes
Application > Form (Register the form)
Application > Menu (Attach the function to a menu)
Open new session, source environment file, and stop middle tier services, run autoconfig
Open new session, source environment file, check for custom top in topfile.txt in $APPL_TOP/admin, start the middle tier services.
   cd $ADMIN_SCRIPTS_HOME
   sh adstpall.sh apps/apps
   sh adautocfg.sh
   sh adstrtal.sh apps/apps
   cat $APPL_TOP/admin/topfile.txt
   You can find the entry as lke this, XXCUST /d01/oracle/VIS/apps/apps_st/appl
14) Menu that is added to a particular responsibility is given to specific user
Security > User >
Attach our custom responsibility to the user.
Common Errors and Solution:
1. Function not available to this responsibility. Change responsibility or contact your system administrator.
Solution
Restart the forms server
cd $ADMIN_SCRIPTS_HOME
sh adstpall.sh apps/apps
sh adstrtal.sh apps/apps

This post will cover brief overview of steps required to configure Oracle Inventory.

There are some required, optional steps and for some steps you have to check some pre defined system default values that weather it suits your business needs or change them. Perform optional steps only if you are using that business functions.

Later on I will post about optional steps.

Before defining inventory items configuring item flexfield is necessary. On basis of your requirement specific no of segments with fixed length are defined. Once you define the structure of your flexfield and any applicable value sets, you must freeze and compile your flexfield definition.

For step by step demonstration look at..
Steps to Configure System Item Flexfield


Step-2. Define flexfield of item categories.
Before defining items must design and configure your Item Categories Flexfield as all items need to be assigned with categories. After defining compile the flexfield definition to enable the Categories Flexfield pop-up window. Multiple structures for Item Categories Flexfield can be defined.

For step by step demonstration look at..
Steps to Configure Item Categories Flexfield
Step-3.Define flexfield of item catalog group.
If you do not use catalog group still at least one segment must be enabled.
to group items according to certain descriptive elements, Item Catalog Group Flexfield need to be configured. Defining and Compiling the flexfield definition enables the Item Catalog Group Flexfield pop-up

Step-4. Define flexfield of stock locators.
In order to keep track record of locators for inventory items stock locators need to be

configured. e.g. bin, row indicators. Must compile stock locator flexfield even locator control is not implemented

Step-5. Define flexfield of account aliases.
If you want to define logical references to frequently used account number and combinations and use them as transaction source types,you need to configure your account aliases flexfield and define account aliases.

Step-6. Define flexfield of sales orders.
Sales order flexfield must be configured if items will be shipped from inventory.


Step-7. Define Organization Calendar.
If you want to predict needs of your material or to plan material requirement then you can configure workday calendar for this.Work day calendar provide lot of flexibility in terms of shifts, pattern for working days also you can configure exceptions.

For step by step demonstration look at..
How to Define Work Day Calendar.

Step-8. Define organizations.
Organization define different entities in company which may have different manufacturing facilities, warehouses, distribution centers, and branch offices.
Step-9. Setup Change Organizations.
This setup enables you to change organization you define in oracle inventory.using the Change Organization window you can log out and log back in to Oracle Inventory.


Step-10. Define Inventory Relations.

For inter company relations between two operating units (typically the Shipping and Selling organizations) in a multi-organization environment, you must define the relationship in the Intercompany Relations window.

Step-11. Define unit of measure classes.
 All items having similar characteristics fall under same UOM class like Kilogram or Length.

Step-12. Define Sub inventories.

Sub inventory groups inventory logically or physically, at least one sub inventory must be assigned to each organization.

Step-13. Define Item attribute controls.
Attributes are detail information about items.Each attribute is maintained at master level or organization level.If an attribute is defined as master level then it can only be updated at item master level and attributes maintained at item/organization level can only be updated at this level only.
Step-14. Define Categories.

Categories are defined to manage items having same characteristics.

Step-15. Define Category Set and default Category Set.
Sets are defined to further group categories more functionally.Also define at least one default category set.

Step-16. Define statuses.
Statuses are defined to restrict or enable item for different functional areas.
Step-17. Define Cost Types.
Some predefined types are already defined but you can also define your own cost type.
Step-18. Define Accounting Periods.
Periods are defined in oracle General Ledger and in oracle inventory can be opened using inventory periods.

Step-19. Set profile options.

A database link is a path through which a remote user in another database can connect to any other database. Once created the database link exists as an object in the user schema.

Type of DB Links
There are 3 types of DB links. They are as follows:

1. PRIVATE: When the DB links is created, it is created under Private mode as default. The Private DBLINK is only available to the user who has created it. It is not possible for a user to grant access on a private DBLINK to other users.

2. PUBLIC: The Public DBLINK is available to all the users and all users can have the access without any restrictions.

3. SHARED: Shared database link uses share the server connection to support database link connection. If there are multiple concurrent database link access into a remote database, shared database link can be used to reduce the number of server connections required. Without the shared clause each database link connection requires a separate connection to the remote database.

Types of Logins:
In dblink we can use 2 types of login. They are as follows:

1. DEFAULT LOGIN: The User name and Password is same in both the databases.
Syntax
======
CREATE [PUBLIC] DATABASE LINK CONNECT TO CURRENT_USER USING
Code: (Text)
Create public database link daslink connect to current_user using ‘ORCL’


2. EXPLICIT LOGIN: The User Name and Password is different in both the databases.
Syntax
======
CREATE [PUBLIC|SHARED] DATABASE LINK CONNECT TOIDENTIFIED BY USING
Code: (text)
CREATE PUBLIC DATABASE LINK DDLNK CONNECT TO SCOTT IDENTIFIED BY TIGER USING ‘ORCL’

Note: To create the public DBLINK the user must have create public database link system privileges.

Oracle inventory main reporting tables.
——————————————————————————–

MTL_MATERIAL_TRANSACTIONS
Base table for all transactions (etc RCV,Issuance,Sub Inv Transfer,Inter Org Transfer,Misl Transactions…).

MTL_SYSTEM_ITEMS
Table contains all System items organization wise. It is Base table for items.
This table holds the definitions for inventory items, engineering items, and purchasing items. The flexfield code is MSTK. The primary key for an item is the INVENTORY_ITEM_ID and the ORGANIZATION_ID. The same item could be defined in more than one organization. Each row represents an item in an organization.

MTL_SYSTEM_ITEMS_TL
Table contains translated description of each master item.
The primary key is INVENTORY_ITEM_ID, ORGANIZATION_ID and LANGUAGE.

MTL_TRANSACTION_TYPES
Transaction types and names.

ORG_ACCT_PERIODS
Organization wise accounting periods.

GL_CODE_COMBINATIONS
Stores valid Accounting Flexfield segment value combinations for each accounting flexfield structure within your General Ledger. Primary key: CODE_COMBINATION_ID.

MTL_SECONDARY_INVENTORIES
This table is the definition table for the subinventory. Subinventories are assigned to items, indicating a list of valid places in which this item may be located. The primary key is SECONDARY_INVENTORY_NAME, ORGANIZATION_ID.

 MTL_ITEM_CATEGORIES
This table stores the item assignments to categories within a category set. For each assignment, this table stores the item, category set, and the category. Items can be assigned to multiple categories and category sets, but can be assigned to only one category in a given category set. This table is populated through either the Define Item or the Update Item/Org Attributes forms. It can also be populated by performing item assignments when a category set is defined. The primary key is INVENTORY_ITEM_ID, ORGANIZATION_ID, CATEGORY_SET_ID.
 
Oracle Purchasing main reporting tables.
——————————————————————————–
RCV_TRANSACTIONS
You can get data of all receiving transactions in this table.
Important columns
TRANSACTION_TYPE like  DELIVER,REJECT,ACCEPT,CORRECT,RETURN TO RECEIVING
TRANSFER, RETURN TO VENDOR, RECEIVE.
Also you can directly connect to shipment and purchase order tables for rcv_transactions
By  SHIPMENT_HEADER_ID and PO_HEADER_ID.
PO_HEADERS_ALL
Get purchase order header level information from this table.
Important Columns
TYPE_LOOKUP_CODE indicates purchase order type like RFQ, STANDARD.
PO_LINES_ALL
Get purchase order live level information from this table.
Important columns
ITEM_ID join with table MTL_SYSTEM_ITEMS column ITEM_ID to get item all information.
PO_VENDORS
Get vendor level information from this table.
Important columns
PO_VENDOR_SITES_ALL
Get vendor sites information from this table in detail.

 

After defining System item flexfield next step to do is to define Item categories flexfield .
1. Go to Inventory responsibility and open Key Fleffield 
    Flexfield -> Key -> Segments

Key Flex Field

In flexfield title search for Item Categories.

Item Categories

2. Enter new record in this case ORK Item Categories. Now click on segments to enter segments summary.

3. You can define any number of segments according to your business requirement  here is this example we   will define three segments.

4. Enter first segment as Super Category. assign column and value set to this segment.
5. Repeatedly do above step for both next segments.Column indicates the database fields that will hold entered value for specific segment. Now enter your desired item segments name and their corresponding value sets.
6. Now freeze flexfield and compile it.