Order-to-Cash Process Overview
Five areas are affected by the order-to-cash cycle:
- Order entry
- Order fulfillment
- Distribution, and
- Finance and accounting.
Businesses are investing significantly in software that integrates various applications and processes onto a single service platform. This way every participant in the composite process has the same view of every action and event. Companies that implement the order-to-cash process internally often break the process down into smaller pieces (order-to-ship, ship-to-delivery, delivery-to-invoice, and invoice-to-payment). The shippers handle all parts of the end-to-end process: order flow, fulfillment, and payment.
Technical Capabilities of Order-to-Cash Service Platforms
Every robust order-to-cash service platform provides the comprehensive process management capabilities needed to automate the underlying order-to-cash business processes. The combination of robust business process management, componentization of processes and systems, and native support of Web Services standards is at the core of the service platform.
Some of the capabilities include:
- Unified process automation and human workflow
- Automated, intelligent management of data, process exceptions, and errors
- State management to track, store, and intelligently act on complete status of each step (or state) of a multi-step transaction
- Transaction rollbacks and compensating transactions
- Time-based exception management, and
- Adaptable business agents that monitor real-time metrics and adjust themselves automatically according to predefined rules.
Oracle E-Business Suite
Oracle E-Business Suite is the industry's only complete and integrated set of enterprise applications, working together seamlessly to streamline every area of your business—from sales, service, and marketing, through financials and human resources, to supply chain and manufacturing. Oracle E-Business Suite is your fastest path to high-quality enterprise intelligence, bringing your company a true 360-degree view of your finances, your customers, and your supply chains, so you can make faster, better decisions and grow profitability in a competitive marketplace.
Application software typically automates only departmental business processes. Oracle E-Business Suite is different; it automates all parts of your business. From developing, marketing, selling, ordering, planning, procuring, manufacturing, fulfilling, servicing, and maintaining, to handling finance, human resources, and project management—Oracle E-Business Suite provides a comprehensive and integrated offering. In the past, you had to choose between an integrated suite and “best of breed” for rich functionality. With Oracle, you can now have an integrated suite built on unified information architecture—with the functionality you need in each individual application. These applications connect business processes within and across departmental, geographical, and line-of-business domains.
Oracle E-Business Suite 11i offers over 2,100 new capabilities, half of which meet specific industry needs, including:
- Financial Services: SOP documentation and auditing for compliance with Sarbanes-Oxley and other regulations
- Healthcare: Medication administration, patient encounter-specific financial information, integrated patient care and operational intelligence
- Manufacturing/High Technology: Option-dependent sourcing, automated spare parts return and repair processing, international drop shipments, distribution planning
Setting up Chart Of Accounts(COA)
A Chart Of Accounts defines what segments each account for the organization consists of. The COA consists of things like defining the accounting structure (the accounting structure is a framework or model that you will use to maintain your accounts), Account code combinations etc.
The steps involved in setting up the COA are:
1.1. Create a new Value Set.
Value Sets act as validations for the values entered by users. When the users enter the values in any of the fields (on any form), if there is a value set attached to this field, the values entered by user are validated against the value set.
To create a new value set:
Log on to General Ledger – GL Superuser responsibility.
-- Navigate to N> Setup> Financials> Flexfields> Validation> Sets.
-- In the ‘Value Sets’ window, enter the new value set name and a description for the value set.
-- In the ‘List Type’ drop down box, select the kind of list you require based on the following criteria:
· Use ‘List of Values’ when the expected number of values is between 10 and 200. If you choose ‘List of Values’ then your value set will not provide the LongList feature in Oracle Forms applications and users will not see a poplist in Oracle Self-Service applications. .
· Use ‘Long List of Values’ when the expected number of values is more than 200. The LongList feature requires a user to enter a partial segment value before the list of values retrieves all available values. If you choose ‘Long List of Values’ then your value set will provide the LongList feature in Oracle Forms applications and users will not see a poplist in Oracle Self-Service applications. You may not enable LongList for a value set that has a validation type of ‘None’. .
· Use ‘Poplist’ when the expected number of values is fewer than 10. If you choose ‘Poplist’ then your value set will not provide the LongList feature in Oracle Forms applications but users will see a poplist in Oracle Self-Service applications.
-- In the ‘Security Type’ drop down box, select the security you want Oracle Applications to use with this value set. The possible security types are:
· No Security - All security is disabled for this value set. .
· Hierarchical Security - Hierarchical security is enabled. With hierarchical security, the features of value security and value hierarchies are combined. With this feature any security rule that applies to a parent value also applies to its child values. Within a hierarchical tree of values, a value is subject to a security rule if any parent above it is subject to that security rule. .
· Non-Hierarchical Security - Security is enabled, but the rules of hierarchical security do not apply. That is, a security rule that applies to a parent value does not "cascade down" to its child values.
* The parent values and child values in a particular Key flexfield are defined in the ‘Segment Values’ window, discussed later in this document.
-- Enter the ‘Format Type’, ‘Maximum Size’ and ‘Precision’ for your value set.
-- You can also specify the ‘Min Value’ and the ‘Max Value’ that this value set permits.
-- The first 2 check boxes on the screen define which values (‘Numbers only’, ‘Uppercase only’) the value set permits. Whereas if the third check box is checked, the values that are entered in the fields will be Right justified and zero filled automatically.
-- The ‘Validation Type’ can be any one of the following:
· None: You use a None type value set when you want to allow users to enter any value so long as that value meets the value set formatting rules. Because a None value set is not validated, a segment that uses this value set does not provide a list of values for your users. A segment that uses this value set (that is, a non-validated segment) cannot use flexfield value security rules to restrict the values a user can enter. .
· Independent: This value set provides a pre-defined list for valid values. These values are entered using the ‘Segment Values’ window (Fig 10). .
· Dependent: A dependent value set is similar to an independent value set, except that the available values in the list and the meaning of a given value depend on which independent value was selected in a prior segment of the flexfield structure. You can think of a dependent value set as a collection of little value sets, with one little set for each independent value in the corresponding independent value set. You must define your independent value set before you define the dependent value set that depends on it. You enter the values for dependent values in the Segment Values window. E.g. you have selected an independent value set ‘vs1’ for segment1 and a value set ‘vs2’ that is dependent (on ‘vs1’) for segment2. Let us assume that vs1 has two valid values: ‘Computer’ and ‘Furniture’. Then vs2 will have two sets of valid values pertaining to each value in vs1, i.e. if ‘Computer’ is entered for the segment1 then there may be a set of valid values for segment2, say, ‘mouse’, ‘keyboard’ etc. If ‘Furniture’ is entered for segment1, then there may be a set of valid values for segment2, say, ‘table’, ‘chair’ etc. .
· Special and Pair: Special and pair value sets provide a mechanism to allow a "flexfield-within-a-flexfield". These value sets are primarily used for Standard Request Submission parameters. You do not generally use these value sets for normal flexfield segments. Special and Pair value sets use special validation routines you define. For example, you can define validation routines to provide another flexfield as a value set for a single segment or to provide a range flexfield as a value set for a pair of segments.
1.2. Create the Accounting Flexfield Structure.
The accounting flexfield structure defines all the segments that makeup any account in the organization. In any organization, the accounts typically consist of codes like company_id, department_id, asset_number etc.
E.g. a typical account may have the first 2 digits representing the company, next 3 digits representing the department, next 4 digits representing the location and the last 4 digits representing the asset number.
(A typical account may look like 01.111.0011.0001)
(A typical account may look like 01.111.0011.0001)
01 - Company_id
111 - Department_id
0011 - Location_id
0001 - Asset_Number
Each of these segments are defined in the accounting flexfield structure. Follow below steps to create an accounting flex field structure:
-- Logon to N> Setup > Financials > Flexfields > Key > Segments
-- Query for the Flexfield Title ‘Accounting Flexfield’.
Oracle Applications and custom applications that integrate with Oracle Applications rely on having their components arranged in a predictable structure. This includes particular directory structures where you place reports, forms, programs and other objects, as well as environment variables and application names that allow Oracle Application Object Library to find your application components. An application, such as Oracle General Ledger or Oracle Inventory, is a functional grouping of forms, programs, menus, libraries, reports, and other objects. Custom applications group together site–specific components such as custom menus, forms, or concurrent programs.
Application Directory structure:
When oracle applications are installed, a directory with instance name would be created. All the snapshots are taken with instance name as ‘PROD’. Oracle application will have the parent directory as ‘apps’ and then a directory with name prod. Under that there would be five directories namely prodcomn, proddata, proddb, prodora,prodappl.
Prodappl directory contains one directory for each application within oracle applications. The screen shot above shows the directory structure starting from ‘apps’ directory.
Each application directory will have directories shown in following screen shot.
1. Define an environment variable that translates to your application’ basepath.
e.g If we are defining new application with base path as IDC_TOP and short name as IDC_DEV then there should be an entry in env file as IDC_TOP=/apps/prod/prodappl/IDC_DEV
2. Set up a directory structure for your application.
We need to create the standard subdirectories to be used by forms, reports and sql files under each application directory.
Concurrent Library Window:
Use this window to register program libraries, which are lists of immediate concurrent programs that you wish to link with a concurrent manager. Concurrent managers use the programs in a program library to run their immediate programs. You must register libraries before you can define concurrent managers. You can only include immediate-type concurrent programs in program libraries.
After adding any immediate concurrent program to your library or creating a new library, you must rebuild and relink your library before your changes take effect. After you rebuild and relink your library, the system administrator must restart the concurrent manager using your library. You can only register program libraries that you have already built at the operating system level.
Navigation: Application Developer -> Concurrent -> Library
i) Library Name - This is the same name you gave to your program library file at the operating system. The library name must be eight characters or less.
ii) Application – The bin directory under the application top directory should contain the executable program library file.
iii) Description – Description of the library.
iv) Library Type - There are two types of program library you can define.
v) Concurrent Library - A library of immediate concurrent programs to link with a concurrent manager.
vi) Transaction Library - A library of transaction programs to link with a transaction manager.
vii) Program - Enter the name of an immediate-type concurrent program executable that you linked into your program library at the operating system. This block verifies that the program name and application name you specify uniquely identify a defined concurrent program executable.
viii) Application – Application of the concurrent program.
Request sets are the group of concurrent programs that are related to each other. When a request set is run all the concurrent programs are executed according to the outcome of the previous concurrent program defined in the request set.
To create request set in oracle applications.
Navigation – System Administrator -> Requests -> Set
i) Set – Give the user-friendly name of the request set. This is the name, which will show when user is trying to run the request set.
ii) Set Code – This is the code of the request set.
iii) Application – Application to which the request set belongs to.
iv) Description – Give the brief functional description of the request set.
v) Owner – Usually the person who is creating the request set.
vi) Active Dates From– The date from which you want your request set to be active.
vii) Active Dates To - The date upto which you want your request set to be active.
viii) Print Together – Check this if you want all the stages of the concurrent program to be printed together
ix) Allow Incompatibility – Check this if you want to define incompatibility between the stages of the request sets.
Concurrent programs can be scheduled to run or manually run in oracle applications. In Oracle Applications, concurrent processing simultaneously executes programs running in the background with online operations to fully utilize your hardware capacity, hence the name ‘Concurrent Processing’. You can write a program (called a ”concurrent program”) that runs as a concurrent process. Typically, you create concurrent programs for long–running, data–intensive tasks, such as posting a journal or generating a report.
A concurrent program is an instance of an execution file, along with parameter definitions and incompatibilities. Concurrent programs use concurrent program executables to locate the correct execution file. Several concurrent programs may use the same execution file to perform their specific tasks, each having different parameter defaults and incompatibilities.
Concurrent Program Executable:
A concurrent program executable links an execution file or and the method used to execute it with a defined concurrent program. Under Concurrent Processing, an execution method may be a program written in a standard language, a reporting tool, or an operating system language.
An execution method can be a PL/SQL Stored Procedure, an Oracle Tool such as Oracle Reports or SQL*Plus, a spawned process, or an operating system host language.
Concurrent Program Execution File:
A concurrent program execution file is an operating system file or database stored procedure which contains your application logic and can be executed by either invoking it directly on the command line or by invoking a program which acts upon it. For example, you run a Pro*C program by invoking it on the command line. You run a SQL script by running SQL*Plus and passing the name of the SQL script without the .sql extension.
Steps to Create a Concurrent Program-
1. Executable :
The first step in creating a concurrent program in oracle applications is to create the concurrent program executable. To do this, navigate to Application Developer responsibility after you login to Oracle Applications.
To open the Executable form follow the below mentioned navigation path.
(N) Application Developer -> Concurrent -> Executable.
i) Executable - Enter executable name here. Enter any user friendly name.
ii) Short Name - Enter short name for your executable. This is used for mapping the executable with the concurrent program. Usually executable name are of 8 characters.
iii) Application - Give the application to which the executable belongs to. E.g. you want some program to run from oracle payables then account payables should be entered as application name.
iv) Description - Give the brief description of the executable in this field.
v) Execution Method - Here you need to choose the appropriate execution method for your executable. Following are the possible execution methods which are commonly used in oracle applications.
· Oracle Reports – used for the RDF reports
· Host – used for shell scripts, basically the language of the host operating system
· PL/SQL Stored procedure – used to run the stored procedure through oracle applications
· SQL*Loader – used to run the sql loader programs
· SQL*Plus - used to run the anonymous PL/SQL blocks. It will get executed in the same fashion as you are running on SQL Plus.
· Java Stored Procedure – The execution file is a Java stored procedure.
· Java Concurrent Program – Used for program written in Java.
· Spawned – used for c or pro*c Program. Mainly used by standard oracle interfaces.
· Perl Concurrent Program – used for programs written in CGI Perl.
· Request Set Stage Function – PL/SQL stored function that can be used to calculate the completion statuses of request set stages.
· Immediate – execution file is a program written to run as subroutine of the concurrent manager. Oracle doesn’t recommend use of this executable type.
· Multi-Language function – execution file is an MLS function that supports running concurrent program in multiple languages.
PL/SQL Stored Procedure, Oracle Reports, Host, SQL*loader, SQL*Plus are the most commonly used executable types.
vi) Executable File name – This should contain the name of the executable file. In case of PL/SQL Stored procedure or Java Stored Procedure it should be the fully defined name of the stored procedure.
vii) Subroutine Name – This field is only used when executable type is spawned or immediate.
viii) Execution File Path -
ix) The Stage Function Parameters button opens a window that allows you to enter parameters for the Request Set Stage Function. This button is only enabled when you select Request Set Stage Function as your Execution Method.
Concurrent Program :
Once you have defined the executable, the second step is to define the concurrent program. To define a concurrent program, you need to open the form using the navigation path below.
Navigation – Application Developer -> Concurrent ->Program
i) Program – Give user friendly name for your concurrent program. This name will be displayed in Requests submission screen while submitting the requests.
ii) Short Name – Give short name for concurrent program. This is used within the database tables in oracle applications. It’s a common practice to have the Short name same for the executable and the concurrent program.
iii) Application – Give the application to which the concurrent program belongs to. E.g you want some program to run from oracle payables then account payables should be entered as application name.
iv) Description - Give the brief description of the concurrent program.
v) Executable - Enter the short name of the executable (Defined in Executables Screen) you want to attach to this concurrent program.
vi) Method - will be defaulted once you enter executable short name
vii) Options - will be defaulted once you enter executable short name
Normally default values are given for the other fields. Following is the significance of these fields.
viii) Request Type – Concurrent program can be associated to a predefined request type so that only few concurrent managers can run the program.
ix) Incrementor – To be used by Oracle only.
x) MLS Function - This feature allows the program to be submitted once by the user but runs it in the multiple languages.
xi) Use In SRS – Only when this check box is checked the Concurrent Program would be available in Standard Request Submission (SRS) through the request group.
xii) Allow Disable Value – This will allow the disabled values in the value sets to be used while entering the values of the parameters in the Concurrent Program.
xiii) Run Alone – Indicates that program is incompatible with all other concurrent programs and should be run alone.
xiv) Enable Trace – This will enable the SQL trace for the concurrent program and will generate the trace file when concurrent program is run. Only used in development environments to check the performance of the concurrent program.
xv) Restart on system Failure – This option is used to indicate that concurrent program should automatically be started when concurrent manager is restored after the system failure.
xvi) NLS Compliant – This box is checked if the program allows for a user to submit request of the program that will reflect a language and territory that are different from the language and territory that the users are operating in.
xvii) Output Format – Format in which output should be printed. Possible format values are
· PS (Post Script)
· PCL(HP’s Printer Control Language)
xviii) SAVE – Check to indicate that output should be automatically saved in an operating system file.
xix) PRINT – Whether you want the output to be sent to printer for printing.
xx) Column / Rows – Column and Row length of the concurrent program output. Oracle Applications uses this information to decide the print style.
xxi) Style Required – Print Style
xxii) Printer – A particular printer on which output should be sent.
Save the data that you have entered using Ctrl+S or File à Save.
Overview of Flexfields
Oracle flexfields is one of the most important parts of Oracle Applications. It is because of the flexfields that the Oracle Applications is so generic in nature and can be used to suit any industry or organization. A flexfield, as the name suggests, is a flexible data field that your organization can customize to your business needs without programming. A flexfield is a field made up of sub–fields, or segments. While flexfields do not require programming, they do allow you to perform significant customizations to the Oracle Applications, so they do require enough explanation for you to get the most out of the features they provide. Oracle Applications uses two types of flexfields, key flexfields and descriptive flexfields. A key flexfield is a field you can customize to enter multi–segment values such as part numbers, account numbers, and so on. A descriptive flexfield is a field you customize to enter additional information for which your Oracle Applications product has not already provided a field.
Basic Business Needs
Oracle Applications flexfields let you satisfy the following business needs:
· Have “intelligent fields”—fields comprised of one or more segments, where each segment has both a value and a meaning.
· Rely upon your application to validate the values or the combination of values that you enter in intelligent fields.
· Have the structure of an intelligent field change depending on data in your application.
· Capture additional information if you so choose.
· Customize data fields to your meet your business needs without programming.
· Query intelligent fields for very specific information.
key flexfield is a field made up of segments, where each segment has both a value and a meaning. You can think of a key flexfield as an “intelligent” field that your business can use to store information represented as “codes.” Most organizations use ”codes” made up of meaningful segments to identify general ledger accounts, part numbers, and other business entities. Each segment of the code can represent a characteristic of the entity. For example, consider an account number for a bank. A complete bank number may consists of various segments like the country code, area code, city code, branch code, account type, account number etc.
Bank Number : ...[S].
Country Code City Code Branch Code Account Type(Savings/Current) Account #
The number of segments a bank requires to identify an account number uniquely is a requirement specific to the bank. Another bank might not require a country code if its presence is there only in one country. Key flexfields are used to identify such information uniquely. A key flexfield is flexible enough to let you use any code scheme you want to describe an entity. When your organization initially installs an Oracle Applications product, your organization’s implementation team customizes all the key flexfields in that product to use meaningful code segments to describe each key flexfield entity. Your organization decides for each key flexfield, how many segments an entity has, what each segment means, what values each segment can have, and what each segment value means.
Your organization can also define rules that govern what combination of segment values are valid (cross–validation rules), or define dependencies among the segments. The result is that your organization can use the codes it needs rather than change its codes to meet someone else’s requirements. The Accounting Flexfield in your Oracle Purchasing application is an example of a key flexfield that identifies a unique chart of accounts. One organization may choose to customize the Accounting Flexfield to have three segments called Company, Department, and Account, while another organization may choose to customize the flexfield to have five segments called Company, Cost Center, Account, Sub–Account, and Product.
A key flexfield appears on your form as a normal text field with an appropriate prompt.
A window pops-up when you navigate to the key flexfield and it would require you to enter the various segments defined for the key flexfield.
Key Flexfields in Oracle Applications
The Oracle Applications products provide many key flexfields as integral parts of the products.
Here is a table listing all the key flexfields in Oracle Applications, ordered by the application that ”owns” the key flexfield. Note that other applications may also use a particular flexfield
Owner - Key Flexfield Name - Flexfield Code
Oracle Assets - Asset Key Flexfield - KEY#
Oracle Assets - Category Flexfield - CAT#
Oracle Assets - Location Flexfield - LOC#
Oracle General Ledger - Accounting Flexfield - GL#
Oracle Human Resources - Grade Flexfield - GRD
Oracle Human Resources - Job Flexfield - JOB
Oracle Human Resources - Personal Analysis Flexfield - PEA
Oracle Human Resources - Position Flexfield - POS
Oracle Human Resources - Soft Coded KeyFlexfield - SCL
Oracle Inventory - Account Aliases - MDSP
Oracle Inventory - Item Catalogs - MICG
Oracle Inventory - Item Categories - MCAT
Oracle Inventory - SalesOrders - RLOC
Oracle Inventory - Stock Locators - MTLL
Oracle Inventory - System Items - MSTK
Oracle Payroll - Bank Details KeyFlexField - BANK
Oracle Payroll - Cost Allocation Flexfield - COST
Oracle Payroll - People Group Flexfield - GRP
Oracle Receivables - Sales Tax Location Flexfield - MKTS
Oracle Receivables - Territory Flexfield - CT#
Oracle Service - Oracle Service Item Flexfield - SERV
Oracle Training Administration - Training Resources - RES
Implementing Flex fields
The basic steps in defining a key Flexfields are as given below. You may or may not use all the steps. The detailed explanation is being followed after the steps.
· Identifying Key flexfields that are required for you Oracle Applications installation
· Designing a Key flexfield structure
· Selecting the appropriate Key flexfield to define
· Defining structure information for the Key flexfield
· Defining segment attributes
· Defining flexfield qualifiers
· Defining segment qualifiers
· Implementing optional features as needed
To define the key Flexfield structure, you need to open the Key Flexfield segment form.
The navigation path is -- Application Developer --> Flexfield --> Key --> Segments.
Lets say you are defining the structure for an Accounting Flexfield. Query for the Flexfield Title “Accounting Flexfield” using the Flexfield Title window. If there are already existing structures for Accounting Flexfields, they would be listed in the Structures window.
Lets say you want to define a new structure for the Accounting Flexfield with the structure code as “NEW_ACCOUNTING_STRUCTURE”. Enter the code name in the Code window and the title as “New Accounting Flexfield Struc” in the Title window. Enter an optional description for the new structure which may include the purpose of the new structure. Save the changes.
The Enabled checkbox is checked by default. You can optionally uncheck it. You cannot delete a Key flexfield structure, but you can disable it by unchecking the Enabled checkbox. Next, you may select a Segment Separator other than the default period. Your choices are period, dash, pipe, or any custom character. You must have a segment separator. Next, you can select whether you want to Cross-Validate Segments. Unchecking this checkbox will disable cross-validation for this Key flexfield structure. You can then identify whether you want to Freeze Rollup Groups. If you mark this checkbox, you will not be able to change the assigned rollup groups in the Define Segment Values form. As a last step, you can determine whether you want to Allow Dynamic Inserts for Key flexfield structures. If you do not allow dynamic inserts, you must create all flexfield combinations in the combination form.
You can freeze your flexfield structure by checking the Freeze Flexfield Definition checkbox. Once frozen, you can only make very limited changes to the flexfield structure definition. If you need to change the flexfield structure definition, first uncheck the Freeze Flexfield Definition checkbox and make the changes. Next, reactivate the Freeze Flexfield Definition checkbox. You will receive a warning message that tells you that unfreezing this flexfield and making changes to the segment definitions could affect the validity of the data already existing for this flexfield. Changing a Key flexfield structure will not update existing flexfield data. Do not freeze your flexfield structure yet, as you have not entered the segment attributes for your flexfield structure.
Once the above fields are defined click on the Segments button at the bottom of the form. Enter the values. You can use the already defined Value Sets for the various segments. If you have not defined them earlier, they can be created using the Value Set button at the bottom of the form. Save the changes. To assign a flexfield qualifier to each segment, select the segment on the form and then click on the Flexfield Qualifiers button as the next step.
Select the New Company segment and click on Flexfield Qualifier button. Check the Balancing Segment for the New Company structure as the flexfield qualifier. Follow the same steps to choose the flexfield qualifiers for the remaining 2 segments. Check Cost Center Segment for New Cost Center and Natural Account for New Account segments respectively. Save the changes and close the Structure form.
As the next step, Click on the Freeze Flexfield Definition button. Then compile the flexfield structure. You can compile your flexfield structure by hitting the Compile button. Compiling a flexfield structure will automatically save the flexfield structure. You will see the dialogue box, Choose OK on the dialogue box.
Click on OK and the flexfield definition would be saved.